fix two buglets in breakpoint.c
[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                                             struct linespec_sals *,
123                                             char *, char *, enum bptype,
124                                             enum bpdisp, int, int,
125                                             int,
126                                             const struct breakpoint_ops *,
127                                             int, int, int, unsigned);
128
129 static void decode_linespec_default (struct breakpoint *, char **,
130                                      struct symtabs_and_lines *);
131
132 static void clear_command (char *, int);
133
134 static void catch_command (char *, int);
135
136 static int can_use_hardware_watchpoint (struct value *);
137
138 static void break_command_1 (char *, int, int);
139
140 static void mention (struct breakpoint *);
141
142 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
143                                                                enum bptype,
144                                                                const struct breakpoint_ops *);
145 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
146                                                        const struct symtab_and_line *);
147
148 /* This function is used in gdbtk sources and thus can not be made
149    static.  */
150 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
151                                        struct symtab_and_line,
152                                        enum bptype,
153                                        const struct breakpoint_ops *);
154
155 static struct breakpoint *
156   momentary_breakpoint_from_master (struct breakpoint *orig,
157                                     enum bptype type,
158                                     const struct breakpoint_ops *ops);
159
160 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
161
162 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
163                                             CORE_ADDR bpaddr,
164                                             enum bptype bptype);
165
166 static void describe_other_breakpoints (struct gdbarch *,
167                                         struct program_space *, CORE_ADDR,
168                                         struct obj_section *, int);
169
170 static int breakpoint_address_match (struct address_space *aspace1,
171                                      CORE_ADDR addr1,
172                                      struct address_space *aspace2,
173                                      CORE_ADDR addr2);
174
175 static int watchpoint_locations_match (struct bp_location *loc1,
176                                        struct bp_location *loc2);
177
178 static int breakpoint_location_address_match (struct bp_location *bl,
179                                               struct address_space *aspace,
180                                               CORE_ADDR addr);
181
182 static void breakpoints_info (char *, int);
183
184 static void watchpoints_info (char *, int);
185
186 static int breakpoint_1 (char *, int, 
187                          int (*) (const struct breakpoint *));
188
189 static int breakpoint_cond_eval (void *);
190
191 static void cleanup_executing_breakpoints (void *);
192
193 static void commands_command (char *, int);
194
195 static void condition_command (char *, int);
196
197 typedef enum
198   {
199     mark_inserted,
200     mark_uninserted
201   }
202 insertion_state_t;
203
204 static int remove_breakpoint (struct bp_location *, insertion_state_t);
205 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
206
207 static enum print_stop_action print_bp_stop_message (bpstat bs);
208
209 static int watchpoint_check (void *);
210
211 static void maintenance_info_breakpoints (char *, int);
212
213 static int hw_breakpoint_used_count (void);
214
215 static int hw_watchpoint_use_count (struct breakpoint *);
216
217 static int hw_watchpoint_used_count_others (struct breakpoint *except,
218                                             enum bptype type,
219                                             int *other_type_used);
220
221 static void hbreak_command (char *, int);
222
223 static void thbreak_command (char *, int);
224
225 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
226                                     int count);
227
228 static void stop_command (char *arg, int from_tty);
229
230 static void stopin_command (char *arg, int from_tty);
231
232 static void stopat_command (char *arg, int from_tty);
233
234 static void tcatch_command (char *arg, int from_tty);
235
236 static void detach_single_step_breakpoints (void);
237
238 static int single_step_breakpoint_inserted_here_p (struct address_space *,
239                                                    CORE_ADDR pc);
240
241 static void free_bp_location (struct bp_location *loc);
242 static void incref_bp_location (struct bp_location *loc);
243 static void decref_bp_location (struct bp_location **loc);
244
245 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
246
247 static void update_global_location_list (int);
248
249 static void update_global_location_list_nothrow (int);
250
251 static int is_hardware_watchpoint (const struct breakpoint *bpt);
252
253 static void insert_breakpoint_locations (void);
254
255 static int syscall_catchpoint_p (struct breakpoint *b);
256
257 static void tracepoints_info (char *, int);
258
259 static void delete_trace_command (char *, int);
260
261 static void enable_trace_command (char *, int);
262
263 static void disable_trace_command (char *, int);
264
265 static void trace_pass_command (char *, int);
266
267 static void set_tracepoint_count (int num);
268
269 static int is_masked_watchpoint (const struct breakpoint *b);
270
271 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
272
273 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
274    otherwise.  */
275
276 static int strace_marker_p (struct breakpoint *b);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 struct breakpoint_ops base_breakpoint_ops;
281
282 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
283    that are implemented on top of software or hardware breakpoints
284    (user breakpoints, internal and momentary breakpoints, etc.).  */
285 static struct breakpoint_ops bkpt_base_breakpoint_ops;
286
287 /* Internal breakpoints class type.  */
288 static struct breakpoint_ops internal_breakpoint_ops;
289
290 /* Momentary breakpoints class type.  */
291 static struct breakpoint_ops momentary_breakpoint_ops;
292
293 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
294 static struct breakpoint_ops longjmp_breakpoint_ops;
295
296 /* The breakpoint_ops structure to be used in regular user created
297    breakpoints.  */
298 struct breakpoint_ops bkpt_breakpoint_ops;
299
300 /* Breakpoints set on probes.  */
301 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
302
303 /* Dynamic printf class type.  */
304 struct breakpoint_ops dprintf_breakpoint_ops;
305
306 /* The style in which to perform a dynamic printf.  This is a user
307    option because different output options have different tradeoffs;
308    if GDB does the printing, there is better error handling if there
309    is a problem with any of the arguments, but using an inferior
310    function lets you have special-purpose printers and sending of
311    output to the same place as compiled-in print functions.  */
312
313 static const char dprintf_style_gdb[] = "gdb";
314 static const char dprintf_style_call[] = "call";
315 static const char dprintf_style_agent[] = "agent";
316 static const char *const dprintf_style_enums[] = {
317   dprintf_style_gdb,
318   dprintf_style_call,
319   dprintf_style_agent,
320   NULL
321 };
322 static const char *dprintf_style = dprintf_style_gdb;
323
324 /* The function to use for dynamic printf if the preferred style is to
325    call into the inferior.  The value is simply a string that is
326    copied into the command, so it can be anything that GDB can
327    evaluate to a callable address, not necessarily a function name.  */
328
329 static char *dprintf_function = "";
330
331 /* The channel to use for dynamic printf if the preferred style is to
332    call into the inferior; if a nonempty string, it will be passed to
333    the call as the first argument, with the format string as the
334    second.  As with the dprintf function, this can be anything that
335    GDB knows how to evaluate, so in addition to common choices like
336    "stderr", this could be an app-specific expression like
337    "mystreams[curlogger]".  */
338
339 static char *dprintf_channel = "";
340
341 /* True if dprintf commands should continue to operate even if GDB
342    has disconnected.  */
343 static int disconnected_dprintf = 1;
344
345 /* A reference-counted struct command_line.  This lets multiple
346    breakpoints share a single command list.  */
347 struct counted_command_line
348 {
349   /* The reference count.  */
350   int refc;
351
352   /* The command list.  */
353   struct command_line *commands;
354 };
355
356 struct command_line *
357 breakpoint_commands (struct breakpoint *b)
358 {
359   return b->commands ? b->commands->commands : NULL;
360 }
361
362 /* Flag indicating that a command has proceeded the inferior past the
363    current breakpoint.  */
364
365 static int breakpoint_proceeded;
366
367 const char *
368 bpdisp_text (enum bpdisp disp)
369 {
370   /* NOTE: the following values are a part of MI protocol and
371      represent values of 'disp' field returned when inferior stops at
372      a breakpoint.  */
373   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
374
375   return bpdisps[(int) disp];
376 }
377
378 /* Prototypes for exported functions.  */
379 /* If FALSE, gdb will not use hardware support for watchpoints, even
380    if such is available.  */
381 static int can_use_hw_watchpoints;
382
383 static void
384 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
385                              struct cmd_list_element *c,
386                              const char *value)
387 {
388   fprintf_filtered (file,
389                     _("Debugger's willingness to use "
390                       "watchpoint hardware is %s.\n"),
391                     value);
392 }
393
394 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
395    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
396    for unrecognized breakpoint locations.
397    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
398 static enum auto_boolean pending_break_support;
399 static void
400 show_pending_break_support (struct ui_file *file, int from_tty,
401                             struct cmd_list_element *c,
402                             const char *value)
403 {
404   fprintf_filtered (file,
405                     _("Debugger's behavior regarding "
406                       "pending breakpoints is %s.\n"),
407                     value);
408 }
409
410 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
411    set with "break" but falling in read-only memory.
412    If 0, gdb will warn about such breakpoints, but won't automatically
413    use hardware breakpoints.  */
414 static int automatic_hardware_breakpoints;
415 static void
416 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
417                                      struct cmd_list_element *c,
418                                      const char *value)
419 {
420   fprintf_filtered (file,
421                     _("Automatic usage of hardware breakpoints is %s.\n"),
422                     value);
423 }
424
425 /* If on, gdb will keep breakpoints inserted even as inferior is
426    stopped, and immediately insert any new breakpoints.  If off, gdb
427    will insert breakpoints into inferior only when resuming it, and
428    will remove breakpoints upon stop.  If auto, GDB will behave as ON
429    if in non-stop mode, and as OFF if all-stop mode.*/
430
431 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
432
433 static void
434 show_always_inserted_mode (struct ui_file *file, int from_tty,
435                      struct cmd_list_element *c, const char *value)
436 {
437   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
438     fprintf_filtered (file,
439                       _("Always inserted breakpoint "
440                         "mode is %s (currently %s).\n"),
441                       value,
442                       breakpoints_always_inserted_mode () ? "on" : "off");
443   else
444     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
445                       value);
446 }
447
448 int
449 breakpoints_always_inserted_mode (void)
450 {
451   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
452           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
453 }
454
455 static const char condition_evaluation_both[] = "host or target";
456
457 /* Modes for breakpoint condition evaluation.  */
458 static const char condition_evaluation_auto[] = "auto";
459 static const char condition_evaluation_host[] = "host";
460 static const char condition_evaluation_target[] = "target";
461 static const char *const condition_evaluation_enums[] = {
462   condition_evaluation_auto,
463   condition_evaluation_host,
464   condition_evaluation_target,
465   NULL
466 };
467
468 /* Global that holds the current mode for breakpoint condition evaluation.  */
469 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
470
471 /* Global that we use to display information to the user (gets its value from
472    condition_evaluation_mode_1.  */
473 static const char *condition_evaluation_mode = condition_evaluation_auto;
474
475 /* Translate a condition evaluation mode MODE into either "host"
476    or "target".  This is used mostly to translate from "auto" to the
477    real setting that is being used.  It returns the translated
478    evaluation mode.  */
479
480 static const char *
481 translate_condition_evaluation_mode (const char *mode)
482 {
483   if (mode == condition_evaluation_auto)
484     {
485       if (target_supports_evaluation_of_breakpoint_conditions ())
486         return condition_evaluation_target;
487       else
488         return condition_evaluation_host;
489     }
490   else
491     return mode;
492 }
493
494 /* Discovers what condition_evaluation_auto translates to.  */
495
496 static const char *
497 breakpoint_condition_evaluation_mode (void)
498 {
499   return translate_condition_evaluation_mode (condition_evaluation_mode);
500 }
501
502 /* Return true if GDB should evaluate breakpoint conditions or false
503    otherwise.  */
504
505 static int
506 gdb_evaluates_breakpoint_condition_p (void)
507 {
508   const char *mode = breakpoint_condition_evaluation_mode ();
509
510   return (mode == condition_evaluation_host);
511 }
512
513 void _initialize_breakpoint (void);
514
515 /* Are we executing breakpoint commands?  */
516 static int executing_breakpoint_commands;
517
518 /* Are overlay event breakpoints enabled? */
519 static int overlay_events_enabled;
520
521 /* See description in breakpoint.h. */
522 int target_exact_watchpoints = 0;
523
524 /* Walk the following statement or block through all breakpoints.
525    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
526    current breakpoint.  */
527
528 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
529
530 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
531         for (B = breakpoint_chain;      \
532              B ? (TMP=B->next, 1): 0;   \
533              B = TMP)
534
535 /* Similar iterator for the low-level breakpoints.  SAFE variant is
536    not provided so update_global_location_list must not be called
537    while executing the block of ALL_BP_LOCATIONS.  */
538
539 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
540         for (BP_TMP = bp_location;                                      \
541              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
542              BP_TMP++)
543
544 /* Iterates through locations with address ADDRESS for the currently selected
545    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
546    to where the loop should start from.
547    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
548    appropriate location to start with.  */
549
550 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
551         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
552              BP_LOCP_TMP = BP_LOCP_START;                               \
553              BP_LOCP_START                                              \
554              && (BP_LOCP_TMP < bp_location + bp_location_count          \
555              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
556              BP_LOCP_TMP++)
557
558 /* Iterator for tracepoints only.  */
559
560 #define ALL_TRACEPOINTS(B)  \
561   for (B = breakpoint_chain; B; B = B->next)  \
562     if (is_tracepoint (B))
563
564 /* Chains of all breakpoints defined.  */
565
566 struct breakpoint *breakpoint_chain;
567
568 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
569
570 static struct bp_location **bp_location;
571
572 /* Number of elements of BP_LOCATION.  */
573
574 static unsigned bp_location_count;
575
576 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
577    ADDRESS for the current elements of BP_LOCATION which get a valid
578    result from bp_location_has_shadow.  You can use it for roughly
579    limiting the subrange of BP_LOCATION to scan for shadow bytes for
580    an address you need to read.  */
581
582 static CORE_ADDR bp_location_placed_address_before_address_max;
583
584 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
585    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
586    BP_LOCATION which get a valid result from bp_location_has_shadow.
587    You can use it for roughly limiting the subrange of BP_LOCATION to
588    scan for shadow bytes for an address you need to read.  */
589
590 static CORE_ADDR bp_location_shadow_len_after_address_max;
591
592 /* The locations that no longer correspond to any breakpoint, unlinked
593    from bp_location array, but for which a hit may still be reported
594    by a target.  */
595 VEC(bp_location_p) *moribund_locations = NULL;
596
597 /* Number of last breakpoint made.  */
598
599 static int breakpoint_count;
600
601 /* The value of `breakpoint_count' before the last command that
602    created breakpoints.  If the last (break-like) command created more
603    than one breakpoint, then the difference between BREAKPOINT_COUNT
604    and PREV_BREAKPOINT_COUNT is more than one.  */
605 static int prev_breakpoint_count;
606
607 /* Number of last tracepoint made.  */
608
609 static int tracepoint_count;
610
611 static struct cmd_list_element *breakpoint_set_cmdlist;
612 static struct cmd_list_element *breakpoint_show_cmdlist;
613 struct cmd_list_element *save_cmdlist;
614
615 /* Return whether a breakpoint is an active enabled breakpoint.  */
616 static int
617 breakpoint_enabled (struct breakpoint *b)
618 {
619   return (b->enable_state == bp_enabled);
620 }
621
622 /* Set breakpoint count to NUM.  */
623
624 static void
625 set_breakpoint_count (int num)
626 {
627   prev_breakpoint_count = breakpoint_count;
628   breakpoint_count = num;
629   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
630 }
631
632 /* Used by `start_rbreak_breakpoints' below, to record the current
633    breakpoint count before "rbreak" creates any breakpoint.  */
634 static int rbreak_start_breakpoint_count;
635
636 /* Called at the start an "rbreak" command to record the first
637    breakpoint made.  */
638
639 void
640 start_rbreak_breakpoints (void)
641 {
642   rbreak_start_breakpoint_count = breakpoint_count;
643 }
644
645 /* Called at the end of an "rbreak" command to record the last
646    breakpoint made.  */
647
648 void
649 end_rbreak_breakpoints (void)
650 {
651   prev_breakpoint_count = rbreak_start_breakpoint_count;
652 }
653
654 /* Used in run_command to zero the hit count when a new run starts.  */
655
656 void
657 clear_breakpoint_hit_counts (void)
658 {
659   struct breakpoint *b;
660
661   ALL_BREAKPOINTS (b)
662     b->hit_count = 0;
663 }
664
665 /* Allocate a new counted_command_line with reference count of 1.
666    The new structure owns COMMANDS.  */
667
668 static struct counted_command_line *
669 alloc_counted_command_line (struct command_line *commands)
670 {
671   struct counted_command_line *result
672     = xmalloc (sizeof (struct counted_command_line));
673
674   result->refc = 1;
675   result->commands = commands;
676   return result;
677 }
678
679 /* Increment reference count.  This does nothing if CMD is NULL.  */
680
681 static void
682 incref_counted_command_line (struct counted_command_line *cmd)
683 {
684   if (cmd)
685     ++cmd->refc;
686 }
687
688 /* Decrement reference count.  If the reference count reaches 0,
689    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
690    nothing if *CMDP is NULL.  */
691
692 static void
693 decref_counted_command_line (struct counted_command_line **cmdp)
694 {
695   if (*cmdp)
696     {
697       if (--(*cmdp)->refc == 0)
698         {
699           free_command_lines (&(*cmdp)->commands);
700           xfree (*cmdp);
701         }
702       *cmdp = NULL;
703     }
704 }
705
706 /* A cleanup function that calls decref_counted_command_line.  */
707
708 static void
709 do_cleanup_counted_command_line (void *arg)
710 {
711   decref_counted_command_line (arg);
712 }
713
714 /* Create a cleanup that calls decref_counted_command_line on the
715    argument.  */
716
717 static struct cleanup *
718 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
719 {
720   return make_cleanup (do_cleanup_counted_command_line, cmdp);
721 }
722
723 \f
724 /* Return the breakpoint with the specified number, or NULL
725    if the number does not refer to an existing breakpoint.  */
726
727 struct breakpoint *
728 get_breakpoint (int num)
729 {
730   struct breakpoint *b;
731
732   ALL_BREAKPOINTS (b)
733     if (b->number == num)
734       return b;
735   
736   return NULL;
737 }
738
739 \f
740
741 /* Mark locations as "conditions have changed" in case the target supports
742    evaluating conditions on its side.  */
743
744 static void
745 mark_breakpoint_modified (struct breakpoint *b)
746 {
747   struct bp_location *loc;
748
749   /* This is only meaningful if the target is
750      evaluating conditions and if the user has
751      opted for condition evaluation on the target's
752      side.  */
753   if (gdb_evaluates_breakpoint_condition_p ()
754       || !target_supports_evaluation_of_breakpoint_conditions ())
755     return;
756
757   if (!is_breakpoint (b))
758     return;
759
760   for (loc = b->loc; loc; loc = loc->next)
761     loc->condition_changed = condition_modified;
762 }
763
764 /* Mark location as "conditions have changed" in case the target supports
765    evaluating conditions on its side.  */
766
767 static void
768 mark_breakpoint_location_modified (struct bp_location *loc)
769 {
770   /* This is only meaningful if the target is
771      evaluating conditions and if the user has
772      opted for condition evaluation on the target's
773      side.  */
774   if (gdb_evaluates_breakpoint_condition_p ()
775       || !target_supports_evaluation_of_breakpoint_conditions ())
776
777     return;
778
779   if (!is_breakpoint (loc->owner))
780     return;
781
782   loc->condition_changed = condition_modified;
783 }
784
785 /* Sets the condition-evaluation mode using the static global
786    condition_evaluation_mode.  */
787
788 static void
789 set_condition_evaluation_mode (char *args, int from_tty,
790                                struct cmd_list_element *c)
791 {
792   const char *old_mode, *new_mode;
793
794   if ((condition_evaluation_mode_1 == condition_evaluation_target)
795       && !target_supports_evaluation_of_breakpoint_conditions ())
796     {
797       condition_evaluation_mode_1 = condition_evaluation_mode;
798       warning (_("Target does not support breakpoint condition evaluation.\n"
799                  "Using host evaluation mode instead."));
800       return;
801     }
802
803   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
804   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
805
806   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
807      settings was "auto".  */
808   condition_evaluation_mode = condition_evaluation_mode_1;
809
810   /* Only update the mode if the user picked a different one.  */
811   if (new_mode != old_mode)
812     {
813       struct bp_location *loc, **loc_tmp;
814       /* If the user switched to a different evaluation mode, we
815          need to synch the changes with the target as follows:
816
817          "host" -> "target": Send all (valid) conditions to the target.
818          "target" -> "host": Remove all the conditions from the target.
819       */
820
821       if (new_mode == condition_evaluation_target)
822         {
823           /* Mark everything modified and synch conditions with the
824              target.  */
825           ALL_BP_LOCATIONS (loc, loc_tmp)
826             mark_breakpoint_location_modified (loc);
827         }
828       else
829         {
830           /* Manually mark non-duplicate locations to synch conditions
831              with the target.  We do this to remove all the conditions the
832              target knows about.  */
833           ALL_BP_LOCATIONS (loc, loc_tmp)
834             if (is_breakpoint (loc->owner) && loc->inserted)
835               loc->needs_update = 1;
836         }
837
838       /* Do the update.  */
839       update_global_location_list (1);
840     }
841
842   return;
843 }
844
845 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
846    what "auto" is translating to.  */
847
848 static void
849 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
850                                 struct cmd_list_element *c, const char *value)
851 {
852   if (condition_evaluation_mode == condition_evaluation_auto)
853     fprintf_filtered (file,
854                       _("Breakpoint condition evaluation "
855                         "mode is %s (currently %s).\n"),
856                       value,
857                       breakpoint_condition_evaluation_mode ());
858   else
859     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
860                       value);
861 }
862
863 /* A comparison function for bp_location AP and BP that is used by
864    bsearch.  This comparison function only cares about addresses, unlike
865    the more general bp_location_compare function.  */
866
867 static int
868 bp_location_compare_addrs (const void *ap, const void *bp)
869 {
870   struct bp_location *a = *(void **) ap;
871   struct bp_location *b = *(void **) bp;
872
873   if (a->address == b->address)
874     return 0;
875   else
876     return ((a->address > b->address) - (a->address < b->address));
877 }
878
879 /* Helper function to skip all bp_locations with addresses
880    less than ADDRESS.  It returns the first bp_location that
881    is greater than or equal to ADDRESS.  If none is found, just
882    return NULL.  */
883
884 static struct bp_location **
885 get_first_locp_gte_addr (CORE_ADDR address)
886 {
887   struct bp_location dummy_loc;
888   struct bp_location *dummy_locp = &dummy_loc;
889   struct bp_location **locp_found = NULL;
890
891   /* Initialize the dummy location's address field.  */
892   memset (&dummy_loc, 0, sizeof (struct bp_location));
893   dummy_loc.address = address;
894
895   /* Find a close match to the first location at ADDRESS.  */
896   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
897                         sizeof (struct bp_location **),
898                         bp_location_compare_addrs);
899
900   /* Nothing was found, nothing left to do.  */
901   if (locp_found == NULL)
902     return NULL;
903
904   /* We may have found a location that is at ADDRESS but is not the first in the
905      location's list.  Go backwards (if possible) and locate the first one.  */
906   while ((locp_found - 1) >= bp_location
907          && (*(locp_found - 1))->address == address)
908     locp_found--;
909
910   return locp_found;
911 }
912
913 void
914 set_breakpoint_condition (struct breakpoint *b, char *exp,
915                           int from_tty)
916 {
917   xfree (b->cond_string);
918   b->cond_string = NULL;
919
920   if (is_watchpoint (b))
921     {
922       struct watchpoint *w = (struct watchpoint *) b;
923
924       xfree (w->cond_exp);
925       w->cond_exp = NULL;
926     }
927   else
928     {
929       struct bp_location *loc;
930
931       for (loc = b->loc; loc; loc = loc->next)
932         {
933           xfree (loc->cond);
934           loc->cond = NULL;
935
936           /* No need to free the condition agent expression
937              bytecode (if we have one).  We will handle this
938              when we go through update_global_location_list.  */
939         }
940     }
941
942   if (*exp == 0)
943     {
944       if (from_tty)
945         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
946     }
947   else
948     {
949       const char *arg = exp;
950
951       /* I don't know if it matters whether this is the string the user
952          typed in or the decompiled expression.  */
953       b->cond_string = xstrdup (arg);
954       b->condition_not_parsed = 0;
955
956       if (is_watchpoint (b))
957         {
958           struct watchpoint *w = (struct watchpoint *) b;
959
960           innermost_block = NULL;
961           arg = exp;
962           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
963           if (*arg)
964             error (_("Junk at end of expression"));
965           w->cond_exp_valid_block = innermost_block;
966         }
967       else
968         {
969           struct bp_location *loc;
970
971           for (loc = b->loc; loc; loc = loc->next)
972             {
973               arg = exp;
974               loc->cond =
975                 parse_exp_1 (&arg, loc->address,
976                              block_for_pc (loc->address), 0);
977               if (*arg)
978                 error (_("Junk at end of expression"));
979             }
980         }
981     }
982   mark_breakpoint_modified (b);
983
984   observer_notify_breakpoint_modified (b);
985 }
986
987 /* Completion for the "condition" command.  */
988
989 static VEC (char_ptr) *
990 condition_completer (struct cmd_list_element *cmd,
991                      const char *text, const char *word)
992 {
993   const char *space;
994
995   text = skip_spaces_const (text);
996   space = skip_to_space_const (text);
997   if (*space == '\0')
998     {
999       int len;
1000       struct breakpoint *b;
1001       VEC (char_ptr) *result = NULL;
1002
1003       if (text[0] == '$')
1004         {
1005           /* We don't support completion of history indices.  */
1006           if (isdigit (text[1]))
1007             return NULL;
1008           return complete_internalvar (&text[1]);
1009         }
1010
1011       /* We're completing the breakpoint number.  */
1012       len = strlen (text);
1013
1014       ALL_BREAKPOINTS (b)
1015         {
1016           char number[50];
1017
1018           xsnprintf (number, sizeof (number), "%d", b->number);
1019
1020           if (strncmp (number, text, len) == 0)
1021             VEC_safe_push (char_ptr, result, xstrdup (number));
1022         }
1023
1024       return result;
1025     }
1026
1027   /* We're completing the expression part.  */
1028   text = skip_spaces_const (space);
1029   return expression_completer (cmd, text, word);
1030 }
1031
1032 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1033
1034 static void
1035 condition_command (char *arg, int from_tty)
1036 {
1037   struct breakpoint *b;
1038   char *p;
1039   int bnum;
1040
1041   if (arg == 0)
1042     error_no_arg (_("breakpoint number"));
1043
1044   p = arg;
1045   bnum = get_number (&p);
1046   if (bnum == 0)
1047     error (_("Bad breakpoint argument: '%s'"), arg);
1048
1049   ALL_BREAKPOINTS (b)
1050     if (b->number == bnum)
1051       {
1052         /* Check if this breakpoint has a Python object assigned to
1053            it, and if it has a definition of the "stop"
1054            method.  This method and conditions entered into GDB from
1055            the CLI are mutually exclusive.  */
1056         if (b->py_bp_object
1057             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1058           error (_("Cannot set a condition where a Python 'stop' "
1059                    "method has been defined in the breakpoint."));
1060         set_breakpoint_condition (b, p, from_tty);
1061
1062         if (is_breakpoint (b))
1063           update_global_location_list (1);
1064
1065         return;
1066       }
1067
1068   error (_("No breakpoint number %d."), bnum);
1069 }
1070
1071 /* Check that COMMAND do not contain commands that are suitable
1072    only for tracepoints and not suitable for ordinary breakpoints.
1073    Throw if any such commands is found.  */
1074
1075 static void
1076 check_no_tracepoint_commands (struct command_line *commands)
1077 {
1078   struct command_line *c;
1079
1080   for (c = commands; c; c = c->next)
1081     {
1082       int i;
1083
1084       if (c->control_type == while_stepping_control)
1085         error (_("The 'while-stepping' command can "
1086                  "only be used for tracepoints"));
1087
1088       for (i = 0; i < c->body_count; ++i)
1089         check_no_tracepoint_commands ((c->body_list)[i]);
1090
1091       /* Not that command parsing removes leading whitespace and comment
1092          lines and also empty lines.  So, we only need to check for
1093          command directly.  */
1094       if (strstr (c->line, "collect ") == c->line)
1095         error (_("The 'collect' command can only be used for tracepoints"));
1096
1097       if (strstr (c->line, "teval ") == c->line)
1098         error (_("The 'teval' command can only be used for tracepoints"));
1099     }
1100 }
1101
1102 /* Encapsulate tests for different types of tracepoints.  */
1103
1104 static int
1105 is_tracepoint_type (enum bptype type)
1106 {
1107   return (type == bp_tracepoint
1108           || type == bp_fast_tracepoint
1109           || type == bp_static_tracepoint);
1110 }
1111
1112 int
1113 is_tracepoint (const struct breakpoint *b)
1114 {
1115   return is_tracepoint_type (b->type);
1116 }
1117
1118 /* A helper function that validates that COMMANDS are valid for a
1119    breakpoint.  This function will throw an exception if a problem is
1120    found.  */
1121
1122 static void
1123 validate_commands_for_breakpoint (struct breakpoint *b,
1124                                   struct command_line *commands)
1125 {
1126   if (is_tracepoint (b))
1127     {
1128       struct tracepoint *t = (struct tracepoint *) b;
1129       struct command_line *c;
1130       struct command_line *while_stepping = 0;
1131
1132       /* Reset the while-stepping step count.  The previous commands
1133          might have included a while-stepping action, while the new
1134          ones might not.  */
1135       t->step_count = 0;
1136
1137       /* We need to verify that each top-level element of commands is
1138          valid for tracepoints, that there's at most one
1139          while-stepping element, and that the while-stepping's body
1140          has valid tracing commands excluding nested while-stepping.
1141          We also need to validate the tracepoint action line in the
1142          context of the tracepoint --- validate_actionline actually
1143          has side effects, like setting the tracepoint's
1144          while-stepping STEP_COUNT, in addition to checking if the
1145          collect/teval actions parse and make sense in the
1146          tracepoint's context.  */
1147       for (c = commands; c; c = c->next)
1148         {
1149           if (c->control_type == while_stepping_control)
1150             {
1151               if (b->type == bp_fast_tracepoint)
1152                 error (_("The 'while-stepping' command "
1153                          "cannot be used for fast tracepoint"));
1154               else if (b->type == bp_static_tracepoint)
1155                 error (_("The 'while-stepping' command "
1156                          "cannot be used for static tracepoint"));
1157
1158               if (while_stepping)
1159                 error (_("The 'while-stepping' command "
1160                          "can be used only once"));
1161               else
1162                 while_stepping = c;
1163             }
1164
1165           validate_actionline (c->line, b);
1166         }
1167       if (while_stepping)
1168         {
1169           struct command_line *c2;
1170
1171           gdb_assert (while_stepping->body_count == 1);
1172           c2 = while_stepping->body_list[0];
1173           for (; c2; c2 = c2->next)
1174             {
1175               if (c2->control_type == while_stepping_control)
1176                 error (_("The 'while-stepping' command cannot be nested"));
1177             }
1178         }
1179     }
1180   else
1181     {
1182       check_no_tracepoint_commands (commands);
1183     }
1184 }
1185
1186 /* Return a vector of all the static tracepoints set at ADDR.  The
1187    caller is responsible for releasing the vector.  */
1188
1189 VEC(breakpoint_p) *
1190 static_tracepoints_here (CORE_ADDR addr)
1191 {
1192   struct breakpoint *b;
1193   VEC(breakpoint_p) *found = 0;
1194   struct bp_location *loc;
1195
1196   ALL_BREAKPOINTS (b)
1197     if (b->type == bp_static_tracepoint)
1198       {
1199         for (loc = b->loc; loc; loc = loc->next)
1200           if (loc->address == addr)
1201             VEC_safe_push(breakpoint_p, found, b);
1202       }
1203
1204   return found;
1205 }
1206
1207 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1208    validate that only allowed commands are included.  */
1209
1210 void
1211 breakpoint_set_commands (struct breakpoint *b, 
1212                          struct command_line *commands)
1213 {
1214   validate_commands_for_breakpoint (b, commands);
1215
1216   decref_counted_command_line (&b->commands);
1217   b->commands = alloc_counted_command_line (commands);
1218   observer_notify_breakpoint_modified (b);
1219 }
1220
1221 /* Set the internal `silent' flag on the breakpoint.  Note that this
1222    is not the same as the "silent" that may appear in the breakpoint's
1223    commands.  */
1224
1225 void
1226 breakpoint_set_silent (struct breakpoint *b, int silent)
1227 {
1228   int old_silent = b->silent;
1229
1230   b->silent = silent;
1231   if (old_silent != silent)
1232     observer_notify_breakpoint_modified (b);
1233 }
1234
1235 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1236    breakpoint work for any thread.  */
1237
1238 void
1239 breakpoint_set_thread (struct breakpoint *b, int thread)
1240 {
1241   int old_thread = b->thread;
1242
1243   b->thread = thread;
1244   if (old_thread != thread)
1245     observer_notify_breakpoint_modified (b);
1246 }
1247
1248 /* Set the task for this breakpoint.  If TASK is 0, make the
1249    breakpoint work for any task.  */
1250
1251 void
1252 breakpoint_set_task (struct breakpoint *b, int task)
1253 {
1254   int old_task = b->task;
1255
1256   b->task = task;
1257   if (old_task != task)
1258     observer_notify_breakpoint_modified (b);
1259 }
1260
1261 void
1262 check_tracepoint_command (char *line, void *closure)
1263 {
1264   struct breakpoint *b = closure;
1265
1266   validate_actionline (line, b);
1267 }
1268
1269 /* A structure used to pass information through
1270    map_breakpoint_numbers.  */
1271
1272 struct commands_info
1273 {
1274   /* True if the command was typed at a tty.  */
1275   int from_tty;
1276
1277   /* The breakpoint range spec.  */
1278   char *arg;
1279
1280   /* Non-NULL if the body of the commands are being read from this
1281      already-parsed command.  */
1282   struct command_line *control;
1283
1284   /* The command lines read from the user, or NULL if they have not
1285      yet been read.  */
1286   struct counted_command_line *cmd;
1287 };
1288
1289 /* A callback for map_breakpoint_numbers that sets the commands for
1290    commands_command.  */
1291
1292 static void
1293 do_map_commands_command (struct breakpoint *b, void *data)
1294 {
1295   struct commands_info *info = data;
1296
1297   if (info->cmd == NULL)
1298     {
1299       struct command_line *l;
1300
1301       if (info->control != NULL)
1302         l = copy_command_lines (info->control->body_list[0]);
1303       else
1304         {
1305           struct cleanup *old_chain;
1306           char *str;
1307
1308           str = xstrprintf (_("Type commands for breakpoint(s) "
1309                               "%s, one per line."),
1310                             info->arg);
1311
1312           old_chain = make_cleanup (xfree, str);
1313
1314           l = read_command_lines (str,
1315                                   info->from_tty, 1,
1316                                   (is_tracepoint (b)
1317                                    ? check_tracepoint_command : 0),
1318                                   b);
1319
1320           do_cleanups (old_chain);
1321         }
1322
1323       info->cmd = alloc_counted_command_line (l);
1324     }
1325
1326   /* If a breakpoint was on the list more than once, we don't need to
1327      do anything.  */
1328   if (b->commands != info->cmd)
1329     {
1330       validate_commands_for_breakpoint (b, info->cmd->commands);
1331       incref_counted_command_line (info->cmd);
1332       decref_counted_command_line (&b->commands);
1333       b->commands = info->cmd;
1334       observer_notify_breakpoint_modified (b);
1335     }
1336 }
1337
1338 static void
1339 commands_command_1 (char *arg, int from_tty, 
1340                     struct command_line *control)
1341 {
1342   struct cleanup *cleanups;
1343   struct commands_info info;
1344
1345   info.from_tty = from_tty;
1346   info.control = control;
1347   info.cmd = NULL;
1348   /* If we read command lines from the user, then `info' will hold an
1349      extra reference to the commands that we must clean up.  */
1350   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1351
1352   if (arg == NULL || !*arg)
1353     {
1354       if (breakpoint_count - prev_breakpoint_count > 1)
1355         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1356                           breakpoint_count);
1357       else if (breakpoint_count > 0)
1358         arg = xstrprintf ("%d", breakpoint_count);
1359       else
1360         {
1361           /* So that we don't try to free the incoming non-NULL
1362              argument in the cleanup below.  Mapping breakpoint
1363              numbers will fail in this case.  */
1364           arg = NULL;
1365         }
1366     }
1367   else
1368     /* The command loop has some static state, so we need to preserve
1369        our argument.  */
1370     arg = xstrdup (arg);
1371
1372   if (arg != NULL)
1373     make_cleanup (xfree, arg);
1374
1375   info.arg = arg;
1376
1377   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1378
1379   if (info.cmd == NULL)
1380     error (_("No breakpoints specified."));
1381
1382   do_cleanups (cleanups);
1383 }
1384
1385 static void
1386 commands_command (char *arg, int from_tty)
1387 {
1388   commands_command_1 (arg, from_tty, NULL);
1389 }
1390
1391 /* Like commands_command, but instead of reading the commands from
1392    input stream, takes them from an already parsed command structure.
1393
1394    This is used by cli-script.c to DTRT with breakpoint commands
1395    that are part of if and while bodies.  */
1396 enum command_control_type
1397 commands_from_control_command (char *arg, struct command_line *cmd)
1398 {
1399   commands_command_1 (arg, 0, cmd);
1400   return simple_control;
1401 }
1402
1403 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1404
1405 static int
1406 bp_location_has_shadow (struct bp_location *bl)
1407 {
1408   if (bl->loc_type != bp_loc_software_breakpoint)
1409     return 0;
1410   if (!bl->inserted)
1411     return 0;
1412   if (bl->target_info.shadow_len == 0)
1413     /* BL isn't valid, or doesn't shadow memory.  */
1414     return 0;
1415   return 1;
1416 }
1417
1418 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1419    by replacing any memory breakpoints with their shadowed contents.
1420
1421    If READBUF is not NULL, this buffer must not overlap with any of
1422    the breakpoint location's shadow_contents buffers.  Otherwise,
1423    a failed assertion internal error will be raised.
1424
1425    The range of shadowed area by each bp_location is:
1426      bl->address - bp_location_placed_address_before_address_max
1427      up to bl->address + bp_location_shadow_len_after_address_max
1428    The range we were requested to resolve shadows for is:
1429      memaddr ... memaddr + len
1430    Thus the safe cutoff boundaries for performance optimization are
1431      memaddr + len <= (bl->address
1432                        - bp_location_placed_address_before_address_max)
1433    and:
1434      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1435
1436 void
1437 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1438                         const gdb_byte *writebuf_org,
1439                         ULONGEST memaddr, LONGEST len)
1440 {
1441   /* Left boundary, right boundary and median element of our binary
1442      search.  */
1443   unsigned bc_l, bc_r, bc;
1444
1445   /* Find BC_L which is a leftmost element which may affect BUF
1446      content.  It is safe to report lower value but a failure to
1447      report higher one.  */
1448
1449   bc_l = 0;
1450   bc_r = bp_location_count;
1451   while (bc_l + 1 < bc_r)
1452     {
1453       struct bp_location *bl;
1454
1455       bc = (bc_l + bc_r) / 2;
1456       bl = bp_location[bc];
1457
1458       /* Check first BL->ADDRESS will not overflow due to the added
1459          constant.  Then advance the left boundary only if we are sure
1460          the BC element can in no way affect the BUF content (MEMADDR
1461          to MEMADDR + LEN range).
1462
1463          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1464          offset so that we cannot miss a breakpoint with its shadow
1465          range tail still reaching MEMADDR.  */
1466
1467       if ((bl->address + bp_location_shadow_len_after_address_max
1468            >= bl->address)
1469           && (bl->address + bp_location_shadow_len_after_address_max
1470               <= memaddr))
1471         bc_l = bc;
1472       else
1473         bc_r = bc;
1474     }
1475
1476   /* Due to the binary search above, we need to make sure we pick the
1477      first location that's at BC_L's address.  E.g., if there are
1478      multiple locations at the same address, BC_L may end up pointing
1479      at a duplicate location, and miss the "master"/"inserted"
1480      location.  Say, given locations L1, L2 and L3 at addresses A and
1481      B:
1482
1483       L1@A, L2@A, L3@B, ...
1484
1485      BC_L could end up pointing at location L2, while the "master"
1486      location could be L1.  Since the `loc->inserted' flag is only set
1487      on "master" locations, we'd forget to restore the shadow of L1
1488      and L2.  */
1489   while (bc_l > 0
1490          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1491     bc_l--;
1492
1493   /* Now do full processing of the found relevant range of elements.  */
1494
1495   for (bc = bc_l; bc < bp_location_count; bc++)
1496   {
1497     struct bp_location *bl = bp_location[bc];
1498     CORE_ADDR bp_addr = 0;
1499     int bp_size = 0;
1500     int bptoffset = 0;
1501
1502     /* bp_location array has BL->OWNER always non-NULL.  */
1503     if (bl->owner->type == bp_none)
1504       warning (_("reading through apparently deleted breakpoint #%d?"),
1505                bl->owner->number);
1506
1507     /* Performance optimization: any further element can no longer affect BUF
1508        content.  */
1509
1510     if (bl->address >= bp_location_placed_address_before_address_max
1511         && memaddr + len <= (bl->address
1512                              - bp_location_placed_address_before_address_max))
1513       break;
1514
1515     if (!bp_location_has_shadow (bl))
1516       continue;
1517     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1518                                    current_program_space->aspace, 0))
1519       continue;
1520
1521     /* Addresses and length of the part of the breakpoint that
1522        we need to copy.  */
1523     bp_addr = bl->target_info.placed_address;
1524     bp_size = bl->target_info.shadow_len;
1525
1526     if (bp_addr + bp_size <= memaddr)
1527       /* The breakpoint is entirely before the chunk of memory we
1528          are reading.  */
1529       continue;
1530
1531     if (bp_addr >= memaddr + len)
1532       /* The breakpoint is entirely after the chunk of memory we are
1533          reading.  */
1534       continue;
1535
1536     /* Offset within shadow_contents.  */
1537     if (bp_addr < memaddr)
1538       {
1539         /* Only copy the second part of the breakpoint.  */
1540         bp_size -= memaddr - bp_addr;
1541         bptoffset = memaddr - bp_addr;
1542         bp_addr = memaddr;
1543       }
1544
1545     if (bp_addr + bp_size > memaddr + len)
1546       {
1547         /* Only copy the first part of the breakpoint.  */
1548         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1549       }
1550
1551     if (readbuf != NULL)
1552       {
1553         /* Verify that the readbuf buffer does not overlap with
1554            the shadow_contents buffer.  */
1555         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1556                     || readbuf >= (bl->target_info.shadow_contents
1557                                    + bl->target_info.shadow_len));
1558
1559         /* Update the read buffer with this inserted breakpoint's
1560            shadow.  */
1561         memcpy (readbuf + bp_addr - memaddr,
1562                 bl->target_info.shadow_contents + bptoffset, bp_size);
1563       }
1564     else
1565       {
1566         struct gdbarch *gdbarch = bl->gdbarch;
1567         const unsigned char *bp;
1568         CORE_ADDR placed_address = bl->target_info.placed_address;
1569         int placed_size = bl->target_info.placed_size;
1570
1571         /* Update the shadow with what we want to write to memory.  */
1572         memcpy (bl->target_info.shadow_contents + bptoffset,
1573                 writebuf_org + bp_addr - memaddr, bp_size);
1574
1575         /* Determine appropriate breakpoint contents and size for this
1576            address.  */
1577         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1578
1579         /* Update the final write buffer with this inserted
1580            breakpoint's INSN.  */
1581         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1582       }
1583   }
1584 }
1585 \f
1586
1587 /* Return true if BPT is either a software breakpoint or a hardware
1588    breakpoint.  */
1589
1590 int
1591 is_breakpoint (const struct breakpoint *bpt)
1592 {
1593   return (bpt->type == bp_breakpoint
1594           || bpt->type == bp_hardware_breakpoint
1595           || bpt->type == bp_dprintf);
1596 }
1597
1598 /* Return true if BPT is of any hardware watchpoint kind.  */
1599
1600 static int
1601 is_hardware_watchpoint (const struct breakpoint *bpt)
1602 {
1603   return (bpt->type == bp_hardware_watchpoint
1604           || bpt->type == bp_read_watchpoint
1605           || bpt->type == bp_access_watchpoint);
1606 }
1607
1608 /* Return true if BPT is of any watchpoint kind, hardware or
1609    software.  */
1610
1611 int
1612 is_watchpoint (const struct breakpoint *bpt)
1613 {
1614   return (is_hardware_watchpoint (bpt)
1615           || bpt->type == bp_watchpoint);
1616 }
1617
1618 /* Returns true if the current thread and its running state are safe
1619    to evaluate or update watchpoint B.  Watchpoints on local
1620    expressions need to be evaluated in the context of the thread that
1621    was current when the watchpoint was created, and, that thread needs
1622    to be stopped to be able to select the correct frame context.
1623    Watchpoints on global expressions can be evaluated on any thread,
1624    and in any state.  It is presently left to the target allowing
1625    memory accesses when threads are running.  */
1626
1627 static int
1628 watchpoint_in_thread_scope (struct watchpoint *b)
1629 {
1630   return (b->base.pspace == current_program_space
1631           && (ptid_equal (b->watchpoint_thread, null_ptid)
1632               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1633                   && !is_executing (inferior_ptid))));
1634 }
1635
1636 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1637    associated bp_watchpoint_scope breakpoint.  */
1638
1639 static void
1640 watchpoint_del_at_next_stop (struct watchpoint *w)
1641 {
1642   struct breakpoint *b = &w->base;
1643
1644   if (b->related_breakpoint != b)
1645     {
1646       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1647       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1648       b->related_breakpoint->disposition = disp_del_at_next_stop;
1649       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1650       b->related_breakpoint = b;
1651     }
1652   b->disposition = disp_del_at_next_stop;
1653 }
1654
1655 /* Assuming that B is a watchpoint:
1656    - Reparse watchpoint expression, if REPARSE is non-zero
1657    - Evaluate expression and store the result in B->val
1658    - Evaluate the condition if there is one, and store the result
1659      in b->loc->cond.
1660    - Update the list of values that must be watched in B->loc.
1661
1662    If the watchpoint disposition is disp_del_at_next_stop, then do
1663    nothing.  If this is local watchpoint that is out of scope, delete
1664    it.
1665
1666    Even with `set breakpoint always-inserted on' the watchpoints are
1667    removed + inserted on each stop here.  Normal breakpoints must
1668    never be removed because they might be missed by a running thread
1669    when debugging in non-stop mode.  On the other hand, hardware
1670    watchpoints (is_hardware_watchpoint; processed here) are specific
1671    to each LWP since they are stored in each LWP's hardware debug
1672    registers.  Therefore, such LWP must be stopped first in order to
1673    be able to modify its hardware watchpoints.
1674
1675    Hardware watchpoints must be reset exactly once after being
1676    presented to the user.  It cannot be done sooner, because it would
1677    reset the data used to present the watchpoint hit to the user.  And
1678    it must not be done later because it could display the same single
1679    watchpoint hit during multiple GDB stops.  Note that the latter is
1680    relevant only to the hardware watchpoint types bp_read_watchpoint
1681    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1682    not user-visible - its hit is suppressed if the memory content has
1683    not changed.
1684
1685    The following constraints influence the location where we can reset
1686    hardware watchpoints:
1687
1688    * target_stopped_by_watchpoint and target_stopped_data_address are
1689      called several times when GDB stops.
1690
1691    [linux] 
1692    * Multiple hardware watchpoints can be hit at the same time,
1693      causing GDB to stop.  GDB only presents one hardware watchpoint
1694      hit at a time as the reason for stopping, and all the other hits
1695      are presented later, one after the other, each time the user
1696      requests the execution to be resumed.  Execution is not resumed
1697      for the threads still having pending hit event stored in
1698      LWP_INFO->STATUS.  While the watchpoint is already removed from
1699      the inferior on the first stop the thread hit event is kept being
1700      reported from its cached value by linux_nat_stopped_data_address
1701      until the real thread resume happens after the watchpoint gets
1702      presented and thus its LWP_INFO->STATUS gets reset.
1703
1704    Therefore the hardware watchpoint hit can get safely reset on the
1705    watchpoint removal from inferior.  */
1706
1707 static void
1708 update_watchpoint (struct watchpoint *b, int reparse)
1709 {
1710   int within_current_scope;
1711   struct frame_id saved_frame_id;
1712   int frame_saved;
1713
1714   /* If this is a local watchpoint, we only want to check if the
1715      watchpoint frame is in scope if the current thread is the thread
1716      that was used to create the watchpoint.  */
1717   if (!watchpoint_in_thread_scope (b))
1718     return;
1719
1720   if (b->base.disposition == disp_del_at_next_stop)
1721     return;
1722  
1723   frame_saved = 0;
1724
1725   /* Determine if the watchpoint is within scope.  */
1726   if (b->exp_valid_block == NULL)
1727     within_current_scope = 1;
1728   else
1729     {
1730       struct frame_info *fi = get_current_frame ();
1731       struct gdbarch *frame_arch = get_frame_arch (fi);
1732       CORE_ADDR frame_pc = get_frame_pc (fi);
1733
1734       /* If we're in a function epilogue, unwinding may not work
1735          properly, so do not attempt to recreate locations at this
1736          point.  See similar comments in watchpoint_check.  */
1737       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1738         return;
1739
1740       /* Save the current frame's ID so we can restore it after
1741          evaluating the watchpoint expression on its own frame.  */
1742       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1743          took a frame parameter, so that we didn't have to change the
1744          selected frame.  */
1745       frame_saved = 1;
1746       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1747
1748       fi = frame_find_by_id (b->watchpoint_frame);
1749       within_current_scope = (fi != NULL);
1750       if (within_current_scope)
1751         select_frame (fi);
1752     }
1753
1754   /* We don't free locations.  They are stored in the bp_location array
1755      and update_global_location_list will eventually delete them and
1756      remove breakpoints if needed.  */
1757   b->base.loc = NULL;
1758
1759   if (within_current_scope && reparse)
1760     {
1761       const char *s;
1762
1763       if (b->exp)
1764         {
1765           xfree (b->exp);
1766           b->exp = NULL;
1767         }
1768       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1769       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1770       /* If the meaning of expression itself changed, the old value is
1771          no longer relevant.  We don't want to report a watchpoint hit
1772          to the user when the old value and the new value may actually
1773          be completely different objects.  */
1774       value_free (b->val);
1775       b->val = NULL;
1776       b->val_valid = 0;
1777
1778       /* Note that unlike with breakpoints, the watchpoint's condition
1779          expression is stored in the breakpoint object, not in the
1780          locations (re)created below.  */
1781       if (b->base.cond_string != NULL)
1782         {
1783           if (b->cond_exp != NULL)
1784             {
1785               xfree (b->cond_exp);
1786               b->cond_exp = NULL;
1787             }
1788
1789           s = b->base.cond_string;
1790           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1791         }
1792     }
1793
1794   /* If we failed to parse the expression, for example because
1795      it refers to a global variable in a not-yet-loaded shared library,
1796      don't try to insert watchpoint.  We don't automatically delete
1797      such watchpoint, though, since failure to parse expression
1798      is different from out-of-scope watchpoint.  */
1799   if ( !target_has_execution)
1800     {
1801       /* Without execution, memory can't change.  No use to try and
1802          set watchpoint locations.  The watchpoint will be reset when
1803          the target gains execution, through breakpoint_re_set.  */
1804     }
1805   else if (within_current_scope && b->exp)
1806     {
1807       int pc = 0;
1808       struct value *val_chain, *v, *result, *next;
1809       struct program_space *frame_pspace;
1810
1811       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1812
1813       /* Avoid setting b->val if it's already set.  The meaning of
1814          b->val is 'the last value' user saw, and we should update
1815          it only if we reported that last value to user.  As it
1816          happens, the code that reports it updates b->val directly.
1817          We don't keep track of the memory value for masked
1818          watchpoints.  */
1819       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1820         {
1821           b->val = v;
1822           b->val_valid = 1;
1823         }
1824
1825       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1826
1827       /* Look at each value on the value chain.  */
1828       for (v = val_chain; v; v = value_next (v))
1829         {
1830           /* If it's a memory location, and GDB actually needed
1831              its contents to evaluate the expression, then we
1832              must watch it.  If the first value returned is
1833              still lazy, that means an error occurred reading it;
1834              watch it anyway in case it becomes readable.  */
1835           if (VALUE_LVAL (v) == lval_memory
1836               && (v == val_chain || ! value_lazy (v)))
1837             {
1838               struct type *vtype = check_typedef (value_type (v));
1839
1840               /* We only watch structs and arrays if user asked
1841                  for it explicitly, never if they just happen to
1842                  appear in the middle of some value chain.  */
1843               if (v == result
1844                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1845                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1846                 {
1847                   CORE_ADDR addr;
1848                   int type;
1849                   struct bp_location *loc, **tmp;
1850
1851                   addr = value_address (v);
1852                   type = hw_write;
1853                   if (b->base.type == bp_read_watchpoint)
1854                     type = hw_read;
1855                   else if (b->base.type == bp_access_watchpoint)
1856                     type = hw_access;
1857
1858                   loc = allocate_bp_location (&b->base);
1859                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1860                     ;
1861                   *tmp = loc;
1862                   loc->gdbarch = get_type_arch (value_type (v));
1863
1864                   loc->pspace = frame_pspace;
1865                   loc->address = addr;
1866                   loc->length = TYPE_LENGTH (value_type (v));
1867                   loc->watchpoint_type = type;
1868                 }
1869             }
1870         }
1871
1872       /* Change the type of breakpoint between hardware assisted or
1873          an ordinary watchpoint depending on the hardware support
1874          and free hardware slots.  REPARSE is set when the inferior
1875          is started.  */
1876       if (reparse)
1877         {
1878           int reg_cnt;
1879           enum bp_loc_type loc_type;
1880           struct bp_location *bl;
1881
1882           reg_cnt = can_use_hardware_watchpoint (val_chain);
1883
1884           if (reg_cnt)
1885             {
1886               int i, target_resources_ok, other_type_used;
1887               enum bptype type;
1888
1889               /* Use an exact watchpoint when there's only one memory region to be
1890                  watched, and only one debug register is needed to watch it.  */
1891               b->exact = target_exact_watchpoints && reg_cnt == 1;
1892
1893               /* We need to determine how many resources are already
1894                  used for all other hardware watchpoints plus this one
1895                  to see if we still have enough resources to also fit
1896                  this watchpoint in as well.  */
1897
1898               /* If this is a software watchpoint, we try to turn it
1899                  to a hardware one -- count resources as if B was of
1900                  hardware watchpoint type.  */
1901               type = b->base.type;
1902               if (type == bp_watchpoint)
1903                 type = bp_hardware_watchpoint;
1904
1905               /* This watchpoint may or may not have been placed on
1906                  the list yet at this point (it won't be in the list
1907                  if we're trying to create it for the first time,
1908                  through watch_command), so always account for it
1909                  manually.  */
1910
1911               /* Count resources used by all watchpoints except B.  */
1912               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1913
1914               /* Add in the resources needed for B.  */
1915               i += hw_watchpoint_use_count (&b->base);
1916
1917               target_resources_ok
1918                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1919               if (target_resources_ok <= 0)
1920                 {
1921                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1922
1923                   if (target_resources_ok == 0 && !sw_mode)
1924                     error (_("Target does not support this type of "
1925                              "hardware watchpoint."));
1926                   else if (target_resources_ok < 0 && !sw_mode)
1927                     error (_("There are not enough available hardware "
1928                              "resources for this watchpoint."));
1929
1930                   /* Downgrade to software watchpoint.  */
1931                   b->base.type = bp_watchpoint;
1932                 }
1933               else
1934                 {
1935                   /* If this was a software watchpoint, we've just
1936                      found we have enough resources to turn it to a
1937                      hardware watchpoint.  Otherwise, this is a
1938                      nop.  */
1939                   b->base.type = type;
1940                 }
1941             }
1942           else if (!b->base.ops->works_in_software_mode (&b->base))
1943             error (_("Expression cannot be implemented with "
1944                      "read/access watchpoint."));
1945           else
1946             b->base.type = bp_watchpoint;
1947
1948           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1949                       : bp_loc_hardware_watchpoint);
1950           for (bl = b->base.loc; bl; bl = bl->next)
1951             bl->loc_type = loc_type;
1952         }
1953
1954       for (v = val_chain; v; v = next)
1955         {
1956           next = value_next (v);
1957           if (v != b->val)
1958             value_free (v);
1959         }
1960
1961       /* If a software watchpoint is not watching any memory, then the
1962          above left it without any location set up.  But,
1963          bpstat_stop_status requires a location to be able to report
1964          stops, so make sure there's at least a dummy one.  */
1965       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1966         {
1967           struct breakpoint *base = &b->base;
1968           base->loc = allocate_bp_location (base);
1969           base->loc->pspace = frame_pspace;
1970           base->loc->address = -1;
1971           base->loc->length = -1;
1972           base->loc->watchpoint_type = -1;
1973         }
1974     }
1975   else if (!within_current_scope)
1976     {
1977       printf_filtered (_("\
1978 Watchpoint %d deleted because the program has left the block\n\
1979 in which its expression is valid.\n"),
1980                        b->base.number);
1981       watchpoint_del_at_next_stop (b);
1982     }
1983
1984   /* Restore the selected frame.  */
1985   if (frame_saved)
1986     select_frame (frame_find_by_id (saved_frame_id));
1987 }
1988
1989
1990 /* Returns 1 iff breakpoint location should be
1991    inserted in the inferior.  We don't differentiate the type of BL's owner
1992    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1993    breakpoint_ops is not defined, because in insert_bp_location,
1994    tracepoint's insert_location will not be called.  */
1995 static int
1996 should_be_inserted (struct bp_location *bl)
1997 {
1998   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1999     return 0;
2000
2001   if (bl->owner->disposition == disp_del_at_next_stop)
2002     return 0;
2003
2004   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2005     return 0;
2006
2007   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2008     return 0;
2009
2010   /* This is set for example, when we're attached to the parent of a
2011      vfork, and have detached from the child.  The child is running
2012      free, and we expect it to do an exec or exit, at which point the
2013      OS makes the parent schedulable again (and the target reports
2014      that the vfork is done).  Until the child is done with the shared
2015      memory region, do not insert breakpoints in the parent, otherwise
2016      the child could still trip on the parent's breakpoints.  Since
2017      the parent is blocked anyway, it won't miss any breakpoint.  */
2018   if (bl->pspace->breakpoints_not_allowed)
2019     return 0;
2020
2021   return 1;
2022 }
2023
2024 /* Same as should_be_inserted but does the check assuming
2025    that the location is not duplicated.  */
2026
2027 static int
2028 unduplicated_should_be_inserted (struct bp_location *bl)
2029 {
2030   int result;
2031   const int save_duplicate = bl->duplicate;
2032
2033   bl->duplicate = 0;
2034   result = should_be_inserted (bl);
2035   bl->duplicate = save_duplicate;
2036   return result;
2037 }
2038
2039 /* Parses a conditional described by an expression COND into an
2040    agent expression bytecode suitable for evaluation
2041    by the bytecode interpreter.  Return NULL if there was
2042    any error during parsing.  */
2043
2044 static struct agent_expr *
2045 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2046 {
2047   struct agent_expr *aexpr = NULL;
2048   volatile struct gdb_exception ex;
2049
2050   if (!cond)
2051     return NULL;
2052
2053   /* We don't want to stop processing, so catch any errors
2054      that may show up.  */
2055   TRY_CATCH (ex, RETURN_MASK_ERROR)
2056     {
2057       aexpr = gen_eval_for_expr (scope, cond);
2058     }
2059
2060   if (ex.reason < 0)
2061     {
2062       /* If we got here, it means the condition could not be parsed to a valid
2063          bytecode expression and thus can't be evaluated on the target's side.
2064          It's no use iterating through the conditions.  */
2065       return NULL;
2066     }
2067
2068   /* We have a valid agent expression.  */
2069   return aexpr;
2070 }
2071
2072 /* Based on location BL, create a list of breakpoint conditions to be
2073    passed on to the target.  If we have duplicated locations with different
2074    conditions, we will add such conditions to the list.  The idea is that the
2075    target will evaluate the list of conditions and will only notify GDB when
2076    one of them is true.  */
2077
2078 static void
2079 build_target_condition_list (struct bp_location *bl)
2080 {
2081   struct bp_location **locp = NULL, **loc2p;
2082   int null_condition_or_parse_error = 0;
2083   int modified = bl->needs_update;
2084   struct bp_location *loc;
2085
2086   /* This is only meaningful if the target is
2087      evaluating conditions and if the user has
2088      opted for condition evaluation on the target's
2089      side.  */
2090   if (gdb_evaluates_breakpoint_condition_p ()
2091       || !target_supports_evaluation_of_breakpoint_conditions ())
2092     return;
2093
2094   /* Do a first pass to check for locations with no assigned
2095      conditions or conditions that fail to parse to a valid agent expression
2096      bytecode.  If any of these happen, then it's no use to send conditions
2097      to the target since this location will always trigger and generate a
2098      response back to GDB.  */
2099   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2100     {
2101       loc = (*loc2p);
2102       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2103         {
2104           if (modified)
2105             {
2106               struct agent_expr *aexpr;
2107
2108               /* Re-parse the conditions since something changed.  In that
2109                  case we already freed the condition bytecodes (see
2110                  force_breakpoint_reinsertion).  We just
2111                  need to parse the condition to bytecodes again.  */
2112               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2113               loc->cond_bytecode = aexpr;
2114
2115               /* Check if we managed to parse the conditional expression
2116                  correctly.  If not, we will not send this condition
2117                  to the target.  */
2118               if (aexpr)
2119                 continue;
2120             }
2121
2122           /* If we have a NULL bytecode expression, it means something
2123              went wrong or we have a null condition expression.  */
2124           if (!loc->cond_bytecode)
2125             {
2126               null_condition_or_parse_error = 1;
2127               break;
2128             }
2129         }
2130     }
2131
2132   /* If any of these happened, it means we will have to evaluate the conditions
2133      for the location's address on gdb's side.  It is no use keeping bytecodes
2134      for all the other duplicate locations, thus we free all of them here.
2135
2136      This is so we have a finer control over which locations' conditions are
2137      being evaluated by GDB or the remote stub.  */
2138   if (null_condition_or_parse_error)
2139     {
2140       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2141         {
2142           loc = (*loc2p);
2143           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2144             {
2145               /* Only go as far as the first NULL bytecode is
2146                  located.  */
2147               if (!loc->cond_bytecode)
2148                 return;
2149
2150               free_agent_expr (loc->cond_bytecode);
2151               loc->cond_bytecode = NULL;
2152             }
2153         }
2154     }
2155
2156   /* No NULL conditions or failed bytecode generation.  Build a condition list
2157      for this location's address.  */
2158   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2159     {
2160       loc = (*loc2p);
2161       if (loc->cond
2162           && is_breakpoint (loc->owner)
2163           && loc->pspace->num == bl->pspace->num
2164           && loc->owner->enable_state == bp_enabled
2165           && loc->enabled)
2166         /* Add the condition to the vector.  This will be used later to send the
2167            conditions to the target.  */
2168         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2169                        loc->cond_bytecode);
2170     }
2171
2172   return;
2173 }
2174
2175 /* Parses a command described by string CMD into an agent expression
2176    bytecode suitable for evaluation by the bytecode interpreter.
2177    Return NULL if there was any error during parsing.  */
2178
2179 static struct agent_expr *
2180 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2181 {
2182   struct cleanup *old_cleanups = 0;
2183   struct expression *expr, **argvec;
2184   struct agent_expr *aexpr = NULL;
2185   volatile struct gdb_exception ex;
2186   const char *cmdrest;
2187   const char *format_start, *format_end;
2188   struct format_piece *fpieces;
2189   int nargs;
2190   struct gdbarch *gdbarch = get_current_arch ();
2191
2192   if (!cmd)
2193     return NULL;
2194
2195   cmdrest = cmd;
2196
2197   if (*cmdrest == ',')
2198     ++cmdrest;
2199   cmdrest = skip_spaces_const (cmdrest);
2200
2201   if (*cmdrest++ != '"')
2202     error (_("No format string following the location"));
2203
2204   format_start = cmdrest;
2205
2206   fpieces = parse_format_string (&cmdrest);
2207
2208   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2209
2210   format_end = cmdrest;
2211
2212   if (*cmdrest++ != '"')
2213     error (_("Bad format string, non-terminated '\"'."));
2214   
2215   cmdrest = skip_spaces_const (cmdrest);
2216
2217   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2218     error (_("Invalid argument syntax"));
2219
2220   if (*cmdrest == ',')
2221     cmdrest++;
2222   cmdrest = skip_spaces_const (cmdrest);
2223
2224   /* For each argument, make an expression.  */
2225
2226   argvec = (struct expression **) alloca (strlen (cmd)
2227                                          * sizeof (struct expression *));
2228
2229   nargs = 0;
2230   while (*cmdrest != '\0')
2231     {
2232       const char *cmd1;
2233
2234       cmd1 = cmdrest;
2235       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2236       argvec[nargs++] = expr;
2237       cmdrest = cmd1;
2238       if (*cmdrest == ',')
2239         ++cmdrest;
2240     }
2241
2242   /* We don't want to stop processing, so catch any errors
2243      that may show up.  */
2244   TRY_CATCH (ex, RETURN_MASK_ERROR)
2245     {
2246       aexpr = gen_printf (scope, gdbarch, 0, 0,
2247                           format_start, format_end - format_start,
2248                           fpieces, nargs, argvec);
2249     }
2250
2251   do_cleanups (old_cleanups);
2252
2253   if (ex.reason < 0)
2254     {
2255       /* If we got here, it means the command could not be parsed to a valid
2256          bytecode expression and thus can't be evaluated on the target's side.
2257          It's no use iterating through the other commands.  */
2258       return NULL;
2259     }
2260
2261   /* We have a valid agent expression, return it.  */
2262   return aexpr;
2263 }
2264
2265 /* Based on location BL, create a list of breakpoint commands to be
2266    passed on to the target.  If we have duplicated locations with
2267    different commands, we will add any such to the list.  */
2268
2269 static void
2270 build_target_command_list (struct bp_location *bl)
2271 {
2272   struct bp_location **locp = NULL, **loc2p;
2273   int null_command_or_parse_error = 0;
2274   int modified = bl->needs_update;
2275   struct bp_location *loc;
2276
2277   /* For now, limit to agent-style dprintf breakpoints.  */
2278   if (bl->owner->type != bp_dprintf
2279       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2280     return;
2281
2282   if (!target_can_run_breakpoint_commands ())
2283     return;
2284
2285   /* Do a first pass to check for locations with no assigned
2286      conditions or conditions that fail to parse to a valid agent expression
2287      bytecode.  If any of these happen, then it's no use to send conditions
2288      to the target since this location will always trigger and generate a
2289      response back to GDB.  */
2290   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2291     {
2292       loc = (*loc2p);
2293       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2294         {
2295           if (modified)
2296             {
2297               struct agent_expr *aexpr;
2298
2299               /* Re-parse the commands since something changed.  In that
2300                  case we already freed the command bytecodes (see
2301                  force_breakpoint_reinsertion).  We just
2302                  need to parse the command to bytecodes again.  */
2303               aexpr = parse_cmd_to_aexpr (bl->address,
2304                                           loc->owner->extra_string);
2305               loc->cmd_bytecode = aexpr;
2306
2307               if (!aexpr)
2308                 continue;
2309             }
2310
2311           /* If we have a NULL bytecode expression, it means something
2312              went wrong or we have a null command expression.  */
2313           if (!loc->cmd_bytecode)
2314             {
2315               null_command_or_parse_error = 1;
2316               break;
2317             }
2318         }
2319     }
2320
2321   /* If anything failed, then we're not doing target-side commands,
2322      and so clean up.  */
2323   if (null_command_or_parse_error)
2324     {
2325       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2326         {
2327           loc = (*loc2p);
2328           if (is_breakpoint (loc->owner)
2329               && loc->pspace->num == bl->pspace->num)
2330             {
2331               /* Only go as far as the first NULL bytecode is
2332                  located.  */
2333               if (loc->cmd_bytecode == NULL)
2334                 return;
2335
2336               free_agent_expr (loc->cmd_bytecode);
2337               loc->cmd_bytecode = NULL;
2338             }
2339         }
2340     }
2341
2342   /* No NULL commands or failed bytecode generation.  Build a command list
2343      for this location's address.  */
2344   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345     {
2346       loc = (*loc2p);
2347       if (loc->owner->extra_string
2348           && is_breakpoint (loc->owner)
2349           && loc->pspace->num == bl->pspace->num
2350           && loc->owner->enable_state == bp_enabled
2351           && loc->enabled)
2352         /* Add the command to the vector.  This will be used later
2353            to send the commands to the target.  */
2354         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2355                        loc->cmd_bytecode);
2356     }
2357
2358   bl->target_info.persist = 0;
2359   /* Maybe flag this location as persistent.  */
2360   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2361     bl->target_info.persist = 1;
2362 }
2363
2364 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2365    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2366    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2367    Returns 0 for success, 1 if the bp_location type is not supported or
2368    -1 for failure.
2369
2370    NOTE drow/2003-09-09: This routine could be broken down to an
2371    object-style method for each breakpoint or catchpoint type.  */
2372 static int
2373 insert_bp_location (struct bp_location *bl,
2374                     struct ui_file *tmp_error_stream,
2375                     int *disabled_breaks,
2376                     int *hw_breakpoint_error,
2377                     int *hw_bp_error_explained_already)
2378 {
2379   int val = 0;
2380   char *hw_bp_err_string = NULL;
2381   struct gdb_exception e;
2382
2383   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2384     return 0;
2385
2386   /* Note we don't initialize bl->target_info, as that wipes out
2387      the breakpoint location's shadow_contents if the breakpoint
2388      is still inserted at that location.  This in turn breaks
2389      target_read_memory which depends on these buffers when
2390      a memory read is requested at the breakpoint location:
2391      Once the target_info has been wiped, we fail to see that
2392      we have a breakpoint inserted at that address and thus
2393      read the breakpoint instead of returning the data saved in
2394      the breakpoint location's shadow contents.  */
2395   bl->target_info.placed_address = bl->address;
2396   bl->target_info.placed_address_space = bl->pspace->aspace;
2397   bl->target_info.length = bl->length;
2398
2399   /* When working with target-side conditions, we must pass all the conditions
2400      for the same breakpoint address down to the target since GDB will not
2401      insert those locations.  With a list of breakpoint conditions, the target
2402      can decide when to stop and notify GDB.  */
2403
2404   if (is_breakpoint (bl->owner))
2405     {
2406       build_target_condition_list (bl);
2407       build_target_command_list (bl);
2408       /* Reset the modification marker.  */
2409       bl->needs_update = 0;
2410     }
2411
2412   if (bl->loc_type == bp_loc_software_breakpoint
2413       || bl->loc_type == bp_loc_hardware_breakpoint)
2414     {
2415       if (bl->owner->type != bp_hardware_breakpoint)
2416         {
2417           /* If the explicitly specified breakpoint type
2418              is not hardware breakpoint, check the memory map to see
2419              if the breakpoint address is in read only memory or not.
2420
2421              Two important cases are:
2422              - location type is not hardware breakpoint, memory
2423              is readonly.  We change the type of the location to
2424              hardware breakpoint.
2425              - location type is hardware breakpoint, memory is
2426              read-write.  This means we've previously made the
2427              location hardware one, but then the memory map changed,
2428              so we undo.
2429              
2430              When breakpoints are removed, remove_breakpoints will use
2431              location types we've just set here, the only possible
2432              problem is that memory map has changed during running
2433              program, but it's not going to work anyway with current
2434              gdb.  */
2435           struct mem_region *mr 
2436             = lookup_mem_region (bl->target_info.placed_address);
2437           
2438           if (mr)
2439             {
2440               if (automatic_hardware_breakpoints)
2441                 {
2442                   enum bp_loc_type new_type;
2443                   
2444                   if (mr->attrib.mode != MEM_RW)
2445                     new_type = bp_loc_hardware_breakpoint;
2446                   else 
2447                     new_type = bp_loc_software_breakpoint;
2448                   
2449                   if (new_type != bl->loc_type)
2450                     {
2451                       static int said = 0;
2452
2453                       bl->loc_type = new_type;
2454                       if (!said)
2455                         {
2456                           fprintf_filtered (gdb_stdout,
2457                                             _("Note: automatically using "
2458                                               "hardware breakpoints for "
2459                                               "read-only addresses.\n"));
2460                           said = 1;
2461                         }
2462                     }
2463                 }
2464               else if (bl->loc_type == bp_loc_software_breakpoint
2465                        && mr->attrib.mode != MEM_RW)        
2466                 warning (_("cannot set software breakpoint "
2467                            "at readonly address %s"),
2468                          paddress (bl->gdbarch, bl->address));
2469             }
2470         }
2471         
2472       /* First check to see if we have to handle an overlay.  */
2473       if (overlay_debugging == ovly_off
2474           || bl->section == NULL
2475           || !(section_is_overlay (bl->section)))
2476         {
2477           /* No overlay handling: just set the breakpoint.  */
2478           TRY_CATCH (e, RETURN_MASK_ALL)
2479             {
2480               val = bl->owner->ops->insert_location (bl);
2481             }
2482           if (e.reason < 0)
2483             {
2484               val = 1;
2485               hw_bp_err_string = (char *) e.message;
2486             }
2487         }
2488       else
2489         {
2490           /* This breakpoint is in an overlay section.
2491              Shall we set a breakpoint at the LMA?  */
2492           if (!overlay_events_enabled)
2493             {
2494               /* Yes -- overlay event support is not active, 
2495                  so we must try to set a breakpoint at the LMA.
2496                  This will not work for a hardware breakpoint.  */
2497               if (bl->loc_type == bp_loc_hardware_breakpoint)
2498                 warning (_("hardware breakpoint %d not supported in overlay!"),
2499                          bl->owner->number);
2500               else
2501                 {
2502                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2503                                                              bl->section);
2504                   /* Set a software (trap) breakpoint at the LMA.  */
2505                   bl->overlay_target_info = bl->target_info;
2506                   bl->overlay_target_info.placed_address = addr;
2507                   val = target_insert_breakpoint (bl->gdbarch,
2508                                                   &bl->overlay_target_info);
2509                   if (val != 0)
2510                     fprintf_unfiltered (tmp_error_stream,
2511                                         "Overlay breakpoint %d "
2512                                         "failed: in ROM?\n",
2513                                         bl->owner->number);
2514                 }
2515             }
2516           /* Shall we set a breakpoint at the VMA? */
2517           if (section_is_mapped (bl->section))
2518             {
2519               /* Yes.  This overlay section is mapped into memory.  */
2520               TRY_CATCH (e, RETURN_MASK_ALL)
2521                 {
2522                   val = bl->owner->ops->insert_location (bl);
2523                 }
2524               if (e.reason < 0)
2525                 {
2526                   val = 1;
2527                   hw_bp_err_string = (char *) e.message;
2528                 }
2529             }
2530           else
2531             {
2532               /* No.  This breakpoint will not be inserted.  
2533                  No error, but do not mark the bp as 'inserted'.  */
2534               return 0;
2535             }
2536         }
2537
2538       if (val)
2539         {
2540           /* Can't set the breakpoint.  */
2541           if (solib_name_from_address (bl->pspace, bl->address))
2542             {
2543               /* See also: disable_breakpoints_in_shlibs.  */
2544               val = 0;
2545               bl->shlib_disabled = 1;
2546               observer_notify_breakpoint_modified (bl->owner);
2547               if (!*disabled_breaks)
2548                 {
2549                   fprintf_unfiltered (tmp_error_stream, 
2550                                       "Cannot insert breakpoint %d.\n", 
2551                                       bl->owner->number);
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Temporarily disabling shared "
2554                                       "library breakpoints:\n");
2555                 }
2556               *disabled_breaks = 1;
2557               fprintf_unfiltered (tmp_error_stream,
2558                                   "breakpoint #%d\n", bl->owner->number);
2559             }
2560           else
2561             {
2562               if (bl->loc_type == bp_loc_hardware_breakpoint)
2563                 {
2564                   *hw_breakpoint_error = 1;
2565                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2566                   fprintf_unfiltered (tmp_error_stream,
2567                                       "Cannot insert hardware breakpoint %d%s",
2568                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2569                   if (hw_bp_err_string)
2570                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2571                 }
2572               else
2573                 {
2574                   fprintf_unfiltered (tmp_error_stream, 
2575                                       "Cannot insert breakpoint %d.\n", 
2576                                       bl->owner->number);
2577                   fprintf_filtered (tmp_error_stream, 
2578                                     "Error accessing memory address ");
2579                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2580                                   tmp_error_stream);
2581                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2582                                     safe_strerror (val));
2583                 }
2584
2585             }
2586         }
2587       else
2588         bl->inserted = 1;
2589
2590       return val;
2591     }
2592
2593   else if (bl->loc_type == bp_loc_hardware_watchpoint
2594            /* NOTE drow/2003-09-08: This state only exists for removing
2595               watchpoints.  It's not clear that it's necessary...  */
2596            && bl->owner->disposition != disp_del_at_next_stop)
2597     {
2598       gdb_assert (bl->owner->ops != NULL
2599                   && bl->owner->ops->insert_location != NULL);
2600
2601       val = bl->owner->ops->insert_location (bl);
2602
2603       /* If trying to set a read-watchpoint, and it turns out it's not
2604          supported, try emulating one with an access watchpoint.  */
2605       if (val == 1 && bl->watchpoint_type == hw_read)
2606         {
2607           struct bp_location *loc, **loc_temp;
2608
2609           /* But don't try to insert it, if there's already another
2610              hw_access location that would be considered a duplicate
2611              of this one.  */
2612           ALL_BP_LOCATIONS (loc, loc_temp)
2613             if (loc != bl
2614                 && loc->watchpoint_type == hw_access
2615                 && watchpoint_locations_match (bl, loc))
2616               {
2617                 bl->duplicate = 1;
2618                 bl->inserted = 1;
2619                 bl->target_info = loc->target_info;
2620                 bl->watchpoint_type = hw_access;
2621                 val = 0;
2622                 break;
2623               }
2624
2625           if (val == 1)
2626             {
2627               bl->watchpoint_type = hw_access;
2628               val = bl->owner->ops->insert_location (bl);
2629
2630               if (val)
2631                 /* Back to the original value.  */
2632                 bl->watchpoint_type = hw_read;
2633             }
2634         }
2635
2636       bl->inserted = (val == 0);
2637     }
2638
2639   else if (bl->owner->type == bp_catchpoint)
2640     {
2641       gdb_assert (bl->owner->ops != NULL
2642                   && bl->owner->ops->insert_location != NULL);
2643
2644       val = bl->owner->ops->insert_location (bl);
2645       if (val)
2646         {
2647           bl->owner->enable_state = bp_disabled;
2648
2649           if (val == 1)
2650             warning (_("\
2651 Error inserting catchpoint %d: Your system does not support this type\n\
2652 of catchpoint."), bl->owner->number);
2653           else
2654             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2655         }
2656
2657       bl->inserted = (val == 0);
2658
2659       /* We've already printed an error message if there was a problem
2660          inserting this catchpoint, and we've disabled the catchpoint,
2661          so just return success.  */
2662       return 0;
2663     }
2664
2665   return 0;
2666 }
2667
2668 /* This function is called when program space PSPACE is about to be
2669    deleted.  It takes care of updating breakpoints to not reference
2670    PSPACE anymore.  */
2671
2672 void
2673 breakpoint_program_space_exit (struct program_space *pspace)
2674 {
2675   struct breakpoint *b, *b_temp;
2676   struct bp_location *loc, **loc_temp;
2677
2678   /* Remove any breakpoint that was set through this program space.  */
2679   ALL_BREAKPOINTS_SAFE (b, b_temp)
2680     {
2681       if (b->pspace == pspace)
2682         delete_breakpoint (b);
2683     }
2684
2685   /* Breakpoints set through other program spaces could have locations
2686      bound to PSPACE as well.  Remove those.  */
2687   ALL_BP_LOCATIONS (loc, loc_temp)
2688     {
2689       struct bp_location *tmp;
2690
2691       if (loc->pspace == pspace)
2692         {
2693           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2694           if (loc->owner->loc == loc)
2695             loc->owner->loc = loc->next;
2696           else
2697             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2698               if (tmp->next == loc)
2699                 {
2700                   tmp->next = loc->next;
2701                   break;
2702                 }
2703         }
2704     }
2705
2706   /* Now update the global location list to permanently delete the
2707      removed locations above.  */
2708   update_global_location_list (0);
2709 }
2710
2711 /* Make sure all breakpoints are inserted in inferior.
2712    Throws exception on any error.
2713    A breakpoint that is already inserted won't be inserted
2714    again, so calling this function twice is safe.  */
2715 void
2716 insert_breakpoints (void)
2717 {
2718   struct breakpoint *bpt;
2719
2720   ALL_BREAKPOINTS (bpt)
2721     if (is_hardware_watchpoint (bpt))
2722       {
2723         struct watchpoint *w = (struct watchpoint *) bpt;
2724
2725         update_watchpoint (w, 0 /* don't reparse.  */);
2726       }
2727
2728   update_global_location_list (1);
2729
2730   /* update_global_location_list does not insert breakpoints when
2731      always_inserted_mode is not enabled.  Explicitly insert them
2732      now.  */
2733   if (!breakpoints_always_inserted_mode ())
2734     insert_breakpoint_locations ();
2735 }
2736
2737 /* Invoke CALLBACK for each of bp_location.  */
2738
2739 void
2740 iterate_over_bp_locations (walk_bp_location_callback callback)
2741 {
2742   struct bp_location *loc, **loc_tmp;
2743
2744   ALL_BP_LOCATIONS (loc, loc_tmp)
2745     {
2746       callback (loc, NULL);
2747     }
2748 }
2749
2750 /* This is used when we need to synch breakpoint conditions between GDB and the
2751    target.  It is the case with deleting and disabling of breakpoints when using
2752    always-inserted mode.  */
2753
2754 static void
2755 update_inserted_breakpoint_locations (void)
2756 {
2757   struct bp_location *bl, **blp_tmp;
2758   int error_flag = 0;
2759   int val = 0;
2760   int disabled_breaks = 0;
2761   int hw_breakpoint_error = 0;
2762   int hw_bp_details_reported = 0;
2763
2764   struct ui_file *tmp_error_stream = mem_fileopen ();
2765   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2766
2767   /* Explicitly mark the warning -- this will only be printed if
2768      there was an error.  */
2769   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2770
2771   save_current_space_and_thread ();
2772
2773   ALL_BP_LOCATIONS (bl, blp_tmp)
2774     {
2775       /* We only want to update software breakpoints and hardware
2776          breakpoints.  */
2777       if (!is_breakpoint (bl->owner))
2778         continue;
2779
2780       /* We only want to update locations that are already inserted
2781          and need updating.  This is to avoid unwanted insertion during
2782          deletion of breakpoints.  */
2783       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2784         continue;
2785
2786       switch_to_program_space_and_thread (bl->pspace);
2787
2788       /* For targets that support global breakpoints, there's no need
2789          to select an inferior to insert breakpoint to.  In fact, even
2790          if we aren't attached to any process yet, we should still
2791          insert breakpoints.  */
2792       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2793           && ptid_equal (inferior_ptid, null_ptid))
2794         continue;
2795
2796       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2797                                     &hw_breakpoint_error, &hw_bp_details_reported);
2798       if (val)
2799         error_flag = val;
2800     }
2801
2802   if (error_flag)
2803     {
2804       target_terminal_ours_for_output ();
2805       error_stream (tmp_error_stream);
2806     }
2807
2808   do_cleanups (cleanups);
2809 }
2810
2811 /* Used when starting or continuing the program.  */
2812
2813 static void
2814 insert_breakpoint_locations (void)
2815 {
2816   struct breakpoint *bpt;
2817   struct bp_location *bl, **blp_tmp;
2818   int error_flag = 0;
2819   int val = 0;
2820   int disabled_breaks = 0;
2821   int hw_breakpoint_error = 0;
2822   int hw_bp_error_explained_already = 0;
2823
2824   struct ui_file *tmp_error_stream = mem_fileopen ();
2825   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2826   
2827   /* Explicitly mark the warning -- this will only be printed if
2828      there was an error.  */
2829   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2830
2831   save_current_space_and_thread ();
2832
2833   ALL_BP_LOCATIONS (bl, blp_tmp)
2834     {
2835       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2836         continue;
2837
2838       /* There is no point inserting thread-specific breakpoints if
2839          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2840          has BL->OWNER always non-NULL.  */
2841       if (bl->owner->thread != -1
2842           && !valid_thread_id (bl->owner->thread))
2843         continue;
2844
2845       switch_to_program_space_and_thread (bl->pspace);
2846
2847       /* For targets that support global breakpoints, there's no need
2848          to select an inferior to insert breakpoint to.  In fact, even
2849          if we aren't attached to any process yet, we should still
2850          insert breakpoints.  */
2851       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2852           && ptid_equal (inferior_ptid, null_ptid))
2853         continue;
2854
2855       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2856                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2857       if (val)
2858         error_flag = val;
2859     }
2860
2861   /* If we failed to insert all locations of a watchpoint, remove
2862      them, as half-inserted watchpoint is of limited use.  */
2863   ALL_BREAKPOINTS (bpt)  
2864     {
2865       int some_failed = 0;
2866       struct bp_location *loc;
2867
2868       if (!is_hardware_watchpoint (bpt))
2869         continue;
2870
2871       if (!breakpoint_enabled (bpt))
2872         continue;
2873
2874       if (bpt->disposition == disp_del_at_next_stop)
2875         continue;
2876       
2877       for (loc = bpt->loc; loc; loc = loc->next)
2878         if (!loc->inserted && should_be_inserted (loc))
2879           {
2880             some_failed = 1;
2881             break;
2882           }
2883       if (some_failed)
2884         {
2885           for (loc = bpt->loc; loc; loc = loc->next)
2886             if (loc->inserted)
2887               remove_breakpoint (loc, mark_uninserted);
2888
2889           hw_breakpoint_error = 1;
2890           fprintf_unfiltered (tmp_error_stream,
2891                               "Could not insert hardware watchpoint %d.\n", 
2892                               bpt->number);
2893           error_flag = -1;
2894         }
2895     }
2896
2897   if (error_flag)
2898     {
2899       /* If a hardware breakpoint or watchpoint was inserted, add a
2900          message about possibly exhausted resources.  */
2901       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2902         {
2903           fprintf_unfiltered (tmp_error_stream, 
2904                               "Could not insert hardware breakpoints:\n\
2905 You may have requested too many hardware breakpoints/watchpoints.\n");
2906         }
2907       target_terminal_ours_for_output ();
2908       error_stream (tmp_error_stream);
2909     }
2910
2911   do_cleanups (cleanups);
2912 }
2913
2914 /* Used when the program stops.
2915    Returns zero if successful, or non-zero if there was a problem
2916    removing a breakpoint location.  */
2917
2918 int
2919 remove_breakpoints (void)
2920 {
2921   struct bp_location *bl, **blp_tmp;
2922   int val = 0;
2923
2924   ALL_BP_LOCATIONS (bl, blp_tmp)
2925   {
2926     if (bl->inserted && !is_tracepoint (bl->owner))
2927       val |= remove_breakpoint (bl, mark_uninserted);
2928   }
2929   return val;
2930 }
2931
2932 /* Remove breakpoints of process PID.  */
2933
2934 int
2935 remove_breakpoints_pid (int pid)
2936 {
2937   struct bp_location *bl, **blp_tmp;
2938   int val;
2939   struct inferior *inf = find_inferior_pid (pid);
2940
2941   ALL_BP_LOCATIONS (bl, blp_tmp)
2942   {
2943     if (bl->pspace != inf->pspace)
2944       continue;
2945
2946     if (bl->owner->type == bp_dprintf)
2947       continue;
2948
2949     if (bl->inserted)
2950       {
2951         val = remove_breakpoint (bl, mark_uninserted);
2952         if (val != 0)
2953           return val;
2954       }
2955   }
2956   return 0;
2957 }
2958
2959 int
2960 reattach_breakpoints (int pid)
2961 {
2962   struct cleanup *old_chain;
2963   struct bp_location *bl, **blp_tmp;
2964   int val;
2965   struct ui_file *tmp_error_stream;
2966   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2967   struct inferior *inf;
2968   struct thread_info *tp;
2969
2970   tp = any_live_thread_of_process (pid);
2971   if (tp == NULL)
2972     return 1;
2973
2974   inf = find_inferior_pid (pid);
2975   old_chain = save_inferior_ptid ();
2976
2977   inferior_ptid = tp->ptid;
2978
2979   tmp_error_stream = mem_fileopen ();
2980   make_cleanup_ui_file_delete (tmp_error_stream);
2981
2982   ALL_BP_LOCATIONS (bl, blp_tmp)
2983   {
2984     if (bl->pspace != inf->pspace)
2985       continue;
2986
2987     if (bl->inserted)
2988       {
2989         bl->inserted = 0;
2990         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2991         if (val != 0)
2992           {
2993             do_cleanups (old_chain);
2994             return val;
2995           }
2996       }
2997   }
2998   do_cleanups (old_chain);
2999   return 0;
3000 }
3001
3002 static int internal_breakpoint_number = -1;
3003
3004 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3005    If INTERNAL is non-zero, the breakpoint number will be populated
3006    from internal_breakpoint_number and that variable decremented.
3007    Otherwise the breakpoint number will be populated from
3008    breakpoint_count and that value incremented.  Internal breakpoints
3009    do not set the internal var bpnum.  */
3010 static void
3011 set_breakpoint_number (int internal, struct breakpoint *b)
3012 {
3013   if (internal)
3014     b->number = internal_breakpoint_number--;
3015   else
3016     {
3017       set_breakpoint_count (breakpoint_count + 1);
3018       b->number = breakpoint_count;
3019     }
3020 }
3021
3022 static struct breakpoint *
3023 create_internal_breakpoint (struct gdbarch *gdbarch,
3024                             CORE_ADDR address, enum bptype type,
3025                             const struct breakpoint_ops *ops)
3026 {
3027   struct symtab_and_line sal;
3028   struct breakpoint *b;
3029
3030   init_sal (&sal);              /* Initialize to zeroes.  */
3031
3032   sal.pc = address;
3033   sal.section = find_pc_overlay (sal.pc);
3034   sal.pspace = current_program_space;
3035
3036   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3037   b->number = internal_breakpoint_number--;
3038   b->disposition = disp_donttouch;
3039
3040   return b;
3041 }
3042
3043 static const char *const longjmp_names[] =
3044   {
3045     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3046   };
3047 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3048
3049 /* Per-objfile data private to breakpoint.c.  */
3050 struct breakpoint_objfile_data
3051 {
3052   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3053   struct minimal_symbol *overlay_msym;
3054
3055   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3056   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3057
3058   /* True if we have looked for longjmp probes.  */
3059   int longjmp_searched;
3060
3061   /* SystemTap probe points for longjmp (if any).  */
3062   VEC (probe_p) *longjmp_probes;
3063
3064   /* Minimal symbol for "std::terminate()" (if any).  */
3065   struct minimal_symbol *terminate_msym;
3066
3067   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3068   struct minimal_symbol *exception_msym;
3069
3070   /* True if we have looked for exception probes.  */
3071   int exception_searched;
3072
3073   /* SystemTap probe points for unwinding (if any).  */
3074   VEC (probe_p) *exception_probes;
3075 };
3076
3077 static const struct objfile_data *breakpoint_objfile_key;
3078
3079 /* Minimal symbol not found sentinel.  */
3080 static struct minimal_symbol msym_not_found;
3081
3082 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3083
3084 static int
3085 msym_not_found_p (const struct minimal_symbol *msym)
3086 {
3087   return msym == &msym_not_found;
3088 }
3089
3090 /* Return per-objfile data needed by breakpoint.c.
3091    Allocate the data if necessary.  */
3092
3093 static struct breakpoint_objfile_data *
3094 get_breakpoint_objfile_data (struct objfile *objfile)
3095 {
3096   struct breakpoint_objfile_data *bp_objfile_data;
3097
3098   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3099   if (bp_objfile_data == NULL)
3100     {
3101       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3102                                        sizeof (*bp_objfile_data));
3103
3104       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3105       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3106     }
3107   return bp_objfile_data;
3108 }
3109
3110 static void
3111 free_breakpoint_probes (struct objfile *obj, void *data)
3112 {
3113   struct breakpoint_objfile_data *bp_objfile_data = data;
3114
3115   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3116   VEC_free (probe_p, bp_objfile_data->exception_probes);
3117 }
3118
3119 static void
3120 create_overlay_event_breakpoint (void)
3121 {
3122   struct objfile *objfile;
3123   const char *const func_name = "_ovly_debug_event";
3124
3125   ALL_OBJFILES (objfile)
3126     {
3127       struct breakpoint *b;
3128       struct breakpoint_objfile_data *bp_objfile_data;
3129       CORE_ADDR addr;
3130
3131       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3132
3133       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3134         continue;
3135
3136       if (bp_objfile_data->overlay_msym == NULL)
3137         {
3138           struct minimal_symbol *m;
3139
3140           m = lookup_minimal_symbol_text (func_name, objfile);
3141           if (m == NULL)
3142             {
3143               /* Avoid future lookups in this objfile.  */
3144               bp_objfile_data->overlay_msym = &msym_not_found;
3145               continue;
3146             }
3147           bp_objfile_data->overlay_msym = m;
3148         }
3149
3150       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3151       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3152                                       bp_overlay_event,
3153                                       &internal_breakpoint_ops);
3154       b->addr_string = xstrdup (func_name);
3155
3156       if (overlay_debugging == ovly_auto)
3157         {
3158           b->enable_state = bp_enabled;
3159           overlay_events_enabled = 1;
3160         }
3161       else
3162        {
3163          b->enable_state = bp_disabled;
3164          overlay_events_enabled = 0;
3165        }
3166     }
3167   update_global_location_list (1);
3168 }
3169
3170 static void
3171 create_longjmp_master_breakpoint (void)
3172 {
3173   struct program_space *pspace;
3174   struct cleanup *old_chain;
3175
3176   old_chain = save_current_program_space ();
3177
3178   ALL_PSPACES (pspace)
3179   {
3180     struct objfile *objfile;
3181
3182     set_current_program_space (pspace);
3183
3184     ALL_OBJFILES (objfile)
3185     {
3186       int i;
3187       struct gdbarch *gdbarch;
3188       struct breakpoint_objfile_data *bp_objfile_data;
3189
3190       gdbarch = get_objfile_arch (objfile);
3191       if (!gdbarch_get_longjmp_target_p (gdbarch))
3192         continue;
3193
3194       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3195
3196       if (!bp_objfile_data->longjmp_searched)
3197         {
3198           bp_objfile_data->longjmp_probes
3199             = find_probes_in_objfile (objfile, "libc", "longjmp");
3200           bp_objfile_data->longjmp_searched = 1;
3201         }
3202
3203       if (bp_objfile_data->longjmp_probes != NULL)
3204         {
3205           int i;
3206           struct probe *probe;
3207           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3208
3209           for (i = 0;
3210                VEC_iterate (probe_p,
3211                             bp_objfile_data->longjmp_probes,
3212                             i, probe);
3213                ++i)
3214             {
3215               struct breakpoint *b;
3216
3217               b = create_internal_breakpoint (gdbarch, probe->address,
3218                                               bp_longjmp_master,
3219                                               &internal_breakpoint_ops);
3220               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3221               b->enable_state = bp_disabled;
3222             }
3223
3224           continue;
3225         }
3226
3227       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3228         {
3229           struct breakpoint *b;
3230           const char *func_name;
3231           CORE_ADDR addr;
3232
3233           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3234             continue;
3235
3236           func_name = longjmp_names[i];
3237           if (bp_objfile_data->longjmp_msym[i] == NULL)
3238             {
3239               struct minimal_symbol *m;
3240
3241               m = lookup_minimal_symbol_text (func_name, objfile);
3242               if (m == NULL)
3243                 {
3244                   /* Prevent future lookups in this objfile.  */
3245                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3246                   continue;
3247                 }
3248               bp_objfile_data->longjmp_msym[i] = m;
3249             }
3250
3251           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3252           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3253                                           &internal_breakpoint_ops);
3254           b->addr_string = xstrdup (func_name);
3255           b->enable_state = bp_disabled;
3256         }
3257     }
3258   }
3259   update_global_location_list (1);
3260
3261   do_cleanups (old_chain);
3262 }
3263
3264 /* Create a master std::terminate breakpoint.  */
3265 static void
3266 create_std_terminate_master_breakpoint (void)
3267 {
3268   struct program_space *pspace;
3269   struct cleanup *old_chain;
3270   const char *const func_name = "std::terminate()";
3271
3272   old_chain = save_current_program_space ();
3273
3274   ALL_PSPACES (pspace)
3275   {
3276     struct objfile *objfile;
3277     CORE_ADDR addr;
3278
3279     set_current_program_space (pspace);
3280
3281     ALL_OBJFILES (objfile)
3282     {
3283       struct breakpoint *b;
3284       struct breakpoint_objfile_data *bp_objfile_data;
3285
3286       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3287
3288       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3289         continue;
3290
3291       if (bp_objfile_data->terminate_msym == NULL)
3292         {
3293           struct minimal_symbol *m;
3294
3295           m = lookup_minimal_symbol (func_name, NULL, objfile);
3296           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3297                             && MSYMBOL_TYPE (m) != mst_file_text))
3298             {
3299               /* Prevent future lookups in this objfile.  */
3300               bp_objfile_data->terminate_msym = &msym_not_found;
3301               continue;
3302             }
3303           bp_objfile_data->terminate_msym = m;
3304         }
3305
3306       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3307       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3308                                       bp_std_terminate_master,
3309                                       &internal_breakpoint_ops);
3310       b->addr_string = xstrdup (func_name);
3311       b->enable_state = bp_disabled;
3312     }
3313   }
3314
3315   update_global_location_list (1);
3316
3317   do_cleanups (old_chain);
3318 }
3319
3320 /* Install a master breakpoint on the unwinder's debug hook.  */
3321
3322 static void
3323 create_exception_master_breakpoint (void)
3324 {
3325   struct objfile *objfile;
3326   const char *const func_name = "_Unwind_DebugHook";
3327
3328   ALL_OBJFILES (objfile)
3329     {
3330       struct breakpoint *b;
3331       struct gdbarch *gdbarch;
3332       struct breakpoint_objfile_data *bp_objfile_data;
3333       CORE_ADDR addr;
3334
3335       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3336
3337       /* We prefer the SystemTap probe point if it exists.  */
3338       if (!bp_objfile_data->exception_searched)
3339         {
3340           bp_objfile_data->exception_probes
3341             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3342           bp_objfile_data->exception_searched = 1;
3343         }
3344
3345       if (bp_objfile_data->exception_probes != NULL)
3346         {
3347           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3348           int i;
3349           struct probe *probe;
3350
3351           for (i = 0;
3352                VEC_iterate (probe_p,
3353                             bp_objfile_data->exception_probes,
3354                             i, probe);
3355                ++i)
3356             {
3357               struct breakpoint *b;
3358
3359               b = create_internal_breakpoint (gdbarch, probe->address,
3360                                               bp_exception_master,
3361                                               &internal_breakpoint_ops);
3362               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3363               b->enable_state = bp_disabled;
3364             }
3365
3366           continue;
3367         }
3368
3369       /* Otherwise, try the hook function.  */
3370
3371       if (msym_not_found_p (bp_objfile_data->exception_msym))
3372         continue;
3373
3374       gdbarch = get_objfile_arch (objfile);
3375
3376       if (bp_objfile_data->exception_msym == NULL)
3377         {
3378           struct minimal_symbol *debug_hook;
3379
3380           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3381           if (debug_hook == NULL)
3382             {
3383               bp_objfile_data->exception_msym = &msym_not_found;
3384               continue;
3385             }
3386
3387           bp_objfile_data->exception_msym = debug_hook;
3388         }
3389
3390       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3391       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3392                                                  &current_target);
3393       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3394                                       &internal_breakpoint_ops);
3395       b->addr_string = xstrdup (func_name);
3396       b->enable_state = bp_disabled;
3397     }
3398
3399   update_global_location_list (1);
3400 }
3401
3402 void
3403 update_breakpoints_after_exec (void)
3404 {
3405   struct breakpoint *b, *b_tmp;
3406   struct bp_location *bploc, **bplocp_tmp;
3407
3408   /* We're about to delete breakpoints from GDB's lists.  If the
3409      INSERTED flag is true, GDB will try to lift the breakpoints by
3410      writing the breakpoints' "shadow contents" back into memory.  The
3411      "shadow contents" are NOT valid after an exec, so GDB should not
3412      do that.  Instead, the target is responsible from marking
3413      breakpoints out as soon as it detects an exec.  We don't do that
3414      here instead, because there may be other attempts to delete
3415      breakpoints after detecting an exec and before reaching here.  */
3416   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3417     if (bploc->pspace == current_program_space)
3418       gdb_assert (!bploc->inserted);
3419
3420   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3421   {
3422     if (b->pspace != current_program_space)
3423       continue;
3424
3425     /* Solib breakpoints must be explicitly reset after an exec().  */
3426     if (b->type == bp_shlib_event)
3427       {
3428         delete_breakpoint (b);
3429         continue;
3430       }
3431
3432     /* JIT breakpoints must be explicitly reset after an exec().  */
3433     if (b->type == bp_jit_event)
3434       {
3435         delete_breakpoint (b);
3436         continue;
3437       }
3438
3439     /* Thread event breakpoints must be set anew after an exec(),
3440        as must overlay event and longjmp master breakpoints.  */
3441     if (b->type == bp_thread_event || b->type == bp_overlay_event
3442         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3443         || b->type == bp_exception_master)
3444       {
3445         delete_breakpoint (b);
3446         continue;
3447       }
3448
3449     /* Step-resume breakpoints are meaningless after an exec().  */
3450     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3451       {
3452         delete_breakpoint (b);
3453         continue;
3454       }
3455
3456     /* Longjmp and longjmp-resume breakpoints are also meaningless
3457        after an exec.  */
3458     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3459         || b->type == bp_longjmp_call_dummy
3460         || b->type == bp_exception || b->type == bp_exception_resume)
3461       {
3462         delete_breakpoint (b);
3463         continue;
3464       }
3465
3466     if (b->type == bp_catchpoint)
3467       {
3468         /* For now, none of the bp_catchpoint breakpoints need to
3469            do anything at this point.  In the future, if some of
3470            the catchpoints need to something, we will need to add
3471            a new method, and call this method from here.  */
3472         continue;
3473       }
3474
3475     /* bp_finish is a special case.  The only way we ought to be able
3476        to see one of these when an exec() has happened, is if the user
3477        caught a vfork, and then said "finish".  Ordinarily a finish just
3478        carries them to the call-site of the current callee, by setting
3479        a temporary bp there and resuming.  But in this case, the finish
3480        will carry them entirely through the vfork & exec.
3481
3482        We don't want to allow a bp_finish to remain inserted now.  But
3483        we can't safely delete it, 'cause finish_command has a handle to
3484        the bp on a bpstat, and will later want to delete it.  There's a
3485        chance (and I've seen it happen) that if we delete the bp_finish
3486        here, that its storage will get reused by the time finish_command
3487        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3488        We really must allow finish_command to delete a bp_finish.
3489
3490        In the absence of a general solution for the "how do we know
3491        it's safe to delete something others may have handles to?"
3492        problem, what we'll do here is just uninsert the bp_finish, and
3493        let finish_command delete it.
3494
3495        (We know the bp_finish is "doomed" in the sense that it's
3496        momentary, and will be deleted as soon as finish_command sees
3497        the inferior stopped.  So it doesn't matter that the bp's
3498        address is probably bogus in the new a.out, unlike e.g., the
3499        solib breakpoints.)  */
3500
3501     if (b->type == bp_finish)
3502       {
3503         continue;
3504       }
3505
3506     /* Without a symbolic address, we have little hope of the
3507        pre-exec() address meaning the same thing in the post-exec()
3508        a.out.  */
3509     if (b->addr_string == NULL)
3510       {
3511         delete_breakpoint (b);
3512         continue;
3513       }
3514   }
3515   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3516   create_overlay_event_breakpoint ();
3517   create_longjmp_master_breakpoint ();
3518   create_std_terminate_master_breakpoint ();
3519   create_exception_master_breakpoint ();
3520 }
3521
3522 int
3523 detach_breakpoints (ptid_t ptid)
3524 {
3525   struct bp_location *bl, **blp_tmp;
3526   int val = 0;
3527   struct cleanup *old_chain = save_inferior_ptid ();
3528   struct inferior *inf = current_inferior ();
3529
3530   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3531     error (_("Cannot detach breakpoints of inferior_ptid"));
3532
3533   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3534   inferior_ptid = ptid;
3535   ALL_BP_LOCATIONS (bl, blp_tmp)
3536   {
3537     if (bl->pspace != inf->pspace)
3538       continue;
3539
3540     /* This function must physically remove breakpoints locations
3541        from the specified ptid, without modifying the breakpoint
3542        package's state.  Locations of type bp_loc_other are only
3543        maintained at GDB side.  So, there is no need to remove
3544        these bp_loc_other locations.  Moreover, removing these
3545        would modify the breakpoint package's state.  */
3546     if (bl->loc_type == bp_loc_other)
3547       continue;
3548
3549     if (bl->inserted)
3550       val |= remove_breakpoint_1 (bl, mark_inserted);
3551   }
3552
3553   /* Detach single-step breakpoints as well.  */
3554   detach_single_step_breakpoints ();
3555
3556   do_cleanups (old_chain);
3557   return val;
3558 }
3559
3560 /* Remove the breakpoint location BL from the current address space.
3561    Note that this is used to detach breakpoints from a child fork.
3562    When we get here, the child isn't in the inferior list, and neither
3563    do we have objects to represent its address space --- we should
3564    *not* look at bl->pspace->aspace here.  */
3565
3566 static int
3567 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3568 {
3569   int val;
3570
3571   /* BL is never in moribund_locations by our callers.  */
3572   gdb_assert (bl->owner != NULL);
3573
3574   if (bl->owner->enable_state == bp_permanent)
3575     /* Permanent breakpoints cannot be inserted or removed.  */
3576     return 0;
3577
3578   /* The type of none suggests that owner is actually deleted.
3579      This should not ever happen.  */
3580   gdb_assert (bl->owner->type != bp_none);
3581
3582   if (bl->loc_type == bp_loc_software_breakpoint
3583       || bl->loc_type == bp_loc_hardware_breakpoint)
3584     {
3585       /* "Normal" instruction breakpoint: either the standard
3586          trap-instruction bp (bp_breakpoint), or a
3587          bp_hardware_breakpoint.  */
3588
3589       /* First check to see if we have to handle an overlay.  */
3590       if (overlay_debugging == ovly_off
3591           || bl->section == NULL
3592           || !(section_is_overlay (bl->section)))
3593         {
3594           /* No overlay handling: just remove the breakpoint.  */
3595           val = bl->owner->ops->remove_location (bl);
3596         }
3597       else
3598         {
3599           /* This breakpoint is in an overlay section.
3600              Did we set a breakpoint at the LMA?  */
3601           if (!overlay_events_enabled)
3602               {
3603                 /* Yes -- overlay event support is not active, so we
3604                    should have set a breakpoint at the LMA.  Remove it.  
3605                 */
3606                 /* Ignore any failures: if the LMA is in ROM, we will
3607                    have already warned when we failed to insert it.  */
3608                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3609                   target_remove_hw_breakpoint (bl->gdbarch,
3610                                                &bl->overlay_target_info);
3611                 else
3612                   target_remove_breakpoint (bl->gdbarch,
3613                                             &bl->overlay_target_info);
3614               }
3615           /* Did we set a breakpoint at the VMA? 
3616              If so, we will have marked the breakpoint 'inserted'.  */
3617           if (bl->inserted)
3618             {
3619               /* Yes -- remove it.  Previously we did not bother to
3620                  remove the breakpoint if the section had been
3621                  unmapped, but let's not rely on that being safe.  We
3622                  don't know what the overlay manager might do.  */
3623
3624               /* However, we should remove *software* breakpoints only
3625                  if the section is still mapped, or else we overwrite
3626                  wrong code with the saved shadow contents.  */
3627               if (bl->loc_type == bp_loc_hardware_breakpoint
3628                   || section_is_mapped (bl->section))
3629                 val = bl->owner->ops->remove_location (bl);
3630               else
3631                 val = 0;
3632             }
3633           else
3634             {
3635               /* No -- not inserted, so no need to remove.  No error.  */
3636               val = 0;
3637             }
3638         }
3639
3640       /* In some cases, we might not be able to remove a breakpoint
3641          in a shared library that has already been removed, but we
3642          have not yet processed the shlib unload event.  */
3643       if (val && solib_name_from_address (bl->pspace, bl->address))
3644         val = 0;
3645
3646       if (val)
3647         return val;
3648       bl->inserted = (is == mark_inserted);
3649     }
3650   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3651     {
3652       gdb_assert (bl->owner->ops != NULL
3653                   && bl->owner->ops->remove_location != NULL);
3654
3655       bl->inserted = (is == mark_inserted);
3656       bl->owner->ops->remove_location (bl);
3657
3658       /* Failure to remove any of the hardware watchpoints comes here.  */
3659       if ((is == mark_uninserted) && (bl->inserted))
3660         warning (_("Could not remove hardware watchpoint %d."),
3661                  bl->owner->number);
3662     }
3663   else if (bl->owner->type == bp_catchpoint
3664            && breakpoint_enabled (bl->owner)
3665            && !bl->duplicate)
3666     {
3667       gdb_assert (bl->owner->ops != NULL
3668                   && bl->owner->ops->remove_location != NULL);
3669
3670       val = bl->owner->ops->remove_location (bl);
3671       if (val)
3672         return val;
3673
3674       bl->inserted = (is == mark_inserted);
3675     }
3676
3677   return 0;
3678 }
3679
3680 static int
3681 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3682 {
3683   int ret;
3684   struct cleanup *old_chain;
3685
3686   /* BL is never in moribund_locations by our callers.  */
3687   gdb_assert (bl->owner != NULL);
3688
3689   if (bl->owner->enable_state == bp_permanent)
3690     /* Permanent breakpoints cannot be inserted or removed.  */
3691     return 0;
3692
3693   /* The type of none suggests that owner is actually deleted.
3694      This should not ever happen.  */
3695   gdb_assert (bl->owner->type != bp_none);
3696
3697   old_chain = save_current_space_and_thread ();
3698
3699   switch_to_program_space_and_thread (bl->pspace);
3700
3701   ret = remove_breakpoint_1 (bl, is);
3702
3703   do_cleanups (old_chain);
3704   return ret;
3705 }
3706
3707 /* Clear the "inserted" flag in all breakpoints.  */
3708
3709 void
3710 mark_breakpoints_out (void)
3711 {
3712   struct bp_location *bl, **blp_tmp;
3713
3714   ALL_BP_LOCATIONS (bl, blp_tmp)
3715     if (bl->pspace == current_program_space)
3716       bl->inserted = 0;
3717 }
3718
3719 /* Clear the "inserted" flag in all breakpoints and delete any
3720    breakpoints which should go away between runs of the program.
3721
3722    Plus other such housekeeping that has to be done for breakpoints
3723    between runs.
3724
3725    Note: this function gets called at the end of a run (by
3726    generic_mourn_inferior) and when a run begins (by
3727    init_wait_for_inferior).  */
3728
3729
3730
3731 void
3732 breakpoint_init_inferior (enum inf_context context)
3733 {
3734   struct breakpoint *b, *b_tmp;
3735   struct bp_location *bl, **blp_tmp;
3736   int ix;
3737   struct program_space *pspace = current_program_space;
3738
3739   /* If breakpoint locations are shared across processes, then there's
3740      nothing to do.  */
3741   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3742     return;
3743
3744   ALL_BP_LOCATIONS (bl, blp_tmp)
3745   {
3746     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3747     if (bl->pspace == pspace
3748         && bl->owner->enable_state != bp_permanent)
3749       bl->inserted = 0;
3750   }
3751
3752   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3753   {
3754     if (b->loc && b->loc->pspace != pspace)
3755       continue;
3756
3757     switch (b->type)
3758       {
3759       case bp_call_dummy:
3760       case bp_longjmp_call_dummy:
3761
3762         /* If the call dummy breakpoint is at the entry point it will
3763            cause problems when the inferior is rerun, so we better get
3764            rid of it.  */
3765
3766       case bp_watchpoint_scope:
3767
3768         /* Also get rid of scope breakpoints.  */
3769
3770       case bp_shlib_event:
3771
3772         /* Also remove solib event breakpoints.  Their addresses may
3773            have changed since the last time we ran the program.
3774            Actually we may now be debugging against different target;
3775            and so the solib backend that installed this breakpoint may
3776            not be used in by the target.  E.g.,
3777
3778            (gdb) file prog-linux
3779            (gdb) run               # native linux target
3780            ...
3781            (gdb) kill
3782            (gdb) file prog-win.exe
3783            (gdb) tar rem :9999     # remote Windows gdbserver.
3784         */
3785
3786       case bp_step_resume:
3787
3788         /* Also remove step-resume breakpoints.  */
3789
3790         delete_breakpoint (b);
3791         break;
3792
3793       case bp_watchpoint:
3794       case bp_hardware_watchpoint:
3795       case bp_read_watchpoint:
3796       case bp_access_watchpoint:
3797         {
3798           struct watchpoint *w = (struct watchpoint *) b;
3799
3800           /* Likewise for watchpoints on local expressions.  */
3801           if (w->exp_valid_block != NULL)
3802             delete_breakpoint (b);
3803           else if (context == inf_starting)
3804             {
3805               /* Reset val field to force reread of starting value in
3806                  insert_breakpoints.  */
3807               if (w->val)
3808                 value_free (w->val);
3809               w->val = NULL;
3810               w->val_valid = 0;
3811           }
3812         }
3813         break;
3814       default:
3815         break;
3816       }
3817   }
3818
3819   /* Get rid of the moribund locations.  */
3820   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3821     decref_bp_location (&bl);
3822   VEC_free (bp_location_p, moribund_locations);
3823 }
3824
3825 /* These functions concern about actual breakpoints inserted in the
3826    target --- to e.g. check if we need to do decr_pc adjustment or if
3827    we need to hop over the bkpt --- so we check for address space
3828    match, not program space.  */
3829
3830 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3831    exists at PC.  It returns ordinary_breakpoint_here if it's an
3832    ordinary breakpoint, or permanent_breakpoint_here if it's a
3833    permanent breakpoint.
3834    - When continuing from a location with an ordinary breakpoint, we
3835      actually single step once before calling insert_breakpoints.
3836    - When continuing from a location with a permanent breakpoint, we
3837      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3838      the target, to advance the PC past the breakpoint.  */
3839
3840 enum breakpoint_here
3841 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3842 {
3843   struct bp_location *bl, **blp_tmp;
3844   int any_breakpoint_here = 0;
3845
3846   ALL_BP_LOCATIONS (bl, blp_tmp)
3847     {
3848       if (bl->loc_type != bp_loc_software_breakpoint
3849           && bl->loc_type != bp_loc_hardware_breakpoint)
3850         continue;
3851
3852       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3853       if ((breakpoint_enabled (bl->owner)
3854            || bl->owner->enable_state == bp_permanent)
3855           && breakpoint_location_address_match (bl, aspace, pc))
3856         {
3857           if (overlay_debugging 
3858               && section_is_overlay (bl->section)
3859               && !section_is_mapped (bl->section))
3860             continue;           /* unmapped overlay -- can't be a match */
3861           else if (bl->owner->enable_state == bp_permanent)
3862             return permanent_breakpoint_here;
3863           else
3864             any_breakpoint_here = 1;
3865         }
3866     }
3867
3868   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3869 }
3870
3871 /* Return true if there's a moribund breakpoint at PC.  */
3872
3873 int
3874 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3875 {
3876   struct bp_location *loc;
3877   int ix;
3878
3879   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3880     if (breakpoint_location_address_match (loc, aspace, pc))
3881       return 1;
3882
3883   return 0;
3884 }
3885
3886 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3887    inserted using regular breakpoint_chain / bp_location array
3888    mechanism.  This does not check for single-step breakpoints, which
3889    are inserted and removed using direct target manipulation.  */
3890
3891 int
3892 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3893                                     CORE_ADDR pc)
3894 {
3895   struct bp_location *bl, **blp_tmp;
3896
3897   ALL_BP_LOCATIONS (bl, blp_tmp)
3898     {
3899       if (bl->loc_type != bp_loc_software_breakpoint
3900           && bl->loc_type != bp_loc_hardware_breakpoint)
3901         continue;
3902
3903       if (bl->inserted
3904           && breakpoint_location_address_match (bl, aspace, pc))
3905         {
3906           if (overlay_debugging 
3907               && section_is_overlay (bl->section)
3908               && !section_is_mapped (bl->section))
3909             continue;           /* unmapped overlay -- can't be a match */
3910           else
3911             return 1;
3912         }
3913     }
3914   return 0;
3915 }
3916
3917 /* Returns non-zero iff there's either regular breakpoint
3918    or a single step breakpoint inserted at PC.  */
3919
3920 int
3921 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3922 {
3923   if (regular_breakpoint_inserted_here_p (aspace, pc))
3924     return 1;
3925
3926   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3927     return 1;
3928
3929   return 0;
3930 }
3931
3932 /* This function returns non-zero iff there is a software breakpoint
3933    inserted at PC.  */
3934
3935 int
3936 software_breakpoint_inserted_here_p (struct address_space *aspace,
3937                                      CORE_ADDR pc)
3938 {
3939   struct bp_location *bl, **blp_tmp;
3940
3941   ALL_BP_LOCATIONS (bl, blp_tmp)
3942     {
3943       if (bl->loc_type != bp_loc_software_breakpoint)
3944         continue;
3945
3946       if (bl->inserted
3947           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3948                                        aspace, pc))
3949         {
3950           if (overlay_debugging 
3951               && section_is_overlay (bl->section)
3952               && !section_is_mapped (bl->section))
3953             continue;           /* unmapped overlay -- can't be a match */
3954           else
3955             return 1;
3956         }
3957     }
3958
3959   /* Also check for software single-step breakpoints.  */
3960   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3961     return 1;
3962
3963   return 0;
3964 }
3965
3966 int
3967 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3968                                        CORE_ADDR addr, ULONGEST len)
3969 {
3970   struct breakpoint *bpt;
3971
3972   ALL_BREAKPOINTS (bpt)
3973     {
3974       struct bp_location *loc;
3975
3976       if (bpt->type != bp_hardware_watchpoint
3977           && bpt->type != bp_access_watchpoint)
3978         continue;
3979
3980       if (!breakpoint_enabled (bpt))
3981         continue;
3982
3983       for (loc = bpt->loc; loc; loc = loc->next)
3984         if (loc->pspace->aspace == aspace && loc->inserted)
3985           {
3986             CORE_ADDR l, h;
3987
3988             /* Check for intersection.  */
3989             l = max (loc->address, addr);
3990             h = min (loc->address + loc->length, addr + len);
3991             if (l < h)
3992               return 1;
3993           }
3994     }
3995   return 0;
3996 }
3997
3998 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3999    PC is valid for process/thread PTID.  */
4000
4001 int
4002 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4003                          ptid_t ptid)
4004 {
4005   struct bp_location *bl, **blp_tmp;
4006   /* The thread and task IDs associated to PTID, computed lazily.  */
4007   int thread = -1;
4008   int task = 0;
4009   
4010   ALL_BP_LOCATIONS (bl, blp_tmp)
4011     {
4012       if (bl->loc_type != bp_loc_software_breakpoint
4013           && bl->loc_type != bp_loc_hardware_breakpoint)
4014         continue;
4015
4016       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4017       if (!breakpoint_enabled (bl->owner)
4018           && bl->owner->enable_state != bp_permanent)
4019         continue;
4020
4021       if (!breakpoint_location_address_match (bl, aspace, pc))
4022         continue;
4023
4024       if (bl->owner->thread != -1)
4025         {
4026           /* This is a thread-specific breakpoint.  Check that ptid
4027              matches that thread.  If thread hasn't been computed yet,
4028              it is now time to do so.  */
4029           if (thread == -1)
4030             thread = pid_to_thread_id (ptid);
4031           if (bl->owner->thread != thread)
4032             continue;
4033         }
4034
4035       if (bl->owner->task != 0)
4036         {
4037           /* This is a task-specific breakpoint.  Check that ptid
4038              matches that task.  If task hasn't been computed yet,
4039              it is now time to do so.  */
4040           if (task == 0)
4041             task = ada_get_task_number (ptid);
4042           if (bl->owner->task != task)
4043             continue;
4044         }
4045
4046       if (overlay_debugging 
4047           && section_is_overlay (bl->section)
4048           && !section_is_mapped (bl->section))
4049         continue;           /* unmapped overlay -- can't be a match */
4050
4051       return 1;
4052     }
4053
4054   return 0;
4055 }
4056 \f
4057
4058 /* bpstat stuff.  External routines' interfaces are documented
4059    in breakpoint.h.  */
4060
4061 int
4062 is_catchpoint (struct breakpoint *ep)
4063 {
4064   return (ep->type == bp_catchpoint);
4065 }
4066
4067 /* Frees any storage that is part of a bpstat.  Does not walk the
4068    'next' chain.  */
4069
4070 static void
4071 bpstat_free (bpstat bs)
4072 {
4073   if (bs->old_val != NULL)
4074     value_free (bs->old_val);
4075   decref_counted_command_line (&bs->commands);
4076   decref_bp_location (&bs->bp_location_at);
4077   xfree (bs);
4078 }
4079
4080 /* Clear a bpstat so that it says we are not at any breakpoint.
4081    Also free any storage that is part of a bpstat.  */
4082
4083 void
4084 bpstat_clear (bpstat *bsp)
4085 {
4086   bpstat p;
4087   bpstat q;
4088
4089   if (bsp == 0)
4090     return;
4091   p = *bsp;
4092   while (p != NULL)
4093     {
4094       q = p->next;
4095       bpstat_free (p);
4096       p = q;
4097     }
4098   *bsp = NULL;
4099 }
4100
4101 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4102    is part of the bpstat is copied as well.  */
4103
4104 bpstat
4105 bpstat_copy (bpstat bs)
4106 {
4107   bpstat p = NULL;
4108   bpstat tmp;
4109   bpstat retval = NULL;
4110
4111   if (bs == NULL)
4112     return bs;
4113
4114   for (; bs != NULL; bs = bs->next)
4115     {
4116       tmp = (bpstat) xmalloc (sizeof (*tmp));
4117       memcpy (tmp, bs, sizeof (*tmp));
4118       incref_counted_command_line (tmp->commands);
4119       incref_bp_location (tmp->bp_location_at);
4120       if (bs->old_val != NULL)
4121         {
4122           tmp->old_val = value_copy (bs->old_val);
4123           release_value (tmp->old_val);
4124         }
4125
4126       if (p == NULL)
4127         /* This is the first thing in the chain.  */
4128         retval = tmp;
4129       else
4130         p->next = tmp;
4131       p = tmp;
4132     }
4133   p->next = NULL;
4134   return retval;
4135 }
4136
4137 /* Find the bpstat associated with this breakpoint.  */
4138
4139 bpstat
4140 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4141 {
4142   if (bsp == NULL)
4143     return NULL;
4144
4145   for (; bsp != NULL; bsp = bsp->next)
4146     {
4147       if (bsp->breakpoint_at == breakpoint)
4148         return bsp;
4149     }
4150   return NULL;
4151 }
4152
4153 /* See breakpoint.h.  */
4154
4155 enum bpstat_signal_value
4156 bpstat_explains_signal (bpstat bsp)
4157 {
4158   enum bpstat_signal_value result = BPSTAT_SIGNAL_NO;
4159
4160   for (; bsp != NULL; bsp = bsp->next)
4161     {
4162       /* Ensure that, if we ever entered this loop, then we at least
4163          return BPSTAT_SIGNAL_HIDE.  */
4164       enum bpstat_signal_value newval = BPSTAT_SIGNAL_HIDE;
4165
4166       if (bsp->breakpoint_at != NULL)
4167         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at);
4168
4169       if (newval > result)
4170         result = newval;
4171     }
4172
4173   return result;
4174 }
4175
4176 /* Put in *NUM the breakpoint number of the first breakpoint we are
4177    stopped at.  *BSP upon return is a bpstat which points to the
4178    remaining breakpoints stopped at (but which is not guaranteed to be
4179    good for anything but further calls to bpstat_num).
4180
4181    Return 0 if passed a bpstat which does not indicate any breakpoints.
4182    Return -1 if stopped at a breakpoint that has been deleted since
4183    we set it.
4184    Return 1 otherwise.  */
4185
4186 int
4187 bpstat_num (bpstat *bsp, int *num)
4188 {
4189   struct breakpoint *b;
4190
4191   if ((*bsp) == NULL)
4192     return 0;                   /* No more breakpoint values */
4193
4194   /* We assume we'll never have several bpstats that correspond to a
4195      single breakpoint -- otherwise, this function might return the
4196      same number more than once and this will look ugly.  */
4197   b = (*bsp)->breakpoint_at;
4198   *bsp = (*bsp)->next;
4199   if (b == NULL)
4200     return -1;                  /* breakpoint that's been deleted since */
4201
4202   *num = b->number;             /* We have its number */
4203   return 1;
4204 }
4205
4206 /* See breakpoint.h.  */
4207
4208 void
4209 bpstat_clear_actions (void)
4210 {
4211   struct thread_info *tp;
4212   bpstat bs;
4213
4214   if (ptid_equal (inferior_ptid, null_ptid))
4215     return;
4216
4217   tp = find_thread_ptid (inferior_ptid);
4218   if (tp == NULL)
4219     return;
4220
4221   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4222     {
4223       decref_counted_command_line (&bs->commands);
4224
4225       if (bs->old_val != NULL)
4226         {
4227           value_free (bs->old_val);
4228           bs->old_val = NULL;
4229         }
4230     }
4231 }
4232
4233 /* Called when a command is about to proceed the inferior.  */
4234
4235 static void
4236 breakpoint_about_to_proceed (void)
4237 {
4238   if (!ptid_equal (inferior_ptid, null_ptid))
4239     {
4240       struct thread_info *tp = inferior_thread ();
4241
4242       /* Allow inferior function calls in breakpoint commands to not
4243          interrupt the command list.  When the call finishes
4244          successfully, the inferior will be standing at the same
4245          breakpoint as if nothing happened.  */
4246       if (tp->control.in_infcall)
4247         return;
4248     }
4249
4250   breakpoint_proceeded = 1;
4251 }
4252
4253 /* Stub for cleaning up our state if we error-out of a breakpoint
4254    command.  */
4255 static void
4256 cleanup_executing_breakpoints (void *ignore)
4257 {
4258   executing_breakpoint_commands = 0;
4259 }
4260
4261 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4262    or its equivalent.  */
4263
4264 static int
4265 command_line_is_silent (struct command_line *cmd)
4266 {
4267   return cmd && (strcmp ("silent", cmd->line) == 0
4268                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4269 }
4270
4271 /* Execute all the commands associated with all the breakpoints at
4272    this location.  Any of these commands could cause the process to
4273    proceed beyond this point, etc.  We look out for such changes by
4274    checking the global "breakpoint_proceeded" after each command.
4275
4276    Returns true if a breakpoint command resumed the inferior.  In that
4277    case, it is the caller's responsibility to recall it again with the
4278    bpstat of the current thread.  */
4279
4280 static int
4281 bpstat_do_actions_1 (bpstat *bsp)
4282 {
4283   bpstat bs;
4284   struct cleanup *old_chain;
4285   int again = 0;
4286
4287   /* Avoid endless recursion if a `source' command is contained
4288      in bs->commands.  */
4289   if (executing_breakpoint_commands)
4290     return 0;
4291
4292   executing_breakpoint_commands = 1;
4293   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4294
4295   prevent_dont_repeat ();
4296
4297   /* This pointer will iterate over the list of bpstat's.  */
4298   bs = *bsp;
4299
4300   breakpoint_proceeded = 0;
4301   for (; bs != NULL; bs = bs->next)
4302     {
4303       struct counted_command_line *ccmd;
4304       struct command_line *cmd;
4305       struct cleanup *this_cmd_tree_chain;
4306
4307       /* Take ownership of the BSP's command tree, if it has one.
4308
4309          The command tree could legitimately contain commands like
4310          'step' and 'next', which call clear_proceed_status, which
4311          frees stop_bpstat's command tree.  To make sure this doesn't
4312          free the tree we're executing out from under us, we need to
4313          take ownership of the tree ourselves.  Since a given bpstat's
4314          commands are only executed once, we don't need to copy it; we
4315          can clear the pointer in the bpstat, and make sure we free
4316          the tree when we're done.  */
4317       ccmd = bs->commands;
4318       bs->commands = NULL;
4319       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4320       cmd = ccmd ? ccmd->commands : NULL;
4321       if (command_line_is_silent (cmd))
4322         {
4323           /* The action has been already done by bpstat_stop_status.  */
4324           cmd = cmd->next;
4325         }
4326
4327       while (cmd != NULL)
4328         {
4329           execute_control_command (cmd);
4330
4331           if (breakpoint_proceeded)
4332             break;
4333           else
4334             cmd = cmd->next;
4335         }
4336
4337       /* We can free this command tree now.  */
4338       do_cleanups (this_cmd_tree_chain);
4339
4340       if (breakpoint_proceeded)
4341         {
4342           if (target_can_async_p ())
4343             /* If we are in async mode, then the target might be still
4344                running, not stopped at any breakpoint, so nothing for
4345                us to do here -- just return to the event loop.  */
4346             ;
4347           else
4348             /* In sync mode, when execute_control_command returns
4349                we're already standing on the next breakpoint.
4350                Breakpoint commands for that stop were not run, since
4351                execute_command does not run breakpoint commands --
4352                only command_line_handler does, but that one is not
4353                involved in execution of breakpoint commands.  So, we
4354                can now execute breakpoint commands.  It should be
4355                noted that making execute_command do bpstat actions is
4356                not an option -- in this case we'll have recursive
4357                invocation of bpstat for each breakpoint with a
4358                command, and can easily blow up GDB stack.  Instead, we
4359                return true, which will trigger the caller to recall us
4360                with the new stop_bpstat.  */
4361             again = 1;
4362           break;
4363         }
4364     }
4365   do_cleanups (old_chain);
4366   return again;
4367 }
4368
4369 void
4370 bpstat_do_actions (void)
4371 {
4372   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4373
4374   /* Do any commands attached to breakpoint we are stopped at.  */
4375   while (!ptid_equal (inferior_ptid, null_ptid)
4376          && target_has_execution
4377          && !is_exited (inferior_ptid)
4378          && !is_executing (inferior_ptid))
4379     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4380        and only return when it is stopped at the next breakpoint, we
4381        keep doing breakpoint actions until it returns false to
4382        indicate the inferior was not resumed.  */
4383     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4384       break;
4385
4386   discard_cleanups (cleanup_if_error);
4387 }
4388
4389 /* Print out the (old or new) value associated with a watchpoint.  */
4390
4391 static void
4392 watchpoint_value_print (struct value *val, struct ui_file *stream)
4393 {
4394   if (val == NULL)
4395     fprintf_unfiltered (stream, _("<unreadable>"));
4396   else
4397     {
4398       struct value_print_options opts;
4399       get_user_print_options (&opts);
4400       value_print (val, stream, &opts);
4401     }
4402 }
4403
4404 /* Generic routine for printing messages indicating why we
4405    stopped.  The behavior of this function depends on the value
4406    'print_it' in the bpstat structure.  Under some circumstances we
4407    may decide not to print anything here and delegate the task to
4408    normal_stop().  */
4409
4410 static enum print_stop_action
4411 print_bp_stop_message (bpstat bs)
4412 {
4413   switch (bs->print_it)
4414     {
4415     case print_it_noop:
4416       /* Nothing should be printed for this bpstat entry.  */
4417       return PRINT_UNKNOWN;
4418       break;
4419
4420     case print_it_done:
4421       /* We still want to print the frame, but we already printed the
4422          relevant messages.  */
4423       return PRINT_SRC_AND_LOC;
4424       break;
4425
4426     case print_it_normal:
4427       {
4428         struct breakpoint *b = bs->breakpoint_at;
4429
4430         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4431            which has since been deleted.  */
4432         if (b == NULL)
4433           return PRINT_UNKNOWN;
4434
4435         /* Normal case.  Call the breakpoint's print_it method.  */
4436         return b->ops->print_it (bs);
4437       }
4438       break;
4439
4440     default:
4441       internal_error (__FILE__, __LINE__,
4442                       _("print_bp_stop_message: unrecognized enum value"));
4443       break;
4444     }
4445 }
4446
4447 /* A helper function that prints a shared library stopped event.  */
4448
4449 static void
4450 print_solib_event (int is_catchpoint)
4451 {
4452   int any_deleted
4453     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4454   int any_added
4455     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4456
4457   if (!is_catchpoint)
4458     {
4459       if (any_added || any_deleted)
4460         ui_out_text (current_uiout,
4461                      _("Stopped due to shared library event:\n"));
4462       else
4463         ui_out_text (current_uiout,
4464                      _("Stopped due to shared library event (no "
4465                        "libraries added or removed)\n"));
4466     }
4467
4468   if (ui_out_is_mi_like_p (current_uiout))
4469     ui_out_field_string (current_uiout, "reason",
4470                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4471
4472   if (any_deleted)
4473     {
4474       struct cleanup *cleanup;
4475       char *name;
4476       int ix;
4477
4478       ui_out_text (current_uiout, _("  Inferior unloaded "));
4479       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4480                                                     "removed");
4481       for (ix = 0;
4482            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4483                         ix, name);
4484            ++ix)
4485         {
4486           if (ix > 0)
4487             ui_out_text (current_uiout, "    ");
4488           ui_out_field_string (current_uiout, "library", name);
4489           ui_out_text (current_uiout, "\n");
4490         }
4491
4492       do_cleanups (cleanup);
4493     }
4494
4495   if (any_added)
4496     {
4497       struct so_list *iter;
4498       int ix;
4499       struct cleanup *cleanup;
4500
4501       ui_out_text (current_uiout, _("  Inferior loaded "));
4502       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4503                                                     "added");
4504       for (ix = 0;
4505            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4506                         ix, iter);
4507            ++ix)
4508         {
4509           if (ix > 0)
4510             ui_out_text (current_uiout, "    ");
4511           ui_out_field_string (current_uiout, "library", iter->so_name);
4512           ui_out_text (current_uiout, "\n");
4513         }
4514
4515       do_cleanups (cleanup);
4516     }
4517 }
4518
4519 /* Print a message indicating what happened.  This is called from
4520    normal_stop().  The input to this routine is the head of the bpstat
4521    list - a list of the eventpoints that caused this stop.  KIND is
4522    the target_waitkind for the stopping event.  This
4523    routine calls the generic print routine for printing a message
4524    about reasons for stopping.  This will print (for example) the
4525    "Breakpoint n," part of the output.  The return value of this
4526    routine is one of:
4527
4528    PRINT_UNKNOWN: Means we printed nothing.
4529    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4530    code to print the location.  An example is 
4531    "Breakpoint 1, " which should be followed by
4532    the location.
4533    PRINT_SRC_ONLY: Means we printed something, but there is no need
4534    to also print the location part of the message.
4535    An example is the catch/throw messages, which
4536    don't require a location appended to the end.
4537    PRINT_NOTHING: We have done some printing and we don't need any 
4538    further info to be printed.  */
4539
4540 enum print_stop_action
4541 bpstat_print (bpstat bs, int kind)
4542 {
4543   int val;
4544
4545   /* Maybe another breakpoint in the chain caused us to stop.
4546      (Currently all watchpoints go on the bpstat whether hit or not.
4547      That probably could (should) be changed, provided care is taken
4548      with respect to bpstat_explains_signal).  */
4549   for (; bs; bs = bs->next)
4550     {
4551       val = print_bp_stop_message (bs);
4552       if (val == PRINT_SRC_ONLY 
4553           || val == PRINT_SRC_AND_LOC 
4554           || val == PRINT_NOTHING)
4555         return val;
4556     }
4557
4558   /* If we had hit a shared library event breakpoint,
4559      print_bp_stop_message would print out this message.  If we hit an
4560      OS-level shared library event, do the same thing.  */
4561   if (kind == TARGET_WAITKIND_LOADED)
4562     {
4563       print_solib_event (0);
4564       return PRINT_NOTHING;
4565     }
4566
4567   /* We reached the end of the chain, or we got a null BS to start
4568      with and nothing was printed.  */
4569   return PRINT_UNKNOWN;
4570 }
4571
4572 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4573    used inside a catch_errors to evaluate the breakpoint condition.
4574    The argument is a "struct expression *" that has been cast to a
4575    "char *" to make it pass through catch_errors.  */
4576
4577 static int
4578 breakpoint_cond_eval (void *exp)
4579 {
4580   struct value *mark = value_mark ();
4581   int i = !value_true (evaluate_expression ((struct expression *) exp));
4582
4583   value_free_to_mark (mark);
4584   return i;
4585 }
4586
4587 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4588
4589 static bpstat
4590 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4591 {
4592   bpstat bs;
4593
4594   bs = (bpstat) xmalloc (sizeof (*bs));
4595   bs->next = NULL;
4596   **bs_link_pointer = bs;
4597   *bs_link_pointer = &bs->next;
4598   bs->breakpoint_at = bl->owner;
4599   bs->bp_location_at = bl;
4600   incref_bp_location (bl);
4601   /* If the condition is false, etc., don't do the commands.  */
4602   bs->commands = NULL;
4603   bs->old_val = NULL;
4604   bs->print_it = print_it_normal;
4605   return bs;
4606 }
4607 \f
4608 /* The target has stopped with waitstatus WS.  Check if any hardware
4609    watchpoints have triggered, according to the target.  */
4610
4611 int
4612 watchpoints_triggered (struct target_waitstatus *ws)
4613 {
4614   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4615   CORE_ADDR addr;
4616   struct breakpoint *b;
4617
4618   if (!stopped_by_watchpoint)
4619     {
4620       /* We were not stopped by a watchpoint.  Mark all watchpoints
4621          as not triggered.  */
4622       ALL_BREAKPOINTS (b)
4623         if (is_hardware_watchpoint (b))
4624           {
4625             struct watchpoint *w = (struct watchpoint *) b;
4626
4627             w->watchpoint_triggered = watch_triggered_no;
4628           }
4629
4630       return 0;
4631     }
4632
4633   if (!target_stopped_data_address (&current_target, &addr))
4634     {
4635       /* We were stopped by a watchpoint, but we don't know where.
4636          Mark all watchpoints as unknown.  */
4637       ALL_BREAKPOINTS (b)
4638         if (is_hardware_watchpoint (b))
4639           {
4640             struct watchpoint *w = (struct watchpoint *) b;
4641
4642             w->watchpoint_triggered = watch_triggered_unknown;
4643           }
4644
4645       return stopped_by_watchpoint;
4646     }
4647
4648   /* The target could report the data address.  Mark watchpoints
4649      affected by this data address as triggered, and all others as not
4650      triggered.  */
4651
4652   ALL_BREAKPOINTS (b)
4653     if (is_hardware_watchpoint (b))
4654       {
4655         struct watchpoint *w = (struct watchpoint *) b;
4656         struct bp_location *loc;
4657
4658         w->watchpoint_triggered = watch_triggered_no;
4659         for (loc = b->loc; loc; loc = loc->next)
4660           {
4661             if (is_masked_watchpoint (b))
4662               {
4663                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4664                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4665
4666                 if (newaddr == start)
4667                   {
4668                     w->watchpoint_triggered = watch_triggered_yes;
4669                     break;
4670                   }
4671               }
4672             /* Exact match not required.  Within range is sufficient.  */
4673             else if (target_watchpoint_addr_within_range (&current_target,
4674                                                          addr, loc->address,
4675                                                          loc->length))
4676               {
4677                 w->watchpoint_triggered = watch_triggered_yes;
4678                 break;
4679               }
4680           }
4681       }
4682
4683   return 1;
4684 }
4685
4686 /* Possible return values for watchpoint_check (this can't be an enum
4687    because of check_errors).  */
4688 /* The watchpoint has been deleted.  */
4689 #define WP_DELETED 1
4690 /* The value has changed.  */
4691 #define WP_VALUE_CHANGED 2
4692 /* The value has not changed.  */
4693 #define WP_VALUE_NOT_CHANGED 3
4694 /* Ignore this watchpoint, no matter if the value changed or not.  */
4695 #define WP_IGNORE 4
4696
4697 #define BP_TEMPFLAG 1
4698 #define BP_HARDWAREFLAG 2
4699
4700 /* Evaluate watchpoint condition expression and check if its value
4701    changed.
4702
4703    P should be a pointer to struct bpstat, but is defined as a void *
4704    in order for this function to be usable with catch_errors.  */
4705
4706 static int
4707 watchpoint_check (void *p)
4708 {
4709   bpstat bs = (bpstat) p;
4710   struct watchpoint *b;
4711   struct frame_info *fr;
4712   int within_current_scope;
4713
4714   /* BS is built from an existing struct breakpoint.  */
4715   gdb_assert (bs->breakpoint_at != NULL);
4716   b = (struct watchpoint *) bs->breakpoint_at;
4717
4718   /* If this is a local watchpoint, we only want to check if the
4719      watchpoint frame is in scope if the current thread is the thread
4720      that was used to create the watchpoint.  */
4721   if (!watchpoint_in_thread_scope (b))
4722     return WP_IGNORE;
4723
4724   if (b->exp_valid_block == NULL)
4725     within_current_scope = 1;
4726   else
4727     {
4728       struct frame_info *frame = get_current_frame ();
4729       struct gdbarch *frame_arch = get_frame_arch (frame);
4730       CORE_ADDR frame_pc = get_frame_pc (frame);
4731
4732       /* in_function_epilogue_p() returns a non-zero value if we're
4733          still in the function but the stack frame has already been
4734          invalidated.  Since we can't rely on the values of local
4735          variables after the stack has been destroyed, we are treating
4736          the watchpoint in that state as `not changed' without further
4737          checking.  Don't mark watchpoints as changed if the current
4738          frame is in an epilogue - even if they are in some other
4739          frame, our view of the stack is likely to be wrong and
4740          frame_find_by_id could error out.  */
4741       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4742         return WP_IGNORE;
4743
4744       fr = frame_find_by_id (b->watchpoint_frame);
4745       within_current_scope = (fr != NULL);
4746
4747       /* If we've gotten confused in the unwinder, we might have
4748          returned a frame that can't describe this variable.  */
4749       if (within_current_scope)
4750         {
4751           struct symbol *function;
4752
4753           function = get_frame_function (fr);
4754           if (function == NULL
4755               || !contained_in (b->exp_valid_block,
4756                                 SYMBOL_BLOCK_VALUE (function)))
4757             within_current_scope = 0;
4758         }
4759
4760       if (within_current_scope)
4761         /* If we end up stopping, the current frame will get selected
4762            in normal_stop.  So this call to select_frame won't affect
4763            the user.  */
4764         select_frame (fr);
4765     }
4766
4767   if (within_current_scope)
4768     {
4769       /* We use value_{,free_to_}mark because it could be a *long*
4770          time before we return to the command level and call
4771          free_all_values.  We can't call free_all_values because we
4772          might be in the middle of evaluating a function call.  */
4773
4774       int pc = 0;
4775       struct value *mark;
4776       struct value *new_val;
4777
4778       if (is_masked_watchpoint (&b->base))
4779         /* Since we don't know the exact trigger address (from
4780            stopped_data_address), just tell the user we've triggered
4781            a mask watchpoint.  */
4782         return WP_VALUE_CHANGED;
4783
4784       mark = value_mark ();
4785       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4786
4787       /* We use value_equal_contents instead of value_equal because
4788          the latter coerces an array to a pointer, thus comparing just
4789          the address of the array instead of its contents.  This is
4790          not what we want.  */
4791       if ((b->val != NULL) != (new_val != NULL)
4792           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4793         {
4794           if (new_val != NULL)
4795             {
4796               release_value (new_val);
4797               value_free_to_mark (mark);
4798             }
4799           bs->old_val = b->val;
4800           b->val = new_val;
4801           b->val_valid = 1;
4802           return WP_VALUE_CHANGED;
4803         }
4804       else
4805         {
4806           /* Nothing changed.  */
4807           value_free_to_mark (mark);
4808           return WP_VALUE_NOT_CHANGED;
4809         }
4810     }
4811   else
4812     {
4813       struct ui_out *uiout = current_uiout;
4814
4815       /* This seems like the only logical thing to do because
4816          if we temporarily ignored the watchpoint, then when
4817          we reenter the block in which it is valid it contains
4818          garbage (in the case of a function, it may have two
4819          garbage values, one before and one after the prologue).
4820          So we can't even detect the first assignment to it and
4821          watch after that (since the garbage may or may not equal
4822          the first value assigned).  */
4823       /* We print all the stop information in
4824          breakpoint_ops->print_it, but in this case, by the time we
4825          call breakpoint_ops->print_it this bp will be deleted
4826          already.  So we have no choice but print the information
4827          here.  */
4828       if (ui_out_is_mi_like_p (uiout))
4829         ui_out_field_string
4830           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4831       ui_out_text (uiout, "\nWatchpoint ");
4832       ui_out_field_int (uiout, "wpnum", b->base.number);
4833       ui_out_text (uiout,
4834                    " deleted because the program has left the block in\n\
4835 which its expression is valid.\n");     
4836
4837       /* Make sure the watchpoint's commands aren't executed.  */
4838       decref_counted_command_line (&b->base.commands);
4839       watchpoint_del_at_next_stop (b);
4840
4841       return WP_DELETED;
4842     }
4843 }
4844
4845 /* Return true if it looks like target has stopped due to hitting
4846    breakpoint location BL.  This function does not check if we should
4847    stop, only if BL explains the stop.  */
4848
4849 static int
4850 bpstat_check_location (const struct bp_location *bl,
4851                        struct address_space *aspace, CORE_ADDR bp_addr,
4852                        const struct target_waitstatus *ws)
4853 {
4854   struct breakpoint *b = bl->owner;
4855
4856   /* BL is from an existing breakpoint.  */
4857   gdb_assert (b != NULL);
4858
4859   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4860 }
4861
4862 /* Determine if the watched values have actually changed, and we
4863    should stop.  If not, set BS->stop to 0.  */
4864
4865 static void
4866 bpstat_check_watchpoint (bpstat bs)
4867 {
4868   const struct bp_location *bl;
4869   struct watchpoint *b;
4870
4871   /* BS is built for existing struct breakpoint.  */
4872   bl = bs->bp_location_at;
4873   gdb_assert (bl != NULL);
4874   b = (struct watchpoint *) bs->breakpoint_at;
4875   gdb_assert (b != NULL);
4876
4877     {
4878       int must_check_value = 0;
4879       
4880       if (b->base.type == bp_watchpoint)
4881         /* For a software watchpoint, we must always check the
4882            watched value.  */
4883         must_check_value = 1;
4884       else if (b->watchpoint_triggered == watch_triggered_yes)
4885         /* We have a hardware watchpoint (read, write, or access)
4886            and the target earlier reported an address watched by
4887            this watchpoint.  */
4888         must_check_value = 1;
4889       else if (b->watchpoint_triggered == watch_triggered_unknown
4890                && b->base.type == bp_hardware_watchpoint)
4891         /* We were stopped by a hardware watchpoint, but the target could
4892            not report the data address.  We must check the watchpoint's
4893            value.  Access and read watchpoints are out of luck; without
4894            a data address, we can't figure it out.  */
4895         must_check_value = 1;
4896
4897       if (must_check_value)
4898         {
4899           char *message
4900             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4901                           b->base.number);
4902           struct cleanup *cleanups = make_cleanup (xfree, message);
4903           int e = catch_errors (watchpoint_check, bs, message,
4904                                 RETURN_MASK_ALL);
4905           do_cleanups (cleanups);
4906           switch (e)
4907             {
4908             case WP_DELETED:
4909               /* We've already printed what needs to be printed.  */
4910               bs->print_it = print_it_done;
4911               /* Stop.  */
4912               break;
4913             case WP_IGNORE:
4914               bs->print_it = print_it_noop;
4915               bs->stop = 0;
4916               break;
4917             case WP_VALUE_CHANGED:
4918               if (b->base.type == bp_read_watchpoint)
4919                 {
4920                   /* There are two cases to consider here:
4921
4922                      1. We're watching the triggered memory for reads.
4923                      In that case, trust the target, and always report
4924                      the watchpoint hit to the user.  Even though
4925                      reads don't cause value changes, the value may
4926                      have changed since the last time it was read, and
4927                      since we're not trapping writes, we will not see
4928                      those, and as such we should ignore our notion of
4929                      old value.
4930
4931                      2. We're watching the triggered memory for both
4932                      reads and writes.  There are two ways this may
4933                      happen:
4934
4935                      2.1. This is a target that can't break on data
4936                      reads only, but can break on accesses (reads or
4937                      writes), such as e.g., x86.  We detect this case
4938                      at the time we try to insert read watchpoints.
4939
4940                      2.2. Otherwise, the target supports read
4941                      watchpoints, but, the user set an access or write
4942                      watchpoint watching the same memory as this read
4943                      watchpoint.
4944
4945                      If we're watching memory writes as well as reads,
4946                      ignore watchpoint hits when we find that the
4947                      value hasn't changed, as reads don't cause
4948                      changes.  This still gives false positives when
4949                      the program writes the same value to memory as
4950                      what there was already in memory (we will confuse
4951                      it for a read), but it's much better than
4952                      nothing.  */
4953
4954                   int other_write_watchpoint = 0;
4955
4956                   if (bl->watchpoint_type == hw_read)
4957                     {
4958                       struct breakpoint *other_b;
4959
4960                       ALL_BREAKPOINTS (other_b)
4961                         if (other_b->type == bp_hardware_watchpoint
4962                             || other_b->type == bp_access_watchpoint)
4963                           {
4964                             struct watchpoint *other_w =
4965                               (struct watchpoint *) other_b;
4966
4967                             if (other_w->watchpoint_triggered
4968                                 == watch_triggered_yes)
4969                               {
4970                                 other_write_watchpoint = 1;
4971                                 break;
4972                               }
4973                           }
4974                     }
4975
4976                   if (other_write_watchpoint
4977                       || bl->watchpoint_type == hw_access)
4978                     {
4979                       /* We're watching the same memory for writes,
4980                          and the value changed since the last time we
4981                          updated it, so this trap must be for a write.
4982                          Ignore it.  */
4983                       bs->print_it = print_it_noop;
4984                       bs->stop = 0;
4985                     }
4986                 }
4987               break;
4988             case WP_VALUE_NOT_CHANGED:
4989               if (b->base.type == bp_hardware_watchpoint
4990                   || b->base.type == bp_watchpoint)
4991                 {
4992                   /* Don't stop: write watchpoints shouldn't fire if
4993                      the value hasn't changed.  */
4994                   bs->print_it = print_it_noop;
4995                   bs->stop = 0;
4996                 }
4997               /* Stop.  */
4998               break;
4999             default:
5000               /* Can't happen.  */
5001             case 0:
5002               /* Error from catch_errors.  */
5003               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5004               watchpoint_del_at_next_stop (b);
5005               /* We've already printed what needs to be printed.  */
5006               bs->print_it = print_it_done;
5007               break;
5008             }
5009         }
5010       else      /* must_check_value == 0 */
5011         {
5012           /* This is a case where some watchpoint(s) triggered, but
5013              not at the address of this watchpoint, or else no
5014              watchpoint triggered after all.  So don't print
5015              anything for this watchpoint.  */
5016           bs->print_it = print_it_noop;
5017           bs->stop = 0;
5018         }
5019     }
5020 }
5021
5022
5023 /* Check conditions (condition proper, frame, thread and ignore count)
5024    of breakpoint referred to by BS.  If we should not stop for this
5025    breakpoint, set BS->stop to 0.  */
5026
5027 static void
5028 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5029 {
5030   int thread_id = pid_to_thread_id (ptid);
5031   const struct bp_location *bl;
5032   struct breakpoint *b;
5033
5034   /* BS is built for existing struct breakpoint.  */
5035   bl = bs->bp_location_at;
5036   gdb_assert (bl != NULL);
5037   b = bs->breakpoint_at;
5038   gdb_assert (b != NULL);
5039
5040   /* Even if the target evaluated the condition on its end and notified GDB, we
5041      need to do so again since GDB does not know if we stopped due to a
5042      breakpoint or a single step breakpoint.  */
5043
5044   if (frame_id_p (b->frame_id)
5045       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5046     bs->stop = 0;
5047   else if (bs->stop)
5048     {
5049       int value_is_zero = 0;
5050       struct expression *cond;
5051
5052       /* Evaluate Python breakpoints that have a "stop"
5053          method implemented.  */
5054       if (b->py_bp_object)
5055         bs->stop = gdbpy_should_stop (b->py_bp_object);
5056
5057       if (is_watchpoint (b))
5058         {
5059           struct watchpoint *w = (struct watchpoint *) b;
5060
5061           cond = w->cond_exp;
5062         }
5063       else
5064         cond = bl->cond;
5065
5066       if (cond && b->disposition != disp_del_at_next_stop)
5067         {
5068           int within_current_scope = 1;
5069           struct watchpoint * w;
5070
5071           /* We use value_mark and value_free_to_mark because it could
5072              be a long time before we return to the command level and
5073              call free_all_values.  We can't call free_all_values
5074              because we might be in the middle of evaluating a
5075              function call.  */
5076           struct value *mark = value_mark ();
5077
5078           if (is_watchpoint (b))
5079             w = (struct watchpoint *) b;
5080           else
5081             w = NULL;
5082
5083           /* Need to select the frame, with all that implies so that
5084              the conditions will have the right context.  Because we
5085              use the frame, we will not see an inlined function's
5086              variables when we arrive at a breakpoint at the start
5087              of the inlined function; the current frame will be the
5088              call site.  */
5089           if (w == NULL || w->cond_exp_valid_block == NULL)
5090             select_frame (get_current_frame ());
5091           else
5092             {
5093               struct frame_info *frame;
5094
5095               /* For local watchpoint expressions, which particular
5096                  instance of a local is being watched matters, so we
5097                  keep track of the frame to evaluate the expression
5098                  in.  To evaluate the condition however, it doesn't
5099                  really matter which instantiation of the function
5100                  where the condition makes sense triggers the
5101                  watchpoint.  This allows an expression like "watch
5102                  global if q > 10" set in `func', catch writes to
5103                  global on all threads that call `func', or catch
5104                  writes on all recursive calls of `func' by a single
5105                  thread.  We simply always evaluate the condition in
5106                  the innermost frame that's executing where it makes
5107                  sense to evaluate the condition.  It seems
5108                  intuitive.  */
5109               frame = block_innermost_frame (w->cond_exp_valid_block);
5110               if (frame != NULL)
5111                 select_frame (frame);
5112               else
5113                 within_current_scope = 0;
5114             }
5115           if (within_current_scope)
5116             value_is_zero
5117               = catch_errors (breakpoint_cond_eval, cond,
5118                               "Error in testing breakpoint condition:\n",
5119                               RETURN_MASK_ALL);
5120           else
5121             {
5122               warning (_("Watchpoint condition cannot be tested "
5123                          "in the current scope"));
5124               /* If we failed to set the right context for this
5125                  watchpoint, unconditionally report it.  */
5126               value_is_zero = 0;
5127             }
5128           /* FIXME-someday, should give breakpoint #.  */
5129           value_free_to_mark (mark);
5130         }
5131
5132       if (cond && value_is_zero)
5133         {
5134           bs->stop = 0;
5135         }
5136       else if (b->thread != -1 && b->thread != thread_id)
5137         {
5138           bs->stop = 0;
5139         }
5140       else if (b->ignore_count > 0)
5141         {
5142           b->ignore_count--;
5143           bs->stop = 0;
5144           /* Increase the hit count even though we don't stop.  */
5145           ++(b->hit_count);
5146           observer_notify_breakpoint_modified (b);
5147         }       
5148     }
5149 }
5150
5151
5152 /* Get a bpstat associated with having just stopped at address
5153    BP_ADDR in thread PTID.
5154
5155    Determine whether we stopped at a breakpoint, etc, or whether we
5156    don't understand this stop.  Result is a chain of bpstat's such
5157    that:
5158
5159    if we don't understand the stop, the result is a null pointer.
5160
5161    if we understand why we stopped, the result is not null.
5162
5163    Each element of the chain refers to a particular breakpoint or
5164    watchpoint at which we have stopped.  (We may have stopped for
5165    several reasons concurrently.)
5166
5167    Each element of the chain has valid next, breakpoint_at,
5168    commands, FIXME??? fields.  */
5169
5170 bpstat
5171 bpstat_stop_status (struct address_space *aspace,
5172                     CORE_ADDR bp_addr, ptid_t ptid,
5173                     const struct target_waitstatus *ws)
5174 {
5175   struct breakpoint *b = NULL;
5176   struct bp_location *bl;
5177   struct bp_location *loc;
5178   /* First item of allocated bpstat's.  */
5179   bpstat bs_head = NULL, *bs_link = &bs_head;
5180   /* Pointer to the last thing in the chain currently.  */
5181   bpstat bs;
5182   int ix;
5183   int need_remove_insert;
5184   int removed_any;
5185
5186   /* First, build the bpstat chain with locations that explain a
5187      target stop, while being careful to not set the target running,
5188      as that may invalidate locations (in particular watchpoint
5189      locations are recreated).  Resuming will happen here with
5190      breakpoint conditions or watchpoint expressions that include
5191      inferior function calls.  */
5192
5193   ALL_BREAKPOINTS (b)
5194     {
5195       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5196         continue;
5197
5198       for (bl = b->loc; bl != NULL; bl = bl->next)
5199         {
5200           /* For hardware watchpoints, we look only at the first
5201              location.  The watchpoint_check function will work on the
5202              entire expression, not the individual locations.  For
5203              read watchpoints, the watchpoints_triggered function has
5204              checked all locations already.  */
5205           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5206             break;
5207
5208           if (!bl->enabled || bl->shlib_disabled)
5209             continue;
5210
5211           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5212             continue;
5213
5214           /* Come here if it's a watchpoint, or if the break address
5215              matches.  */
5216
5217           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5218                                                    explain stop.  */
5219
5220           /* Assume we stop.  Should we find a watchpoint that is not
5221              actually triggered, or if the condition of the breakpoint
5222              evaluates as false, we'll reset 'stop' to 0.  */
5223           bs->stop = 1;
5224           bs->print = 1;
5225
5226           /* If this is a scope breakpoint, mark the associated
5227              watchpoint as triggered so that we will handle the
5228              out-of-scope event.  We'll get to the watchpoint next
5229              iteration.  */
5230           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5231             {
5232               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5233
5234               w->watchpoint_triggered = watch_triggered_yes;
5235             }
5236         }
5237     }
5238
5239   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5240     {
5241       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5242         {
5243           bs = bpstat_alloc (loc, &bs_link);
5244           /* For hits of moribund locations, we should just proceed.  */
5245           bs->stop = 0;
5246           bs->print = 0;
5247           bs->print_it = print_it_noop;
5248         }
5249     }
5250
5251   /* A bit of special processing for shlib breakpoints.  We need to
5252      process solib loading here, so that the lists of loaded and
5253      unloaded libraries are correct before we handle "catch load" and
5254      "catch unload".  */
5255   for (bs = bs_head; bs != NULL; bs = bs->next)
5256     {
5257       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5258         {
5259           handle_solib_event ();
5260           break;
5261         }
5262     }
5263
5264   /* Now go through the locations that caused the target to stop, and
5265      check whether we're interested in reporting this stop to higher
5266      layers, or whether we should resume the target transparently.  */
5267
5268   removed_any = 0;
5269
5270   for (bs = bs_head; bs != NULL; bs = bs->next)
5271     {
5272       if (!bs->stop)
5273         continue;
5274
5275       b = bs->breakpoint_at;
5276       b->ops->check_status (bs);
5277       if (bs->stop)
5278         {
5279           bpstat_check_breakpoint_conditions (bs, ptid);
5280
5281           if (bs->stop)
5282             {
5283               ++(b->hit_count);
5284               observer_notify_breakpoint_modified (b);
5285
5286               /* We will stop here.  */
5287               if (b->disposition == disp_disable)
5288                 {
5289                   --(b->enable_count);
5290                   if (b->enable_count <= 0
5291                       && b->enable_state != bp_permanent)
5292                     b->enable_state = bp_disabled;
5293                   removed_any = 1;
5294                 }
5295               if (b->silent)
5296                 bs->print = 0;
5297               bs->commands = b->commands;
5298               incref_counted_command_line (bs->commands);
5299               if (command_line_is_silent (bs->commands
5300                                           ? bs->commands->commands : NULL))
5301                 bs->print = 0;
5302             }
5303
5304         }
5305
5306       /* Print nothing for this entry if we don't stop or don't
5307          print.  */
5308       if (!bs->stop || !bs->print)
5309         bs->print_it = print_it_noop;
5310     }
5311
5312   /* If we aren't stopping, the value of some hardware watchpoint may
5313      not have changed, but the intermediate memory locations we are
5314      watching may have.  Don't bother if we're stopping; this will get
5315      done later.  */
5316   need_remove_insert = 0;
5317   if (! bpstat_causes_stop (bs_head))
5318     for (bs = bs_head; bs != NULL; bs = bs->next)
5319       if (!bs->stop
5320           && bs->breakpoint_at
5321           && is_hardware_watchpoint (bs->breakpoint_at))
5322         {
5323           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5324
5325           update_watchpoint (w, 0 /* don't reparse.  */);
5326           need_remove_insert = 1;
5327         }
5328
5329   if (need_remove_insert)
5330     update_global_location_list (1);
5331   else if (removed_any)
5332     update_global_location_list (0);
5333
5334   return bs_head;
5335 }
5336
5337 static void
5338 handle_jit_event (void)
5339 {
5340   struct frame_info *frame;
5341   struct gdbarch *gdbarch;
5342
5343   /* Switch terminal for any messages produced by
5344      breakpoint_re_set.  */
5345   target_terminal_ours_for_output ();
5346
5347   frame = get_current_frame ();
5348   gdbarch = get_frame_arch (frame);
5349
5350   jit_event_handler (gdbarch);
5351
5352   target_terminal_inferior ();
5353 }
5354
5355 /* Handle an solib event by calling solib_add.  */
5356
5357 void
5358 handle_solib_event (void)
5359 {
5360   clear_program_space_solib_cache (current_inferior ()->pspace);
5361
5362   /* Check for any newly added shared libraries if we're supposed to
5363      be adding them automatically.  Switch terminal for any messages
5364      produced by breakpoint_re_set.  */
5365   target_terminal_ours_for_output ();
5366   solib_add (NULL, 0, &current_target, auto_solib_add);
5367   target_terminal_inferior ();
5368 }
5369
5370 /* Prepare WHAT final decision for infrun.  */
5371
5372 /* Decide what infrun needs to do with this bpstat.  */
5373
5374 struct bpstat_what
5375 bpstat_what (bpstat bs_head)
5376 {
5377   struct bpstat_what retval;
5378   int jit_event = 0;
5379   bpstat bs;
5380
5381   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5382   retval.call_dummy = STOP_NONE;
5383   retval.is_longjmp = 0;
5384
5385   for (bs = bs_head; bs != NULL; bs = bs->next)
5386     {
5387       /* Extract this BS's action.  After processing each BS, we check
5388          if its action overrides all we've seem so far.  */
5389       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5390       enum bptype bptype;
5391
5392       if (bs->breakpoint_at == NULL)
5393         {
5394           /* I suspect this can happen if it was a momentary
5395              breakpoint which has since been deleted.  */
5396           bptype = bp_none;
5397         }
5398       else
5399         bptype = bs->breakpoint_at->type;
5400
5401       switch (bptype)
5402         {
5403         case bp_none:
5404           break;
5405         case bp_breakpoint:
5406         case bp_hardware_breakpoint:
5407         case bp_until:
5408         case bp_finish:
5409         case bp_shlib_event:
5410           if (bs->stop)
5411             {
5412               if (bs->print)
5413                 this_action = BPSTAT_WHAT_STOP_NOISY;
5414               else
5415                 this_action = BPSTAT_WHAT_STOP_SILENT;
5416             }
5417           else
5418             this_action = BPSTAT_WHAT_SINGLE;
5419           break;
5420         case bp_watchpoint:
5421         case bp_hardware_watchpoint:
5422         case bp_read_watchpoint:
5423         case bp_access_watchpoint:
5424           if (bs->stop)
5425             {
5426               if (bs->print)
5427                 this_action = BPSTAT_WHAT_STOP_NOISY;
5428               else
5429                 this_action = BPSTAT_WHAT_STOP_SILENT;
5430             }
5431           else
5432             {
5433               /* There was a watchpoint, but we're not stopping.
5434                  This requires no further action.  */
5435             }
5436           break;
5437         case bp_longjmp:
5438         case bp_longjmp_call_dummy:
5439         case bp_exception:
5440           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5441           retval.is_longjmp = bptype != bp_exception;
5442           break;
5443         case bp_longjmp_resume:
5444         case bp_exception_resume:
5445           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5446           retval.is_longjmp = bptype == bp_longjmp_resume;
5447           break;
5448         case bp_step_resume:
5449           if (bs->stop)
5450             this_action = BPSTAT_WHAT_STEP_RESUME;
5451           else
5452             {
5453               /* It is for the wrong frame.  */
5454               this_action = BPSTAT_WHAT_SINGLE;
5455             }
5456           break;
5457         case bp_hp_step_resume:
5458           if (bs->stop)
5459             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5460           else
5461             {
5462               /* It is for the wrong frame.  */
5463               this_action = BPSTAT_WHAT_SINGLE;
5464             }
5465           break;
5466         case bp_watchpoint_scope:
5467         case bp_thread_event:
5468         case bp_overlay_event:
5469         case bp_longjmp_master:
5470         case bp_std_terminate_master:
5471         case bp_exception_master:
5472           this_action = BPSTAT_WHAT_SINGLE;
5473           break;
5474         case bp_catchpoint:
5475           if (bs->stop)
5476             {
5477               if (bs->print)
5478                 this_action = BPSTAT_WHAT_STOP_NOISY;
5479               else
5480                 this_action = BPSTAT_WHAT_STOP_SILENT;
5481             }
5482           else
5483             {
5484               /* There was a catchpoint, but we're not stopping.
5485                  This requires no further action.  */
5486             }
5487           break;
5488         case bp_jit_event:
5489           jit_event = 1;
5490           this_action = BPSTAT_WHAT_SINGLE;
5491           break;
5492         case bp_call_dummy:
5493           /* Make sure the action is stop (silent or noisy),
5494              so infrun.c pops the dummy frame.  */
5495           retval.call_dummy = STOP_STACK_DUMMY;
5496           this_action = BPSTAT_WHAT_STOP_SILENT;
5497           break;
5498         case bp_std_terminate:
5499           /* Make sure the action is stop (silent or noisy),
5500              so infrun.c pops the dummy frame.  */
5501           retval.call_dummy = STOP_STD_TERMINATE;
5502           this_action = BPSTAT_WHAT_STOP_SILENT;
5503           break;
5504         case bp_tracepoint:
5505         case bp_fast_tracepoint:
5506         case bp_static_tracepoint:
5507           /* Tracepoint hits should not be reported back to GDB, and
5508              if one got through somehow, it should have been filtered
5509              out already.  */
5510           internal_error (__FILE__, __LINE__,
5511                           _("bpstat_what: tracepoint encountered"));
5512           break;
5513         case bp_gnu_ifunc_resolver:
5514           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5515           this_action = BPSTAT_WHAT_SINGLE;
5516           break;
5517         case bp_gnu_ifunc_resolver_return:
5518           /* The breakpoint will be removed, execution will restart from the
5519              PC of the former breakpoint.  */
5520           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5521           break;
5522
5523         case bp_dprintf:
5524           if (bs->stop)
5525             this_action = BPSTAT_WHAT_STOP_SILENT;
5526           else
5527             this_action = BPSTAT_WHAT_SINGLE;
5528           break;
5529
5530         default:
5531           internal_error (__FILE__, __LINE__,
5532                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5533         }
5534
5535       retval.main_action = max (retval.main_action, this_action);
5536     }
5537
5538   /* These operations may affect the bs->breakpoint_at state so they are
5539      delayed after MAIN_ACTION is decided above.  */
5540
5541   if (jit_event)
5542     {
5543       if (debug_infrun)
5544         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5545
5546       handle_jit_event ();
5547     }
5548
5549   for (bs = bs_head; bs != NULL; bs = bs->next)
5550     {
5551       struct breakpoint *b = bs->breakpoint_at;
5552
5553       if (b == NULL)
5554         continue;
5555       switch (b->type)
5556         {
5557         case bp_gnu_ifunc_resolver:
5558           gnu_ifunc_resolver_stop (b);
5559           break;
5560         case bp_gnu_ifunc_resolver_return:
5561           gnu_ifunc_resolver_return_stop (b);
5562           break;
5563         }
5564     }
5565
5566   return retval;
5567 }
5568
5569 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5570    without hardware support).  This isn't related to a specific bpstat,
5571    just to things like whether watchpoints are set.  */
5572
5573 int
5574 bpstat_should_step (void)
5575 {
5576   struct breakpoint *b;
5577
5578   ALL_BREAKPOINTS (b)
5579     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5580       return 1;
5581   return 0;
5582 }
5583
5584 int
5585 bpstat_causes_stop (bpstat bs)
5586 {
5587   for (; bs != NULL; bs = bs->next)
5588     if (bs->stop)
5589       return 1;
5590
5591   return 0;
5592 }
5593
5594 \f
5595
5596 /* Compute a string of spaces suitable to indent the next line
5597    so it starts at the position corresponding to the table column
5598    named COL_NAME in the currently active table of UIOUT.  */
5599
5600 static char *
5601 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5602 {
5603   static char wrap_indent[80];
5604   int i, total_width, width, align;
5605   char *text;
5606
5607   total_width = 0;
5608   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5609     {
5610       if (strcmp (text, col_name) == 0)
5611         {
5612           gdb_assert (total_width < sizeof wrap_indent);
5613           memset (wrap_indent, ' ', total_width);
5614           wrap_indent[total_width] = 0;
5615
5616           return wrap_indent;
5617         }
5618
5619       total_width += width + 1;
5620     }
5621
5622   return NULL;
5623 }
5624
5625 /* Determine if the locations of this breakpoint will have their conditions
5626    evaluated by the target, host or a mix of both.  Returns the following:
5627
5628     "host": Host evals condition.
5629     "host or target": Host or Target evals condition.
5630     "target": Target evals condition.
5631 */
5632
5633 static const char *
5634 bp_condition_evaluator (struct breakpoint *b)
5635 {
5636   struct bp_location *bl;
5637   char host_evals = 0;
5638   char target_evals = 0;
5639
5640   if (!b)
5641     return NULL;
5642
5643   if (!is_breakpoint (b))
5644     return NULL;
5645
5646   if (gdb_evaluates_breakpoint_condition_p ()
5647       || !target_supports_evaluation_of_breakpoint_conditions ())
5648     return condition_evaluation_host;
5649
5650   for (bl = b->loc; bl; bl = bl->next)
5651     {
5652       if (bl->cond_bytecode)
5653         target_evals++;
5654       else
5655         host_evals++;
5656     }
5657
5658   if (host_evals && target_evals)
5659     return condition_evaluation_both;
5660   else if (target_evals)
5661     return condition_evaluation_target;
5662   else
5663     return condition_evaluation_host;
5664 }
5665
5666 /* Determine the breakpoint location's condition evaluator.  This is
5667    similar to bp_condition_evaluator, but for locations.  */
5668
5669 static const char *
5670 bp_location_condition_evaluator (struct bp_location *bl)
5671 {
5672   if (bl && !is_breakpoint (bl->owner))
5673     return NULL;
5674
5675   if (gdb_evaluates_breakpoint_condition_p ()
5676       || !target_supports_evaluation_of_breakpoint_conditions ())
5677     return condition_evaluation_host;
5678
5679   if (bl && bl->cond_bytecode)
5680     return condition_evaluation_target;
5681   else
5682     return condition_evaluation_host;
5683 }
5684
5685 /* Print the LOC location out of the list of B->LOC locations.  */
5686
5687 static void
5688 print_breakpoint_location (struct breakpoint *b,
5689                            struct bp_location *loc)
5690 {
5691   struct ui_out *uiout = current_uiout;
5692   struct cleanup *old_chain = save_current_program_space ();
5693
5694   if (loc != NULL && loc->shlib_disabled)
5695     loc = NULL;
5696
5697   if (loc != NULL)
5698     set_current_program_space (loc->pspace);
5699
5700   if (b->display_canonical)
5701     ui_out_field_string (uiout, "what", b->addr_string);
5702   else if (loc && loc->symtab)
5703     {
5704       struct symbol *sym 
5705         = find_pc_sect_function (loc->address, loc->section);
5706       if (sym)
5707         {
5708           ui_out_text (uiout, "in ");
5709           ui_out_field_string (uiout, "func",
5710                                SYMBOL_PRINT_NAME (sym));
5711           ui_out_text (uiout, " ");
5712           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5713           ui_out_text (uiout, "at ");
5714         }
5715       ui_out_field_string (uiout, "file",
5716                            symtab_to_filename_for_display (loc->symtab));
5717       ui_out_text (uiout, ":");
5718
5719       if (ui_out_is_mi_like_p (uiout))
5720         ui_out_field_string (uiout, "fullname",
5721                              symtab_to_fullname (loc->symtab));
5722       
5723       ui_out_field_int (uiout, "line", loc->line_number);
5724     }
5725   else if (loc)
5726     {
5727       struct ui_file *stb = mem_fileopen ();
5728       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5729
5730       print_address_symbolic (loc->gdbarch, loc->address, stb,
5731                               demangle, "");
5732       ui_out_field_stream (uiout, "at", stb);
5733
5734       do_cleanups (stb_chain);
5735     }
5736   else
5737     ui_out_field_string (uiout, "pending", b->addr_string);
5738
5739   if (loc && is_breakpoint (b)
5740       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5741       && bp_condition_evaluator (b) == condition_evaluation_both)
5742     {
5743       ui_out_text (uiout, " (");
5744       ui_out_field_string (uiout, "evaluated-by",
5745                            bp_location_condition_evaluator (loc));
5746       ui_out_text (uiout, ")");
5747     }
5748
5749   do_cleanups (old_chain);
5750 }
5751
5752 static const char *
5753 bptype_string (enum bptype type)
5754 {
5755   struct ep_type_description
5756     {
5757       enum bptype type;
5758       char *description;
5759     };
5760   static struct ep_type_description bptypes[] =
5761   {
5762     {bp_none, "?deleted?"},
5763     {bp_breakpoint, "breakpoint"},
5764     {bp_hardware_breakpoint, "hw breakpoint"},
5765     {bp_until, "until"},
5766     {bp_finish, "finish"},
5767     {bp_watchpoint, "watchpoint"},
5768     {bp_hardware_watchpoint, "hw watchpoint"},
5769     {bp_read_watchpoint, "read watchpoint"},
5770     {bp_access_watchpoint, "acc watchpoint"},
5771     {bp_longjmp, "longjmp"},
5772     {bp_longjmp_resume, "longjmp resume"},
5773     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5774     {bp_exception, "exception"},
5775     {bp_exception_resume, "exception resume"},
5776     {bp_step_resume, "step resume"},
5777     {bp_hp_step_resume, "high-priority step resume"},
5778     {bp_watchpoint_scope, "watchpoint scope"},
5779     {bp_call_dummy, "call dummy"},
5780     {bp_std_terminate, "std::terminate"},
5781     {bp_shlib_event, "shlib events"},
5782     {bp_thread_event, "thread events"},
5783     {bp_overlay_event, "overlay events"},
5784     {bp_longjmp_master, "longjmp master"},
5785     {bp_std_terminate_master, "std::terminate master"},
5786     {bp_exception_master, "exception master"},
5787     {bp_catchpoint, "catchpoint"},
5788     {bp_tracepoint, "tracepoint"},
5789     {bp_fast_tracepoint, "fast tracepoint"},
5790     {bp_static_tracepoint, "static tracepoint"},
5791     {bp_dprintf, "dprintf"},
5792     {bp_jit_event, "jit events"},
5793     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5794     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5795   };
5796
5797   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5798       || ((int) type != bptypes[(int) type].type))
5799     internal_error (__FILE__, __LINE__,
5800                     _("bptypes table does not describe type #%d."),
5801                     (int) type);
5802
5803   return bptypes[(int) type].description;
5804 }
5805
5806 DEF_VEC_I(int);
5807
5808 /* For MI, output a field named 'thread-groups' with a list as the value.
5809    For CLI, prefix the list with the string 'inf'. */
5810
5811 static void
5812 output_thread_groups (struct ui_out *uiout,
5813                       const char *field_name,
5814                       VEC(int) *inf_num,
5815                       int mi_only)
5816 {
5817   struct cleanup *back_to;
5818   int is_mi = ui_out_is_mi_like_p (uiout);
5819   int inf;
5820   int i;
5821
5822   /* For backward compatibility, don't display inferiors in CLI unless
5823      there are several.  Always display them for MI. */
5824   if (!is_mi && mi_only)
5825     return;
5826
5827   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
5828
5829   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5830     {
5831       if (is_mi)
5832         {
5833           char mi_group[10];
5834
5835           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5836           ui_out_field_string (uiout, NULL, mi_group);
5837         }
5838       else
5839         {
5840           if (i == 0)
5841             ui_out_text (uiout, " inf ");
5842           else
5843             ui_out_text (uiout, ", ");
5844         
5845           ui_out_text (uiout, plongest (inf));
5846         }
5847     }
5848
5849   do_cleanups (back_to);
5850 }
5851
5852 /* Print B to gdb_stdout.  */
5853
5854 static void
5855 print_one_breakpoint_location (struct breakpoint *b,
5856                                struct bp_location *loc,
5857                                int loc_number,
5858                                struct bp_location **last_loc,
5859                                int allflag)
5860 {
5861   struct command_line *l;
5862   static char bpenables[] = "nynny";
5863
5864   struct ui_out *uiout = current_uiout;
5865   int header_of_multiple = 0;
5866   int part_of_multiple = (loc != NULL);
5867   struct value_print_options opts;
5868
5869   get_user_print_options (&opts);
5870
5871   gdb_assert (!loc || loc_number != 0);
5872   /* See comment in print_one_breakpoint concerning treatment of
5873      breakpoints with single disabled location.  */
5874   if (loc == NULL 
5875       && (b->loc != NULL 
5876           && (b->loc->next != NULL || !b->loc->enabled)))
5877     header_of_multiple = 1;
5878   if (loc == NULL)
5879     loc = b->loc;
5880
5881   annotate_record ();
5882
5883   /* 1 */
5884   annotate_field (0);
5885   if (part_of_multiple)
5886     {
5887       char *formatted;
5888       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5889       ui_out_field_string (uiout, "number", formatted);
5890       xfree (formatted);
5891     }
5892   else
5893     {
5894       ui_out_field_int (uiout, "number", b->number);
5895     }
5896
5897   /* 2 */
5898   annotate_field (1);
5899   if (part_of_multiple)
5900     ui_out_field_skip (uiout, "type");
5901   else
5902     ui_out_field_string (uiout, "type", bptype_string (b->type));
5903
5904   /* 3 */
5905   annotate_field (2);
5906   if (part_of_multiple)
5907     ui_out_field_skip (uiout, "disp");
5908   else
5909     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5910
5911
5912   /* 4 */
5913   annotate_field (3);
5914   if (part_of_multiple)
5915     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5916   else
5917     ui_out_field_fmt (uiout, "enabled", "%c", 
5918                       bpenables[(int) b->enable_state]);
5919   ui_out_spaces (uiout, 2);
5920
5921   
5922   /* 5 and 6 */
5923   if (b->ops != NULL && b->ops->print_one != NULL)
5924     {
5925       /* Although the print_one can possibly print all locations,
5926          calling it here is not likely to get any nice result.  So,
5927          make sure there's just one location.  */
5928       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5929       b->ops->print_one (b, last_loc);
5930     }
5931   else
5932     switch (b->type)
5933       {
5934       case bp_none:
5935         internal_error (__FILE__, __LINE__,
5936                         _("print_one_breakpoint: bp_none encountered\n"));
5937         break;
5938
5939       case bp_watchpoint:
5940       case bp_hardware_watchpoint:
5941       case bp_read_watchpoint:
5942       case bp_access_watchpoint:
5943         {
5944           struct watchpoint *w = (struct watchpoint *) b;
5945
5946           /* Field 4, the address, is omitted (which makes the columns
5947              not line up too nicely with the headers, but the effect
5948              is relatively readable).  */
5949           if (opts.addressprint)
5950             ui_out_field_skip (uiout, "addr");
5951           annotate_field (5);
5952           ui_out_field_string (uiout, "what", w->exp_string);
5953         }
5954         break;
5955
5956       case bp_breakpoint:
5957       case bp_hardware_breakpoint:
5958       case bp_until:
5959       case bp_finish:
5960       case bp_longjmp:
5961       case bp_longjmp_resume:
5962       case bp_longjmp_call_dummy:
5963       case bp_exception:
5964       case bp_exception_resume:
5965       case bp_step_resume:
5966       case bp_hp_step_resume:
5967       case bp_watchpoint_scope:
5968       case bp_call_dummy:
5969       case bp_std_terminate:
5970       case bp_shlib_event:
5971       case bp_thread_event:
5972       case bp_overlay_event:
5973       case bp_longjmp_master:
5974       case bp_std_terminate_master:
5975       case bp_exception_master:
5976       case bp_tracepoint:
5977       case bp_fast_tracepoint:
5978       case bp_static_tracepoint:
5979       case bp_dprintf:
5980       case bp_jit_event:
5981       case bp_gnu_ifunc_resolver:
5982       case bp_gnu_ifunc_resolver_return:
5983         if (opts.addressprint)
5984           {
5985             annotate_field (4);
5986             if (header_of_multiple)
5987               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5988             else if (b->loc == NULL || loc->shlib_disabled)
5989               ui_out_field_string (uiout, "addr", "<PENDING>");
5990             else
5991               ui_out_field_core_addr (uiout, "addr",
5992                                       loc->gdbarch, loc->address);
5993           }
5994         annotate_field (5);
5995         if (!header_of_multiple)
5996           print_breakpoint_location (b, loc);
5997         if (b->loc)
5998           *last_loc = b->loc;
5999         break;
6000       }
6001
6002
6003   if (loc != NULL && !header_of_multiple)
6004     {
6005       struct inferior *inf;
6006       VEC(int) *inf_num = NULL;
6007       int mi_only = 1;
6008
6009       ALL_INFERIORS (inf)
6010         {
6011           if (inf->pspace == loc->pspace)
6012             VEC_safe_push (int, inf_num, inf->num);
6013         }
6014
6015         /* For backward compatibility, don't display inferiors in CLI unless
6016            there are several.  Always display for MI. */
6017         if (allflag
6018             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6019                 && (number_of_program_spaces () > 1
6020                     || number_of_inferiors () > 1)
6021                 /* LOC is for existing B, it cannot be in
6022                    moribund_locations and thus having NULL OWNER.  */
6023                 && loc->owner->type != bp_catchpoint))
6024         mi_only = 0;
6025       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6026       VEC_free (int, inf_num);
6027     }
6028
6029   if (!part_of_multiple)
6030     {
6031       if (b->thread != -1)
6032         {
6033           /* FIXME: This seems to be redundant and lost here; see the
6034              "stop only in" line a little further down.  */
6035           ui_out_text (uiout, " thread ");
6036           ui_out_field_int (uiout, "thread", b->thread);
6037         }
6038       else if (b->task != 0)
6039         {
6040           ui_out_text (uiout, " task ");
6041           ui_out_field_int (uiout, "task", b->task);
6042         }
6043     }
6044
6045   ui_out_text (uiout, "\n");
6046
6047   if (!part_of_multiple)
6048     b->ops->print_one_detail (b, uiout);
6049
6050   if (part_of_multiple && frame_id_p (b->frame_id))
6051     {
6052       annotate_field (6);
6053       ui_out_text (uiout, "\tstop only in stack frame at ");
6054       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6055          the frame ID.  */
6056       ui_out_field_core_addr (uiout, "frame",
6057                               b->gdbarch, b->frame_id.stack_addr);
6058       ui_out_text (uiout, "\n");
6059     }
6060   
6061   if (!part_of_multiple && b->cond_string)
6062     {
6063       annotate_field (7);
6064       if (is_tracepoint (b))
6065         ui_out_text (uiout, "\ttrace only if ");
6066       else
6067         ui_out_text (uiout, "\tstop only if ");
6068       ui_out_field_string (uiout, "cond", b->cond_string);
6069
6070       /* Print whether the target is doing the breakpoint's condition
6071          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6072       if (is_breakpoint (b)
6073           && breakpoint_condition_evaluation_mode ()
6074           == condition_evaluation_target)
6075         {
6076           ui_out_text (uiout, " (");
6077           ui_out_field_string (uiout, "evaluated-by",
6078                                bp_condition_evaluator (b));
6079           ui_out_text (uiout, " evals)");
6080         }
6081       ui_out_text (uiout, "\n");
6082     }
6083
6084   if (!part_of_multiple && b->thread != -1)
6085     {
6086       /* FIXME should make an annotation for this.  */
6087       ui_out_text (uiout, "\tstop only in thread ");
6088       ui_out_field_int (uiout, "thread", b->thread);
6089       ui_out_text (uiout, "\n");
6090     }
6091   
6092   if (!part_of_multiple)
6093     {
6094       if (b->hit_count)
6095         {
6096           /* FIXME should make an annotation for this.  */
6097           if (is_catchpoint (b))
6098             ui_out_text (uiout, "\tcatchpoint");
6099           else if (is_tracepoint (b))
6100             ui_out_text (uiout, "\ttracepoint");
6101           else
6102             ui_out_text (uiout, "\tbreakpoint");
6103           ui_out_text (uiout, " already hit ");
6104           ui_out_field_int (uiout, "times", b->hit_count);
6105           if (b->hit_count == 1)
6106             ui_out_text (uiout, " time\n");
6107           else
6108             ui_out_text (uiout, " times\n");
6109         }
6110       else
6111         {
6112           /* Output the count also if it is zero, but only if this is mi.  */
6113           if (ui_out_is_mi_like_p (uiout))
6114             ui_out_field_int (uiout, "times", b->hit_count);
6115         }
6116     }
6117
6118   if (!part_of_multiple && b->ignore_count)
6119     {
6120       annotate_field (8);
6121       ui_out_text (uiout, "\tignore next ");
6122       ui_out_field_int (uiout, "ignore", b->ignore_count);
6123       ui_out_text (uiout, " hits\n");
6124     }
6125
6126   /* Note that an enable count of 1 corresponds to "enable once"
6127      behavior, which is reported by the combination of enablement and
6128      disposition, so we don't need to mention it here.  */
6129   if (!part_of_multiple && b->enable_count > 1)
6130     {
6131       annotate_field (8);
6132       ui_out_text (uiout, "\tdisable after ");
6133       /* Tweak the wording to clarify that ignore and enable counts
6134          are distinct, and have additive effect.  */
6135       if (b->ignore_count)
6136         ui_out_text (uiout, "additional ");
6137       else
6138         ui_out_text (uiout, "next ");
6139       ui_out_field_int (uiout, "enable", b->enable_count);
6140       ui_out_text (uiout, " hits\n");
6141     }
6142
6143   if (!part_of_multiple && is_tracepoint (b))
6144     {
6145       struct tracepoint *tp = (struct tracepoint *) b;
6146
6147       if (tp->traceframe_usage)
6148         {
6149           ui_out_text (uiout, "\ttrace buffer usage ");
6150           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6151           ui_out_text (uiout, " bytes\n");
6152         }
6153     }
6154
6155   l = b->commands ? b->commands->commands : NULL;
6156   if (!part_of_multiple && l)
6157     {
6158       struct cleanup *script_chain;
6159
6160       annotate_field (9);
6161       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6162       print_command_lines (uiout, l, 4);
6163       do_cleanups (script_chain);
6164     }
6165
6166   if (is_tracepoint (b))
6167     {
6168       struct tracepoint *t = (struct tracepoint *) b;
6169
6170       if (!part_of_multiple && t->pass_count)
6171         {
6172           annotate_field (10);
6173           ui_out_text (uiout, "\tpass count ");
6174           ui_out_field_int (uiout, "pass", t->pass_count);
6175           ui_out_text (uiout, " \n");
6176         }
6177
6178       /* Don't display it when tracepoint or tracepoint location is
6179          pending.   */
6180       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6181         {
6182           annotate_field (11);
6183
6184           if (ui_out_is_mi_like_p (uiout))
6185             ui_out_field_string (uiout, "installed",
6186                                  loc->inserted ? "y" : "n");
6187           else
6188             {
6189               if (loc->inserted)
6190                 ui_out_text (uiout, "\t");
6191               else
6192                 ui_out_text (uiout, "\tnot ");
6193               ui_out_text (uiout, "installed on target\n");
6194             }
6195         }
6196     }
6197
6198   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6199     {
6200       if (is_watchpoint (b))
6201         {
6202           struct watchpoint *w = (struct watchpoint *) b;
6203
6204           ui_out_field_string (uiout, "original-location", w->exp_string);
6205         }
6206       else if (b->addr_string)
6207         ui_out_field_string (uiout, "original-location", b->addr_string);
6208     }
6209 }
6210
6211 static void
6212 print_one_breakpoint (struct breakpoint *b,
6213                       struct bp_location **last_loc, 
6214                       int allflag)
6215 {
6216   struct cleanup *bkpt_chain;
6217   struct ui_out *uiout = current_uiout;
6218
6219   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6220
6221   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6222   do_cleanups (bkpt_chain);
6223
6224   /* If this breakpoint has custom print function,
6225      it's already printed.  Otherwise, print individual
6226      locations, if any.  */
6227   if (b->ops == NULL || b->ops->print_one == NULL)
6228     {
6229       /* If breakpoint has a single location that is disabled, we
6230          print it as if it had several locations, since otherwise it's
6231          hard to represent "breakpoint enabled, location disabled"
6232          situation.
6233
6234          Note that while hardware watchpoints have several locations
6235          internally, that's not a property exposed to user.  */
6236       if (b->loc 
6237           && !is_hardware_watchpoint (b)
6238           && (b->loc->next || !b->loc->enabled))
6239         {
6240           struct bp_location *loc;
6241           int n = 1;
6242
6243           for (loc = b->loc; loc; loc = loc->next, ++n)
6244             {
6245               struct cleanup *inner2 =
6246                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6247               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6248               do_cleanups (inner2);
6249             }
6250         }
6251     }
6252 }
6253
6254 static int
6255 breakpoint_address_bits (struct breakpoint *b)
6256 {
6257   int print_address_bits = 0;
6258   struct bp_location *loc;
6259
6260   for (loc = b->loc; loc; loc = loc->next)
6261     {
6262       int addr_bit;
6263
6264       /* Software watchpoints that aren't watching memory don't have
6265          an address to print.  */
6266       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6267         continue;
6268
6269       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6270       if (addr_bit > print_address_bits)
6271         print_address_bits = addr_bit;
6272     }
6273
6274   return print_address_bits;
6275 }
6276
6277 struct captured_breakpoint_query_args
6278   {
6279     int bnum;
6280   };
6281
6282 static int
6283 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6284 {
6285   struct captured_breakpoint_query_args *args = data;
6286   struct breakpoint *b;
6287   struct bp_location *dummy_loc = NULL;
6288
6289   ALL_BREAKPOINTS (b)
6290     {
6291       if (args->bnum == b->number)
6292         {
6293           print_one_breakpoint (b, &dummy_loc, 0);
6294           return GDB_RC_OK;
6295         }
6296     }
6297   return GDB_RC_NONE;
6298 }
6299
6300 enum gdb_rc
6301 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6302                       char **error_message)
6303 {
6304   struct captured_breakpoint_query_args args;
6305
6306   args.bnum = bnum;
6307   /* For the moment we don't trust print_one_breakpoint() to not throw
6308      an error.  */
6309   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6310                                  error_message, RETURN_MASK_ALL) < 0)
6311     return GDB_RC_FAIL;
6312   else
6313     return GDB_RC_OK;
6314 }
6315
6316 /* Return true if this breakpoint was set by the user, false if it is
6317    internal or momentary.  */
6318
6319 int
6320 user_breakpoint_p (struct breakpoint *b)
6321 {
6322   return b->number > 0;
6323 }
6324
6325 /* Print information on user settable breakpoint (watchpoint, etc)
6326    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6327    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6328    FILTER is non-NULL, call it on each breakpoint and only include the
6329    ones for which it returns non-zero.  Return the total number of
6330    breakpoints listed.  */
6331
6332 static int
6333 breakpoint_1 (char *args, int allflag, 
6334               int (*filter) (const struct breakpoint *))
6335 {
6336   struct breakpoint *b;
6337   struct bp_location *last_loc = NULL;
6338   int nr_printable_breakpoints;
6339   struct cleanup *bkpttbl_chain;
6340   struct value_print_options opts;
6341   int print_address_bits = 0;
6342   int print_type_col_width = 14;
6343   struct ui_out *uiout = current_uiout;
6344
6345   get_user_print_options (&opts);
6346
6347   /* Compute the number of rows in the table, as well as the size
6348      required for address fields.  */
6349   nr_printable_breakpoints = 0;
6350   ALL_BREAKPOINTS (b)
6351     {
6352       /* If we have a filter, only list the breakpoints it accepts.  */
6353       if (filter && !filter (b))
6354         continue;
6355
6356       /* If we have an "args" string, it is a list of breakpoints to 
6357          accept.  Skip the others.  */
6358       if (args != NULL && *args != '\0')
6359         {
6360           if (allflag && parse_and_eval_long (args) != b->number)
6361             continue;
6362           if (!allflag && !number_is_in_list (args, b->number))
6363             continue;
6364         }
6365
6366       if (allflag || user_breakpoint_p (b))
6367         {
6368           int addr_bit, type_len;
6369
6370           addr_bit = breakpoint_address_bits (b);
6371           if (addr_bit > print_address_bits)
6372             print_address_bits = addr_bit;
6373
6374           type_len = strlen (bptype_string (b->type));
6375           if (type_len > print_type_col_width)
6376             print_type_col_width = type_len;
6377
6378           nr_printable_breakpoints++;
6379         }
6380     }
6381
6382   if (opts.addressprint)
6383     bkpttbl_chain 
6384       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6385                                              nr_printable_breakpoints,
6386                                              "BreakpointTable");
6387   else
6388     bkpttbl_chain 
6389       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6390                                              nr_printable_breakpoints,
6391                                              "BreakpointTable");
6392
6393   if (nr_printable_breakpoints > 0)
6394     annotate_breakpoints_headers ();
6395   if (nr_printable_breakpoints > 0)
6396     annotate_field (0);
6397   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6398   if (nr_printable_breakpoints > 0)
6399     annotate_field (1);
6400   ui_out_table_header (uiout, print_type_col_width, ui_left,
6401                        "type", "Type");                         /* 2 */
6402   if (nr_printable_breakpoints > 0)
6403     annotate_field (2);
6404   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6405   if (nr_printable_breakpoints > 0)
6406     annotate_field (3);
6407   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6408   if (opts.addressprint)
6409     {
6410       if (nr_printable_breakpoints > 0)
6411         annotate_field (4);
6412       if (print_address_bits <= 32)
6413         ui_out_table_header (uiout, 10, ui_left, 
6414                              "addr", "Address");                /* 5 */
6415       else
6416         ui_out_table_header (uiout, 18, ui_left, 
6417                              "addr", "Address");                /* 5 */
6418     }
6419   if (nr_printable_breakpoints > 0)
6420     annotate_field (5);
6421   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6422   ui_out_table_body (uiout);
6423   if (nr_printable_breakpoints > 0)
6424     annotate_breakpoints_table ();
6425
6426   ALL_BREAKPOINTS (b)
6427     {
6428       QUIT;
6429       /* If we have a filter, only list the breakpoints it accepts.  */
6430       if (filter && !filter (b))
6431         continue;
6432
6433       /* If we have an "args" string, it is a list of breakpoints to 
6434          accept.  Skip the others.  */
6435
6436       if (args != NULL && *args != '\0')
6437         {
6438           if (allflag)  /* maintenance info breakpoint */
6439             {
6440               if (parse_and_eval_long (args) != b->number)
6441                 continue;
6442             }
6443           else          /* all others */
6444             {
6445               if (!number_is_in_list (args, b->number))
6446                 continue;
6447             }
6448         }
6449       /* We only print out user settable breakpoints unless the
6450          allflag is set.  */
6451       if (allflag || user_breakpoint_p (b))
6452         print_one_breakpoint (b, &last_loc, allflag);
6453     }
6454
6455   do_cleanups (bkpttbl_chain);
6456
6457   if (nr_printable_breakpoints == 0)
6458     {
6459       /* If there's a filter, let the caller decide how to report
6460          empty list.  */
6461       if (!filter)
6462         {
6463           if (args == NULL || *args == '\0')
6464             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6465           else
6466             ui_out_message (uiout, 0, 
6467                             "No breakpoint or watchpoint matching '%s'.\n",
6468                             args);
6469         }
6470     }
6471   else
6472     {
6473       if (last_loc && !server_command)
6474         set_next_address (last_loc->gdbarch, last_loc->address);
6475     }
6476
6477   /* FIXME?  Should this be moved up so that it is only called when
6478      there have been breakpoints? */
6479   annotate_breakpoints_table_end ();
6480
6481   return nr_printable_breakpoints;
6482 }
6483
6484 /* Display the value of default-collect in a way that is generally
6485    compatible with the breakpoint list.  */
6486
6487 static void
6488 default_collect_info (void)
6489 {
6490   struct ui_out *uiout = current_uiout;
6491
6492   /* If it has no value (which is frequently the case), say nothing; a
6493      message like "No default-collect." gets in user's face when it's
6494      not wanted.  */
6495   if (!*default_collect)
6496     return;
6497
6498   /* The following phrase lines up nicely with per-tracepoint collect
6499      actions.  */
6500   ui_out_text (uiout, "default collect ");
6501   ui_out_field_string (uiout, "default-collect", default_collect);
6502   ui_out_text (uiout, " \n");
6503 }
6504   
6505 static void
6506 breakpoints_info (char *args, int from_tty)
6507 {
6508   breakpoint_1 (args, 0, NULL);
6509
6510   default_collect_info ();
6511 }
6512
6513 static void
6514 watchpoints_info (char *args, int from_tty)
6515 {
6516   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6517   struct ui_out *uiout = current_uiout;
6518
6519   if (num_printed == 0)
6520     {
6521       if (args == NULL || *args == '\0')
6522         ui_out_message (uiout, 0, "No watchpoints.\n");
6523       else
6524         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6525     }
6526 }
6527
6528 static void
6529 maintenance_info_breakpoints (char *args, int from_tty)
6530 {
6531   breakpoint_1 (args, 1, NULL);
6532
6533   default_collect_info ();
6534 }
6535
6536 static int
6537 breakpoint_has_pc (struct breakpoint *b,
6538                    struct program_space *pspace,
6539                    CORE_ADDR pc, struct obj_section *section)
6540 {
6541   struct bp_location *bl = b->loc;
6542
6543   for (; bl; bl = bl->next)
6544     {
6545       if (bl->pspace == pspace
6546           && bl->address == pc
6547           && (!overlay_debugging || bl->section == section))
6548         return 1;         
6549     }
6550   return 0;
6551 }
6552
6553 /* Print a message describing any user-breakpoints set at PC.  This
6554    concerns with logical breakpoints, so we match program spaces, not
6555    address spaces.  */
6556
6557 static void
6558 describe_other_breakpoints (struct gdbarch *gdbarch,
6559                             struct program_space *pspace, CORE_ADDR pc,
6560                             struct obj_section *section, int thread)
6561 {
6562   int others = 0;
6563   struct breakpoint *b;
6564
6565   ALL_BREAKPOINTS (b)
6566     others += (user_breakpoint_p (b)
6567                && breakpoint_has_pc (b, pspace, pc, section));
6568   if (others > 0)
6569     {
6570       if (others == 1)
6571         printf_filtered (_("Note: breakpoint "));
6572       else /* if (others == ???) */
6573         printf_filtered (_("Note: breakpoints "));
6574       ALL_BREAKPOINTS (b)
6575         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6576           {
6577             others--;
6578             printf_filtered ("%d", b->number);
6579             if (b->thread == -1 && thread != -1)
6580               printf_filtered (" (all threads)");
6581             else if (b->thread != -1)
6582               printf_filtered (" (thread %d)", b->thread);
6583             printf_filtered ("%s%s ",
6584                              ((b->enable_state == bp_disabled
6585                                || b->enable_state == bp_call_disabled)
6586                               ? " (disabled)"
6587                               : b->enable_state == bp_permanent 
6588                               ? " (permanent)"
6589                               : ""),
6590                              (others > 1) ? "," 
6591                              : ((others == 1) ? " and" : ""));
6592           }
6593       printf_filtered (_("also set at pc "));
6594       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6595       printf_filtered (".\n");
6596     }
6597 }
6598 \f
6599
6600 /* Return true iff it is meaningful to use the address member of
6601    BPT.  For some breakpoint types, the address member is irrelevant
6602    and it makes no sense to attempt to compare it to other addresses
6603    (or use it for any other purpose either).
6604
6605    More specifically, each of the following breakpoint types will
6606    always have a zero valued address and we don't want to mark
6607    breakpoints of any of these types to be a duplicate of an actual
6608    breakpoint at address zero:
6609
6610       bp_watchpoint
6611       bp_catchpoint
6612
6613 */
6614
6615 static int
6616 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6617 {
6618   enum bptype type = bpt->type;
6619
6620   return (type != bp_watchpoint && type != bp_catchpoint);
6621 }
6622
6623 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6624    true if LOC1 and LOC2 represent the same watchpoint location.  */
6625
6626 static int
6627 watchpoint_locations_match (struct bp_location *loc1, 
6628                             struct bp_location *loc2)
6629 {
6630   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6631   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6632
6633   /* Both of them must exist.  */
6634   gdb_assert (w1 != NULL);
6635   gdb_assert (w2 != NULL);
6636
6637   /* If the target can evaluate the condition expression in hardware,
6638      then we we need to insert both watchpoints even if they are at
6639      the same place.  Otherwise the watchpoint will only trigger when
6640      the condition of whichever watchpoint was inserted evaluates to
6641      true, not giving a chance for GDB to check the condition of the
6642      other watchpoint.  */
6643   if ((w1->cond_exp
6644        && target_can_accel_watchpoint_condition (loc1->address, 
6645                                                  loc1->length,
6646                                                  loc1->watchpoint_type,
6647                                                  w1->cond_exp))
6648       || (w2->cond_exp
6649           && target_can_accel_watchpoint_condition (loc2->address, 
6650                                                     loc2->length,
6651                                                     loc2->watchpoint_type,
6652                                                     w2->cond_exp)))
6653     return 0;
6654
6655   /* Note that this checks the owner's type, not the location's.  In
6656      case the target does not support read watchpoints, but does
6657      support access watchpoints, we'll have bp_read_watchpoint
6658      watchpoints with hw_access locations.  Those should be considered
6659      duplicates of hw_read locations.  The hw_read locations will
6660      become hw_access locations later.  */
6661   return (loc1->owner->type == loc2->owner->type
6662           && loc1->pspace->aspace == loc2->pspace->aspace
6663           && loc1->address == loc2->address
6664           && loc1->length == loc2->length);
6665 }
6666
6667 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6668    same breakpoint location.  In most targets, this can only be true
6669    if ASPACE1 matches ASPACE2.  On targets that have global
6670    breakpoints, the address space doesn't really matter.  */
6671
6672 static int
6673 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6674                           struct address_space *aspace2, CORE_ADDR addr2)
6675 {
6676   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6677            || aspace1 == aspace2)
6678           && addr1 == addr2);
6679 }
6680
6681 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6682    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6683    matches ASPACE2.  On targets that have global breakpoints, the address
6684    space doesn't really matter.  */
6685
6686 static int
6687 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6688                                 int len1, struct address_space *aspace2,
6689                                 CORE_ADDR addr2)
6690 {
6691   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6692            || aspace1 == aspace2)
6693           && addr2 >= addr1 && addr2 < addr1 + len1);
6694 }
6695
6696 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6697    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6698    matches the breakpoint's address space.  On targets that have global
6699    breakpoints, the address space doesn't really matter.  */
6700
6701 static int
6702 breakpoint_location_address_match (struct bp_location *bl,
6703                                    struct address_space *aspace,
6704                                    CORE_ADDR addr)
6705 {
6706   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6707                                     aspace, addr)
6708           || (bl->length
6709               && breakpoint_address_match_range (bl->pspace->aspace,
6710                                                  bl->address, bl->length,
6711                                                  aspace, addr)));
6712 }
6713
6714 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6715    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6716    true, otherwise returns false.  */
6717
6718 static int
6719 tracepoint_locations_match (struct bp_location *loc1,
6720                             struct bp_location *loc2)
6721 {
6722   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6723     /* Since tracepoint locations are never duplicated with others', tracepoint
6724        locations at the same address of different tracepoints are regarded as
6725        different locations.  */
6726     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6727   else
6728     return 0;
6729 }
6730
6731 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6732    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6733    represent the same location.  */
6734
6735 static int
6736 breakpoint_locations_match (struct bp_location *loc1, 
6737                             struct bp_location *loc2)
6738 {
6739   int hw_point1, hw_point2;
6740
6741   /* Both of them must not be in moribund_locations.  */
6742   gdb_assert (loc1->owner != NULL);
6743   gdb_assert (loc2->owner != NULL);
6744
6745   hw_point1 = is_hardware_watchpoint (loc1->owner);
6746   hw_point2 = is_hardware_watchpoint (loc2->owner);
6747
6748   if (hw_point1 != hw_point2)
6749     return 0;
6750   else if (hw_point1)
6751     return watchpoint_locations_match (loc1, loc2);
6752   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6753     return tracepoint_locations_match (loc1, loc2);
6754   else
6755     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6756     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6757                                      loc2->pspace->aspace, loc2->address)
6758             && loc1->length == loc2->length);
6759 }
6760
6761 static void
6762 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6763                                int bnum, int have_bnum)
6764 {
6765   /* The longest string possibly returned by hex_string_custom
6766      is 50 chars.  These must be at least that big for safety.  */
6767   char astr1[64];
6768   char astr2[64];
6769
6770   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6771   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6772   if (have_bnum)
6773     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6774              bnum, astr1, astr2);
6775   else
6776     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6777 }
6778
6779 /* Adjust a breakpoint's address to account for architectural
6780    constraints on breakpoint placement.  Return the adjusted address.
6781    Note: Very few targets require this kind of adjustment.  For most
6782    targets, this function is simply the identity function.  */
6783
6784 static CORE_ADDR
6785 adjust_breakpoint_address (struct gdbarch *gdbarch,
6786                            CORE_ADDR bpaddr, enum bptype bptype)
6787 {
6788   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6789     {
6790       /* Very few targets need any kind of breakpoint adjustment.  */
6791       return bpaddr;
6792     }
6793   else if (bptype == bp_watchpoint
6794            || bptype == bp_hardware_watchpoint
6795            || bptype == bp_read_watchpoint
6796            || bptype == bp_access_watchpoint
6797            || bptype == bp_catchpoint)
6798     {
6799       /* Watchpoints and the various bp_catch_* eventpoints should not
6800          have their addresses modified.  */
6801       return bpaddr;
6802     }
6803   else
6804     {
6805       CORE_ADDR adjusted_bpaddr;
6806
6807       /* Some targets have architectural constraints on the placement
6808          of breakpoint instructions.  Obtain the adjusted address.  */
6809       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6810
6811       /* An adjusted breakpoint address can significantly alter
6812          a user's expectations.  Print a warning if an adjustment
6813          is required.  */
6814       if (adjusted_bpaddr != bpaddr)
6815         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6816
6817       return adjusted_bpaddr;
6818     }
6819 }
6820
6821 void
6822 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6823                   struct breakpoint *owner)
6824 {
6825   memset (loc, 0, sizeof (*loc));
6826
6827   gdb_assert (ops != NULL);
6828
6829   loc->ops = ops;
6830   loc->owner = owner;
6831   loc->cond = NULL;
6832   loc->cond_bytecode = NULL;
6833   loc->shlib_disabled = 0;
6834   loc->enabled = 1;
6835
6836   switch (owner->type)
6837     {
6838     case bp_breakpoint:
6839     case bp_until:
6840     case bp_finish:
6841     case bp_longjmp:
6842     case bp_longjmp_resume:
6843     case bp_longjmp_call_dummy:
6844     case bp_exception:
6845     case bp_exception_resume:
6846     case bp_step_resume:
6847     case bp_hp_step_resume:
6848     case bp_watchpoint_scope:
6849     case bp_call_dummy:
6850     case bp_std_terminate:
6851     case bp_shlib_event:
6852     case bp_thread_event:
6853     case bp_overlay_event:
6854     case bp_jit_event:
6855     case bp_longjmp_master:
6856     case bp_std_terminate_master:
6857     case bp_exception_master:
6858     case bp_gnu_ifunc_resolver:
6859     case bp_gnu_ifunc_resolver_return:
6860     case bp_dprintf:
6861       loc->loc_type = bp_loc_software_breakpoint;
6862       mark_breakpoint_location_modified (loc);
6863       break;
6864     case bp_hardware_breakpoint:
6865       loc->loc_type = bp_loc_hardware_breakpoint;
6866       mark_breakpoint_location_modified (loc);
6867       break;
6868     case bp_hardware_watchpoint:
6869     case bp_read_watchpoint:
6870     case bp_access_watchpoint:
6871       loc->loc_type = bp_loc_hardware_watchpoint;
6872       break;
6873     case bp_watchpoint:
6874     case bp_catchpoint:
6875     case bp_tracepoint:
6876     case bp_fast_tracepoint:
6877     case bp_static_tracepoint:
6878       loc->loc_type = bp_loc_other;
6879       break;
6880     default:
6881       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6882     }
6883
6884   loc->refc = 1;
6885 }
6886
6887 /* Allocate a struct bp_location.  */
6888
6889 static struct bp_location *
6890 allocate_bp_location (struct breakpoint *bpt)
6891 {
6892   return bpt->ops->allocate_location (bpt);
6893 }
6894
6895 static void
6896 free_bp_location (struct bp_location *loc)
6897 {
6898   loc->ops->dtor (loc);
6899   xfree (loc);
6900 }
6901
6902 /* Increment reference count.  */
6903
6904 static void
6905 incref_bp_location (struct bp_location *bl)
6906 {
6907   ++bl->refc;
6908 }
6909
6910 /* Decrement reference count.  If the reference count reaches 0,
6911    destroy the bp_location.  Sets *BLP to NULL.  */
6912
6913 static void
6914 decref_bp_location (struct bp_location **blp)
6915 {
6916   gdb_assert ((*blp)->refc > 0);
6917
6918   if (--(*blp)->refc == 0)
6919     free_bp_location (*blp);
6920   *blp = NULL;
6921 }
6922
6923 /* Add breakpoint B at the end of the global breakpoint chain.  */
6924
6925 static void
6926 add_to_breakpoint_chain (struct breakpoint *b)
6927 {
6928   struct breakpoint *b1;
6929
6930   /* Add this breakpoint to the end of the chain so that a list of
6931      breakpoints will come out in order of increasing numbers.  */
6932
6933   b1 = breakpoint_chain;
6934   if (b1 == 0)
6935     breakpoint_chain = b;
6936   else
6937     {
6938       while (b1->next)
6939         b1 = b1->next;
6940       b1->next = b;
6941     }
6942 }
6943
6944 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6945
6946 static void
6947 init_raw_breakpoint_without_location (struct breakpoint *b,
6948                                       struct gdbarch *gdbarch,
6949                                       enum bptype bptype,
6950                                       const struct breakpoint_ops *ops)
6951 {
6952   memset (b, 0, sizeof (*b));
6953
6954   gdb_assert (ops != NULL);
6955
6956   b->ops = ops;
6957   b->type = bptype;
6958   b->gdbarch = gdbarch;
6959   b->language = current_language->la_language;
6960   b->input_radix = input_radix;
6961   b->thread = -1;
6962   b->enable_state = bp_enabled;
6963   b->next = 0;
6964   b->silent = 0;
6965   b->ignore_count = 0;
6966   b->commands = NULL;
6967   b->frame_id = null_frame_id;
6968   b->condition_not_parsed = 0;
6969   b->py_bp_object = NULL;
6970   b->related_breakpoint = b;
6971 }
6972
6973 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6974    that has type BPTYPE and has no locations as yet.  */
6975
6976 static struct breakpoint *
6977 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6978                                      enum bptype bptype,
6979                                      const struct breakpoint_ops *ops)
6980 {
6981   struct breakpoint *b = XNEW (struct breakpoint);
6982
6983   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6984   add_to_breakpoint_chain (b);
6985   return b;
6986 }
6987
6988 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6989    resolutions should be made as the user specified the location explicitly
6990    enough.  */
6991
6992 static void
6993 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6994 {
6995   gdb_assert (loc->owner != NULL);
6996
6997   if (loc->owner->type == bp_breakpoint
6998       || loc->owner->type == bp_hardware_breakpoint
6999       || is_tracepoint (loc->owner))
7000     {
7001       int is_gnu_ifunc;
7002       const char *function_name;
7003       CORE_ADDR func_addr;
7004
7005       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7006                                           &func_addr, NULL, &is_gnu_ifunc);
7007
7008       if (is_gnu_ifunc && !explicit_loc)
7009         {
7010           struct breakpoint *b = loc->owner;
7011
7012           gdb_assert (loc->pspace == current_program_space);
7013           if (gnu_ifunc_resolve_name (function_name,
7014                                       &loc->requested_address))
7015             {
7016               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7017               loc->address = adjust_breakpoint_address (loc->gdbarch,
7018                                                         loc->requested_address,
7019                                                         b->type);
7020             }
7021           else if (b->type == bp_breakpoint && b->loc == loc
7022                    && loc->next == NULL && b->related_breakpoint == b)
7023             {
7024               /* Create only the whole new breakpoint of this type but do not
7025                  mess more complicated breakpoints with multiple locations.  */
7026               b->type = bp_gnu_ifunc_resolver;
7027               /* Remember the resolver's address for use by the return
7028                  breakpoint.  */
7029               loc->related_address = func_addr;
7030             }
7031         }
7032
7033       if (function_name)
7034         loc->function_name = xstrdup (function_name);
7035     }
7036 }
7037
7038 /* Attempt to determine architecture of location identified by SAL.  */
7039 struct gdbarch *
7040 get_sal_arch (struct symtab_and_line sal)
7041 {
7042   if (sal.section)
7043     return get_objfile_arch (sal.section->objfile);
7044   if (sal.symtab)
7045     return get_objfile_arch (sal.symtab->objfile);
7046
7047   return NULL;
7048 }
7049
7050 /* Low level routine for partially initializing a breakpoint of type
7051    BPTYPE.  The newly created breakpoint's address, section, source
7052    file name, and line number are provided by SAL.
7053
7054    It is expected that the caller will complete the initialization of
7055    the newly created breakpoint struct as well as output any status
7056    information regarding the creation of a new breakpoint.  */
7057
7058 static void
7059 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7060                      struct symtab_and_line sal, enum bptype bptype,
7061                      const struct breakpoint_ops *ops)
7062 {
7063   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7064
7065   add_location_to_breakpoint (b, &sal);
7066
7067   if (bptype != bp_catchpoint)
7068     gdb_assert (sal.pspace != NULL);
7069
7070   /* Store the program space that was used to set the breakpoint,
7071      except for ordinary breakpoints, which are independent of the
7072      program space.  */
7073   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7074     b->pspace = sal.pspace;
7075 }
7076
7077 /* set_raw_breakpoint is a low level routine for allocating and
7078    partially initializing a breakpoint of type BPTYPE.  The newly
7079    created breakpoint's address, section, source file name, and line
7080    number are provided by SAL.  The newly created and partially
7081    initialized breakpoint is added to the breakpoint chain and
7082    is also returned as the value of this function.
7083
7084    It is expected that the caller will complete the initialization of
7085    the newly created breakpoint struct as well as output any status
7086    information regarding the creation of a new breakpoint.  In
7087    particular, set_raw_breakpoint does NOT set the breakpoint
7088    number!  Care should be taken to not allow an error to occur
7089    prior to completing the initialization of the breakpoint.  If this
7090    should happen, a bogus breakpoint will be left on the chain.  */
7091
7092 struct breakpoint *
7093 set_raw_breakpoint (struct gdbarch *gdbarch,
7094                     struct symtab_and_line sal, enum bptype bptype,
7095                     const struct breakpoint_ops *ops)
7096 {
7097   struct breakpoint *b = XNEW (struct breakpoint);
7098
7099   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7100   add_to_breakpoint_chain (b);
7101   return b;
7102 }
7103
7104
7105 /* Note that the breakpoint object B describes a permanent breakpoint
7106    instruction, hard-wired into the inferior's code.  */
7107 void
7108 make_breakpoint_permanent (struct breakpoint *b)
7109 {
7110   struct bp_location *bl;
7111
7112   b->enable_state = bp_permanent;
7113
7114   /* By definition, permanent breakpoints are already present in the
7115      code.  Mark all locations as inserted.  For now,
7116      make_breakpoint_permanent is called in just one place, so it's
7117      hard to say if it's reasonable to have permanent breakpoint with
7118      multiple locations or not, but it's easy to implement.  */
7119   for (bl = b->loc; bl; bl = bl->next)
7120     bl->inserted = 1;
7121 }
7122
7123 /* Call this routine when stepping and nexting to enable a breakpoint
7124    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7125    initiated the operation.  */
7126
7127 void
7128 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7129 {
7130   struct breakpoint *b, *b_tmp;
7131   int thread = tp->num;
7132
7133   /* To avoid having to rescan all objfile symbols at every step,
7134      we maintain a list of continually-inserted but always disabled
7135      longjmp "master" breakpoints.  Here, we simply create momentary
7136      clones of those and enable them for the requested thread.  */
7137   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7138     if (b->pspace == current_program_space
7139         && (b->type == bp_longjmp_master
7140             || b->type == bp_exception_master))
7141       {
7142         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7143         struct breakpoint *clone;
7144
7145         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7146            after their removal.  */
7147         clone = momentary_breakpoint_from_master (b, type,
7148                                                   &longjmp_breakpoint_ops);
7149         clone->thread = thread;
7150       }
7151
7152   tp->initiating_frame = frame;
7153 }
7154
7155 /* Delete all longjmp breakpoints from THREAD.  */
7156 void
7157 delete_longjmp_breakpoint (int thread)
7158 {
7159   struct breakpoint *b, *b_tmp;
7160
7161   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7162     if (b->type == bp_longjmp || b->type == bp_exception)
7163       {
7164         if (b->thread == thread)
7165           delete_breakpoint (b);
7166       }
7167 }
7168
7169 void
7170 delete_longjmp_breakpoint_at_next_stop (int thread)
7171 {
7172   struct breakpoint *b, *b_tmp;
7173
7174   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7175     if (b->type == bp_longjmp || b->type == bp_exception)
7176       {
7177         if (b->thread == thread)
7178           b->disposition = disp_del_at_next_stop;
7179       }
7180 }
7181
7182 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7183    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7184    pointer to any of them.  Return NULL if this system cannot place longjmp
7185    breakpoints.  */
7186
7187 struct breakpoint *
7188 set_longjmp_breakpoint_for_call_dummy (void)
7189 {
7190   struct breakpoint *b, *retval = NULL;
7191
7192   ALL_BREAKPOINTS (b)
7193     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7194       {
7195         struct breakpoint *new_b;
7196
7197         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7198                                                   &momentary_breakpoint_ops);
7199         new_b->thread = pid_to_thread_id (inferior_ptid);
7200
7201         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7202
7203         gdb_assert (new_b->related_breakpoint == new_b);
7204         if (retval == NULL)
7205           retval = new_b;
7206         new_b->related_breakpoint = retval;
7207         while (retval->related_breakpoint != new_b->related_breakpoint)
7208           retval = retval->related_breakpoint;
7209         retval->related_breakpoint = new_b;
7210       }
7211
7212   return retval;
7213 }
7214
7215 /* Verify all existing dummy frames and their associated breakpoints for
7216    THREAD.  Remove those which can no longer be found in the current frame
7217    stack.
7218
7219    You should call this function only at places where it is safe to currently
7220    unwind the whole stack.  Failed stack unwind would discard live dummy
7221    frames.  */
7222
7223 void
7224 check_longjmp_breakpoint_for_call_dummy (int thread)
7225 {
7226   struct breakpoint *b, *b_tmp;
7227
7228   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7229     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7230       {
7231         struct breakpoint *dummy_b = b->related_breakpoint;
7232
7233         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7234           dummy_b = dummy_b->related_breakpoint;
7235         if (dummy_b->type != bp_call_dummy
7236             || frame_find_by_id (dummy_b->frame_id) != NULL)
7237           continue;
7238         
7239         dummy_frame_discard (dummy_b->frame_id);
7240
7241         while (b->related_breakpoint != b)
7242           {
7243             if (b_tmp == b->related_breakpoint)
7244               b_tmp = b->related_breakpoint->next;
7245             delete_breakpoint (b->related_breakpoint);
7246           }
7247         delete_breakpoint (b);
7248       }
7249 }
7250
7251 void
7252 enable_overlay_breakpoints (void)
7253 {
7254   struct breakpoint *b;
7255
7256   ALL_BREAKPOINTS (b)
7257     if (b->type == bp_overlay_event)
7258     {
7259       b->enable_state = bp_enabled;
7260       update_global_location_list (1);
7261       overlay_events_enabled = 1;
7262     }
7263 }
7264
7265 void
7266 disable_overlay_breakpoints (void)
7267 {
7268   struct breakpoint *b;
7269
7270   ALL_BREAKPOINTS (b)
7271     if (b->type == bp_overlay_event)
7272     {
7273       b->enable_state = bp_disabled;
7274       update_global_location_list (0);
7275       overlay_events_enabled = 0;
7276     }
7277 }
7278
7279 /* Set an active std::terminate breakpoint for each std::terminate
7280    master breakpoint.  */
7281 void
7282 set_std_terminate_breakpoint (void)
7283 {
7284   struct breakpoint *b, *b_tmp;
7285
7286   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7287     if (b->pspace == current_program_space
7288         && b->type == bp_std_terminate_master)
7289       {
7290         momentary_breakpoint_from_master (b, bp_std_terminate,
7291                                           &momentary_breakpoint_ops);
7292       }
7293 }
7294
7295 /* Delete all the std::terminate breakpoints.  */
7296 void
7297 delete_std_terminate_breakpoint (void)
7298 {
7299   struct breakpoint *b, *b_tmp;
7300
7301   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7302     if (b->type == bp_std_terminate)
7303       delete_breakpoint (b);
7304 }
7305
7306 struct breakpoint *
7307 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7308 {
7309   struct breakpoint *b;
7310
7311   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7312                                   &internal_breakpoint_ops);
7313
7314   b->enable_state = bp_enabled;
7315   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7316   b->addr_string
7317     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7318
7319   update_global_location_list_nothrow (1);
7320
7321   return b;
7322 }
7323
7324 void
7325 remove_thread_event_breakpoints (void)
7326 {
7327   struct breakpoint *b, *b_tmp;
7328
7329   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7330     if (b->type == bp_thread_event
7331         && b->loc->pspace == current_program_space)
7332       delete_breakpoint (b);
7333 }
7334
7335 struct lang_and_radix
7336   {
7337     enum language lang;
7338     int radix;
7339   };
7340
7341 /* Create a breakpoint for JIT code registration and unregistration.  */
7342
7343 struct breakpoint *
7344 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7345 {
7346   struct breakpoint *b;
7347
7348   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7349                                   &internal_breakpoint_ops);
7350   update_global_location_list_nothrow (1);
7351   return b;
7352 }
7353
7354 /* Remove JIT code registration and unregistration breakpoint(s).  */
7355
7356 void
7357 remove_jit_event_breakpoints (void)
7358 {
7359   struct breakpoint *b, *b_tmp;
7360
7361   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7362     if (b->type == bp_jit_event
7363         && b->loc->pspace == current_program_space)
7364       delete_breakpoint (b);
7365 }
7366
7367 void
7368 remove_solib_event_breakpoints (void)
7369 {
7370   struct breakpoint *b, *b_tmp;
7371
7372   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7373     if (b->type == bp_shlib_event
7374         && b->loc->pspace == current_program_space)
7375       delete_breakpoint (b);
7376 }
7377
7378 struct breakpoint *
7379 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7380 {
7381   struct breakpoint *b;
7382
7383   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7384                                   &internal_breakpoint_ops);
7385   update_global_location_list_nothrow (1);
7386   return b;
7387 }
7388
7389 /* Disable any breakpoints that are on code in shared libraries.  Only
7390    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7391
7392 void
7393 disable_breakpoints_in_shlibs (void)
7394 {
7395   struct bp_location *loc, **locp_tmp;
7396
7397   ALL_BP_LOCATIONS (loc, locp_tmp)
7398   {
7399     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7400     struct breakpoint *b = loc->owner;
7401
7402     /* We apply the check to all breakpoints, including disabled for
7403        those with loc->duplicate set.  This is so that when breakpoint
7404        becomes enabled, or the duplicate is removed, gdb will try to
7405        insert all breakpoints.  If we don't set shlib_disabled here,
7406        we'll try to insert those breakpoints and fail.  */
7407     if (((b->type == bp_breakpoint)
7408          || (b->type == bp_jit_event)
7409          || (b->type == bp_hardware_breakpoint)
7410          || (is_tracepoint (b)))
7411         && loc->pspace == current_program_space
7412         && !loc->shlib_disabled
7413         && solib_name_from_address (loc->pspace, loc->address)
7414         )
7415       {
7416         loc->shlib_disabled = 1;
7417       }
7418   }
7419 }
7420
7421 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7422    library.  Only apply to enabled breakpoints, disabled ones can just stay
7423    disabled.  */
7424
7425 static void
7426 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7427 {
7428   struct bp_location *loc, **locp_tmp;
7429   int disabled_shlib_breaks = 0;
7430
7431   /* SunOS a.out shared libraries are always mapped, so do not
7432      disable breakpoints; they will only be reported as unloaded
7433      through clear_solib when GDB discards its shared library
7434      list.  See clear_solib for more information.  */
7435   if (exec_bfd != NULL
7436       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7437     return;
7438
7439   ALL_BP_LOCATIONS (loc, locp_tmp)
7440   {
7441     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7442     struct breakpoint *b = loc->owner;
7443
7444     if (solib->pspace == loc->pspace
7445         && !loc->shlib_disabled
7446         && (((b->type == bp_breakpoint
7447               || b->type == bp_jit_event
7448               || b->type == bp_hardware_breakpoint)
7449              && (loc->loc_type == bp_loc_hardware_breakpoint
7450                  || loc->loc_type == bp_loc_software_breakpoint))
7451             || is_tracepoint (b))
7452         && solib_contains_address_p (solib, loc->address))
7453       {
7454         loc->shlib_disabled = 1;
7455         /* At this point, we cannot rely on remove_breakpoint
7456            succeeding so we must mark the breakpoint as not inserted
7457            to prevent future errors occurring in remove_breakpoints.  */
7458         loc->inserted = 0;
7459
7460         /* This may cause duplicate notifications for the same breakpoint.  */
7461         observer_notify_breakpoint_modified (b);
7462
7463         if (!disabled_shlib_breaks)
7464           {
7465             target_terminal_ours_for_output ();
7466             warning (_("Temporarily disabling breakpoints "
7467                        "for unloaded shared library \"%s\""),
7468                      solib->so_name);
7469           }
7470         disabled_shlib_breaks = 1;
7471       }
7472   }
7473 }
7474
7475 /* FORK & VFORK catchpoints.  */
7476
7477 /* An instance of this type is used to represent a fork or vfork
7478    catchpoint.  It includes a "struct breakpoint" as a kind of base
7479    class; users downcast to "struct breakpoint *" when needed.  A
7480    breakpoint is really of this type iff its ops pointer points to
7481    CATCH_FORK_BREAKPOINT_OPS.  */
7482
7483 struct fork_catchpoint
7484 {
7485   /* The base class.  */
7486   struct breakpoint base;
7487
7488   /* Process id of a child process whose forking triggered this
7489      catchpoint.  This field is only valid immediately after this
7490      catchpoint has triggered.  */
7491   ptid_t forked_inferior_pid;
7492 };
7493
7494 /* Implement the "insert" breakpoint_ops method for fork
7495    catchpoints.  */
7496
7497 static int
7498 insert_catch_fork (struct bp_location *bl)
7499 {
7500   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7501 }
7502
7503 /* Implement the "remove" breakpoint_ops method for fork
7504    catchpoints.  */
7505
7506 static int
7507 remove_catch_fork (struct bp_location *bl)
7508 {
7509   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7510 }
7511
7512 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7513    catchpoints.  */
7514
7515 static int
7516 breakpoint_hit_catch_fork (const struct bp_location *bl,
7517                            struct address_space *aspace, CORE_ADDR bp_addr,
7518                            const struct target_waitstatus *ws)
7519 {
7520   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7521
7522   if (ws->kind != TARGET_WAITKIND_FORKED)
7523     return 0;
7524
7525   c->forked_inferior_pid = ws->value.related_pid;
7526   return 1;
7527 }
7528
7529 /* Implement the "print_it" breakpoint_ops method for fork
7530    catchpoints.  */
7531
7532 static enum print_stop_action
7533 print_it_catch_fork (bpstat bs)
7534 {
7535   struct ui_out *uiout = current_uiout;
7536   struct breakpoint *b = bs->breakpoint_at;
7537   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7538
7539   annotate_catchpoint (b->number);
7540   if (b->disposition == disp_del)
7541     ui_out_text (uiout, "\nTemporary catchpoint ");
7542   else
7543     ui_out_text (uiout, "\nCatchpoint ");
7544   if (ui_out_is_mi_like_p (uiout))
7545     {
7546       ui_out_field_string (uiout, "reason",
7547                            async_reason_lookup (EXEC_ASYNC_FORK));
7548       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7549     }
7550   ui_out_field_int (uiout, "bkptno", b->number);
7551   ui_out_text (uiout, " (forked process ");
7552   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7553   ui_out_text (uiout, "), ");
7554   return PRINT_SRC_AND_LOC;
7555 }
7556
7557 /* Implement the "print_one" breakpoint_ops method for fork
7558    catchpoints.  */
7559
7560 static void
7561 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7562 {
7563   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7564   struct value_print_options opts;
7565   struct ui_out *uiout = current_uiout;
7566
7567   get_user_print_options (&opts);
7568
7569   /* Field 4, the address, is omitted (which makes the columns not
7570      line up too nicely with the headers, but the effect is relatively
7571      readable).  */
7572   if (opts.addressprint)
7573     ui_out_field_skip (uiout, "addr");
7574   annotate_field (5);
7575   ui_out_text (uiout, "fork");
7576   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7577     {
7578       ui_out_text (uiout, ", process ");
7579       ui_out_field_int (uiout, "what",
7580                         ptid_get_pid (c->forked_inferior_pid));
7581       ui_out_spaces (uiout, 1);
7582     }
7583
7584   if (ui_out_is_mi_like_p (uiout))
7585     ui_out_field_string (uiout, "catch-type", "fork");
7586 }
7587
7588 /* Implement the "print_mention" breakpoint_ops method for fork
7589    catchpoints.  */
7590
7591 static void
7592 print_mention_catch_fork (struct breakpoint *b)
7593 {
7594   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7595 }
7596
7597 /* Implement the "print_recreate" breakpoint_ops method for fork
7598    catchpoints.  */
7599
7600 static void
7601 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7602 {
7603   fprintf_unfiltered (fp, "catch fork");
7604   print_recreate_thread (b, fp);
7605 }
7606
7607 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7608
7609 static struct breakpoint_ops catch_fork_breakpoint_ops;
7610
7611 /* Implement the "insert" breakpoint_ops method for vfork
7612    catchpoints.  */
7613
7614 static int
7615 insert_catch_vfork (struct bp_location *bl)
7616 {
7617   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7618 }
7619
7620 /* Implement the "remove" breakpoint_ops method for vfork
7621    catchpoints.  */
7622
7623 static int
7624 remove_catch_vfork (struct bp_location *bl)
7625 {
7626   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7627 }
7628
7629 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7630    catchpoints.  */
7631
7632 static int
7633 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7634                             struct address_space *aspace, CORE_ADDR bp_addr,
7635                             const struct target_waitstatus *ws)
7636 {
7637   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7638
7639   if (ws->kind != TARGET_WAITKIND_VFORKED)
7640     return 0;
7641
7642   c->forked_inferior_pid = ws->value.related_pid;
7643   return 1;
7644 }
7645
7646 /* Implement the "print_it" breakpoint_ops method for vfork
7647    catchpoints.  */
7648
7649 static enum print_stop_action
7650 print_it_catch_vfork (bpstat bs)
7651 {
7652   struct ui_out *uiout = current_uiout;
7653   struct breakpoint *b = bs->breakpoint_at;
7654   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7655
7656   annotate_catchpoint (b->number);
7657   if (b->disposition == disp_del)
7658     ui_out_text (uiout, "\nTemporary catchpoint ");
7659   else
7660     ui_out_text (uiout, "\nCatchpoint ");
7661   if (ui_out_is_mi_like_p (uiout))
7662     {
7663       ui_out_field_string (uiout, "reason",
7664                            async_reason_lookup (EXEC_ASYNC_VFORK));
7665       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7666     }
7667   ui_out_field_int (uiout, "bkptno", b->number);
7668   ui_out_text (uiout, " (vforked process ");
7669   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7670   ui_out_text (uiout, "), ");
7671   return PRINT_SRC_AND_LOC;
7672 }
7673
7674 /* Implement the "print_one" breakpoint_ops method for vfork
7675    catchpoints.  */
7676
7677 static void
7678 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7679 {
7680   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7681   struct value_print_options opts;
7682   struct ui_out *uiout = current_uiout;
7683
7684   get_user_print_options (&opts);
7685   /* Field 4, the address, is omitted (which makes the columns not
7686      line up too nicely with the headers, but the effect is relatively
7687      readable).  */
7688   if (opts.addressprint)
7689     ui_out_field_skip (uiout, "addr");
7690   annotate_field (5);
7691   ui_out_text (uiout, "vfork");
7692   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7693     {
7694       ui_out_text (uiout, ", process ");
7695       ui_out_field_int (uiout, "what",
7696                         ptid_get_pid (c->forked_inferior_pid));
7697       ui_out_spaces (uiout, 1);
7698     }
7699
7700   if (ui_out_is_mi_like_p (uiout))
7701     ui_out_field_string (uiout, "catch-type", "vfork");
7702 }
7703
7704 /* Implement the "print_mention" breakpoint_ops method for vfork
7705    catchpoints.  */
7706
7707 static void
7708 print_mention_catch_vfork (struct breakpoint *b)
7709 {
7710   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7711 }
7712
7713 /* Implement the "print_recreate" breakpoint_ops method for vfork
7714    catchpoints.  */
7715
7716 static void
7717 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7718 {
7719   fprintf_unfiltered (fp, "catch vfork");
7720   print_recreate_thread (b, fp);
7721 }
7722
7723 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7724
7725 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7726
7727 /* An instance of this type is used to represent an solib catchpoint.
7728    It includes a "struct breakpoint" as a kind of base class; users
7729    downcast to "struct breakpoint *" when needed.  A breakpoint is
7730    really of this type iff its ops pointer points to
7731    CATCH_SOLIB_BREAKPOINT_OPS.  */
7732
7733 struct solib_catchpoint
7734 {
7735   /* The base class.  */
7736   struct breakpoint base;
7737
7738   /* True for "catch load", false for "catch unload".  */
7739   unsigned char is_load;
7740
7741   /* Regular expression to match, if any.  COMPILED is only valid when
7742      REGEX is non-NULL.  */
7743   char *regex;
7744   regex_t compiled;
7745 };
7746
7747 static void
7748 dtor_catch_solib (struct breakpoint *b)
7749 {
7750   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7751
7752   if (self->regex)
7753     regfree (&self->compiled);
7754   xfree (self->regex);
7755
7756   base_breakpoint_ops.dtor (b);
7757 }
7758
7759 static int
7760 insert_catch_solib (struct bp_location *ignore)
7761 {
7762   return 0;
7763 }
7764
7765 static int
7766 remove_catch_solib (struct bp_location *ignore)
7767 {
7768   return 0;
7769 }
7770
7771 static int
7772 breakpoint_hit_catch_solib (const struct bp_location *bl,
7773                             struct address_space *aspace,
7774                             CORE_ADDR bp_addr,
7775                             const struct target_waitstatus *ws)
7776 {
7777   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7778   struct breakpoint *other;
7779
7780   if (ws->kind == TARGET_WAITKIND_LOADED)
7781     return 1;
7782
7783   ALL_BREAKPOINTS (other)
7784   {
7785     struct bp_location *other_bl;
7786
7787     if (other == bl->owner)
7788       continue;
7789
7790     if (other->type != bp_shlib_event)
7791       continue;
7792
7793     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7794       continue;
7795
7796     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7797       {
7798         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7799           return 1;
7800       }
7801   }
7802
7803   return 0;
7804 }
7805
7806 static void
7807 check_status_catch_solib (struct bpstats *bs)
7808 {
7809   struct solib_catchpoint *self
7810     = (struct solib_catchpoint *) bs->breakpoint_at;
7811   int ix;
7812
7813   if (self->is_load)
7814     {
7815       struct so_list *iter;
7816
7817       for (ix = 0;
7818            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7819                         ix, iter);
7820            ++ix)
7821         {
7822           if (!self->regex
7823               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7824             return;
7825         }
7826     }
7827   else
7828     {
7829       char *iter;
7830
7831       for (ix = 0;
7832            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7833                         ix, iter);
7834            ++ix)
7835         {
7836           if (!self->regex
7837               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7838             return;
7839         }
7840     }
7841
7842   bs->stop = 0;
7843   bs->print_it = print_it_noop;
7844 }
7845
7846 static enum print_stop_action
7847 print_it_catch_solib (bpstat bs)
7848 {
7849   struct breakpoint *b = bs->breakpoint_at;
7850   struct ui_out *uiout = current_uiout;
7851
7852   annotate_catchpoint (b->number);
7853   if (b->disposition == disp_del)
7854     ui_out_text (uiout, "\nTemporary catchpoint ");
7855   else
7856     ui_out_text (uiout, "\nCatchpoint ");
7857   ui_out_field_int (uiout, "bkptno", b->number);
7858   ui_out_text (uiout, "\n");
7859   if (ui_out_is_mi_like_p (uiout))
7860     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7861   print_solib_event (1);
7862   return PRINT_SRC_AND_LOC;
7863 }
7864
7865 static void
7866 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7867 {
7868   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7869   struct value_print_options opts;
7870   struct ui_out *uiout = current_uiout;
7871   char *msg;
7872
7873   get_user_print_options (&opts);
7874   /* Field 4, the address, is omitted (which makes the columns not
7875      line up too nicely with the headers, but the effect is relatively
7876      readable).  */
7877   if (opts.addressprint)
7878     {
7879       annotate_field (4);
7880       ui_out_field_skip (uiout, "addr");
7881     }
7882
7883   annotate_field (5);
7884   if (self->is_load)
7885     {
7886       if (self->regex)
7887         msg = xstrprintf (_("load of library matching %s"), self->regex);
7888       else
7889         msg = xstrdup (_("load of library"));
7890     }
7891   else
7892     {
7893       if (self->regex)
7894         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7895       else
7896         msg = xstrdup (_("unload of library"));
7897     }
7898   ui_out_field_string (uiout, "what", msg);
7899   xfree (msg);
7900
7901   if (ui_out_is_mi_like_p (uiout))
7902     ui_out_field_string (uiout, "catch-type",
7903                          self->is_load ? "load" : "unload");
7904 }
7905
7906 static void
7907 print_mention_catch_solib (struct breakpoint *b)
7908 {
7909   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7910
7911   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7912                    self->is_load ? "load" : "unload");
7913 }
7914
7915 static void
7916 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7917 {
7918   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7919
7920   fprintf_unfiltered (fp, "%s %s",
7921                       b->disposition == disp_del ? "tcatch" : "catch",
7922                       self->is_load ? "load" : "unload");
7923   if (self->regex)
7924     fprintf_unfiltered (fp, " %s", self->regex);
7925   fprintf_unfiltered (fp, "\n");
7926 }
7927
7928 static struct breakpoint_ops catch_solib_breakpoint_ops;
7929
7930 /* Shared helper function (MI and CLI) for creating and installing
7931    a shared object event catchpoint.  If IS_LOAD is non-zero then
7932    the events to be caught are load events, otherwise they are
7933    unload events.  If IS_TEMP is non-zero the catchpoint is a
7934    temporary one.  If ENABLED is non-zero the catchpoint is
7935    created in an enabled state.  */
7936
7937 void
7938 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7939 {
7940   struct solib_catchpoint *c;
7941   struct gdbarch *gdbarch = get_current_arch ();
7942   struct cleanup *cleanup;
7943
7944   if (!arg)
7945     arg = "";
7946   arg = skip_spaces (arg);
7947
7948   c = XCNEW (struct solib_catchpoint);
7949   cleanup = make_cleanup (xfree, c);
7950
7951   if (*arg != '\0')
7952     {
7953       int errcode;
7954
7955       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7956       if (errcode != 0)
7957         {
7958           char *err = get_regcomp_error (errcode, &c->compiled);
7959
7960           make_cleanup (xfree, err);
7961           error (_("Invalid regexp (%s): %s"), err, arg);
7962         }
7963       c->regex = xstrdup (arg);
7964     }
7965
7966   c->is_load = is_load;
7967   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7968                    &catch_solib_breakpoint_ops);
7969
7970   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7971
7972   discard_cleanups (cleanup);
7973   install_breakpoint (0, &c->base, 1);
7974 }
7975
7976 /* A helper function that does all the work for "catch load" and
7977    "catch unload".  */
7978
7979 static void
7980 catch_load_or_unload (char *arg, int from_tty, int is_load,
7981                       struct cmd_list_element *command)
7982 {
7983   int tempflag;
7984   const int enabled = 1;
7985
7986   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7987
7988   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7989 }
7990
7991 static void
7992 catch_load_command_1 (char *arg, int from_tty,
7993                       struct cmd_list_element *command)
7994 {
7995   catch_load_or_unload (arg, from_tty, 1, command);
7996 }
7997
7998 static void
7999 catch_unload_command_1 (char *arg, int from_tty,
8000                         struct cmd_list_element *command)
8001 {
8002   catch_load_or_unload (arg, from_tty, 0, command);
8003 }
8004
8005 /* An instance of this type is used to represent a syscall catchpoint.
8006    It includes a "struct breakpoint" as a kind of base class; users
8007    downcast to "struct breakpoint *" when needed.  A breakpoint is
8008    really of this type iff its ops pointer points to
8009    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8010
8011 struct syscall_catchpoint
8012 {
8013   /* The base class.  */
8014   struct breakpoint base;
8015
8016   /* Syscall numbers used for the 'catch syscall' feature.  If no
8017      syscall has been specified for filtering, its value is NULL.
8018      Otherwise, it holds a list of all syscalls to be caught.  The
8019      list elements are allocated with xmalloc.  */
8020   VEC(int) *syscalls_to_be_caught;
8021 };
8022
8023 /* Implement the "dtor" breakpoint_ops method for syscall
8024    catchpoints.  */
8025
8026 static void
8027 dtor_catch_syscall (struct breakpoint *b)
8028 {
8029   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8030
8031   VEC_free (int, c->syscalls_to_be_caught);
8032
8033   base_breakpoint_ops.dtor (b);
8034 }
8035
8036 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8037
8038 struct catch_syscall_inferior_data
8039 {
8040   /* We keep a count of the number of times the user has requested a
8041      particular syscall to be tracked, and pass this information to the
8042      target.  This lets capable targets implement filtering directly.  */
8043
8044   /* Number of times that "any" syscall is requested.  */
8045   int any_syscall_count;
8046
8047   /* Count of each system call.  */
8048   VEC(int) *syscalls_counts;
8049
8050   /* This counts all syscall catch requests, so we can readily determine
8051      if any catching is necessary.  */
8052   int total_syscalls_count;
8053 };
8054
8055 static struct catch_syscall_inferior_data*
8056 get_catch_syscall_inferior_data (struct inferior *inf)
8057 {
8058   struct catch_syscall_inferior_data *inf_data;
8059
8060   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8061   if (inf_data == NULL)
8062     {
8063       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8064       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8065     }
8066
8067   return inf_data;
8068 }
8069
8070 static void
8071 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8072 {
8073   xfree (arg);
8074 }
8075
8076
8077 /* Implement the "insert" breakpoint_ops method for syscall
8078    catchpoints.  */
8079
8080 static int
8081 insert_catch_syscall (struct bp_location *bl)
8082 {
8083   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8084   struct inferior *inf = current_inferior ();
8085   struct catch_syscall_inferior_data *inf_data
8086     = get_catch_syscall_inferior_data (inf);
8087
8088   ++inf_data->total_syscalls_count;
8089   if (!c->syscalls_to_be_caught)
8090     ++inf_data->any_syscall_count;
8091   else
8092     {
8093       int i, iter;
8094
8095       for (i = 0;
8096            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8097            i++)
8098         {
8099           int elem;
8100
8101           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8102             {
8103               int old_size = VEC_length (int, inf_data->syscalls_counts);
8104               uintptr_t vec_addr_offset
8105                 = old_size * ((uintptr_t) sizeof (int));
8106               uintptr_t vec_addr;
8107               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8108               vec_addr = ((uintptr_t) VEC_address (int,
8109                                                   inf_data->syscalls_counts)
8110                           + vec_addr_offset);
8111               memset ((void *) vec_addr, 0,
8112                       (iter + 1 - old_size) * sizeof (int));
8113             }
8114           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8115           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8116         }
8117     }
8118
8119   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8120                                         inf_data->total_syscalls_count != 0,
8121                                         inf_data->any_syscall_count,
8122                                         VEC_length (int,
8123                                                     inf_data->syscalls_counts),
8124                                         VEC_address (int,
8125                                                      inf_data->syscalls_counts));
8126 }
8127
8128 /* Implement the "remove" breakpoint_ops method for syscall
8129    catchpoints.  */
8130
8131 static int
8132 remove_catch_syscall (struct bp_location *bl)
8133 {
8134   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8135   struct inferior *inf = current_inferior ();
8136   struct catch_syscall_inferior_data *inf_data
8137     = get_catch_syscall_inferior_data (inf);
8138
8139   --inf_data->total_syscalls_count;
8140   if (!c->syscalls_to_be_caught)
8141     --inf_data->any_syscall_count;
8142   else
8143     {
8144       int i, iter;
8145
8146       for (i = 0;
8147            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8148            i++)
8149         {
8150           int elem;
8151           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8152             /* Shouldn't happen.  */
8153             continue;
8154           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8155           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8156         }
8157     }
8158
8159   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8160                                         inf_data->total_syscalls_count != 0,
8161                                         inf_data->any_syscall_count,
8162                                         VEC_length (int,
8163                                                     inf_data->syscalls_counts),
8164                                         VEC_address (int,
8165                                                      inf_data->syscalls_counts));
8166 }
8167
8168 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8169    catchpoints.  */
8170
8171 static int
8172 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8173                               struct address_space *aspace, CORE_ADDR bp_addr,
8174                               const struct target_waitstatus *ws)
8175 {
8176   /* We must check if we are catching specific syscalls in this
8177      breakpoint.  If we are, then we must guarantee that the called
8178      syscall is the same syscall we are catching.  */
8179   int syscall_number = 0;
8180   const struct syscall_catchpoint *c
8181     = (const struct syscall_catchpoint *) bl->owner;
8182
8183   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8184       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8185     return 0;
8186
8187   syscall_number = ws->value.syscall_number;
8188
8189   /* Now, checking if the syscall is the same.  */
8190   if (c->syscalls_to_be_caught)
8191     {
8192       int i, iter;
8193
8194       for (i = 0;
8195            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8196            i++)
8197         if (syscall_number == iter)
8198           break;
8199       /* Not the same.  */
8200       if (!iter)
8201         return 0;
8202     }
8203
8204   return 1;
8205 }
8206
8207 /* Implement the "print_it" breakpoint_ops method for syscall
8208    catchpoints.  */
8209
8210 static enum print_stop_action
8211 print_it_catch_syscall (bpstat bs)
8212 {
8213   struct ui_out *uiout = current_uiout;
8214   struct breakpoint *b = bs->breakpoint_at;
8215   /* These are needed because we want to know in which state a
8216      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8217      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8218      must print "called syscall" or "returned from syscall".  */
8219   ptid_t ptid;
8220   struct target_waitstatus last;
8221   struct syscall s;
8222
8223   get_last_target_status (&ptid, &last);
8224
8225   get_syscall_by_number (last.value.syscall_number, &s);
8226
8227   annotate_catchpoint (b->number);
8228
8229   if (b->disposition == disp_del)
8230     ui_out_text (uiout, "\nTemporary catchpoint ");
8231   else
8232     ui_out_text (uiout, "\nCatchpoint ");
8233   if (ui_out_is_mi_like_p (uiout))
8234     {
8235       ui_out_field_string (uiout, "reason",
8236                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8237                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8238                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8239       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8240     }
8241   ui_out_field_int (uiout, "bkptno", b->number);
8242
8243   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8244     ui_out_text (uiout, " (call to syscall ");
8245   else
8246     ui_out_text (uiout, " (returned from syscall ");
8247
8248   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8249     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8250   if (s.name != NULL)
8251     ui_out_field_string (uiout, "syscall-name", s.name);
8252
8253   ui_out_text (uiout, "), ");
8254
8255   return PRINT_SRC_AND_LOC;
8256 }
8257
8258 /* Implement the "print_one" breakpoint_ops method for syscall
8259    catchpoints.  */
8260
8261 static void
8262 print_one_catch_syscall (struct breakpoint *b,
8263                          struct bp_location **last_loc)
8264 {
8265   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8266   struct value_print_options opts;
8267   struct ui_out *uiout = current_uiout;
8268
8269   get_user_print_options (&opts);
8270   /* Field 4, the address, is omitted (which makes the columns not
8271      line up too nicely with the headers, but the effect is relatively
8272      readable).  */
8273   if (opts.addressprint)
8274     ui_out_field_skip (uiout, "addr");
8275   annotate_field (5);
8276
8277   if (c->syscalls_to_be_caught
8278       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8279     ui_out_text (uiout, "syscalls \"");
8280   else
8281     ui_out_text (uiout, "syscall \"");
8282
8283   if (c->syscalls_to_be_caught)
8284     {
8285       int i, iter;
8286       char *text = xstrprintf ("%s", "");
8287
8288       for (i = 0;
8289            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8290            i++)
8291         {
8292           char *x = text;
8293           struct syscall s;
8294           get_syscall_by_number (iter, &s);
8295
8296           if (s.name != NULL)
8297             text = xstrprintf ("%s%s, ", text, s.name);
8298           else
8299             text = xstrprintf ("%s%d, ", text, iter);
8300
8301           /* We have to xfree the last 'text' (now stored at 'x')
8302              because xstrprintf dynamically allocates new space for it
8303              on every call.  */
8304           xfree (x);
8305         }
8306       /* Remove the last comma.  */
8307       text[strlen (text) - 2] = '\0';
8308       ui_out_field_string (uiout, "what", text);
8309     }
8310   else
8311     ui_out_field_string (uiout, "what", "<any syscall>");
8312   ui_out_text (uiout, "\" ");
8313
8314   if (ui_out_is_mi_like_p (uiout))
8315     ui_out_field_string (uiout, "catch-type", "syscall");
8316 }
8317
8318 /* Implement the "print_mention" breakpoint_ops method for syscall
8319    catchpoints.  */
8320
8321 static void
8322 print_mention_catch_syscall (struct breakpoint *b)
8323 {
8324   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8325
8326   if (c->syscalls_to_be_caught)
8327     {
8328       int i, iter;
8329
8330       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8331         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8332       else
8333         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8334
8335       for (i = 0;
8336            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8337            i++)
8338         {
8339           struct syscall s;
8340           get_syscall_by_number (iter, &s);
8341
8342           if (s.name)
8343             printf_filtered (" '%s' [%d]", s.name, s.number);
8344           else
8345             printf_filtered (" %d", s.number);
8346         }
8347       printf_filtered (")");
8348     }
8349   else
8350     printf_filtered (_("Catchpoint %d (any syscall)"),
8351                      b->number);
8352 }
8353
8354 /* Implement the "print_recreate" breakpoint_ops method for syscall
8355    catchpoints.  */
8356
8357 static void
8358 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8359 {
8360   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8361
8362   fprintf_unfiltered (fp, "catch syscall");
8363
8364   if (c->syscalls_to_be_caught)
8365     {
8366       int i, iter;
8367
8368       for (i = 0;
8369            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8370            i++)
8371         {
8372           struct syscall s;
8373
8374           get_syscall_by_number (iter, &s);
8375           if (s.name)
8376             fprintf_unfiltered (fp, " %s", s.name);
8377           else
8378             fprintf_unfiltered (fp, " %d", s.number);
8379         }
8380     }
8381   print_recreate_thread (b, fp);
8382 }
8383
8384 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8385
8386 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8387
8388 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8389
8390 static int
8391 syscall_catchpoint_p (struct breakpoint *b)
8392 {
8393   return (b->ops == &catch_syscall_breakpoint_ops);
8394 }
8395
8396 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8397    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8398    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8399    the breakpoint_ops structure associated to the catchpoint.  */
8400
8401 void
8402 init_catchpoint (struct breakpoint *b,
8403                  struct gdbarch *gdbarch, int tempflag,
8404                  char *cond_string,
8405                  const struct breakpoint_ops *ops)
8406 {
8407   struct symtab_and_line sal;
8408
8409   init_sal (&sal);
8410   sal.pspace = current_program_space;
8411
8412   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8413
8414   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8415   b->disposition = tempflag ? disp_del : disp_donttouch;
8416 }
8417
8418 void
8419 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8420 {
8421   add_to_breakpoint_chain (b);
8422   set_breakpoint_number (internal, b);
8423   if (is_tracepoint (b))
8424     set_tracepoint_count (breakpoint_count);
8425   if (!internal)
8426     mention (b);
8427   observer_notify_breakpoint_created (b);
8428
8429   if (update_gll)
8430     update_global_location_list (1);
8431 }
8432
8433 static void
8434 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8435                                     int tempflag, char *cond_string,
8436                                     const struct breakpoint_ops *ops)
8437 {
8438   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8439
8440   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8441
8442   c->forked_inferior_pid = null_ptid;
8443
8444   install_breakpoint (0, &c->base, 1);
8445 }
8446
8447 /* Exec catchpoints.  */
8448
8449 /* An instance of this type is used to represent an exec catchpoint.
8450    It includes a "struct breakpoint" as a kind of base class; users
8451    downcast to "struct breakpoint *" when needed.  A breakpoint is
8452    really of this type iff its ops pointer points to
8453    CATCH_EXEC_BREAKPOINT_OPS.  */
8454
8455 struct exec_catchpoint
8456 {
8457   /* The base class.  */
8458   struct breakpoint base;
8459
8460   /* Filename of a program whose exec triggered this catchpoint.
8461      This field is only valid immediately after this catchpoint has
8462      triggered.  */
8463   char *exec_pathname;
8464 };
8465
8466 /* Implement the "dtor" breakpoint_ops method for exec
8467    catchpoints.  */
8468
8469 static void
8470 dtor_catch_exec (struct breakpoint *b)
8471 {
8472   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8473
8474   xfree (c->exec_pathname);
8475
8476   base_breakpoint_ops.dtor (b);
8477 }
8478
8479 static int
8480 insert_catch_exec (struct bp_location *bl)
8481 {
8482   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8483 }
8484
8485 static int
8486 remove_catch_exec (struct bp_location *bl)
8487 {
8488   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8489 }
8490
8491 static int
8492 breakpoint_hit_catch_exec (const struct bp_location *bl,
8493                            struct address_space *aspace, CORE_ADDR bp_addr,
8494                            const struct target_waitstatus *ws)
8495 {
8496   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8497
8498   if (ws->kind != TARGET_WAITKIND_EXECD)
8499     return 0;
8500
8501   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8502   return 1;
8503 }
8504
8505 static enum print_stop_action
8506 print_it_catch_exec (bpstat bs)
8507 {
8508   struct ui_out *uiout = current_uiout;
8509   struct breakpoint *b = bs->breakpoint_at;
8510   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8511
8512   annotate_catchpoint (b->number);
8513   if (b->disposition == disp_del)
8514     ui_out_text (uiout, "\nTemporary catchpoint ");
8515   else
8516     ui_out_text (uiout, "\nCatchpoint ");
8517   if (ui_out_is_mi_like_p (uiout))
8518     {
8519       ui_out_field_string (uiout, "reason",
8520                            async_reason_lookup (EXEC_ASYNC_EXEC));
8521       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8522     }
8523   ui_out_field_int (uiout, "bkptno", b->number);
8524   ui_out_text (uiout, " (exec'd ");
8525   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8526   ui_out_text (uiout, "), ");
8527
8528   return PRINT_SRC_AND_LOC;
8529 }
8530
8531 static void
8532 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8533 {
8534   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8535   struct value_print_options opts;
8536   struct ui_out *uiout = current_uiout;
8537
8538   get_user_print_options (&opts);
8539
8540   /* Field 4, the address, is omitted (which makes the columns
8541      not line up too nicely with the headers, but the effect
8542      is relatively readable).  */
8543   if (opts.addressprint)
8544     ui_out_field_skip (uiout, "addr");
8545   annotate_field (5);
8546   ui_out_text (uiout, "exec");
8547   if (c->exec_pathname != NULL)
8548     {
8549       ui_out_text (uiout, ", program \"");
8550       ui_out_field_string (uiout, "what", c->exec_pathname);
8551       ui_out_text (uiout, "\" ");
8552     }
8553
8554   if (ui_out_is_mi_like_p (uiout))
8555     ui_out_field_string (uiout, "catch-type", "exec");
8556 }
8557
8558 static void
8559 print_mention_catch_exec (struct breakpoint *b)
8560 {
8561   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8562 }
8563
8564 /* Implement the "print_recreate" breakpoint_ops method for exec
8565    catchpoints.  */
8566
8567 static void
8568 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8569 {
8570   fprintf_unfiltered (fp, "catch exec");
8571   print_recreate_thread (b, fp);
8572 }
8573
8574 static struct breakpoint_ops catch_exec_breakpoint_ops;
8575
8576 static void
8577 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8578                                  const struct breakpoint_ops *ops)
8579 {
8580   struct syscall_catchpoint *c;
8581   struct gdbarch *gdbarch = get_current_arch ();
8582
8583   c = XNEW (struct syscall_catchpoint);
8584   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8585   c->syscalls_to_be_caught = filter;
8586
8587   install_breakpoint (0, &c->base, 1);
8588 }
8589
8590 static int
8591 hw_breakpoint_used_count (void)
8592 {
8593   int i = 0;
8594   struct breakpoint *b;
8595   struct bp_location *bl;
8596
8597   ALL_BREAKPOINTS (b)
8598   {
8599     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8600       for (bl = b->loc; bl; bl = bl->next)
8601         {
8602           /* Special types of hardware breakpoints may use more than
8603              one register.  */
8604           i += b->ops->resources_needed (bl);
8605         }
8606   }
8607
8608   return i;
8609 }
8610
8611 /* Returns the resources B would use if it were a hardware
8612    watchpoint.  */
8613
8614 static int
8615 hw_watchpoint_use_count (struct breakpoint *b)
8616 {
8617   int i = 0;
8618   struct bp_location *bl;
8619
8620   if (!breakpoint_enabled (b))
8621     return 0;
8622
8623   for (bl = b->loc; bl; bl = bl->next)
8624     {
8625       /* Special types of hardware watchpoints may use more than
8626          one register.  */
8627       i += b->ops->resources_needed (bl);
8628     }
8629
8630   return i;
8631 }
8632
8633 /* Returns the sum the used resources of all hardware watchpoints of
8634    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8635    the sum of the used resources of all hardware watchpoints of other
8636    types _not_ TYPE.  */
8637
8638 static int
8639 hw_watchpoint_used_count_others (struct breakpoint *except,
8640                                  enum bptype type, int *other_type_used)
8641 {
8642   int i = 0;
8643   struct breakpoint *b;
8644
8645   *other_type_used = 0;
8646   ALL_BREAKPOINTS (b)
8647     {
8648       if (b == except)
8649         continue;
8650       if (!breakpoint_enabled (b))
8651         continue;
8652
8653       if (b->type == type)
8654         i += hw_watchpoint_use_count (b);
8655       else if (is_hardware_watchpoint (b))
8656         *other_type_used = 1;
8657     }
8658
8659   return i;
8660 }
8661
8662 void
8663 disable_watchpoints_before_interactive_call_start (void)
8664 {
8665   struct breakpoint *b;
8666
8667   ALL_BREAKPOINTS (b)
8668   {
8669     if (is_watchpoint (b) && breakpoint_enabled (b))
8670       {
8671         b->enable_state = bp_call_disabled;
8672         update_global_location_list (0);
8673       }
8674   }
8675 }
8676
8677 void
8678 enable_watchpoints_after_interactive_call_stop (void)
8679 {
8680   struct breakpoint *b;
8681
8682   ALL_BREAKPOINTS (b)
8683   {
8684     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8685       {
8686         b->enable_state = bp_enabled;
8687         update_global_location_list (1);
8688       }
8689   }
8690 }
8691
8692 void
8693 disable_breakpoints_before_startup (void)
8694 {
8695   current_program_space->executing_startup = 1;
8696   update_global_location_list (0);
8697 }
8698
8699 void
8700 enable_breakpoints_after_startup (void)
8701 {
8702   current_program_space->executing_startup = 0;
8703   breakpoint_re_set ();
8704 }
8705
8706
8707 /* Set a breakpoint that will evaporate an end of command
8708    at address specified by SAL.
8709    Restrict it to frame FRAME if FRAME is nonzero.  */
8710
8711 struct breakpoint *
8712 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8713                           struct frame_id frame_id, enum bptype type)
8714 {
8715   struct breakpoint *b;
8716
8717   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8718      tail-called one.  */
8719   gdb_assert (!frame_id_artificial_p (frame_id));
8720
8721   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8722   b->enable_state = bp_enabled;
8723   b->disposition = disp_donttouch;
8724   b->frame_id = frame_id;
8725
8726   /* If we're debugging a multi-threaded program, then we want
8727      momentary breakpoints to be active in only a single thread of
8728      control.  */
8729   if (in_thread_list (inferior_ptid))
8730     b->thread = pid_to_thread_id (inferior_ptid);
8731
8732   update_global_location_list_nothrow (1);
8733
8734   return b;
8735 }
8736
8737 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8738    The new breakpoint will have type TYPE, and use OPS as it
8739    breakpoint_ops.  */
8740
8741 static struct breakpoint *
8742 momentary_breakpoint_from_master (struct breakpoint *orig,
8743                                   enum bptype type,
8744                                   const struct breakpoint_ops *ops)
8745 {
8746   struct breakpoint *copy;
8747
8748   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8749   copy->loc = allocate_bp_location (copy);
8750   set_breakpoint_location_function (copy->loc, 1);
8751
8752   copy->loc->gdbarch = orig->loc->gdbarch;
8753   copy->loc->requested_address = orig->loc->requested_address;
8754   copy->loc->address = orig->loc->address;
8755   copy->loc->section = orig->loc->section;
8756   copy->loc->pspace = orig->loc->pspace;
8757   copy->loc->probe = orig->loc->probe;
8758   copy->loc->line_number = orig->loc->line_number;
8759   copy->loc->symtab = orig->loc->symtab;
8760   copy->frame_id = orig->frame_id;
8761   copy->thread = orig->thread;
8762   copy->pspace = orig->pspace;
8763
8764   copy->enable_state = bp_enabled;
8765   copy->disposition = disp_donttouch;
8766   copy->number = internal_breakpoint_number--;
8767
8768   update_global_location_list_nothrow (0);
8769   return copy;
8770 }
8771
8772 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8773    ORIG is NULL.  */
8774
8775 struct breakpoint *
8776 clone_momentary_breakpoint (struct breakpoint *orig)
8777 {
8778   /* If there's nothing to clone, then return nothing.  */
8779   if (orig == NULL)
8780     return NULL;
8781
8782   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8783 }
8784
8785 struct breakpoint *
8786 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8787                                 enum bptype type)
8788 {
8789   struct symtab_and_line sal;
8790
8791   sal = find_pc_line (pc, 0);
8792   sal.pc = pc;
8793   sal.section = find_pc_overlay (pc);
8794   sal.explicit_pc = 1;
8795
8796   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8797 }
8798 \f
8799
8800 /* Tell the user we have just set a breakpoint B.  */
8801
8802 static void
8803 mention (struct breakpoint *b)
8804 {
8805   b->ops->print_mention (b);
8806   if (ui_out_is_mi_like_p (current_uiout))
8807     return;
8808   printf_filtered ("\n");
8809 }
8810 \f
8811
8812 static struct bp_location *
8813 add_location_to_breakpoint (struct breakpoint *b,
8814                             const struct symtab_and_line *sal)
8815 {
8816   struct bp_location *loc, **tmp;
8817   CORE_ADDR adjusted_address;
8818   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8819
8820   if (loc_gdbarch == NULL)
8821     loc_gdbarch = b->gdbarch;
8822
8823   /* Adjust the breakpoint's address prior to allocating a location.
8824      Once we call allocate_bp_location(), that mostly uninitialized
8825      location will be placed on the location chain.  Adjustment of the
8826      breakpoint may cause target_read_memory() to be called and we do
8827      not want its scan of the location chain to find a breakpoint and
8828      location that's only been partially initialized.  */
8829   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8830                                                 sal->pc, b->type);
8831
8832   /* Sort the locations by their ADDRESS.  */
8833   loc = allocate_bp_location (b);
8834   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8835        tmp = &((*tmp)->next))
8836     ;
8837   loc->next = *tmp;
8838   *tmp = loc;
8839
8840   loc->requested_address = sal->pc;
8841   loc->address = adjusted_address;
8842   loc->pspace = sal->pspace;
8843   loc->probe = sal->probe;
8844   gdb_assert (loc->pspace != NULL);
8845   loc->section = sal->section;
8846   loc->gdbarch = loc_gdbarch;
8847   loc->line_number = sal->line;
8848   loc->symtab = sal->symtab;
8849
8850   set_breakpoint_location_function (loc,
8851                                     sal->explicit_pc || sal->explicit_line);
8852   return loc;
8853 }
8854 \f
8855
8856 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8857    return 0 otherwise.  */
8858
8859 static int
8860 bp_loc_is_permanent (struct bp_location *loc)
8861 {
8862   int len;
8863   CORE_ADDR addr;
8864   const gdb_byte *bpoint;
8865   gdb_byte *target_mem;
8866   struct cleanup *cleanup;
8867   int retval = 0;
8868
8869   gdb_assert (loc != NULL);
8870
8871   addr = loc->address;
8872   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8873
8874   /* Software breakpoints unsupported?  */
8875   if (bpoint == NULL)
8876     return 0;
8877
8878   target_mem = alloca (len);
8879
8880   /* Enable the automatic memory restoration from breakpoints while
8881      we read the memory.  Otherwise we could say about our temporary
8882      breakpoints they are permanent.  */
8883   cleanup = save_current_space_and_thread ();
8884
8885   switch_to_program_space_and_thread (loc->pspace);
8886   make_show_memory_breakpoints_cleanup (0);
8887
8888   if (target_read_memory (loc->address, target_mem, len) == 0
8889       && memcmp (target_mem, bpoint, len) == 0)
8890     retval = 1;
8891
8892   do_cleanups (cleanup);
8893
8894   return retval;
8895 }
8896
8897 /* Build a command list for the dprintf corresponding to the current
8898    settings of the dprintf style options.  */
8899
8900 static void
8901 update_dprintf_command_list (struct breakpoint *b)
8902 {
8903   char *dprintf_args = b->extra_string;
8904   char *printf_line = NULL;
8905
8906   if (!dprintf_args)
8907     return;
8908
8909   dprintf_args = skip_spaces (dprintf_args);
8910
8911   /* Allow a comma, as it may have terminated a location, but don't
8912      insist on it.  */
8913   if (*dprintf_args == ',')
8914     ++dprintf_args;
8915   dprintf_args = skip_spaces (dprintf_args);
8916
8917   if (*dprintf_args != '"')
8918     error (_("Bad format string, missing '\"'."));
8919
8920   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8921     printf_line = xstrprintf ("printf %s", dprintf_args);
8922   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8923     {
8924       if (!dprintf_function)
8925         error (_("No function supplied for dprintf call"));
8926
8927       if (dprintf_channel && strlen (dprintf_channel) > 0)
8928         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8929                                   dprintf_function,
8930                                   dprintf_channel,
8931                                   dprintf_args);
8932       else
8933         printf_line = xstrprintf ("call (void) %s (%s)",
8934                                   dprintf_function,
8935                                   dprintf_args);
8936     }
8937   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8938     {
8939       if (target_can_run_breakpoint_commands ())
8940         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8941       else
8942         {
8943           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8944           printf_line = xstrprintf ("printf %s", dprintf_args);
8945         }
8946     }
8947   else
8948     internal_error (__FILE__, __LINE__,
8949                     _("Invalid dprintf style."));
8950
8951   gdb_assert (printf_line != NULL);
8952   /* Manufacture a printf/continue sequence.  */
8953   {
8954     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8955
8956     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8957       {
8958         cont_cmd_line = xmalloc (sizeof (struct command_line));
8959         cont_cmd_line->control_type = simple_control;
8960         cont_cmd_line->body_count = 0;
8961         cont_cmd_line->body_list = NULL;
8962         cont_cmd_line->next = NULL;
8963         cont_cmd_line->line = xstrdup ("continue");
8964       }
8965
8966     printf_cmd_line = xmalloc (sizeof (struct command_line));
8967     printf_cmd_line->control_type = simple_control;
8968     printf_cmd_line->body_count = 0;
8969     printf_cmd_line->body_list = NULL;
8970     printf_cmd_line->next = cont_cmd_line;
8971     printf_cmd_line->line = printf_line;
8972
8973     breakpoint_set_commands (b, printf_cmd_line);
8974   }
8975 }
8976
8977 /* Update all dprintf commands, making their command lists reflect
8978    current style settings.  */
8979
8980 static void
8981 update_dprintf_commands (char *args, int from_tty,
8982                          struct cmd_list_element *c)
8983 {
8984   struct breakpoint *b;
8985
8986   ALL_BREAKPOINTS (b)
8987     {
8988       if (b->type == bp_dprintf)
8989         update_dprintf_command_list (b);
8990     }
8991 }
8992
8993 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8994    as textual description of the location, and COND_STRING
8995    as condition expression.  */
8996
8997 static void
8998 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8999                      struct symtabs_and_lines sals, char *addr_string,
9000                      char *filter, char *cond_string,
9001                      char *extra_string,
9002                      enum bptype type, enum bpdisp disposition,
9003                      int thread, int task, int ignore_count,
9004                      const struct breakpoint_ops *ops, int from_tty,
9005                      int enabled, int internal, unsigned flags,
9006                      int display_canonical)
9007 {
9008   int i;
9009
9010   if (type == bp_hardware_breakpoint)
9011     {
9012       int target_resources_ok;
9013
9014       i = hw_breakpoint_used_count ();
9015       target_resources_ok =
9016         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9017                                             i + 1, 0);
9018       if (target_resources_ok == 0)
9019         error (_("No hardware breakpoint support in the target."));
9020       else if (target_resources_ok < 0)
9021         error (_("Hardware breakpoints used exceeds limit."));
9022     }
9023
9024   gdb_assert (sals.nelts > 0);
9025
9026   for (i = 0; i < sals.nelts; ++i)
9027     {
9028       struct symtab_and_line sal = sals.sals[i];
9029       struct bp_location *loc;
9030
9031       if (from_tty)
9032         {
9033           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9034           if (!loc_gdbarch)
9035             loc_gdbarch = gdbarch;
9036
9037           describe_other_breakpoints (loc_gdbarch,
9038                                       sal.pspace, sal.pc, sal.section, thread);
9039         }
9040
9041       if (i == 0)
9042         {
9043           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9044           b->thread = thread;
9045           b->task = task;
9046
9047           b->cond_string = cond_string;
9048           b->extra_string = extra_string;
9049           b->ignore_count = ignore_count;
9050           b->enable_state = enabled ? bp_enabled : bp_disabled;
9051           b->disposition = disposition;
9052
9053           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9054             b->loc->inserted = 1;
9055
9056           if (type == bp_static_tracepoint)
9057             {
9058               struct tracepoint *t = (struct tracepoint *) b;
9059               struct static_tracepoint_marker marker;
9060
9061               if (strace_marker_p (b))
9062                 {
9063                   /* We already know the marker exists, otherwise, we
9064                      wouldn't see a sal for it.  */
9065                   char *p = &addr_string[3];
9066                   char *endp;
9067                   char *marker_str;
9068
9069                   p = skip_spaces (p);
9070
9071                   endp = skip_to_space (p);
9072
9073                   marker_str = savestring (p, endp - p);
9074                   t->static_trace_marker_id = marker_str;
9075
9076                   printf_filtered (_("Probed static tracepoint "
9077                                      "marker \"%s\"\n"),
9078                                    t->static_trace_marker_id);
9079                 }
9080               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9081                 {
9082                   t->static_trace_marker_id = xstrdup (marker.str_id);
9083                   release_static_tracepoint_marker (&marker);
9084
9085                   printf_filtered (_("Probed static tracepoint "
9086                                      "marker \"%s\"\n"),
9087                                    t->static_trace_marker_id);
9088                 }
9089               else
9090                 warning (_("Couldn't determine the static "
9091                            "tracepoint marker to probe"));
9092             }
9093
9094           loc = b->loc;
9095         }
9096       else
9097         {
9098           loc = add_location_to_breakpoint (b, &sal);
9099           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9100             loc->inserted = 1;
9101         }
9102
9103       if (bp_loc_is_permanent (loc))
9104         make_breakpoint_permanent (b);
9105
9106       if (b->cond_string)
9107         {
9108           const char *arg = b->cond_string;
9109
9110           loc->cond = parse_exp_1 (&arg, loc->address,
9111                                    block_for_pc (loc->address), 0);
9112           if (*arg)
9113               error (_("Garbage '%s' follows condition"), arg);
9114         }
9115
9116       /* Dynamic printf requires and uses additional arguments on the
9117          command line, otherwise it's an error.  */
9118       if (type == bp_dprintf)
9119         {
9120           if (b->extra_string)
9121             update_dprintf_command_list (b);
9122           else
9123             error (_("Format string required"));
9124         }
9125       else if (b->extra_string)
9126         error (_("Garbage '%s' at end of command"), b->extra_string);
9127     }
9128
9129   b->display_canonical = display_canonical;
9130   if (addr_string)
9131     b->addr_string = addr_string;
9132   else
9133     /* addr_string has to be used or breakpoint_re_set will delete
9134        me.  */
9135     b->addr_string
9136       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9137   b->filter = filter;
9138 }
9139
9140 static void
9141 create_breakpoint_sal (struct gdbarch *gdbarch,
9142                        struct symtabs_and_lines sals, char *addr_string,
9143                        char *filter, char *cond_string,
9144                        char *extra_string,
9145                        enum bptype type, enum bpdisp disposition,
9146                        int thread, int task, int ignore_count,
9147                        const struct breakpoint_ops *ops, int from_tty,
9148                        int enabled, int internal, unsigned flags,
9149                        int display_canonical)
9150 {
9151   struct breakpoint *b;
9152   struct cleanup *old_chain;
9153
9154   if (is_tracepoint_type (type))
9155     {
9156       struct tracepoint *t;
9157
9158       t = XCNEW (struct tracepoint);
9159       b = &t->base;
9160     }
9161   else
9162     b = XNEW (struct breakpoint);
9163
9164   old_chain = make_cleanup (xfree, b);
9165
9166   init_breakpoint_sal (b, gdbarch,
9167                        sals, addr_string,
9168                        filter, cond_string, extra_string,
9169                        type, disposition,
9170                        thread, task, ignore_count,
9171                        ops, from_tty,
9172                        enabled, internal, flags,
9173                        display_canonical);
9174   discard_cleanups (old_chain);
9175
9176   install_breakpoint (internal, b, 0);
9177 }
9178
9179 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9180    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9181    value.  COND_STRING, if not NULL, specified the condition to be
9182    used for all breakpoints.  Essentially the only case where
9183    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9184    function.  In that case, it's still not possible to specify
9185    separate conditions for different overloaded functions, so
9186    we take just a single condition string.
9187    
9188    NOTE: If the function succeeds, the caller is expected to cleanup
9189    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9190    array contents).  If the function fails (error() is called), the
9191    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9192    COND and SALS arrays and each of those arrays contents.  */
9193
9194 static void
9195 create_breakpoints_sal (struct gdbarch *gdbarch,
9196                         struct linespec_result *canonical,
9197                         char *cond_string, char *extra_string,
9198                         enum bptype type, enum bpdisp disposition,
9199                         int thread, int task, int ignore_count,
9200                         const struct breakpoint_ops *ops, int from_tty,
9201                         int enabled, int internal, unsigned flags)
9202 {
9203   int i;
9204   struct linespec_sals *lsal;
9205
9206   if (canonical->pre_expanded)
9207     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9208
9209   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9210     {
9211       /* Note that 'addr_string' can be NULL in the case of a plain
9212          'break', without arguments.  */
9213       char *addr_string = (canonical->addr_string
9214                            ? xstrdup (canonical->addr_string)
9215                            : NULL);
9216       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9217       struct cleanup *inner = make_cleanup (xfree, addr_string);
9218
9219       make_cleanup (xfree, filter_string);
9220       create_breakpoint_sal (gdbarch, lsal->sals,
9221                              addr_string,
9222                              filter_string,
9223                              cond_string, extra_string,
9224                              type, disposition,
9225                              thread, task, ignore_count, ops,
9226                              from_tty, enabled, internal, flags,
9227                              canonical->special_display);
9228       discard_cleanups (inner);
9229     }
9230 }
9231
9232 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9233    followed by conditionals.  On return, SALS contains an array of SAL
9234    addresses found.  ADDR_STRING contains a vector of (canonical)
9235    address strings.  ADDRESS points to the end of the SAL.
9236
9237    The array and the line spec strings are allocated on the heap, it is
9238    the caller's responsibility to free them.  */
9239
9240 static void
9241 parse_breakpoint_sals (char **address,
9242                        struct linespec_result *canonical)
9243 {
9244   /* If no arg given, or if first arg is 'if ', use the default
9245      breakpoint.  */
9246   if ((*address) == NULL
9247       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9248     {
9249       /* The last displayed codepoint, if it's valid, is our default breakpoint
9250          address.  */
9251       if (last_displayed_sal_is_valid ())
9252         {
9253           struct linespec_sals lsal;
9254           struct symtab_and_line sal;
9255           CORE_ADDR pc;
9256
9257           init_sal (&sal);              /* Initialize to zeroes.  */
9258           lsal.sals.sals = (struct symtab_and_line *)
9259             xmalloc (sizeof (struct symtab_and_line));
9260
9261           /* Set sal's pspace, pc, symtab, and line to the values
9262              corresponding to the last call to print_frame_info.
9263              Be sure to reinitialize LINE with NOTCURRENT == 0
9264              as the breakpoint line number is inappropriate otherwise.
9265              find_pc_line would adjust PC, re-set it back.  */
9266           get_last_displayed_sal (&sal);
9267           pc = sal.pc;
9268           sal = find_pc_line (pc, 0);
9269
9270           /* "break" without arguments is equivalent to "break *PC"
9271              where PC is the last displayed codepoint's address.  So
9272              make sure to set sal.explicit_pc to prevent GDB from
9273              trying to expand the list of sals to include all other
9274              instances with the same symtab and line.  */
9275           sal.pc = pc;
9276           sal.explicit_pc = 1;
9277
9278           lsal.sals.sals[0] = sal;
9279           lsal.sals.nelts = 1;
9280           lsal.canonical = NULL;
9281
9282           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9283         }
9284       else
9285         error (_("No default breakpoint address now."));
9286     }
9287   else
9288     {
9289       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9290
9291       /* Force almost all breakpoints to be in terms of the
9292          current_source_symtab (which is decode_line_1's default).
9293          This should produce the results we want almost all of the
9294          time while leaving default_breakpoint_* alone.
9295
9296          ObjC: However, don't match an Objective-C method name which
9297          may have a '+' or '-' succeeded by a '['.  */
9298       if (last_displayed_sal_is_valid ()
9299           && (!cursal.symtab
9300               || ((strchr ("+-", (*address)[0]) != NULL)
9301                   && ((*address)[1] != '['))))
9302         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9303                           get_last_displayed_symtab (),
9304                           get_last_displayed_line (),
9305                           canonical, NULL, NULL);
9306       else
9307         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9308                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9309     }
9310 }
9311
9312
9313 /* Convert each SAL into a real PC.  Verify that the PC can be
9314    inserted as a breakpoint.  If it can't throw an error.  */
9315
9316 static void
9317 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9318 {    
9319   int i;
9320
9321   for (i = 0; i < sals->nelts; i++)
9322     resolve_sal_pc (&sals->sals[i]);
9323 }
9324
9325 /* Fast tracepoints may have restrictions on valid locations.  For
9326    instance, a fast tracepoint using a jump instead of a trap will
9327    likely have to overwrite more bytes than a trap would, and so can
9328    only be placed where the instruction is longer than the jump, or a
9329    multi-instruction sequence does not have a jump into the middle of
9330    it, etc.  */
9331
9332 static void
9333 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9334                             struct symtabs_and_lines *sals)
9335 {
9336   int i, rslt;
9337   struct symtab_and_line *sal;
9338   char *msg;
9339   struct cleanup *old_chain;
9340
9341   for (i = 0; i < sals->nelts; i++)
9342     {
9343       struct gdbarch *sarch;
9344
9345       sal = &sals->sals[i];
9346
9347       sarch = get_sal_arch (*sal);
9348       /* We fall back to GDBARCH if there is no architecture
9349          associated with SAL.  */
9350       if (sarch == NULL)
9351         sarch = gdbarch;
9352       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9353                                                NULL, &msg);
9354       old_chain = make_cleanup (xfree, msg);
9355
9356       if (!rslt)
9357         error (_("May not have a fast tracepoint at 0x%s%s"),
9358                paddress (sarch, sal->pc), (msg ? msg : ""));
9359
9360       do_cleanups (old_chain);
9361     }
9362 }
9363
9364 /* Issue an invalid thread ID error.  */
9365
9366 static void ATTRIBUTE_NORETURN
9367 invalid_thread_id_error (int id)
9368 {
9369   error (_("Unknown thread %d."), id);
9370 }
9371
9372 /* Given TOK, a string specification of condition and thread, as
9373    accepted by the 'break' command, extract the condition
9374    string and thread number and set *COND_STRING and *THREAD.
9375    PC identifies the context at which the condition should be parsed.
9376    If no condition is found, *COND_STRING is set to NULL.
9377    If no thread is found, *THREAD is set to -1.  */
9378
9379 static void
9380 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9381                            char **cond_string, int *thread, int *task,
9382                            char **rest)
9383 {
9384   *cond_string = NULL;
9385   *thread = -1;
9386   *task = 0;
9387   *rest = NULL;
9388
9389   while (tok && *tok)
9390     {
9391       const char *end_tok;
9392       int toklen;
9393       const char *cond_start = NULL;
9394       const char *cond_end = NULL;
9395
9396       tok = skip_spaces_const (tok);
9397
9398       if ((*tok == '"' || *tok == ',') && rest)
9399         {
9400           *rest = savestring (tok, strlen (tok));
9401           return;
9402         }
9403
9404       end_tok = skip_to_space_const (tok);
9405
9406       toklen = end_tok - tok;
9407
9408       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9409         {
9410           struct expression *expr;
9411
9412           tok = cond_start = end_tok + 1;
9413           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9414           xfree (expr);
9415           cond_end = tok;
9416           *cond_string = savestring (cond_start, cond_end - cond_start);
9417         }
9418       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9419         {
9420           char *tmptok;
9421
9422           tok = end_tok + 1;
9423           *thread = strtol (tok, &tmptok, 0);
9424           if (tok == tmptok)
9425             error (_("Junk after thread keyword."));
9426           if (!valid_thread_id (*thread))
9427             invalid_thread_id_error (*thread);
9428           tok = tmptok;
9429         }
9430       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9431         {
9432           char *tmptok;
9433
9434           tok = end_tok + 1;
9435           *task = strtol (tok, &tmptok, 0);
9436           if (tok == tmptok)
9437             error (_("Junk after task keyword."));
9438           if (!valid_task_id (*task))
9439             error (_("Unknown task %d."), *task);
9440           tok = tmptok;
9441         }
9442       else if (rest)
9443         {
9444           *rest = savestring (tok, strlen (tok));
9445           return;
9446         }
9447       else
9448         error (_("Junk at end of arguments."));
9449     }
9450 }
9451
9452 /* Decode a static tracepoint marker spec.  */
9453
9454 static struct symtabs_and_lines
9455 decode_static_tracepoint_spec (char **arg_p)
9456 {
9457   VEC(static_tracepoint_marker_p) *markers = NULL;
9458   struct symtabs_and_lines sals;
9459   struct cleanup *old_chain;
9460   char *p = &(*arg_p)[3];
9461   char *endp;
9462   char *marker_str;
9463   int i;
9464
9465   p = skip_spaces (p);
9466
9467   endp = skip_to_space (p);
9468
9469   marker_str = savestring (p, endp - p);
9470   old_chain = make_cleanup (xfree, marker_str);
9471
9472   markers = target_static_tracepoint_markers_by_strid (marker_str);
9473   if (VEC_empty(static_tracepoint_marker_p, markers))
9474     error (_("No known static tracepoint marker named %s"), marker_str);
9475
9476   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9477   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9478
9479   for (i = 0; i < sals.nelts; i++)
9480     {
9481       struct static_tracepoint_marker *marker;
9482
9483       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9484
9485       init_sal (&sals.sals[i]);
9486
9487       sals.sals[i] = find_pc_line (marker->address, 0);
9488       sals.sals[i].pc = marker->address;
9489
9490       release_static_tracepoint_marker (marker);
9491     }
9492
9493   do_cleanups (old_chain);
9494
9495   *arg_p = endp;
9496   return sals;
9497 }
9498
9499 /* Set a breakpoint.  This function is shared between CLI and MI
9500    functions for setting a breakpoint.  This function has two major
9501    modes of operations, selected by the PARSE_ARG parameter.  If
9502    non-zero, the function will parse ARG, extracting location,
9503    condition, thread and extra string.  Otherwise, ARG is just the
9504    breakpoint's location, with condition, thread, and extra string
9505    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9506    If INTERNAL is non-zero, the breakpoint number will be allocated
9507    from the internal breakpoint count.  Returns true if any breakpoint
9508    was created; false otherwise.  */
9509
9510 int
9511 create_breakpoint (struct gdbarch *gdbarch,
9512                    char *arg, char *cond_string,
9513                    int thread, char *extra_string,
9514                    int parse_arg,
9515                    int tempflag, enum bptype type_wanted,
9516                    int ignore_count,
9517                    enum auto_boolean pending_break_support,
9518                    const struct breakpoint_ops *ops,
9519                    int from_tty, int enabled, int internal,
9520                    unsigned flags)
9521 {
9522   volatile struct gdb_exception e;
9523   char *copy_arg = NULL;
9524   char *addr_start = arg;
9525   struct linespec_result canonical;
9526   struct cleanup *old_chain;
9527   struct cleanup *bkpt_chain = NULL;
9528   int pending = 0;
9529   int task = 0;
9530   int prev_bkpt_count = breakpoint_count;
9531
9532   gdb_assert (ops != NULL);
9533
9534   init_linespec_result (&canonical);
9535
9536   TRY_CATCH (e, RETURN_MASK_ALL)
9537     {
9538       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9539                                      addr_start, &copy_arg);
9540     }
9541
9542   /* If caller is interested in rc value from parse, set value.  */
9543   switch (e.reason)
9544     {
9545     case GDB_NO_ERROR:
9546       if (VEC_empty (linespec_sals, canonical.sals))
9547         return 0;
9548       break;
9549     case RETURN_ERROR:
9550       switch (e.error)
9551         {
9552         case NOT_FOUND_ERROR:
9553
9554           /* If pending breakpoint support is turned off, throw
9555              error.  */
9556
9557           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9558             throw_exception (e);
9559
9560           exception_print (gdb_stderr, e);
9561
9562           /* If pending breakpoint support is auto query and the user
9563              selects no, then simply return the error code.  */
9564           if (pending_break_support == AUTO_BOOLEAN_AUTO
9565               && !nquery (_("Make %s pending on future shared library load? "),
9566                           bptype_string (type_wanted)))
9567             return 0;
9568
9569           /* At this point, either the user was queried about setting
9570              a pending breakpoint and selected yes, or pending
9571              breakpoint behavior is on and thus a pending breakpoint
9572              is defaulted on behalf of the user.  */
9573           {
9574             struct linespec_sals lsal;
9575
9576             copy_arg = xstrdup (addr_start);
9577             lsal.canonical = xstrdup (copy_arg);
9578             lsal.sals.nelts = 1;
9579             lsal.sals.sals = XNEW (struct symtab_and_line);
9580             init_sal (&lsal.sals.sals[0]);
9581             pending = 1;
9582             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9583           }
9584           break;
9585         default:
9586           throw_exception (e);
9587         }
9588       break;
9589     default:
9590       throw_exception (e);
9591     }
9592
9593   /* Create a chain of things that always need to be cleaned up.  */
9594   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9595
9596   /* ----------------------------- SNIP -----------------------------
9597      Anything added to the cleanup chain beyond this point is assumed
9598      to be part of a breakpoint.  If the breakpoint create succeeds
9599      then the memory is not reclaimed.  */
9600   bkpt_chain = make_cleanup (null_cleanup, 0);
9601
9602   /* Resolve all line numbers to PC's and verify that the addresses
9603      are ok for the target.  */
9604   if (!pending)
9605     {
9606       int ix;
9607       struct linespec_sals *iter;
9608
9609       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9610         breakpoint_sals_to_pc (&iter->sals);
9611     }
9612
9613   /* Fast tracepoints may have additional restrictions on location.  */
9614   if (!pending && type_wanted == bp_fast_tracepoint)
9615     {
9616       int ix;
9617       struct linespec_sals *iter;
9618
9619       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9620         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9621     }
9622
9623   /* Verify that condition can be parsed, before setting any
9624      breakpoints.  Allocate a separate condition expression for each
9625      breakpoint.  */
9626   if (!pending)
9627     {
9628       struct linespec_sals *lsal;
9629
9630       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9631
9632       if (parse_arg)
9633         {
9634             char *rest;
9635             /* Here we only parse 'arg' to separate condition
9636                from thread number, so parsing in context of first
9637                sal is OK.  When setting the breakpoint we'll 
9638                re-parse it in context of each sal.  */
9639
9640             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9641                                        &thread, &task, &rest);
9642             if (cond_string)
9643                 make_cleanup (xfree, cond_string);
9644             if (rest)
9645               make_cleanup (xfree, rest);
9646             if (rest)
9647               extra_string = rest;
9648         }
9649       else
9650         {
9651             if (*arg != '\0')
9652               error (_("Garbage '%s' at end of location"), arg);
9653
9654             /* Create a private copy of condition string.  */
9655             if (cond_string)
9656             {
9657                 cond_string = xstrdup (cond_string);
9658                 make_cleanup (xfree, cond_string);
9659             }
9660             /* Create a private copy of any extra string.  */
9661             if (extra_string)
9662               {
9663                 extra_string = xstrdup (extra_string);
9664                 make_cleanup (xfree, extra_string);
9665               }
9666         }
9667
9668       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9669                                    cond_string, extra_string, type_wanted,
9670                                    tempflag ? disp_del : disp_donttouch,
9671                                    thread, task, ignore_count, ops,
9672                                    from_tty, enabled, internal, flags);
9673     }
9674   else
9675     {
9676       struct breakpoint *b;
9677
9678       make_cleanup (xfree, copy_arg);
9679
9680       if (is_tracepoint_type (type_wanted))
9681         {
9682           struct tracepoint *t;
9683
9684           t = XCNEW (struct tracepoint);
9685           b = &t->base;
9686         }
9687       else
9688         b = XNEW (struct breakpoint);
9689
9690       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9691
9692       b->addr_string = copy_arg;
9693       if (parse_arg)
9694         b->cond_string = NULL;
9695       else
9696         {
9697           /* Create a private copy of condition string.  */
9698           if (cond_string)
9699             {
9700               cond_string = xstrdup (cond_string);
9701               make_cleanup (xfree, cond_string);
9702             }
9703           b->cond_string = cond_string;
9704         }
9705       b->extra_string = NULL;
9706       b->ignore_count = ignore_count;
9707       b->disposition = tempflag ? disp_del : disp_donttouch;
9708       b->condition_not_parsed = 1;
9709       b->enable_state = enabled ? bp_enabled : bp_disabled;
9710       if ((type_wanted != bp_breakpoint
9711            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9712         b->pspace = current_program_space;
9713
9714       install_breakpoint (internal, b, 0);
9715     }
9716   
9717   if (VEC_length (linespec_sals, canonical.sals) > 1)
9718     {
9719       warning (_("Multiple breakpoints were set.\nUse the "
9720                  "\"delete\" command to delete unwanted breakpoints."));
9721       prev_breakpoint_count = prev_bkpt_count;
9722     }
9723
9724   /* That's it.  Discard the cleanups for data inserted into the
9725      breakpoint.  */
9726   discard_cleanups (bkpt_chain);
9727   /* But cleanup everything else.  */
9728   do_cleanups (old_chain);
9729
9730   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9731   update_global_location_list (1);
9732
9733   return 1;
9734 }
9735
9736 /* Set a breakpoint.
9737    ARG is a string describing breakpoint address,
9738    condition, and thread.
9739    FLAG specifies if a breakpoint is hardware on,
9740    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9741    and BP_TEMPFLAG.  */
9742
9743 static void
9744 break_command_1 (char *arg, int flag, int from_tty)
9745 {
9746   int tempflag = flag & BP_TEMPFLAG;
9747   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9748                              ? bp_hardware_breakpoint
9749                              : bp_breakpoint);
9750   struct breakpoint_ops *ops;
9751   const char *arg_cp = arg;
9752
9753   /* Matching breakpoints on probes.  */
9754   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9755     ops = &bkpt_probe_breakpoint_ops;
9756   else
9757     ops = &bkpt_breakpoint_ops;
9758
9759   create_breakpoint (get_current_arch (),
9760                      arg,
9761                      NULL, 0, NULL, 1 /* parse arg */,
9762                      tempflag, type_wanted,
9763                      0 /* Ignore count */,
9764                      pending_break_support,
9765                      ops,
9766                      from_tty,
9767                      1 /* enabled */,
9768                      0 /* internal */,
9769                      0);
9770 }
9771
9772 /* Helper function for break_command_1 and disassemble_command.  */
9773
9774 void
9775 resolve_sal_pc (struct symtab_and_line *sal)
9776 {
9777   CORE_ADDR pc;
9778
9779   if (sal->pc == 0 && sal->symtab != NULL)
9780     {
9781       if (!find_line_pc (sal->symtab, sal->line, &pc))
9782         error (_("No line %d in file \"%s\"."),
9783                sal->line, symtab_to_filename_for_display (sal->symtab));
9784       sal->pc = pc;
9785
9786       /* If this SAL corresponds to a breakpoint inserted using a line
9787          number, then skip the function prologue if necessary.  */
9788       if (sal->explicit_line)
9789         skip_prologue_sal (sal);
9790     }
9791
9792   if (sal->section == 0 && sal->symtab != NULL)
9793     {
9794       struct blockvector *bv;
9795       struct block *b;
9796       struct symbol *sym;
9797
9798       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9799       if (bv != NULL)
9800         {
9801           sym = block_linkage_function (b);
9802           if (sym != NULL)
9803             {
9804               fixup_symbol_section (sym, sal->symtab->objfile);
9805               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9806             }
9807           else
9808             {
9809               /* It really is worthwhile to have the section, so we'll
9810                  just have to look harder. This case can be executed
9811                  if we have line numbers but no functions (as can
9812                  happen in assembly source).  */
9813
9814               struct bound_minimal_symbol msym;
9815               struct cleanup *old_chain = save_current_space_and_thread ();
9816
9817               switch_to_program_space_and_thread (sal->pspace);
9818
9819               msym = lookup_minimal_symbol_by_pc (sal->pc);
9820               if (msym.minsym)
9821                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9822
9823               do_cleanups (old_chain);
9824             }
9825         }
9826     }
9827 }
9828
9829 void
9830 break_command (char *arg, int from_tty)
9831 {
9832   break_command_1 (arg, 0, from_tty);
9833 }
9834
9835 void
9836 tbreak_command (char *arg, int from_tty)
9837 {
9838   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9839 }
9840
9841 static void
9842 hbreak_command (char *arg, int from_tty)
9843 {
9844   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9845 }
9846
9847 static void
9848 thbreak_command (char *arg, int from_tty)
9849 {
9850   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9851 }
9852
9853 static void
9854 stop_command (char *arg, int from_tty)
9855 {
9856   printf_filtered (_("Specify the type of breakpoint to set.\n\
9857 Usage: stop in <function | address>\n\
9858        stop at <line>\n"));
9859 }
9860
9861 static void
9862 stopin_command (char *arg, int from_tty)
9863 {
9864   int badInput = 0;
9865
9866   if (arg == (char *) NULL)
9867     badInput = 1;
9868   else if (*arg != '*')
9869     {
9870       char *argptr = arg;
9871       int hasColon = 0;
9872
9873       /* Look for a ':'.  If this is a line number specification, then
9874          say it is bad, otherwise, it should be an address or
9875          function/method name.  */
9876       while (*argptr && !hasColon)
9877         {
9878           hasColon = (*argptr == ':');
9879           argptr++;
9880         }
9881
9882       if (hasColon)
9883         badInput = (*argptr != ':');    /* Not a class::method */
9884       else
9885         badInput = isdigit (*arg);      /* a simple line number */
9886     }
9887
9888   if (badInput)
9889     printf_filtered (_("Usage: stop in <function | address>\n"));
9890   else
9891     break_command_1 (arg, 0, from_tty);
9892 }
9893
9894 static void
9895 stopat_command (char *arg, int from_tty)
9896 {
9897   int badInput = 0;
9898
9899   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9900     badInput = 1;
9901   else
9902     {
9903       char *argptr = arg;
9904       int hasColon = 0;
9905
9906       /* Look for a ':'.  If there is a '::' then get out, otherwise
9907          it is probably a line number.  */
9908       while (*argptr && !hasColon)
9909         {
9910           hasColon = (*argptr == ':');
9911           argptr++;
9912         }
9913
9914       if (hasColon)
9915         badInput = (*argptr == ':');    /* we have class::method */
9916       else
9917         badInput = !isdigit (*arg);     /* not a line number */
9918     }
9919
9920   if (badInput)
9921     printf_filtered (_("Usage: stop at <line>\n"));
9922   else
9923     break_command_1 (arg, 0, from_tty);
9924 }
9925
9926 /* The dynamic printf command is mostly like a regular breakpoint, but
9927    with a prewired command list consisting of a single output command,
9928    built from extra arguments supplied on the dprintf command
9929    line.  */
9930
9931 static void
9932 dprintf_command (char *arg, int from_tty)
9933 {
9934   create_breakpoint (get_current_arch (),
9935                      arg,
9936                      NULL, 0, NULL, 1 /* parse arg */,
9937                      0, bp_dprintf,
9938                      0 /* Ignore count */,
9939                      pending_break_support,
9940                      &dprintf_breakpoint_ops,
9941                      from_tty,
9942                      1 /* enabled */,
9943                      0 /* internal */,
9944                      0);
9945 }
9946
9947 static void
9948 agent_printf_command (char *arg, int from_tty)
9949 {
9950   error (_("May only run agent-printf on the target"));
9951 }
9952
9953 /* Implement the "breakpoint_hit" breakpoint_ops method for
9954    ranged breakpoints.  */
9955
9956 static int
9957 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9958                                   struct address_space *aspace,
9959                                   CORE_ADDR bp_addr,
9960                                   const struct target_waitstatus *ws)
9961 {
9962   if (ws->kind != TARGET_WAITKIND_STOPPED
9963       || ws->value.sig != GDB_SIGNAL_TRAP)
9964     return 0;
9965
9966   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9967                                          bl->length, aspace, bp_addr);
9968 }
9969
9970 /* Implement the "resources_needed" breakpoint_ops method for
9971    ranged breakpoints.  */
9972
9973 static int
9974 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9975 {
9976   return target_ranged_break_num_registers ();
9977 }
9978
9979 /* Implement the "print_it" breakpoint_ops method for
9980    ranged breakpoints.  */
9981
9982 static enum print_stop_action
9983 print_it_ranged_breakpoint (bpstat bs)
9984 {
9985   struct breakpoint *b = bs->breakpoint_at;
9986   struct bp_location *bl = b->loc;
9987   struct ui_out *uiout = current_uiout;
9988
9989   gdb_assert (b->type == bp_hardware_breakpoint);
9990
9991   /* Ranged breakpoints have only one location.  */
9992   gdb_assert (bl && bl->next == NULL);
9993
9994   annotate_breakpoint (b->number);
9995   if (b->disposition == disp_del)
9996     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9997   else
9998     ui_out_text (uiout, "\nRanged breakpoint ");
9999   if (ui_out_is_mi_like_p (uiout))
10000     {
10001       ui_out_field_string (uiout, "reason",
10002                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10003       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10004     }
10005   ui_out_field_int (uiout, "bkptno", b->number);
10006   ui_out_text (uiout, ", ");
10007
10008   return PRINT_SRC_AND_LOC;
10009 }
10010
10011 /* Implement the "print_one" breakpoint_ops method for
10012    ranged breakpoints.  */
10013
10014 static void
10015 print_one_ranged_breakpoint (struct breakpoint *b,
10016                              struct bp_location **last_loc)
10017 {
10018   struct bp_location *bl = b->loc;
10019   struct value_print_options opts;
10020   struct ui_out *uiout = current_uiout;
10021
10022   /* Ranged breakpoints have only one location.  */
10023   gdb_assert (bl && bl->next == NULL);
10024
10025   get_user_print_options (&opts);
10026
10027   if (opts.addressprint)
10028     /* We don't print the address range here, it will be printed later
10029        by print_one_detail_ranged_breakpoint.  */
10030     ui_out_field_skip (uiout, "addr");
10031   annotate_field (5);
10032   print_breakpoint_location (b, bl);
10033   *last_loc = bl;
10034 }
10035
10036 /* Implement the "print_one_detail" breakpoint_ops method for
10037    ranged breakpoints.  */
10038
10039 static void
10040 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10041                                     struct ui_out *uiout)
10042 {
10043   CORE_ADDR address_start, address_end;
10044   struct bp_location *bl = b->loc;
10045   struct ui_file *stb = mem_fileopen ();
10046   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10047
10048   gdb_assert (bl);
10049
10050   address_start = bl->address;
10051   address_end = address_start + bl->length - 1;
10052
10053   ui_out_text (uiout, "\taddress range: ");
10054   fprintf_unfiltered (stb, "[%s, %s]",
10055                       print_core_address (bl->gdbarch, address_start),
10056                       print_core_address (bl->gdbarch, address_end));
10057   ui_out_field_stream (uiout, "addr", stb);
10058   ui_out_text (uiout, "\n");
10059
10060   do_cleanups (cleanup);
10061 }
10062
10063 /* Implement the "print_mention" breakpoint_ops method for
10064    ranged breakpoints.  */
10065
10066 static void
10067 print_mention_ranged_breakpoint (struct breakpoint *b)
10068 {
10069   struct bp_location *bl = b->loc;
10070   struct ui_out *uiout = current_uiout;
10071
10072   gdb_assert (bl);
10073   gdb_assert (b->type == bp_hardware_breakpoint);
10074
10075   if (ui_out_is_mi_like_p (uiout))
10076     return;
10077
10078   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10079                    b->number, paddress (bl->gdbarch, bl->address),
10080                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10081 }
10082
10083 /* Implement the "print_recreate" breakpoint_ops method for
10084    ranged breakpoints.  */
10085
10086 static void
10087 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10088 {
10089   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10090                       b->addr_string_range_end);
10091   print_recreate_thread (b, fp);
10092 }
10093
10094 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10095
10096 static struct breakpoint_ops ranged_breakpoint_ops;
10097
10098 /* Find the address where the end of the breakpoint range should be
10099    placed, given the SAL of the end of the range.  This is so that if
10100    the user provides a line number, the end of the range is set to the
10101    last instruction of the given line.  */
10102
10103 static CORE_ADDR
10104 find_breakpoint_range_end (struct symtab_and_line sal)
10105 {
10106   CORE_ADDR end;
10107
10108   /* If the user provided a PC value, use it.  Otherwise,
10109      find the address of the end of the given location.  */
10110   if (sal.explicit_pc)
10111     end = sal.pc;
10112   else
10113     {
10114       int ret;
10115       CORE_ADDR start;
10116
10117       ret = find_line_pc_range (sal, &start, &end);
10118       if (!ret)
10119         error (_("Could not find location of the end of the range."));
10120
10121       /* find_line_pc_range returns the start of the next line.  */
10122       end--;
10123     }
10124
10125   return end;
10126 }
10127
10128 /* Implement the "break-range" CLI command.  */
10129
10130 static void
10131 break_range_command (char *arg, int from_tty)
10132 {
10133   char *arg_start, *addr_string_start, *addr_string_end;
10134   struct linespec_result canonical_start, canonical_end;
10135   int bp_count, can_use_bp, length;
10136   CORE_ADDR end;
10137   struct breakpoint *b;
10138   struct symtab_and_line sal_start, sal_end;
10139   struct cleanup *cleanup_bkpt;
10140   struct linespec_sals *lsal_start, *lsal_end;
10141
10142   /* We don't support software ranged breakpoints.  */
10143   if (target_ranged_break_num_registers () < 0)
10144     error (_("This target does not support hardware ranged breakpoints."));
10145
10146   bp_count = hw_breakpoint_used_count ();
10147   bp_count += target_ranged_break_num_registers ();
10148   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10149                                                    bp_count, 0);
10150   if (can_use_bp < 0)
10151     error (_("Hardware breakpoints used exceeds limit."));
10152
10153   arg = skip_spaces (arg);
10154   if (arg == NULL || arg[0] == '\0')
10155     error(_("No address range specified."));
10156
10157   init_linespec_result (&canonical_start);
10158
10159   arg_start = arg;
10160   parse_breakpoint_sals (&arg, &canonical_start);
10161
10162   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10163
10164   if (arg[0] != ',')
10165     error (_("Too few arguments."));
10166   else if (VEC_empty (linespec_sals, canonical_start.sals))
10167     error (_("Could not find location of the beginning of the range."));
10168
10169   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10170
10171   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10172       || lsal_start->sals.nelts != 1)
10173     error (_("Cannot create a ranged breakpoint with multiple locations."));
10174
10175   sal_start = lsal_start->sals.sals[0];
10176   addr_string_start = savestring (arg_start, arg - arg_start);
10177   make_cleanup (xfree, addr_string_start);
10178
10179   arg++;        /* Skip the comma.  */
10180   arg = skip_spaces (arg);
10181
10182   /* Parse the end location.  */
10183
10184   init_linespec_result (&canonical_end);
10185   arg_start = arg;
10186
10187   /* We call decode_line_full directly here instead of using
10188      parse_breakpoint_sals because we need to specify the start location's
10189      symtab and line as the default symtab and line for the end of the
10190      range.  This makes it possible to have ranges like "foo.c:27, +14",
10191      where +14 means 14 lines from the start location.  */
10192   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10193                     sal_start.symtab, sal_start.line,
10194                     &canonical_end, NULL, NULL);
10195
10196   make_cleanup_destroy_linespec_result (&canonical_end);
10197
10198   if (VEC_empty (linespec_sals, canonical_end.sals))
10199     error (_("Could not find location of the end of the range."));
10200
10201   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10202   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10203       || lsal_end->sals.nelts != 1)
10204     error (_("Cannot create a ranged breakpoint with multiple locations."));
10205
10206   sal_end = lsal_end->sals.sals[0];
10207   addr_string_end = savestring (arg_start, arg - arg_start);
10208   make_cleanup (xfree, addr_string_end);
10209
10210   end = find_breakpoint_range_end (sal_end);
10211   if (sal_start.pc > end)
10212     error (_("Invalid address range, end precedes start."));
10213
10214   length = end - sal_start.pc + 1;
10215   if (length < 0)
10216     /* Length overflowed.  */
10217     error (_("Address range too large."));
10218   else if (length == 1)
10219     {
10220       /* This range is simple enough to be handled by
10221          the `hbreak' command.  */
10222       hbreak_command (addr_string_start, 1);
10223
10224       do_cleanups (cleanup_bkpt);
10225
10226       return;
10227     }
10228
10229   /* Now set up the breakpoint.  */
10230   b = set_raw_breakpoint (get_current_arch (), sal_start,
10231                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10232   set_breakpoint_count (breakpoint_count + 1);
10233   b->number = breakpoint_count;
10234   b->disposition = disp_donttouch;
10235   b->addr_string = xstrdup (addr_string_start);
10236   b->addr_string_range_end = xstrdup (addr_string_end);
10237   b->loc->length = length;
10238
10239   do_cleanups (cleanup_bkpt);
10240
10241   mention (b);
10242   observer_notify_breakpoint_created (b);
10243   update_global_location_list (1);
10244 }
10245
10246 /*  Return non-zero if EXP is verified as constant.  Returned zero
10247     means EXP is variable.  Also the constant detection may fail for
10248     some constant expressions and in such case still falsely return
10249     zero.  */
10250
10251 static int
10252 watchpoint_exp_is_const (const struct expression *exp)
10253 {
10254   int i = exp->nelts;
10255
10256   while (i > 0)
10257     {
10258       int oplenp, argsp;
10259
10260       /* We are only interested in the descriptor of each element.  */
10261       operator_length (exp, i, &oplenp, &argsp);
10262       i -= oplenp;
10263
10264       switch (exp->elts[i].opcode)
10265         {
10266         case BINOP_ADD:
10267         case BINOP_SUB:
10268         case BINOP_MUL:
10269         case BINOP_DIV:
10270         case BINOP_REM:
10271         case BINOP_MOD:
10272         case BINOP_LSH:
10273         case BINOP_RSH:
10274         case BINOP_LOGICAL_AND:
10275         case BINOP_LOGICAL_OR:
10276         case BINOP_BITWISE_AND:
10277         case BINOP_BITWISE_IOR:
10278         case BINOP_BITWISE_XOR:
10279         case BINOP_EQUAL:
10280         case BINOP_NOTEQUAL:
10281         case BINOP_LESS:
10282         case BINOP_GTR:
10283         case BINOP_LEQ:
10284         case BINOP_GEQ:
10285         case BINOP_REPEAT:
10286         case BINOP_COMMA:
10287         case BINOP_EXP:
10288         case BINOP_MIN:
10289         case BINOP_MAX:
10290         case BINOP_INTDIV:
10291         case BINOP_CONCAT:
10292         case BINOP_IN:
10293         case BINOP_RANGE:
10294         case TERNOP_COND:
10295         case TERNOP_SLICE:
10296
10297         case OP_LONG:
10298         case OP_DOUBLE:
10299         case OP_DECFLOAT:
10300         case OP_LAST:
10301         case OP_COMPLEX:
10302         case OP_STRING:
10303         case OP_ARRAY:
10304         case OP_TYPE:
10305         case OP_TYPEOF:
10306         case OP_DECLTYPE:
10307         case OP_TYPEID:
10308         case OP_NAME:
10309         case OP_OBJC_NSSTRING:
10310
10311         case UNOP_NEG:
10312         case UNOP_LOGICAL_NOT:
10313         case UNOP_COMPLEMENT:
10314         case UNOP_ADDR:
10315         case UNOP_HIGH:
10316         case UNOP_CAST:
10317
10318         case UNOP_CAST_TYPE:
10319         case UNOP_REINTERPRET_CAST:
10320         case UNOP_DYNAMIC_CAST:
10321           /* Unary, binary and ternary operators: We have to check
10322              their operands.  If they are constant, then so is the
10323              result of that operation.  For instance, if A and B are
10324              determined to be constants, then so is "A + B".
10325
10326              UNOP_IND is one exception to the rule above, because the
10327              value of *ADDR is not necessarily a constant, even when
10328              ADDR is.  */
10329           break;
10330
10331         case OP_VAR_VALUE:
10332           /* Check whether the associated symbol is a constant.
10333
10334              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10335              possible that a buggy compiler could mark a variable as
10336              constant even when it is not, and TYPE_CONST would return
10337              true in this case, while SYMBOL_CLASS wouldn't.
10338
10339              We also have to check for function symbols because they
10340              are always constant.  */
10341           {
10342             struct symbol *s = exp->elts[i + 2].symbol;
10343
10344             if (SYMBOL_CLASS (s) != LOC_BLOCK
10345                 && SYMBOL_CLASS (s) != LOC_CONST
10346                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10347               return 0;
10348             break;
10349           }
10350
10351         /* The default action is to return 0 because we are using
10352            the optimistic approach here: If we don't know something,
10353            then it is not a constant.  */
10354         default:
10355           return 0;
10356         }
10357     }
10358
10359   return 1;
10360 }
10361
10362 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10363
10364 static void
10365 dtor_watchpoint (struct breakpoint *self)
10366 {
10367   struct watchpoint *w = (struct watchpoint *) self;
10368
10369   xfree (w->cond_exp);
10370   xfree (w->exp);
10371   xfree (w->exp_string);
10372   xfree (w->exp_string_reparse);
10373   value_free (w->val);
10374
10375   base_breakpoint_ops.dtor (self);
10376 }
10377
10378 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10379
10380 static void
10381 re_set_watchpoint (struct breakpoint *b)
10382 {
10383   struct watchpoint *w = (struct watchpoint *) b;
10384
10385   /* Watchpoint can be either on expression using entirely global
10386      variables, or it can be on local variables.
10387
10388      Watchpoints of the first kind are never auto-deleted, and even
10389      persist across program restarts.  Since they can use variables
10390      from shared libraries, we need to reparse expression as libraries
10391      are loaded and unloaded.
10392
10393      Watchpoints on local variables can also change meaning as result
10394      of solib event.  For example, if a watchpoint uses both a local
10395      and a global variables in expression, it's a local watchpoint,
10396      but unloading of a shared library will make the expression
10397      invalid.  This is not a very common use case, but we still
10398      re-evaluate expression, to avoid surprises to the user.
10399
10400      Note that for local watchpoints, we re-evaluate it only if
10401      watchpoints frame id is still valid.  If it's not, it means the
10402      watchpoint is out of scope and will be deleted soon.  In fact,
10403      I'm not sure we'll ever be called in this case.
10404
10405      If a local watchpoint's frame id is still valid, then
10406      w->exp_valid_block is likewise valid, and we can safely use it.
10407
10408      Don't do anything about disabled watchpoints, since they will be
10409      reevaluated again when enabled.  */
10410   update_watchpoint (w, 1 /* reparse */);
10411 }
10412
10413 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10414
10415 static int
10416 insert_watchpoint (struct bp_location *bl)
10417 {
10418   struct watchpoint *w = (struct watchpoint *) bl->owner;
10419   int length = w->exact ? 1 : bl->length;
10420
10421   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10422                                    w->cond_exp);
10423 }
10424
10425 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10426
10427 static int
10428 remove_watchpoint (struct bp_location *bl)
10429 {
10430   struct watchpoint *w = (struct watchpoint *) bl->owner;
10431   int length = w->exact ? 1 : bl->length;
10432
10433   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10434                                    w->cond_exp);
10435 }
10436
10437 static int
10438 breakpoint_hit_watchpoint (const struct bp_location *bl,
10439                            struct address_space *aspace, CORE_ADDR bp_addr,
10440                            const struct target_waitstatus *ws)
10441 {
10442   struct breakpoint *b = bl->owner;
10443   struct watchpoint *w = (struct watchpoint *) b;
10444
10445   /* Continuable hardware watchpoints are treated as non-existent if the
10446      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10447      some data address).  Otherwise gdb won't stop on a break instruction
10448      in the code (not from a breakpoint) when a hardware watchpoint has
10449      been defined.  Also skip watchpoints which we know did not trigger
10450      (did not match the data address).  */
10451   if (is_hardware_watchpoint (b)
10452       && w->watchpoint_triggered == watch_triggered_no)
10453     return 0;
10454
10455   return 1;
10456 }
10457
10458 static void
10459 check_status_watchpoint (bpstat bs)
10460 {
10461   gdb_assert (is_watchpoint (bs->breakpoint_at));
10462
10463   bpstat_check_watchpoint (bs);
10464 }
10465
10466 /* Implement the "resources_needed" breakpoint_ops method for
10467    hardware watchpoints.  */
10468
10469 static int
10470 resources_needed_watchpoint (const struct bp_location *bl)
10471 {
10472   struct watchpoint *w = (struct watchpoint *) bl->owner;
10473   int length = w->exact? 1 : bl->length;
10474
10475   return target_region_ok_for_hw_watchpoint (bl->address, length);
10476 }
10477
10478 /* Implement the "works_in_software_mode" breakpoint_ops method for
10479    hardware watchpoints.  */
10480
10481 static int
10482 works_in_software_mode_watchpoint (const struct breakpoint *b)
10483 {
10484   /* Read and access watchpoints only work with hardware support.  */
10485   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10486 }
10487
10488 static enum print_stop_action
10489 print_it_watchpoint (bpstat bs)
10490 {
10491   struct cleanup *old_chain;
10492   struct breakpoint *b;
10493   struct ui_file *stb;
10494   enum print_stop_action result;
10495   struct watchpoint *w;
10496   struct ui_out *uiout = current_uiout;
10497
10498   gdb_assert (bs->bp_location_at != NULL);
10499
10500   b = bs->breakpoint_at;
10501   w = (struct watchpoint *) b;
10502
10503   stb = mem_fileopen ();
10504   old_chain = make_cleanup_ui_file_delete (stb);
10505
10506   switch (b->type)
10507     {
10508     case bp_watchpoint:
10509     case bp_hardware_watchpoint:
10510       annotate_watchpoint (b->number);
10511       if (ui_out_is_mi_like_p (uiout))
10512         ui_out_field_string
10513           (uiout, "reason",
10514            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10515       mention (b);
10516       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10517       ui_out_text (uiout, "\nOld value = ");
10518       watchpoint_value_print (bs->old_val, stb);
10519       ui_out_field_stream (uiout, "old", stb);
10520       ui_out_text (uiout, "\nNew value = ");
10521       watchpoint_value_print (w->val, stb);
10522       ui_out_field_stream (uiout, "new", stb);
10523       ui_out_text (uiout, "\n");
10524       /* More than one watchpoint may have been triggered.  */
10525       result = PRINT_UNKNOWN;
10526       break;
10527
10528     case bp_read_watchpoint:
10529       if (ui_out_is_mi_like_p (uiout))
10530         ui_out_field_string
10531           (uiout, "reason",
10532            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10533       mention (b);
10534       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10535       ui_out_text (uiout, "\nValue = ");
10536       watchpoint_value_print (w->val, stb);
10537       ui_out_field_stream (uiout, "value", stb);
10538       ui_out_text (uiout, "\n");
10539       result = PRINT_UNKNOWN;
10540       break;
10541
10542     case bp_access_watchpoint:
10543       if (bs->old_val != NULL)
10544         {
10545           annotate_watchpoint (b->number);
10546           if (ui_out_is_mi_like_p (uiout))
10547             ui_out_field_string
10548               (uiout, "reason",
10549                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10550           mention (b);
10551           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10552           ui_out_text (uiout, "\nOld value = ");
10553           watchpoint_value_print (bs->old_val, stb);
10554           ui_out_field_stream (uiout, "old", stb);
10555           ui_out_text (uiout, "\nNew value = ");
10556         }
10557       else
10558         {
10559           mention (b);
10560           if (ui_out_is_mi_like_p (uiout))
10561             ui_out_field_string
10562               (uiout, "reason",
10563                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10564           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10565           ui_out_text (uiout, "\nValue = ");
10566         }
10567       watchpoint_value_print (w->val, stb);
10568       ui_out_field_stream (uiout, "new", stb);
10569       ui_out_text (uiout, "\n");
10570       result = PRINT_UNKNOWN;
10571       break;
10572     default:
10573       result = PRINT_UNKNOWN;
10574     }
10575
10576   do_cleanups (old_chain);
10577   return result;
10578 }
10579
10580 /* Implement the "print_mention" breakpoint_ops method for hardware
10581    watchpoints.  */
10582
10583 static void
10584 print_mention_watchpoint (struct breakpoint *b)
10585 {
10586   struct cleanup *ui_out_chain;
10587   struct watchpoint *w = (struct watchpoint *) b;
10588   struct ui_out *uiout = current_uiout;
10589
10590   switch (b->type)
10591     {
10592     case bp_watchpoint:
10593       ui_out_text (uiout, "Watchpoint ");
10594       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10595       break;
10596     case bp_hardware_watchpoint:
10597       ui_out_text (uiout, "Hardware watchpoint ");
10598       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10599       break;
10600     case bp_read_watchpoint:
10601       ui_out_text (uiout, "Hardware read watchpoint ");
10602       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10603       break;
10604     case bp_access_watchpoint:
10605       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10606       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10607       break;
10608     default:
10609       internal_error (__FILE__, __LINE__,
10610                       _("Invalid hardware watchpoint type."));
10611     }
10612
10613   ui_out_field_int (uiout, "number", b->number);
10614   ui_out_text (uiout, ": ");
10615   ui_out_field_string (uiout, "exp", w->exp_string);
10616   do_cleanups (ui_out_chain);
10617 }
10618
10619 /* Implement the "print_recreate" breakpoint_ops method for
10620    watchpoints.  */
10621
10622 static void
10623 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10624 {
10625   struct watchpoint *w = (struct watchpoint *) b;
10626
10627   switch (b->type)
10628     {
10629     case bp_watchpoint:
10630     case bp_hardware_watchpoint:
10631       fprintf_unfiltered (fp, "watch");
10632       break;
10633     case bp_read_watchpoint:
10634       fprintf_unfiltered (fp, "rwatch");
10635       break;
10636     case bp_access_watchpoint:
10637       fprintf_unfiltered (fp, "awatch");
10638       break;
10639     default:
10640       internal_error (__FILE__, __LINE__,
10641                       _("Invalid watchpoint type."));
10642     }
10643
10644   fprintf_unfiltered (fp, " %s", w->exp_string);
10645   print_recreate_thread (b, fp);
10646 }
10647
10648 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10649
10650 static struct breakpoint_ops watchpoint_breakpoint_ops;
10651
10652 /* Implement the "insert" breakpoint_ops method for
10653    masked hardware watchpoints.  */
10654
10655 static int
10656 insert_masked_watchpoint (struct bp_location *bl)
10657 {
10658   struct watchpoint *w = (struct watchpoint *) bl->owner;
10659
10660   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10661                                         bl->watchpoint_type);
10662 }
10663
10664 /* Implement the "remove" breakpoint_ops method for
10665    masked hardware watchpoints.  */
10666
10667 static int
10668 remove_masked_watchpoint (struct bp_location *bl)
10669 {
10670   struct watchpoint *w = (struct watchpoint *) bl->owner;
10671
10672   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10673                                         bl->watchpoint_type);
10674 }
10675
10676 /* Implement the "resources_needed" breakpoint_ops method for
10677    masked hardware watchpoints.  */
10678
10679 static int
10680 resources_needed_masked_watchpoint (const struct bp_location *bl)
10681 {
10682   struct watchpoint *w = (struct watchpoint *) bl->owner;
10683
10684   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10685 }
10686
10687 /* Implement the "works_in_software_mode" breakpoint_ops method for
10688    masked hardware watchpoints.  */
10689
10690 static int
10691 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10692 {
10693   return 0;
10694 }
10695
10696 /* Implement the "print_it" breakpoint_ops method for
10697    masked hardware watchpoints.  */
10698
10699 static enum print_stop_action
10700 print_it_masked_watchpoint (bpstat bs)
10701 {
10702   struct breakpoint *b = bs->breakpoint_at;
10703   struct ui_out *uiout = current_uiout;
10704
10705   /* Masked watchpoints have only one location.  */
10706   gdb_assert (b->loc && b->loc->next == NULL);
10707
10708   switch (b->type)
10709     {
10710     case bp_hardware_watchpoint:
10711       annotate_watchpoint (b->number);
10712       if (ui_out_is_mi_like_p (uiout))
10713         ui_out_field_string
10714           (uiout, "reason",
10715            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10716       break;
10717
10718     case bp_read_watchpoint:
10719       if (ui_out_is_mi_like_p (uiout))
10720         ui_out_field_string
10721           (uiout, "reason",
10722            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10723       break;
10724
10725     case bp_access_watchpoint:
10726       if (ui_out_is_mi_like_p (uiout))
10727         ui_out_field_string
10728           (uiout, "reason",
10729            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10730       break;
10731     default:
10732       internal_error (__FILE__, __LINE__,
10733                       _("Invalid hardware watchpoint type."));
10734     }
10735
10736   mention (b);
10737   ui_out_text (uiout, _("\n\
10738 Check the underlying instruction at PC for the memory\n\
10739 address and value which triggered this watchpoint.\n"));
10740   ui_out_text (uiout, "\n");
10741
10742   /* More than one watchpoint may have been triggered.  */
10743   return PRINT_UNKNOWN;
10744 }
10745
10746 /* Implement the "print_one_detail" breakpoint_ops method for
10747    masked hardware watchpoints.  */
10748
10749 static void
10750 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10751                                     struct ui_out *uiout)
10752 {
10753   struct watchpoint *w = (struct watchpoint *) b;
10754
10755   /* Masked watchpoints have only one location.  */
10756   gdb_assert (b->loc && b->loc->next == NULL);
10757
10758   ui_out_text (uiout, "\tmask ");
10759   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10760   ui_out_text (uiout, "\n");
10761 }
10762
10763 /* Implement the "print_mention" breakpoint_ops method for
10764    masked hardware watchpoints.  */
10765
10766 static void
10767 print_mention_masked_watchpoint (struct breakpoint *b)
10768 {
10769   struct watchpoint *w = (struct watchpoint *) b;
10770   struct ui_out *uiout = current_uiout;
10771   struct cleanup *ui_out_chain;
10772
10773   switch (b->type)
10774     {
10775     case bp_hardware_watchpoint:
10776       ui_out_text (uiout, "Masked hardware watchpoint ");
10777       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10778       break;
10779     case bp_read_watchpoint:
10780       ui_out_text (uiout, "Masked hardware read watchpoint ");
10781       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10782       break;
10783     case bp_access_watchpoint:
10784       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10785       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10786       break;
10787     default:
10788       internal_error (__FILE__, __LINE__,
10789                       _("Invalid hardware watchpoint type."));
10790     }
10791
10792   ui_out_field_int (uiout, "number", b->number);
10793   ui_out_text (uiout, ": ");
10794   ui_out_field_string (uiout, "exp", w->exp_string);
10795   do_cleanups (ui_out_chain);
10796 }
10797
10798 /* Implement the "print_recreate" breakpoint_ops method for
10799    masked hardware watchpoints.  */
10800
10801 static void
10802 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10803 {
10804   struct watchpoint *w = (struct watchpoint *) b;
10805   char tmp[40];
10806
10807   switch (b->type)
10808     {
10809     case bp_hardware_watchpoint:
10810       fprintf_unfiltered (fp, "watch");
10811       break;
10812     case bp_read_watchpoint:
10813       fprintf_unfiltered (fp, "rwatch");
10814       break;
10815     case bp_access_watchpoint:
10816       fprintf_unfiltered (fp, "awatch");
10817       break;
10818     default:
10819       internal_error (__FILE__, __LINE__,
10820                       _("Invalid hardware watchpoint type."));
10821     }
10822
10823   sprintf_vma (tmp, w->hw_wp_mask);
10824   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10825   print_recreate_thread (b, fp);
10826 }
10827
10828 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10829
10830 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10831
10832 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10833
10834 static int
10835 is_masked_watchpoint (const struct breakpoint *b)
10836 {
10837   return b->ops == &masked_watchpoint_breakpoint_ops;
10838 }
10839
10840 /* accessflag:  hw_write:  watch write, 
10841                 hw_read:   watch read, 
10842                 hw_access: watch access (read or write) */
10843 static void
10844 watch_command_1 (const char *arg, int accessflag, int from_tty,
10845                  int just_location, int internal)
10846 {
10847   volatile struct gdb_exception e;
10848   struct breakpoint *b, *scope_breakpoint = NULL;
10849   struct expression *exp;
10850   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10851   struct value *val, *mark, *result;
10852   struct frame_info *frame;
10853   const char *exp_start = NULL;
10854   const char *exp_end = NULL;
10855   const char *tok, *end_tok;
10856   int toklen = -1;
10857   const char *cond_start = NULL;
10858   const char *cond_end = NULL;
10859   enum bptype bp_type;
10860   int thread = -1;
10861   int pc = 0;
10862   /* Flag to indicate whether we are going to use masks for
10863      the hardware watchpoint.  */
10864   int use_mask = 0;
10865   CORE_ADDR mask = 0;
10866   struct watchpoint *w;
10867   char *expression;
10868   struct cleanup *back_to;
10869
10870   /* Make sure that we actually have parameters to parse.  */
10871   if (arg != NULL && arg[0] != '\0')
10872     {
10873       const char *value_start;
10874
10875       exp_end = arg + strlen (arg);
10876
10877       /* Look for "parameter value" pairs at the end
10878          of the arguments string.  */
10879       for (tok = exp_end - 1; tok > arg; tok--)
10880         {
10881           /* Skip whitespace at the end of the argument list.  */
10882           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10883             tok--;
10884
10885           /* Find the beginning of the last token.
10886              This is the value of the parameter.  */
10887           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10888             tok--;
10889           value_start = tok + 1;
10890
10891           /* Skip whitespace.  */
10892           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10893             tok--;
10894
10895           end_tok = tok;
10896
10897           /* Find the beginning of the second to last token.
10898              This is the parameter itself.  */
10899           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10900             tok--;
10901           tok++;
10902           toklen = end_tok - tok + 1;
10903
10904           if (toklen == 6 && !strncmp (tok, "thread", 6))
10905             {
10906               /* At this point we've found a "thread" token, which means
10907                  the user is trying to set a watchpoint that triggers
10908                  only in a specific thread.  */
10909               char *endp;
10910
10911               if (thread != -1)
10912                 error(_("You can specify only one thread."));
10913
10914               /* Extract the thread ID from the next token.  */
10915               thread = strtol (value_start, &endp, 0);
10916
10917               /* Check if the user provided a valid numeric value for the
10918                  thread ID.  */
10919               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10920                 error (_("Invalid thread ID specification %s."), value_start);
10921
10922               /* Check if the thread actually exists.  */
10923               if (!valid_thread_id (thread))
10924                 invalid_thread_id_error (thread);
10925             }
10926           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10927             {
10928               /* We've found a "mask" token, which means the user wants to
10929                  create a hardware watchpoint that is going to have the mask
10930                  facility.  */
10931               struct value *mask_value, *mark;
10932
10933               if (use_mask)
10934                 error(_("You can specify only one mask."));
10935
10936               use_mask = just_location = 1;
10937
10938               mark = value_mark ();
10939               mask_value = parse_to_comma_and_eval (&value_start);
10940               mask = value_as_address (mask_value);
10941               value_free_to_mark (mark);
10942             }
10943           else
10944             /* We didn't recognize what we found.  We should stop here.  */
10945             break;
10946
10947           /* Truncate the string and get rid of the "parameter value" pair before
10948              the arguments string is parsed by the parse_exp_1 function.  */
10949           exp_end = tok;
10950         }
10951     }
10952   else
10953     exp_end = arg;
10954
10955   /* Parse the rest of the arguments.  From here on out, everything
10956      is in terms of a newly allocated string instead of the original
10957      ARG.  */
10958   innermost_block = NULL;
10959   expression = savestring (arg, exp_end - arg);
10960   back_to = make_cleanup (xfree, expression);
10961   exp_start = arg = expression;
10962   exp = parse_exp_1 (&arg, 0, 0, 0);
10963   exp_end = arg;
10964   /* Remove trailing whitespace from the expression before saving it.
10965      This makes the eventual display of the expression string a bit
10966      prettier.  */
10967   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10968     --exp_end;
10969
10970   /* Checking if the expression is not constant.  */
10971   if (watchpoint_exp_is_const (exp))
10972     {
10973       int len;
10974
10975       len = exp_end - exp_start;
10976       while (len > 0 && isspace (exp_start[len - 1]))
10977         len--;
10978       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10979     }
10980
10981   exp_valid_block = innermost_block;
10982   mark = value_mark ();
10983   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10984
10985   if (just_location)
10986     {
10987       int ret;
10988
10989       exp_valid_block = NULL;
10990       val = value_addr (result);
10991       release_value (val);
10992       value_free_to_mark (mark);
10993
10994       if (use_mask)
10995         {
10996           ret = target_masked_watch_num_registers (value_as_address (val),
10997                                                    mask);
10998           if (ret == -1)
10999             error (_("This target does not support masked watchpoints."));
11000           else if (ret == -2)
11001             error (_("Invalid mask or memory region."));
11002         }
11003     }
11004   else if (val != NULL)
11005     release_value (val);
11006
11007   tok = skip_spaces_const (arg);
11008   end_tok = skip_to_space_const (tok);
11009
11010   toklen = end_tok - tok;
11011   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11012     {
11013       struct expression *cond;
11014
11015       innermost_block = NULL;
11016       tok = cond_start = end_tok + 1;
11017       cond = parse_exp_1 (&tok, 0, 0, 0);
11018
11019       /* The watchpoint expression may not be local, but the condition
11020          may still be.  E.g.: `watch global if local > 0'.  */
11021       cond_exp_valid_block = innermost_block;
11022
11023       xfree (cond);
11024       cond_end = tok;
11025     }
11026   if (*tok)
11027     error (_("Junk at end of command."));
11028
11029   if (accessflag == hw_read)
11030     bp_type = bp_read_watchpoint;
11031   else if (accessflag == hw_access)
11032     bp_type = bp_access_watchpoint;
11033   else
11034     bp_type = bp_hardware_watchpoint;
11035
11036   frame = block_innermost_frame (exp_valid_block);
11037
11038   /* If the expression is "local", then set up a "watchpoint scope"
11039      breakpoint at the point where we've left the scope of the watchpoint
11040      expression.  Create the scope breakpoint before the watchpoint, so
11041      that we will encounter it first in bpstat_stop_status.  */
11042   if (exp_valid_block && frame)
11043     {
11044       if (frame_id_p (frame_unwind_caller_id (frame)))
11045         {
11046           scope_breakpoint
11047             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11048                                           frame_unwind_caller_pc (frame),
11049                                           bp_watchpoint_scope,
11050                                           &momentary_breakpoint_ops);
11051
11052           scope_breakpoint->enable_state = bp_enabled;
11053
11054           /* Automatically delete the breakpoint when it hits.  */
11055           scope_breakpoint->disposition = disp_del;
11056
11057           /* Only break in the proper frame (help with recursion).  */
11058           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11059
11060           /* Set the address at which we will stop.  */
11061           scope_breakpoint->loc->gdbarch
11062             = frame_unwind_caller_arch (frame);
11063           scope_breakpoint->loc->requested_address
11064             = frame_unwind_caller_pc (frame);
11065           scope_breakpoint->loc->address
11066             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11067                                          scope_breakpoint->loc->requested_address,
11068                                          scope_breakpoint->type);
11069         }
11070     }
11071
11072   /* Now set up the breakpoint.  */
11073
11074   w = XCNEW (struct watchpoint);
11075   b = &w->base;
11076   if (use_mask)
11077     init_raw_breakpoint_without_location (b, NULL, bp_type,
11078                                           &masked_watchpoint_breakpoint_ops);
11079   else
11080     init_raw_breakpoint_without_location (b, NULL, bp_type,
11081                                           &watchpoint_breakpoint_ops);
11082   b->thread = thread;
11083   b->disposition = disp_donttouch;
11084   b->pspace = current_program_space;
11085   w->exp = exp;
11086   w->exp_valid_block = exp_valid_block;
11087   w->cond_exp_valid_block = cond_exp_valid_block;
11088   if (just_location)
11089     {
11090       struct type *t = value_type (val);
11091       CORE_ADDR addr = value_as_address (val);
11092       char *name;
11093
11094       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11095       name = type_to_string (t);
11096
11097       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11098                                           core_addr_to_string (addr));
11099       xfree (name);
11100
11101       w->exp_string = xstrprintf ("-location %.*s",
11102                                   (int) (exp_end - exp_start), exp_start);
11103
11104       /* The above expression is in C.  */
11105       b->language = language_c;
11106     }
11107   else
11108     w->exp_string = savestring (exp_start, exp_end - exp_start);
11109
11110   if (use_mask)
11111     {
11112       w->hw_wp_mask = mask;
11113     }
11114   else
11115     {
11116       w->val = val;
11117       w->val_valid = 1;
11118     }
11119
11120   if (cond_start)
11121     b->cond_string = savestring (cond_start, cond_end - cond_start);
11122   else
11123     b->cond_string = 0;
11124
11125   if (frame)
11126     {
11127       w->watchpoint_frame = get_frame_id (frame);
11128       w->watchpoint_thread = inferior_ptid;
11129     }
11130   else
11131     {
11132       w->watchpoint_frame = null_frame_id;
11133       w->watchpoint_thread = null_ptid;
11134     }
11135
11136   if (scope_breakpoint != NULL)
11137     {
11138       /* The scope breakpoint is related to the watchpoint.  We will
11139          need to act on them together.  */
11140       b->related_breakpoint = scope_breakpoint;
11141       scope_breakpoint->related_breakpoint = b;
11142     }
11143
11144   if (!just_location)
11145     value_free_to_mark (mark);
11146
11147   TRY_CATCH (e, RETURN_MASK_ALL)
11148     {
11149       /* Finally update the new watchpoint.  This creates the locations
11150          that should be inserted.  */
11151       update_watchpoint (w, 1);
11152     }
11153   if (e.reason < 0)
11154     {
11155       delete_breakpoint (b);
11156       throw_exception (e);
11157     }
11158
11159   install_breakpoint (internal, b, 1);
11160   do_cleanups (back_to);
11161 }
11162
11163 /* Return count of debug registers needed to watch the given expression.
11164    If the watchpoint cannot be handled in hardware return zero.  */
11165
11166 static int
11167 can_use_hardware_watchpoint (struct value *v)
11168 {
11169   int found_memory_cnt = 0;
11170   struct value *head = v;
11171
11172   /* Did the user specifically forbid us to use hardware watchpoints? */
11173   if (!can_use_hw_watchpoints)
11174     return 0;
11175
11176   /* Make sure that the value of the expression depends only upon
11177      memory contents, and values computed from them within GDB.  If we
11178      find any register references or function calls, we can't use a
11179      hardware watchpoint.
11180
11181      The idea here is that evaluating an expression generates a series
11182      of values, one holding the value of every subexpression.  (The
11183      expression a*b+c has five subexpressions: a, b, a*b, c, and
11184      a*b+c.)  GDB's values hold almost enough information to establish
11185      the criteria given above --- they identify memory lvalues,
11186      register lvalues, computed values, etcetera.  So we can evaluate
11187      the expression, and then scan the chain of values that leaves
11188      behind to decide whether we can detect any possible change to the
11189      expression's final value using only hardware watchpoints.
11190
11191      However, I don't think that the values returned by inferior
11192      function calls are special in any way.  So this function may not
11193      notice that an expression involving an inferior function call
11194      can't be watched with hardware watchpoints.  FIXME.  */
11195   for (; v; v = value_next (v))
11196     {
11197       if (VALUE_LVAL (v) == lval_memory)
11198         {
11199           if (v != head && value_lazy (v))
11200             /* A lazy memory lvalue in the chain is one that GDB never
11201                needed to fetch; we either just used its address (e.g.,
11202                `a' in `a.b') or we never needed it at all (e.g., `a'
11203                in `a,b').  This doesn't apply to HEAD; if that is
11204                lazy then it was not readable, but watch it anyway.  */
11205             ;
11206           else
11207             {
11208               /* Ahh, memory we actually used!  Check if we can cover
11209                  it with hardware watchpoints.  */
11210               struct type *vtype = check_typedef (value_type (v));
11211
11212               /* We only watch structs and arrays if user asked for it
11213                  explicitly, never if they just happen to appear in a
11214                  middle of some value chain.  */
11215               if (v == head
11216                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11217                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11218                 {
11219                   CORE_ADDR vaddr = value_address (v);
11220                   int len;
11221                   int num_regs;
11222
11223                   len = (target_exact_watchpoints
11224                          && is_scalar_type_recursive (vtype))?
11225                     1 : TYPE_LENGTH (value_type (v));
11226
11227                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11228                   if (!num_regs)
11229                     return 0;
11230                   else
11231                     found_memory_cnt += num_regs;
11232                 }
11233             }
11234         }
11235       else if (VALUE_LVAL (v) != not_lval
11236                && deprecated_value_modifiable (v) == 0)
11237         return 0;       /* These are values from the history (e.g., $1).  */
11238       else if (VALUE_LVAL (v) == lval_register)
11239         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11240     }
11241
11242   /* The expression itself looks suitable for using a hardware
11243      watchpoint, but give the target machine a chance to reject it.  */
11244   return found_memory_cnt;
11245 }
11246
11247 void
11248 watch_command_wrapper (char *arg, int from_tty, int internal)
11249 {
11250   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11251 }
11252
11253 /* A helper function that looks for the "-location" argument and then
11254    calls watch_command_1.  */
11255
11256 static void
11257 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11258 {
11259   int just_location = 0;
11260
11261   if (arg
11262       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11263           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11264     {
11265       arg = skip_spaces (arg);
11266       just_location = 1;
11267     }
11268
11269   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11270 }
11271
11272 static void
11273 watch_command (char *arg, int from_tty)
11274 {
11275   watch_maybe_just_location (arg, hw_write, from_tty);
11276 }
11277
11278 void
11279 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11280 {
11281   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11282 }
11283
11284 static void
11285 rwatch_command (char *arg, int from_tty)
11286 {
11287   watch_maybe_just_location (arg, hw_read, from_tty);
11288 }
11289
11290 void
11291 awatch_command_wrapper (char *arg, int from_tty, int internal)
11292 {
11293   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11294 }
11295
11296 static void
11297 awatch_command (char *arg, int from_tty)
11298 {
11299   watch_maybe_just_location (arg, hw_access, from_tty);
11300 }
11301 \f
11302
11303 /* Helper routines for the until_command routine in infcmd.c.  Here
11304    because it uses the mechanisms of breakpoints.  */
11305
11306 struct until_break_command_continuation_args
11307 {
11308   struct breakpoint *breakpoint;
11309   struct breakpoint *breakpoint2;
11310   int thread_num;
11311 };
11312
11313 /* This function is called by fetch_inferior_event via the
11314    cmd_continuation pointer, to complete the until command.  It takes
11315    care of cleaning up the temporary breakpoints set up by the until
11316    command.  */
11317 static void
11318 until_break_command_continuation (void *arg, int err)
11319 {
11320   struct until_break_command_continuation_args *a = arg;
11321
11322   delete_breakpoint (a->breakpoint);
11323   if (a->breakpoint2)
11324     delete_breakpoint (a->breakpoint2);
11325   delete_longjmp_breakpoint (a->thread_num);
11326 }
11327
11328 void
11329 until_break_command (char *arg, int from_tty, int anywhere)
11330 {
11331   struct symtabs_and_lines sals;
11332   struct symtab_and_line sal;
11333   struct frame_info *frame;
11334   struct gdbarch *frame_gdbarch;
11335   struct frame_id stack_frame_id;
11336   struct frame_id caller_frame_id;
11337   struct breakpoint *breakpoint;
11338   struct breakpoint *breakpoint2 = NULL;
11339   struct cleanup *old_chain;
11340   int thread;
11341   struct thread_info *tp;
11342
11343   clear_proceed_status ();
11344
11345   /* Set a breakpoint where the user wants it and at return from
11346      this function.  */
11347
11348   if (last_displayed_sal_is_valid ())
11349     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11350                           get_last_displayed_symtab (),
11351                           get_last_displayed_line ());
11352   else
11353     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11354                           (struct symtab *) NULL, 0);
11355
11356   if (sals.nelts != 1)
11357     error (_("Couldn't get information on specified line."));
11358
11359   sal = sals.sals[0];
11360   xfree (sals.sals);    /* malloc'd, so freed.  */
11361
11362   if (*arg)
11363     error (_("Junk at end of arguments."));
11364
11365   resolve_sal_pc (&sal);
11366
11367   tp = inferior_thread ();
11368   thread = tp->num;
11369
11370   old_chain = make_cleanup (null_cleanup, NULL);
11371
11372   /* Note linespec handling above invalidates the frame chain.
11373      Installing a breakpoint also invalidates the frame chain (as it
11374      may need to switch threads), so do any frame handling before
11375      that.  */
11376
11377   frame = get_selected_frame (NULL);
11378   frame_gdbarch = get_frame_arch (frame);
11379   stack_frame_id = get_stack_frame_id (frame);
11380   caller_frame_id = frame_unwind_caller_id (frame);
11381
11382   /* Keep within the current frame, or in frames called by the current
11383      one.  */
11384
11385   if (frame_id_p (caller_frame_id))
11386     {
11387       struct symtab_and_line sal2;
11388
11389       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11390       sal2.pc = frame_unwind_caller_pc (frame);
11391       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11392                                               sal2,
11393                                               caller_frame_id,
11394                                               bp_until);
11395       make_cleanup_delete_breakpoint (breakpoint2);
11396
11397       set_longjmp_breakpoint (tp, caller_frame_id);
11398       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11399     }
11400
11401   /* set_momentary_breakpoint could invalidate FRAME.  */
11402   frame = NULL;
11403
11404   if (anywhere)
11405     /* If the user told us to continue until a specified location,
11406        we don't specify a frame at which we need to stop.  */
11407     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11408                                            null_frame_id, bp_until);
11409   else
11410     /* Otherwise, specify the selected frame, because we want to stop
11411        only at the very same frame.  */
11412     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11413                                            stack_frame_id, bp_until);
11414   make_cleanup_delete_breakpoint (breakpoint);
11415
11416   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11417
11418   /* If we are running asynchronously, and proceed call above has
11419      actually managed to start the target, arrange for breakpoints to
11420      be deleted when the target stops.  Otherwise, we're already
11421      stopped and delete breakpoints via cleanup chain.  */
11422
11423   if (target_can_async_p () && is_running (inferior_ptid))
11424     {
11425       struct until_break_command_continuation_args *args;
11426       args = xmalloc (sizeof (*args));
11427
11428       args->breakpoint = breakpoint;
11429       args->breakpoint2 = breakpoint2;
11430       args->thread_num = thread;
11431
11432       discard_cleanups (old_chain);
11433       add_continuation (inferior_thread (),
11434                         until_break_command_continuation, args,
11435                         xfree);
11436     }
11437   else
11438     do_cleanups (old_chain);
11439 }
11440
11441 /* This function attempts to parse an optional "if <cond>" clause
11442    from the arg string.  If one is not found, it returns NULL.
11443
11444    Else, it returns a pointer to the condition string.  (It does not
11445    attempt to evaluate the string against a particular block.)  And,
11446    it updates arg to point to the first character following the parsed
11447    if clause in the arg string.  */
11448
11449 char *
11450 ep_parse_optional_if_clause (char **arg)
11451 {
11452   char *cond_string;
11453
11454   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11455     return NULL;
11456
11457   /* Skip the "if" keyword.  */
11458   (*arg) += 2;
11459
11460   /* Skip any extra leading whitespace, and record the start of the
11461      condition string.  */
11462   *arg = skip_spaces (*arg);
11463   cond_string = *arg;
11464
11465   /* Assume that the condition occupies the remainder of the arg
11466      string.  */
11467   (*arg) += strlen (cond_string);
11468
11469   return cond_string;
11470 }
11471
11472 /* Commands to deal with catching events, such as signals, exceptions,
11473    process start/exit, etc.  */
11474
11475 typedef enum
11476 {
11477   catch_fork_temporary, catch_vfork_temporary,
11478   catch_fork_permanent, catch_vfork_permanent
11479 }
11480 catch_fork_kind;
11481
11482 static void
11483 catch_fork_command_1 (char *arg, int from_tty, 
11484                       struct cmd_list_element *command)
11485 {
11486   struct gdbarch *gdbarch = get_current_arch ();
11487   char *cond_string = NULL;
11488   catch_fork_kind fork_kind;
11489   int tempflag;
11490
11491   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11492   tempflag = (fork_kind == catch_fork_temporary
11493               || fork_kind == catch_vfork_temporary);
11494
11495   if (!arg)
11496     arg = "";
11497   arg = skip_spaces (arg);
11498
11499   /* The allowed syntax is:
11500      catch [v]fork
11501      catch [v]fork if <cond>
11502
11503      First, check if there's an if clause.  */
11504   cond_string = ep_parse_optional_if_clause (&arg);
11505
11506   if ((*arg != '\0') && !isspace (*arg))
11507     error (_("Junk at end of arguments."));
11508
11509   /* If this target supports it, create a fork or vfork catchpoint
11510      and enable reporting of such events.  */
11511   switch (fork_kind)
11512     {
11513     case catch_fork_temporary:
11514     case catch_fork_permanent:
11515       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11516                                           &catch_fork_breakpoint_ops);
11517       break;
11518     case catch_vfork_temporary:
11519     case catch_vfork_permanent:
11520       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11521                                           &catch_vfork_breakpoint_ops);
11522       break;
11523     default:
11524       error (_("unsupported or unknown fork kind; cannot catch it"));
11525       break;
11526     }
11527 }
11528
11529 static void
11530 catch_exec_command_1 (char *arg, int from_tty, 
11531                       struct cmd_list_element *command)
11532 {
11533   struct exec_catchpoint *c;
11534   struct gdbarch *gdbarch = get_current_arch ();
11535   int tempflag;
11536   char *cond_string = NULL;
11537
11538   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11539
11540   if (!arg)
11541     arg = "";
11542   arg = skip_spaces (arg);
11543
11544   /* The allowed syntax is:
11545      catch exec
11546      catch exec if <cond>
11547
11548      First, check if there's an if clause.  */
11549   cond_string = ep_parse_optional_if_clause (&arg);
11550
11551   if ((*arg != '\0') && !isspace (*arg))
11552     error (_("Junk at end of arguments."));
11553
11554   c = XNEW (struct exec_catchpoint);
11555   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11556                    &catch_exec_breakpoint_ops);
11557   c->exec_pathname = NULL;
11558
11559   install_breakpoint (0, &c->base, 1);
11560 }
11561
11562 void
11563 init_ada_exception_breakpoint (struct breakpoint *b,
11564                                struct gdbarch *gdbarch,
11565                                struct symtab_and_line sal,
11566                                char *addr_string,
11567                                const struct breakpoint_ops *ops,
11568                                int tempflag,
11569                                int from_tty)
11570 {
11571   if (from_tty)
11572     {
11573       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11574       if (!loc_gdbarch)
11575         loc_gdbarch = gdbarch;
11576
11577       describe_other_breakpoints (loc_gdbarch,
11578                                   sal.pspace, sal.pc, sal.section, -1);
11579       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11580          version for exception catchpoints, because two catchpoints
11581          used for different exception names will use the same address.
11582          In this case, a "breakpoint ... also set at..." warning is
11583          unproductive.  Besides, the warning phrasing is also a bit
11584          inappropriate, we should use the word catchpoint, and tell
11585          the user what type of catchpoint it is.  The above is good
11586          enough for now, though.  */
11587     }
11588
11589   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11590
11591   b->enable_state = bp_enabled;
11592   b->disposition = tempflag ? disp_del : disp_donttouch;
11593   b->addr_string = addr_string;
11594   b->language = language_ada;
11595 }
11596
11597 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11598    filter list, or NULL if no filtering is required.  */
11599 static VEC(int) *
11600 catch_syscall_split_args (char *arg)
11601 {
11602   VEC(int) *result = NULL;
11603   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11604
11605   while (*arg != '\0')
11606     {
11607       int i, syscall_number;
11608       char *endptr;
11609       char cur_name[128];
11610       struct syscall s;
11611
11612       /* Skip whitespace.  */
11613       arg = skip_spaces (arg);
11614
11615       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11616         cur_name[i] = arg[i];
11617       cur_name[i] = '\0';
11618       arg += i;
11619
11620       /* Check if the user provided a syscall name or a number.  */
11621       syscall_number = (int) strtol (cur_name, &endptr, 0);
11622       if (*endptr == '\0')
11623         get_syscall_by_number (syscall_number, &s);
11624       else
11625         {
11626           /* We have a name.  Let's check if it's valid and convert it
11627              to a number.  */
11628           get_syscall_by_name (cur_name, &s);
11629
11630           if (s.number == UNKNOWN_SYSCALL)
11631             /* Here we have to issue an error instead of a warning,
11632                because GDB cannot do anything useful if there's no
11633                syscall number to be caught.  */
11634             error (_("Unknown syscall name '%s'."), cur_name);
11635         }
11636
11637       /* Ok, it's valid.  */
11638       VEC_safe_push (int, result, s.number);
11639     }
11640
11641   discard_cleanups (cleanup);
11642   return result;
11643 }
11644
11645 /* Implement the "catch syscall" command.  */
11646
11647 static void
11648 catch_syscall_command_1 (char *arg, int from_tty, 
11649                          struct cmd_list_element *command)
11650 {
11651   int tempflag;
11652   VEC(int) *filter;
11653   struct syscall s;
11654   struct gdbarch *gdbarch = get_current_arch ();
11655
11656   /* Checking if the feature if supported.  */
11657   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11658     error (_("The feature 'catch syscall' is not supported on \
11659 this architecture yet."));
11660
11661   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11662
11663   arg = skip_spaces (arg);
11664
11665   /* We need to do this first "dummy" translation in order
11666      to get the syscall XML file loaded or, most important,
11667      to display a warning to the user if there's no XML file
11668      for his/her architecture.  */
11669   get_syscall_by_number (0, &s);
11670
11671   /* The allowed syntax is:
11672      catch syscall
11673      catch syscall <name | number> [<name | number> ... <name | number>]
11674
11675      Let's check if there's a syscall name.  */
11676
11677   if (arg != NULL)
11678     filter = catch_syscall_split_args (arg);
11679   else
11680     filter = NULL;
11681
11682   create_syscall_event_catchpoint (tempflag, filter,
11683                                    &catch_syscall_breakpoint_ops);
11684 }
11685
11686 static void
11687 catch_command (char *arg, int from_tty)
11688 {
11689   error (_("Catch requires an event name."));
11690 }
11691 \f
11692
11693 static void
11694 tcatch_command (char *arg, int from_tty)
11695 {
11696   error (_("Catch requires an event name."));
11697 }
11698
11699 /* A qsort comparison function that sorts breakpoints in order.  */
11700
11701 static int
11702 compare_breakpoints (const void *a, const void *b)
11703 {
11704   const breakpoint_p *ba = a;
11705   uintptr_t ua = (uintptr_t) *ba;
11706   const breakpoint_p *bb = b;
11707   uintptr_t ub = (uintptr_t) *bb;
11708
11709   if ((*ba)->number < (*bb)->number)
11710     return -1;
11711   else if ((*ba)->number > (*bb)->number)
11712     return 1;
11713
11714   /* Now sort by address, in case we see, e..g, two breakpoints with
11715      the number 0.  */
11716   if (ua < ub)
11717     return -1;
11718   return ua > ub ? 1 : 0;
11719 }
11720
11721 /* Delete breakpoints by address or line.  */
11722
11723 static void
11724 clear_command (char *arg, int from_tty)
11725 {
11726   struct breakpoint *b, *prev;
11727   VEC(breakpoint_p) *found = 0;
11728   int ix;
11729   int default_match;
11730   struct symtabs_and_lines sals;
11731   struct symtab_and_line sal;
11732   int i;
11733   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11734
11735   if (arg)
11736     {
11737       sals = decode_line_with_current_source (arg,
11738                                               (DECODE_LINE_FUNFIRSTLINE
11739                                                | DECODE_LINE_LIST_MODE));
11740       make_cleanup (xfree, sals.sals);
11741       default_match = 0;
11742     }
11743   else
11744     {
11745       sals.sals = (struct symtab_and_line *)
11746         xmalloc (sizeof (struct symtab_and_line));
11747       make_cleanup (xfree, sals.sals);
11748       init_sal (&sal);          /* Initialize to zeroes.  */
11749
11750       /* Set sal's line, symtab, pc, and pspace to the values
11751          corresponding to the last call to print_frame_info.  If the
11752          codepoint is not valid, this will set all the fields to 0.  */
11753       get_last_displayed_sal (&sal);
11754       if (sal.symtab == 0)
11755         error (_("No source file specified."));
11756
11757       sals.sals[0] = sal;
11758       sals.nelts = 1;
11759
11760       default_match = 1;
11761     }
11762
11763   /* We don't call resolve_sal_pc here.  That's not as bad as it
11764      seems, because all existing breakpoints typically have both
11765      file/line and pc set.  So, if clear is given file/line, we can
11766      match this to existing breakpoint without obtaining pc at all.
11767
11768      We only support clearing given the address explicitly 
11769      present in breakpoint table.  Say, we've set breakpoint 
11770      at file:line.  There were several PC values for that file:line,
11771      due to optimization, all in one block.
11772
11773      We've picked one PC value.  If "clear" is issued with another
11774      PC corresponding to the same file:line, the breakpoint won't
11775      be cleared.  We probably can still clear the breakpoint, but 
11776      since the other PC value is never presented to user, user
11777      can only find it by guessing, and it does not seem important
11778      to support that.  */
11779
11780   /* For each line spec given, delete bps which correspond to it.  Do
11781      it in two passes, solely to preserve the current behavior that
11782      from_tty is forced true if we delete more than one
11783      breakpoint.  */
11784
11785   found = NULL;
11786   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11787   for (i = 0; i < sals.nelts; i++)
11788     {
11789       const char *sal_fullname;
11790
11791       /* If exact pc given, clear bpts at that pc.
11792          If line given (pc == 0), clear all bpts on specified line.
11793          If defaulting, clear all bpts on default line
11794          or at default pc.
11795
11796          defaulting    sal.pc != 0    tests to do
11797
11798          0              1             pc
11799          1              1             pc _and_ line
11800          0              0             line
11801          1              0             <can't happen> */
11802
11803       sal = sals.sals[i];
11804       sal_fullname = (sal.symtab == NULL
11805                       ? NULL : symtab_to_fullname (sal.symtab));
11806
11807       /* Find all matching breakpoints and add them to 'found'.  */
11808       ALL_BREAKPOINTS (b)
11809         {
11810           int match = 0;
11811           /* Are we going to delete b?  */
11812           if (b->type != bp_none && !is_watchpoint (b))
11813             {
11814               struct bp_location *loc = b->loc;
11815               for (; loc; loc = loc->next)
11816                 {
11817                   /* If the user specified file:line, don't allow a PC
11818                      match.  This matches historical gdb behavior.  */
11819                   int pc_match = (!sal.explicit_line
11820                                   && sal.pc
11821                                   && (loc->pspace == sal.pspace)
11822                                   && (loc->address == sal.pc)
11823                                   && (!section_is_overlay (loc->section)
11824                                       || loc->section == sal.section));
11825                   int line_match = 0;
11826
11827                   if ((default_match || sal.explicit_line)
11828                       && loc->symtab != NULL
11829                       && sal_fullname != NULL
11830                       && sal.pspace == loc->pspace
11831                       && loc->line_number == sal.line
11832                       && filename_cmp (symtab_to_fullname (loc->symtab),
11833                                        sal_fullname) == 0)
11834                     line_match = 1;
11835
11836                   if (pc_match || line_match)
11837                     {
11838                       match = 1;
11839                       break;
11840                     }
11841                 }
11842             }
11843
11844           if (match)
11845             VEC_safe_push(breakpoint_p, found, b);
11846         }
11847     }
11848
11849   /* Now go thru the 'found' chain and delete them.  */
11850   if (VEC_empty(breakpoint_p, found))
11851     {
11852       if (arg)
11853         error (_("No breakpoint at %s."), arg);
11854       else
11855         error (_("No breakpoint at this line."));
11856     }
11857
11858   /* Remove duplicates from the vec.  */
11859   qsort (VEC_address (breakpoint_p, found),
11860          VEC_length (breakpoint_p, found),
11861          sizeof (breakpoint_p),
11862          compare_breakpoints);
11863   prev = VEC_index (breakpoint_p, found, 0);
11864   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11865     {
11866       if (b == prev)
11867         {
11868           VEC_ordered_remove (breakpoint_p, found, ix);
11869           --ix;
11870         }
11871     }
11872
11873   if (VEC_length(breakpoint_p, found) > 1)
11874     from_tty = 1;       /* Always report if deleted more than one.  */
11875   if (from_tty)
11876     {
11877       if (VEC_length(breakpoint_p, found) == 1)
11878         printf_unfiltered (_("Deleted breakpoint "));
11879       else
11880         printf_unfiltered (_("Deleted breakpoints "));
11881     }
11882
11883   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11884     {
11885       if (from_tty)
11886         printf_unfiltered ("%d ", b->number);
11887       delete_breakpoint (b);
11888     }
11889   if (from_tty)
11890     putchar_unfiltered ('\n');
11891
11892   do_cleanups (cleanups);
11893 }
11894 \f
11895 /* Delete breakpoint in BS if they are `delete' breakpoints and
11896    all breakpoints that are marked for deletion, whether hit or not.
11897    This is called after any breakpoint is hit, or after errors.  */
11898
11899 void
11900 breakpoint_auto_delete (bpstat bs)
11901 {
11902   struct breakpoint *b, *b_tmp;
11903
11904   for (; bs; bs = bs->next)
11905     if (bs->breakpoint_at
11906         && bs->breakpoint_at->disposition == disp_del
11907         && bs->stop)
11908       delete_breakpoint (bs->breakpoint_at);
11909
11910   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11911   {
11912     if (b->disposition == disp_del_at_next_stop)
11913       delete_breakpoint (b);
11914   }
11915 }
11916
11917 /* A comparison function for bp_location AP and BP being interfaced to
11918    qsort.  Sort elements primarily by their ADDRESS (no matter what
11919    does breakpoint_address_is_meaningful say for its OWNER),
11920    secondarily by ordering first bp_permanent OWNERed elements and
11921    terciarily just ensuring the array is sorted stable way despite
11922    qsort being an unstable algorithm.  */
11923
11924 static int
11925 bp_location_compare (const void *ap, const void *bp)
11926 {
11927   struct bp_location *a = *(void **) ap;
11928   struct bp_location *b = *(void **) bp;
11929   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11930   int a_perm = a->owner->enable_state == bp_permanent;
11931   int b_perm = b->owner->enable_state == bp_permanent;
11932
11933   if (a->address != b->address)
11934     return (a->address > b->address) - (a->address < b->address);
11935
11936   /* Sort locations at the same address by their pspace number, keeping
11937      locations of the same inferior (in a multi-inferior environment)
11938      grouped.  */
11939
11940   if (a->pspace->num != b->pspace->num)
11941     return ((a->pspace->num > b->pspace->num)
11942             - (a->pspace->num < b->pspace->num));
11943
11944   /* Sort permanent breakpoints first.  */
11945   if (a_perm != b_perm)
11946     return (a_perm < b_perm) - (a_perm > b_perm);
11947
11948   /* Make the internal GDB representation stable across GDB runs
11949      where A and B memory inside GDB can differ.  Breakpoint locations of
11950      the same type at the same address can be sorted in arbitrary order.  */
11951
11952   if (a->owner->number != b->owner->number)
11953     return ((a->owner->number > b->owner->number)
11954             - (a->owner->number < b->owner->number));
11955
11956   return (a > b) - (a < b);
11957 }
11958
11959 /* Set bp_location_placed_address_before_address_max and
11960    bp_location_shadow_len_after_address_max according to the current
11961    content of the bp_location array.  */
11962
11963 static void
11964 bp_location_target_extensions_update (void)
11965 {
11966   struct bp_location *bl, **blp_tmp;
11967
11968   bp_location_placed_address_before_address_max = 0;
11969   bp_location_shadow_len_after_address_max = 0;
11970
11971   ALL_BP_LOCATIONS (bl, blp_tmp)
11972     {
11973       CORE_ADDR start, end, addr;
11974
11975       if (!bp_location_has_shadow (bl))
11976         continue;
11977
11978       start = bl->target_info.placed_address;
11979       end = start + bl->target_info.shadow_len;
11980
11981       gdb_assert (bl->address >= start);
11982       addr = bl->address - start;
11983       if (addr > bp_location_placed_address_before_address_max)
11984         bp_location_placed_address_before_address_max = addr;
11985
11986       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11987
11988       gdb_assert (bl->address < end);
11989       addr = end - bl->address;
11990       if (addr > bp_location_shadow_len_after_address_max)
11991         bp_location_shadow_len_after_address_max = addr;
11992     }
11993 }
11994
11995 /* Download tracepoint locations if they haven't been.  */
11996
11997 static void
11998 download_tracepoint_locations (void)
11999 {
12000   struct breakpoint *b;
12001   struct cleanup *old_chain;
12002
12003   if (!target_can_download_tracepoint ())
12004     return;
12005
12006   old_chain = save_current_space_and_thread ();
12007
12008   ALL_TRACEPOINTS (b)
12009     {
12010       struct bp_location *bl;
12011       struct tracepoint *t;
12012       int bp_location_downloaded = 0;
12013
12014       if ((b->type == bp_fast_tracepoint
12015            ? !may_insert_fast_tracepoints
12016            : !may_insert_tracepoints))
12017         continue;
12018
12019       for (bl = b->loc; bl; bl = bl->next)
12020         {
12021           /* In tracepoint, locations are _never_ duplicated, so
12022              should_be_inserted is equivalent to
12023              unduplicated_should_be_inserted.  */
12024           if (!should_be_inserted (bl) || bl->inserted)
12025             continue;
12026
12027           switch_to_program_space_and_thread (bl->pspace);
12028
12029           target_download_tracepoint (bl);
12030
12031           bl->inserted = 1;
12032           bp_location_downloaded = 1;
12033         }
12034       t = (struct tracepoint *) b;
12035       t->number_on_target = b->number;
12036       if (bp_location_downloaded)
12037         observer_notify_breakpoint_modified (b);
12038     }
12039
12040   do_cleanups (old_chain);
12041 }
12042
12043 /* Swap the insertion/duplication state between two locations.  */
12044
12045 static void
12046 swap_insertion (struct bp_location *left, struct bp_location *right)
12047 {
12048   const int left_inserted = left->inserted;
12049   const int left_duplicate = left->duplicate;
12050   const int left_needs_update = left->needs_update;
12051   const struct bp_target_info left_target_info = left->target_info;
12052
12053   /* Locations of tracepoints can never be duplicated.  */
12054   if (is_tracepoint (left->owner))
12055     gdb_assert (!left->duplicate);
12056   if (is_tracepoint (right->owner))
12057     gdb_assert (!right->duplicate);
12058
12059   left->inserted = right->inserted;
12060   left->duplicate = right->duplicate;
12061   left->needs_update = right->needs_update;
12062   left->target_info = right->target_info;
12063   right->inserted = left_inserted;
12064   right->duplicate = left_duplicate;
12065   right->needs_update = left_needs_update;
12066   right->target_info = left_target_info;
12067 }
12068
12069 /* Force the re-insertion of the locations at ADDRESS.  This is called
12070    once a new/deleted/modified duplicate location is found and we are evaluating
12071    conditions on the target's side.  Such conditions need to be updated on
12072    the target.  */
12073
12074 static void
12075 force_breakpoint_reinsertion (struct bp_location *bl)
12076 {
12077   struct bp_location **locp = NULL, **loc2p;
12078   struct bp_location *loc;
12079   CORE_ADDR address = 0;
12080   int pspace_num;
12081
12082   address = bl->address;
12083   pspace_num = bl->pspace->num;
12084
12085   /* This is only meaningful if the target is
12086      evaluating conditions and if the user has
12087      opted for condition evaluation on the target's
12088      side.  */
12089   if (gdb_evaluates_breakpoint_condition_p ()
12090       || !target_supports_evaluation_of_breakpoint_conditions ())
12091     return;
12092
12093   /* Flag all breakpoint locations with this address and
12094      the same program space as the location
12095      as "its condition has changed".  We need to
12096      update the conditions on the target's side.  */
12097   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12098     {
12099       loc = *loc2p;
12100
12101       if (!is_breakpoint (loc->owner)
12102           || pspace_num != loc->pspace->num)
12103         continue;
12104
12105       /* Flag the location appropriately.  We use a different state to
12106          let everyone know that we already updated the set of locations
12107          with addr bl->address and program space bl->pspace.  This is so
12108          we don't have to keep calling these functions just to mark locations
12109          that have already been marked.  */
12110       loc->condition_changed = condition_updated;
12111
12112       /* Free the agent expression bytecode as well.  We will compute
12113          it later on.  */
12114       if (loc->cond_bytecode)
12115         {
12116           free_agent_expr (loc->cond_bytecode);
12117           loc->cond_bytecode = NULL;
12118         }
12119     }
12120 }
12121
12122 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12123    into the inferior, only remove already-inserted locations that no
12124    longer should be inserted.  Functions that delete a breakpoint or
12125    breakpoints should pass false, so that deleting a breakpoint
12126    doesn't have the side effect of inserting the locations of other
12127    breakpoints that are marked not-inserted, but should_be_inserted
12128    returns true on them.
12129
12130    This behaviour is useful is situations close to tear-down -- e.g.,
12131    after an exec, while the target still has execution, but breakpoint
12132    shadows of the previous executable image should *NOT* be restored
12133    to the new image; or before detaching, where the target still has
12134    execution and wants to delete breakpoints from GDB's lists, and all
12135    breakpoints had already been removed from the inferior.  */
12136
12137 static void
12138 update_global_location_list (int should_insert)
12139 {
12140   struct breakpoint *b;
12141   struct bp_location **locp, *loc;
12142   struct cleanup *cleanups;
12143   /* Last breakpoint location address that was marked for update.  */
12144   CORE_ADDR last_addr = 0;
12145   /* Last breakpoint location program space that was marked for update.  */
12146   int last_pspace_num = -1;
12147
12148   /* Used in the duplicates detection below.  When iterating over all
12149      bp_locations, points to the first bp_location of a given address.
12150      Breakpoints and watchpoints of different types are never
12151      duplicates of each other.  Keep one pointer for each type of
12152      breakpoint/watchpoint, so we only need to loop over all locations
12153      once.  */
12154   struct bp_location *bp_loc_first;  /* breakpoint */
12155   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12156   struct bp_location *awp_loc_first; /* access watchpoint */
12157   struct bp_location *rwp_loc_first; /* read watchpoint */
12158
12159   /* Saved former bp_location array which we compare against the newly
12160      built bp_location from the current state of ALL_BREAKPOINTS.  */
12161   struct bp_location **old_location, **old_locp;
12162   unsigned old_location_count;
12163
12164   old_location = bp_location;
12165   old_location_count = bp_location_count;
12166   bp_location = NULL;
12167   bp_location_count = 0;
12168   cleanups = make_cleanup (xfree, old_location);
12169
12170   ALL_BREAKPOINTS (b)
12171     for (loc = b->loc; loc; loc = loc->next)
12172       bp_location_count++;
12173
12174   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12175   locp = bp_location;
12176   ALL_BREAKPOINTS (b)
12177     for (loc = b->loc; loc; loc = loc->next)
12178       *locp++ = loc;
12179   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12180          bp_location_compare);
12181
12182   bp_location_target_extensions_update ();
12183
12184   /* Identify bp_location instances that are no longer present in the
12185      new list, and therefore should be freed.  Note that it's not
12186      necessary that those locations should be removed from inferior --
12187      if there's another location at the same address (previously
12188      marked as duplicate), we don't need to remove/insert the
12189      location.
12190      
12191      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12192      and former bp_location array state respectively.  */
12193
12194   locp = bp_location;
12195   for (old_locp = old_location; old_locp < old_location + old_location_count;
12196        old_locp++)
12197     {
12198       struct bp_location *old_loc = *old_locp;
12199       struct bp_location **loc2p;
12200
12201       /* Tells if 'old_loc' is found among the new locations.  If
12202          not, we have to free it.  */
12203       int found_object = 0;
12204       /* Tells if the location should remain inserted in the target.  */
12205       int keep_in_target = 0;
12206       int removed = 0;
12207
12208       /* Skip LOCP entries which will definitely never be needed.
12209          Stop either at or being the one matching OLD_LOC.  */
12210       while (locp < bp_location + bp_location_count
12211              && (*locp)->address < old_loc->address)
12212         locp++;
12213
12214       for (loc2p = locp;
12215            (loc2p < bp_location + bp_location_count
12216             && (*loc2p)->address == old_loc->address);
12217            loc2p++)
12218         {
12219           /* Check if this is a new/duplicated location or a duplicated
12220              location that had its condition modified.  If so, we want to send
12221              its condition to the target if evaluation of conditions is taking
12222              place there.  */
12223           if ((*loc2p)->condition_changed == condition_modified
12224               && (last_addr != old_loc->address
12225                   || last_pspace_num != old_loc->pspace->num))
12226             {
12227               force_breakpoint_reinsertion (*loc2p);
12228               last_pspace_num = old_loc->pspace->num;
12229             }
12230
12231           if (*loc2p == old_loc)
12232             found_object = 1;
12233         }
12234
12235       /* We have already handled this address, update it so that we don't
12236          have to go through updates again.  */
12237       last_addr = old_loc->address;
12238
12239       /* Target-side condition evaluation: Handle deleted locations.  */
12240       if (!found_object)
12241         force_breakpoint_reinsertion (old_loc);
12242
12243       /* If this location is no longer present, and inserted, look if
12244          there's maybe a new location at the same address.  If so,
12245          mark that one inserted, and don't remove this one.  This is
12246          needed so that we don't have a time window where a breakpoint
12247          at certain location is not inserted.  */
12248
12249       if (old_loc->inserted)
12250         {
12251           /* If the location is inserted now, we might have to remove
12252              it.  */
12253
12254           if (found_object && should_be_inserted (old_loc))
12255             {
12256               /* The location is still present in the location list,
12257                  and still should be inserted.  Don't do anything.  */
12258               keep_in_target = 1;
12259             }
12260           else
12261             {
12262               /* This location still exists, but it won't be kept in the
12263                  target since it may have been disabled.  We proceed to
12264                  remove its target-side condition.  */
12265
12266               /* The location is either no longer present, or got
12267                  disabled.  See if there's another location at the
12268                  same address, in which case we don't need to remove
12269                  this one from the target.  */
12270
12271               /* OLD_LOC comes from existing struct breakpoint.  */
12272               if (breakpoint_address_is_meaningful (old_loc->owner))
12273                 {
12274                   for (loc2p = locp;
12275                        (loc2p < bp_location + bp_location_count
12276                         && (*loc2p)->address == old_loc->address);
12277                        loc2p++)
12278                     {
12279                       struct bp_location *loc2 = *loc2p;
12280
12281                       if (breakpoint_locations_match (loc2, old_loc))
12282                         {
12283                           /* Read watchpoint locations are switched to
12284                              access watchpoints, if the former are not
12285                              supported, but the latter are.  */
12286                           if (is_hardware_watchpoint (old_loc->owner))
12287                             {
12288                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12289                               loc2->watchpoint_type = old_loc->watchpoint_type;
12290                             }
12291
12292                           /* loc2 is a duplicated location. We need to check
12293                              if it should be inserted in case it will be
12294                              unduplicated.  */
12295                           if (loc2 != old_loc
12296                               && unduplicated_should_be_inserted (loc2))
12297                             {
12298                               swap_insertion (old_loc, loc2);
12299                               keep_in_target = 1;
12300                               break;
12301                             }
12302                         }
12303                     }
12304                 }
12305             }
12306
12307           if (!keep_in_target)
12308             {
12309               if (remove_breakpoint (old_loc, mark_uninserted))
12310                 {
12311                   /* This is just about all we can do.  We could keep
12312                      this location on the global list, and try to
12313                      remove it next time, but there's no particular
12314                      reason why we will succeed next time.
12315                      
12316                      Note that at this point, old_loc->owner is still
12317                      valid, as delete_breakpoint frees the breakpoint
12318                      only after calling us.  */
12319                   printf_filtered (_("warning: Error removing "
12320                                      "breakpoint %d\n"), 
12321                                    old_loc->owner->number);
12322                 }
12323               removed = 1;
12324             }
12325         }
12326
12327       if (!found_object)
12328         {
12329           if (removed && non_stop
12330               && breakpoint_address_is_meaningful (old_loc->owner)
12331               && !is_hardware_watchpoint (old_loc->owner))
12332             {
12333               /* This location was removed from the target.  In
12334                  non-stop mode, a race condition is possible where
12335                  we've removed a breakpoint, but stop events for that
12336                  breakpoint are already queued and will arrive later.
12337                  We apply an heuristic to be able to distinguish such
12338                  SIGTRAPs from other random SIGTRAPs: we keep this
12339                  breakpoint location for a bit, and will retire it
12340                  after we see some number of events.  The theory here
12341                  is that reporting of events should, "on the average",
12342                  be fair, so after a while we'll see events from all
12343                  threads that have anything of interest, and no longer
12344                  need to keep this breakpoint location around.  We
12345                  don't hold locations forever so to reduce chances of
12346                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12347                  SIGTRAP.
12348
12349                  The heuristic failing can be disastrous on
12350                  decr_pc_after_break targets.
12351
12352                  On decr_pc_after_break targets, like e.g., x86-linux,
12353                  if we fail to recognize a late breakpoint SIGTRAP,
12354                  because events_till_retirement has reached 0 too
12355                  soon, we'll fail to do the PC adjustment, and report
12356                  a random SIGTRAP to the user.  When the user resumes
12357                  the inferior, it will most likely immediately crash
12358                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12359                  corrupted, because of being resumed e.g., in the
12360                  middle of a multi-byte instruction, or skipped a
12361                  one-byte instruction.  This was actually seen happen
12362                  on native x86-linux, and should be less rare on
12363                  targets that do not support new thread events, like
12364                  remote, due to the heuristic depending on
12365                  thread_count.
12366
12367                  Mistaking a random SIGTRAP for a breakpoint trap
12368                  causes similar symptoms (PC adjustment applied when
12369                  it shouldn't), but then again, playing with SIGTRAPs
12370                  behind the debugger's back is asking for trouble.
12371
12372                  Since hardware watchpoint traps are always
12373                  distinguishable from other traps, so we don't need to
12374                  apply keep hardware watchpoint moribund locations
12375                  around.  We simply always ignore hardware watchpoint
12376                  traps we can no longer explain.  */
12377
12378               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12379               old_loc->owner = NULL;
12380
12381               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12382             }
12383           else
12384             {
12385               old_loc->owner = NULL;
12386               decref_bp_location (&old_loc);
12387             }
12388         }
12389     }
12390
12391   /* Rescan breakpoints at the same address and section, marking the
12392      first one as "first" and any others as "duplicates".  This is so
12393      that the bpt instruction is only inserted once.  If we have a
12394      permanent breakpoint at the same place as BPT, make that one the
12395      official one, and the rest as duplicates.  Permanent breakpoints
12396      are sorted first for the same address.
12397
12398      Do the same for hardware watchpoints, but also considering the
12399      watchpoint's type (regular/access/read) and length.  */
12400
12401   bp_loc_first = NULL;
12402   wp_loc_first = NULL;
12403   awp_loc_first = NULL;
12404   rwp_loc_first = NULL;
12405   ALL_BP_LOCATIONS (loc, locp)
12406     {
12407       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12408          non-NULL.  */
12409       struct bp_location **loc_first_p;
12410       b = loc->owner;
12411
12412       if (!unduplicated_should_be_inserted (loc)
12413           || !breakpoint_address_is_meaningful (b)
12414           /* Don't detect duplicate for tracepoint locations because they are
12415            never duplicated.  See the comments in field `duplicate' of
12416            `struct bp_location'.  */
12417           || is_tracepoint (b))
12418         {
12419           /* Clear the condition modification flag.  */
12420           loc->condition_changed = condition_unchanged;
12421           continue;
12422         }
12423
12424       /* Permanent breakpoint should always be inserted.  */
12425       if (b->enable_state == bp_permanent && ! loc->inserted)
12426         internal_error (__FILE__, __LINE__,
12427                         _("allegedly permanent breakpoint is not "
12428                         "actually inserted"));
12429
12430       if (b->type == bp_hardware_watchpoint)
12431         loc_first_p = &wp_loc_first;
12432       else if (b->type == bp_read_watchpoint)
12433         loc_first_p = &rwp_loc_first;
12434       else if (b->type == bp_access_watchpoint)
12435         loc_first_p = &awp_loc_first;
12436       else
12437         loc_first_p = &bp_loc_first;
12438
12439       if (*loc_first_p == NULL
12440           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12441           || !breakpoint_locations_match (loc, *loc_first_p))
12442         {
12443           *loc_first_p = loc;
12444           loc->duplicate = 0;
12445
12446           if (is_breakpoint (loc->owner) && loc->condition_changed)
12447             {
12448               loc->needs_update = 1;
12449               /* Clear the condition modification flag.  */
12450               loc->condition_changed = condition_unchanged;
12451             }
12452           continue;
12453         }
12454
12455
12456       /* This and the above ensure the invariant that the first location
12457          is not duplicated, and is the inserted one.
12458          All following are marked as duplicated, and are not inserted.  */
12459       if (loc->inserted)
12460         swap_insertion (loc, *loc_first_p);
12461       loc->duplicate = 1;
12462
12463       /* Clear the condition modification flag.  */
12464       loc->condition_changed = condition_unchanged;
12465
12466       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12467           && b->enable_state != bp_permanent)
12468         internal_error (__FILE__, __LINE__,
12469                         _("another breakpoint was inserted on top of "
12470                         "a permanent breakpoint"));
12471     }
12472
12473   if (breakpoints_always_inserted_mode ()
12474       && (have_live_inferiors ()
12475           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12476     {
12477       if (should_insert)
12478         insert_breakpoint_locations ();
12479       else
12480         {
12481           /* Though should_insert is false, we may need to update conditions
12482              on the target's side if it is evaluating such conditions.  We
12483              only update conditions for locations that are marked
12484              "needs_update".  */
12485           update_inserted_breakpoint_locations ();
12486         }
12487     }
12488
12489   if (should_insert)
12490     download_tracepoint_locations ();
12491
12492   do_cleanups (cleanups);
12493 }
12494
12495 void
12496 breakpoint_retire_moribund (void)
12497 {
12498   struct bp_location *loc;
12499   int ix;
12500
12501   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12502     if (--(loc->events_till_retirement) == 0)
12503       {
12504         decref_bp_location (&loc);
12505         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12506         --ix;
12507       }
12508 }
12509
12510 static void
12511 update_global_location_list_nothrow (int inserting)
12512 {
12513   volatile struct gdb_exception e;
12514
12515   TRY_CATCH (e, RETURN_MASK_ERROR)
12516     update_global_location_list (inserting);
12517 }
12518
12519 /* Clear BKP from a BPS.  */
12520
12521 static void
12522 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12523 {
12524   bpstat bs;
12525
12526   for (bs = bps; bs; bs = bs->next)
12527     if (bs->breakpoint_at == bpt)
12528       {
12529         bs->breakpoint_at = NULL;
12530         bs->old_val = NULL;
12531         /* bs->commands will be freed later.  */
12532       }
12533 }
12534
12535 /* Callback for iterate_over_threads.  */
12536 static int
12537 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12538 {
12539   struct breakpoint *bpt = data;
12540
12541   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12542   return 0;
12543 }
12544
12545 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12546    callbacks.  */
12547
12548 static void
12549 say_where (struct breakpoint *b)
12550 {
12551   struct value_print_options opts;
12552
12553   get_user_print_options (&opts);
12554
12555   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12556      single string.  */
12557   if (b->loc == NULL)
12558     {
12559       printf_filtered (_(" (%s) pending."), b->addr_string);
12560     }
12561   else
12562     {
12563       if (opts.addressprint || b->loc->symtab == NULL)
12564         {
12565           printf_filtered (" at ");
12566           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12567                           gdb_stdout);
12568         }
12569       if (b->loc->symtab != NULL)
12570         {
12571           /* If there is a single location, we can print the location
12572              more nicely.  */
12573           if (b->loc->next == NULL)
12574             printf_filtered (": file %s, line %d.",
12575                              symtab_to_filename_for_display (b->loc->symtab),
12576                              b->loc->line_number);
12577           else
12578             /* This is not ideal, but each location may have a
12579                different file name, and this at least reflects the
12580                real situation somewhat.  */
12581             printf_filtered (": %s.", b->addr_string);
12582         }
12583
12584       if (b->loc->next)
12585         {
12586           struct bp_location *loc = b->loc;
12587           int n = 0;
12588           for (; loc; loc = loc->next)
12589             ++n;
12590           printf_filtered (" (%d locations)", n);
12591         }
12592     }
12593 }
12594
12595 /* Default bp_location_ops methods.  */
12596
12597 static void
12598 bp_location_dtor (struct bp_location *self)
12599 {
12600   xfree (self->cond);
12601   if (self->cond_bytecode)
12602     free_agent_expr (self->cond_bytecode);
12603   xfree (self->function_name);
12604 }
12605
12606 static const struct bp_location_ops bp_location_ops =
12607 {
12608   bp_location_dtor
12609 };
12610
12611 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12612    inherit from.  */
12613
12614 static void
12615 base_breakpoint_dtor (struct breakpoint *self)
12616 {
12617   decref_counted_command_line (&self->commands);
12618   xfree (self->cond_string);
12619   xfree (self->extra_string);
12620   xfree (self->addr_string);
12621   xfree (self->filter);
12622   xfree (self->addr_string_range_end);
12623 }
12624
12625 static struct bp_location *
12626 base_breakpoint_allocate_location (struct breakpoint *self)
12627 {
12628   struct bp_location *loc;
12629
12630   loc = XNEW (struct bp_location);
12631   init_bp_location (loc, &bp_location_ops, self);
12632   return loc;
12633 }
12634
12635 static void
12636 base_breakpoint_re_set (struct breakpoint *b)
12637 {
12638   /* Nothing to re-set. */
12639 }
12640
12641 #define internal_error_pure_virtual_called() \
12642   gdb_assert_not_reached ("pure virtual function called")
12643
12644 static int
12645 base_breakpoint_insert_location (struct bp_location *bl)
12646 {
12647   internal_error_pure_virtual_called ();
12648 }
12649
12650 static int
12651 base_breakpoint_remove_location (struct bp_location *bl)
12652 {
12653   internal_error_pure_virtual_called ();
12654 }
12655
12656 static int
12657 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12658                                 struct address_space *aspace,
12659                                 CORE_ADDR bp_addr,
12660                                 const struct target_waitstatus *ws)
12661 {
12662   internal_error_pure_virtual_called ();
12663 }
12664
12665 static void
12666 base_breakpoint_check_status (bpstat bs)
12667 {
12668   /* Always stop.   */
12669 }
12670
12671 /* A "works_in_software_mode" breakpoint_ops method that just internal
12672    errors.  */
12673
12674 static int
12675 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12676 {
12677   internal_error_pure_virtual_called ();
12678 }
12679
12680 /* A "resources_needed" breakpoint_ops method that just internal
12681    errors.  */
12682
12683 static int
12684 base_breakpoint_resources_needed (const struct bp_location *bl)
12685 {
12686   internal_error_pure_virtual_called ();
12687 }
12688
12689 static enum print_stop_action
12690 base_breakpoint_print_it (bpstat bs)
12691 {
12692   internal_error_pure_virtual_called ();
12693 }
12694
12695 static void
12696 base_breakpoint_print_one_detail (const struct breakpoint *self,
12697                                   struct ui_out *uiout)
12698 {
12699   /* nothing */
12700 }
12701
12702 static void
12703 base_breakpoint_print_mention (struct breakpoint *b)
12704 {
12705   internal_error_pure_virtual_called ();
12706 }
12707
12708 static void
12709 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12710 {
12711   internal_error_pure_virtual_called ();
12712 }
12713
12714 static void
12715 base_breakpoint_create_sals_from_address (char **arg,
12716                                           struct linespec_result *canonical,
12717                                           enum bptype type_wanted,
12718                                           char *addr_start,
12719                                           char **copy_arg)
12720 {
12721   internal_error_pure_virtual_called ();
12722 }
12723
12724 static void
12725 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12726                                         struct linespec_result *c,
12727                                         struct linespec_sals *lsal,
12728                                         char *cond_string,
12729                                         char *extra_string,
12730                                         enum bptype type_wanted,
12731                                         enum bpdisp disposition,
12732                                         int thread,
12733                                         int task, int ignore_count,
12734                                         const struct breakpoint_ops *o,
12735                                         int from_tty, int enabled,
12736                                         int internal, unsigned flags)
12737 {
12738   internal_error_pure_virtual_called ();
12739 }
12740
12741 static void
12742 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12743                                  struct symtabs_and_lines *sals)
12744 {
12745   internal_error_pure_virtual_called ();
12746 }
12747
12748 /* The default 'explains_signal' method.  */
12749
12750 static enum bpstat_signal_value
12751 base_breakpoint_explains_signal (struct breakpoint *b)
12752 {
12753   return BPSTAT_SIGNAL_HIDE;
12754 }
12755
12756 struct breakpoint_ops base_breakpoint_ops =
12757 {
12758   base_breakpoint_dtor,
12759   base_breakpoint_allocate_location,
12760   base_breakpoint_re_set,
12761   base_breakpoint_insert_location,
12762   base_breakpoint_remove_location,
12763   base_breakpoint_breakpoint_hit,
12764   base_breakpoint_check_status,
12765   base_breakpoint_resources_needed,
12766   base_breakpoint_works_in_software_mode,
12767   base_breakpoint_print_it,
12768   NULL,
12769   base_breakpoint_print_one_detail,
12770   base_breakpoint_print_mention,
12771   base_breakpoint_print_recreate,
12772   base_breakpoint_create_sals_from_address,
12773   base_breakpoint_create_breakpoints_sal,
12774   base_breakpoint_decode_linespec,
12775   base_breakpoint_explains_signal
12776 };
12777
12778 /* Default breakpoint_ops methods.  */
12779
12780 static void
12781 bkpt_re_set (struct breakpoint *b)
12782 {
12783   /* FIXME: is this still reachable?  */
12784   if (b->addr_string == NULL)
12785     {
12786       /* Anything without a string can't be re-set.  */
12787       delete_breakpoint (b);
12788       return;
12789     }
12790
12791   breakpoint_re_set_default (b);
12792 }
12793
12794 static int
12795 bkpt_insert_location (struct bp_location *bl)
12796 {
12797   if (bl->loc_type == bp_loc_hardware_breakpoint)
12798     return target_insert_hw_breakpoint (bl->gdbarch,
12799                                         &bl->target_info);
12800   else
12801     return target_insert_breakpoint (bl->gdbarch,
12802                                      &bl->target_info);
12803 }
12804
12805 static int
12806 bkpt_remove_location (struct bp_location *bl)
12807 {
12808   if (bl->loc_type == bp_loc_hardware_breakpoint)
12809     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12810   else
12811     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12812 }
12813
12814 static int
12815 bkpt_breakpoint_hit (const struct bp_location *bl,
12816                      struct address_space *aspace, CORE_ADDR bp_addr,
12817                      const struct target_waitstatus *ws)
12818 {
12819   if (ws->kind != TARGET_WAITKIND_STOPPED
12820       || ws->value.sig != GDB_SIGNAL_TRAP)
12821     return 0;
12822
12823   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12824                                  aspace, bp_addr))
12825     return 0;
12826
12827   if (overlay_debugging         /* unmapped overlay section */
12828       && section_is_overlay (bl->section)
12829       && !section_is_mapped (bl->section))
12830     return 0;
12831
12832   return 1;
12833 }
12834
12835 static int
12836 bkpt_resources_needed (const struct bp_location *bl)
12837 {
12838   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12839
12840   return 1;
12841 }
12842
12843 static enum print_stop_action
12844 bkpt_print_it (bpstat bs)
12845 {
12846   struct breakpoint *b;
12847   const struct bp_location *bl;
12848   int bp_temp;
12849   struct ui_out *uiout = current_uiout;
12850
12851   gdb_assert (bs->bp_location_at != NULL);
12852
12853   bl = bs->bp_location_at;
12854   b = bs->breakpoint_at;
12855
12856   bp_temp = b->disposition == disp_del;
12857   if (bl->address != bl->requested_address)
12858     breakpoint_adjustment_warning (bl->requested_address,
12859                                    bl->address,
12860                                    b->number, 1);
12861   annotate_breakpoint (b->number);
12862   if (bp_temp)
12863     ui_out_text (uiout, "\nTemporary breakpoint ");
12864   else
12865     ui_out_text (uiout, "\nBreakpoint ");
12866   if (ui_out_is_mi_like_p (uiout))
12867     {
12868       ui_out_field_string (uiout, "reason",
12869                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12870       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12871     }
12872   ui_out_field_int (uiout, "bkptno", b->number);
12873   ui_out_text (uiout, ", ");
12874
12875   return PRINT_SRC_AND_LOC;
12876 }
12877
12878 static void
12879 bkpt_print_mention (struct breakpoint *b)
12880 {
12881   if (ui_out_is_mi_like_p (current_uiout))
12882     return;
12883
12884   switch (b->type)
12885     {
12886     case bp_breakpoint:
12887     case bp_gnu_ifunc_resolver:
12888       if (b->disposition == disp_del)
12889         printf_filtered (_("Temporary breakpoint"));
12890       else
12891         printf_filtered (_("Breakpoint"));
12892       printf_filtered (_(" %d"), b->number);
12893       if (b->type == bp_gnu_ifunc_resolver)
12894         printf_filtered (_(" at gnu-indirect-function resolver"));
12895       break;
12896     case bp_hardware_breakpoint:
12897       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12898       break;
12899     case bp_dprintf:
12900       printf_filtered (_("Dprintf %d"), b->number);
12901       break;
12902     }
12903
12904   say_where (b);
12905 }
12906
12907 static void
12908 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12909 {
12910   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12911     fprintf_unfiltered (fp, "tbreak");
12912   else if (tp->type == bp_breakpoint)
12913     fprintf_unfiltered (fp, "break");
12914   else if (tp->type == bp_hardware_breakpoint
12915            && tp->disposition == disp_del)
12916     fprintf_unfiltered (fp, "thbreak");
12917   else if (tp->type == bp_hardware_breakpoint)
12918     fprintf_unfiltered (fp, "hbreak");
12919   else
12920     internal_error (__FILE__, __LINE__,
12921                     _("unhandled breakpoint type %d"), (int) tp->type);
12922
12923   fprintf_unfiltered (fp, " %s", tp->addr_string);
12924   print_recreate_thread (tp, fp);
12925 }
12926
12927 static void
12928 bkpt_create_sals_from_address (char **arg,
12929                                struct linespec_result *canonical,
12930                                enum bptype type_wanted,
12931                                char *addr_start, char **copy_arg)
12932 {
12933   create_sals_from_address_default (arg, canonical, type_wanted,
12934                                     addr_start, copy_arg);
12935 }
12936
12937 static void
12938 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12939                              struct linespec_result *canonical,
12940                              struct linespec_sals *lsal,
12941                              char *cond_string,
12942                              char *extra_string,
12943                              enum bptype type_wanted,
12944                              enum bpdisp disposition,
12945                              int thread,
12946                              int task, int ignore_count,
12947                              const struct breakpoint_ops *ops,
12948                              int from_tty, int enabled,
12949                              int internal, unsigned flags)
12950 {
12951   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12952                                   cond_string, extra_string,
12953                                   type_wanted,
12954                                   disposition, thread, task,
12955                                   ignore_count, ops, from_tty,
12956                                   enabled, internal, flags);
12957 }
12958
12959 static void
12960 bkpt_decode_linespec (struct breakpoint *b, char **s,
12961                       struct symtabs_and_lines *sals)
12962 {
12963   decode_linespec_default (b, s, sals);
12964 }
12965
12966 /* Virtual table for internal breakpoints.  */
12967
12968 static void
12969 internal_bkpt_re_set (struct breakpoint *b)
12970 {
12971   switch (b->type)
12972     {
12973       /* Delete overlay event and longjmp master breakpoints; they
12974          will be reset later by breakpoint_re_set.  */
12975     case bp_overlay_event:
12976     case bp_longjmp_master:
12977     case bp_std_terminate_master:
12978     case bp_exception_master:
12979       delete_breakpoint (b);
12980       break;
12981
12982       /* This breakpoint is special, it's set up when the inferior
12983          starts and we really don't want to touch it.  */
12984     case bp_shlib_event:
12985
12986       /* Like bp_shlib_event, this breakpoint type is special.  Once
12987          it is set up, we do not want to touch it.  */
12988     case bp_thread_event:
12989       break;
12990     }
12991 }
12992
12993 static void
12994 internal_bkpt_check_status (bpstat bs)
12995 {
12996   if (bs->breakpoint_at->type == bp_shlib_event)
12997     {
12998       /* If requested, stop when the dynamic linker notifies GDB of
12999          events.  This allows the user to get control and place
13000          breakpoints in initializer routines for dynamically loaded
13001          objects (among other things).  */
13002       bs->stop = stop_on_solib_events;
13003       bs->print = stop_on_solib_events;
13004     }
13005   else
13006     bs->stop = 0;
13007 }
13008
13009 static enum print_stop_action
13010 internal_bkpt_print_it (bpstat bs)
13011 {
13012   struct breakpoint *b;
13013
13014   b = bs->breakpoint_at;
13015
13016   switch (b->type)
13017     {
13018     case bp_shlib_event:
13019       /* Did we stop because the user set the stop_on_solib_events
13020          variable?  (If so, we report this as a generic, "Stopped due
13021          to shlib event" message.) */
13022       print_solib_event (0);
13023       break;
13024
13025     case bp_thread_event:
13026       /* Not sure how we will get here.
13027          GDB should not stop for these breakpoints.  */
13028       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13029       break;
13030
13031     case bp_overlay_event:
13032       /* By analogy with the thread event, GDB should not stop for these.  */
13033       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13034       break;
13035
13036     case bp_longjmp_master:
13037       /* These should never be enabled.  */
13038       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13039       break;
13040
13041     case bp_std_terminate_master:
13042       /* These should never be enabled.  */
13043       printf_filtered (_("std::terminate Master Breakpoint: "
13044                          "gdb should not stop!\n"));
13045       break;
13046
13047     case bp_exception_master:
13048       /* These should never be enabled.  */
13049       printf_filtered (_("Exception Master Breakpoint: "
13050                          "gdb should not stop!\n"));
13051       break;
13052     }
13053
13054   return PRINT_NOTHING;
13055 }
13056
13057 static void
13058 internal_bkpt_print_mention (struct breakpoint *b)
13059 {
13060   /* Nothing to mention.  These breakpoints are internal.  */
13061 }
13062
13063 /* Virtual table for momentary breakpoints  */
13064
13065 static void
13066 momentary_bkpt_re_set (struct breakpoint *b)
13067 {
13068   /* Keep temporary breakpoints, which can be encountered when we step
13069      over a dlopen call and solib_add is resetting the breakpoints.
13070      Otherwise these should have been blown away via the cleanup chain
13071      or by breakpoint_init_inferior when we rerun the executable.  */
13072 }
13073
13074 static void
13075 momentary_bkpt_check_status (bpstat bs)
13076 {
13077   /* Nothing.  The point of these breakpoints is causing a stop.  */
13078 }
13079
13080 static enum print_stop_action
13081 momentary_bkpt_print_it (bpstat bs)
13082 {
13083   struct ui_out *uiout = current_uiout;
13084
13085   if (ui_out_is_mi_like_p (uiout))
13086     {
13087       struct breakpoint *b = bs->breakpoint_at;
13088
13089       switch (b->type)
13090         {
13091         case bp_finish:
13092           ui_out_field_string
13093             (uiout, "reason",
13094              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13095           break;
13096
13097         case bp_until:
13098           ui_out_field_string
13099             (uiout, "reason",
13100              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13101           break;
13102         }
13103     }
13104
13105   return PRINT_UNKNOWN;
13106 }
13107
13108 static void
13109 momentary_bkpt_print_mention (struct breakpoint *b)
13110 {
13111   /* Nothing to mention.  These breakpoints are internal.  */
13112 }
13113
13114 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13115
13116    It gets cleared already on the removal of the first one of such placed
13117    breakpoints.  This is OK as they get all removed altogether.  */
13118
13119 static void
13120 longjmp_bkpt_dtor (struct breakpoint *self)
13121 {
13122   struct thread_info *tp = find_thread_id (self->thread);
13123
13124   if (tp)
13125     tp->initiating_frame = null_frame_id;
13126
13127   momentary_breakpoint_ops.dtor (self);
13128 }
13129
13130 /* Specific methods for probe breakpoints.  */
13131
13132 static int
13133 bkpt_probe_insert_location (struct bp_location *bl)
13134 {
13135   int v = bkpt_insert_location (bl);
13136
13137   if (v == 0)
13138     {
13139       /* The insertion was successful, now let's set the probe's semaphore
13140          if needed.  */
13141       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13142     }
13143
13144   return v;
13145 }
13146
13147 static int
13148 bkpt_probe_remove_location (struct bp_location *bl)
13149 {
13150   /* Let's clear the semaphore before removing the location.  */
13151   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13152
13153   return bkpt_remove_location (bl);
13154 }
13155
13156 static void
13157 bkpt_probe_create_sals_from_address (char **arg,
13158                                      struct linespec_result *canonical,
13159                                      enum bptype type_wanted,
13160                                      char *addr_start, char **copy_arg)
13161 {
13162   struct linespec_sals lsal;
13163
13164   lsal.sals = parse_probes (arg, canonical);
13165
13166   *copy_arg = xstrdup (canonical->addr_string);
13167   lsal.canonical = xstrdup (*copy_arg);
13168
13169   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13170 }
13171
13172 static void
13173 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13174                             struct symtabs_and_lines *sals)
13175 {
13176   *sals = parse_probes (s, NULL);
13177   if (!sals->sals)
13178     error (_("probe not found"));
13179 }
13180
13181 /* The breakpoint_ops structure to be used in tracepoints.  */
13182
13183 static void
13184 tracepoint_re_set (struct breakpoint *b)
13185 {
13186   breakpoint_re_set_default (b);
13187 }
13188
13189 static int
13190 tracepoint_breakpoint_hit (const struct bp_location *bl,
13191                            struct address_space *aspace, CORE_ADDR bp_addr,
13192                            const struct target_waitstatus *ws)
13193 {
13194   /* By definition, the inferior does not report stops at
13195      tracepoints.  */
13196   return 0;
13197 }
13198
13199 static void
13200 tracepoint_print_one_detail (const struct breakpoint *self,
13201                              struct ui_out *uiout)
13202 {
13203   struct tracepoint *tp = (struct tracepoint *) self;
13204   if (tp->static_trace_marker_id)
13205     {
13206       gdb_assert (self->type == bp_static_tracepoint);
13207
13208       ui_out_text (uiout, "\tmarker id is ");
13209       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13210                            tp->static_trace_marker_id);
13211       ui_out_text (uiout, "\n");
13212     }
13213 }
13214
13215 static void
13216 tracepoint_print_mention (struct breakpoint *b)
13217 {
13218   if (ui_out_is_mi_like_p (current_uiout))
13219     return;
13220
13221   switch (b->type)
13222     {
13223     case bp_tracepoint:
13224       printf_filtered (_("Tracepoint"));
13225       printf_filtered (_(" %d"), b->number);
13226       break;
13227     case bp_fast_tracepoint:
13228       printf_filtered (_("Fast tracepoint"));
13229       printf_filtered (_(" %d"), b->number);
13230       break;
13231     case bp_static_tracepoint:
13232       printf_filtered (_("Static tracepoint"));
13233       printf_filtered (_(" %d"), b->number);
13234       break;
13235     default:
13236       internal_error (__FILE__, __LINE__,
13237                       _("unhandled tracepoint type %d"), (int) b->type);
13238     }
13239
13240   say_where (b);
13241 }
13242
13243 static void
13244 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13245 {
13246   struct tracepoint *tp = (struct tracepoint *) self;
13247
13248   if (self->type == bp_fast_tracepoint)
13249     fprintf_unfiltered (fp, "ftrace");
13250   if (self->type == bp_static_tracepoint)
13251     fprintf_unfiltered (fp, "strace");
13252   else if (self->type == bp_tracepoint)
13253     fprintf_unfiltered (fp, "trace");
13254   else
13255     internal_error (__FILE__, __LINE__,
13256                     _("unhandled tracepoint type %d"), (int) self->type);
13257
13258   fprintf_unfiltered (fp, " %s", self->addr_string);
13259   print_recreate_thread (self, fp);
13260
13261   if (tp->pass_count)
13262     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13263 }
13264
13265 static void
13266 tracepoint_create_sals_from_address (char **arg,
13267                                      struct linespec_result *canonical,
13268                                      enum bptype type_wanted,
13269                                      char *addr_start, char **copy_arg)
13270 {
13271   create_sals_from_address_default (arg, canonical, type_wanted,
13272                                     addr_start, copy_arg);
13273 }
13274
13275 static void
13276 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13277                                    struct linespec_result *canonical,
13278                                    struct linespec_sals *lsal,
13279                                    char *cond_string,
13280                                    char *extra_string,
13281                                    enum bptype type_wanted,
13282                                    enum bpdisp disposition,
13283                                    int thread,
13284                                    int task, int ignore_count,
13285                                    const struct breakpoint_ops *ops,
13286                                    int from_tty, int enabled,
13287                                    int internal, unsigned flags)
13288 {
13289   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13290                                   cond_string, extra_string,
13291                                   type_wanted,
13292                                   disposition, thread, task,
13293                                   ignore_count, ops, from_tty,
13294                                   enabled, internal, flags);
13295 }
13296
13297 static void
13298 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13299                             struct symtabs_and_lines *sals)
13300 {
13301   decode_linespec_default (b, s, sals);
13302 }
13303
13304 struct breakpoint_ops tracepoint_breakpoint_ops;
13305
13306 /* The breakpoint_ops structure to be use on tracepoints placed in a
13307    static probe.  */
13308
13309 static void
13310 tracepoint_probe_create_sals_from_address (char **arg,
13311                                            struct linespec_result *canonical,
13312                                            enum bptype type_wanted,
13313                                            char *addr_start, char **copy_arg)
13314 {
13315   /* We use the same method for breakpoint on probes.  */
13316   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13317                                        addr_start, copy_arg);
13318 }
13319
13320 static void
13321 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13322                                   struct symtabs_and_lines *sals)
13323 {
13324   /* We use the same method for breakpoint on probes.  */
13325   bkpt_probe_decode_linespec (b, s, sals);
13326 }
13327
13328 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13329
13330 /* Dprintf breakpoint_ops methods.  */
13331
13332 static void
13333 dprintf_re_set (struct breakpoint *b)
13334 {
13335   breakpoint_re_set_default (b);
13336
13337   /* This breakpoint could have been pending, and be resolved now, and
13338      if so, we should now have the extra string.  If we don't, the
13339      dprintf was malformed when created, but we couldn't tell because
13340      we can't extract the extra string until the location is
13341      resolved.  */
13342   if (b->loc != NULL && b->extra_string == NULL)
13343     error (_("Format string required"));
13344
13345   /* 1 - connect to target 1, that can run breakpoint commands.
13346      2 - create a dprintf, which resolves fine.
13347      3 - disconnect from target 1
13348      4 - connect to target 2, that can NOT run breakpoint commands.
13349
13350      After steps #3/#4, you'll want the dprintf command list to
13351      be updated, because target 1 and 2 may well return different
13352      answers for target_can_run_breakpoint_commands().
13353      Given absence of finer grained resetting, we get to do
13354      it all the time.  */
13355   if (b->extra_string != NULL)
13356     update_dprintf_command_list (b);
13357 }
13358
13359 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13360
13361 static void
13362 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13363 {
13364   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13365                       tp->extra_string);
13366   print_recreate_thread (tp, fp);
13367 }
13368
13369 /* The breakpoint_ops structure to be used on static tracepoints with
13370    markers (`-m').  */
13371
13372 static void
13373 strace_marker_create_sals_from_address (char **arg,
13374                                         struct linespec_result *canonical,
13375                                         enum bptype type_wanted,
13376                                         char *addr_start, char **copy_arg)
13377 {
13378   struct linespec_sals lsal;
13379
13380   lsal.sals = decode_static_tracepoint_spec (arg);
13381
13382   *copy_arg = savestring (addr_start, *arg - addr_start);
13383
13384   canonical->addr_string = xstrdup (*copy_arg);
13385   lsal.canonical = xstrdup (*copy_arg);
13386   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13387 }
13388
13389 static void
13390 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13391                                       struct linespec_result *canonical,
13392                                       struct linespec_sals *lsal,
13393                                       char *cond_string,
13394                                       char *extra_string,
13395                                       enum bptype type_wanted,
13396                                       enum bpdisp disposition,
13397                                       int thread,
13398                                       int task, int ignore_count,
13399                                       const struct breakpoint_ops *ops,
13400                                       int from_tty, int enabled,
13401                                       int internal, unsigned flags)
13402 {
13403   int i;
13404
13405   /* If the user is creating a static tracepoint by marker id
13406      (strace -m MARKER_ID), then store the sals index, so that
13407      breakpoint_re_set can try to match up which of the newly
13408      found markers corresponds to this one, and, don't try to
13409      expand multiple locations for each sal, given than SALS
13410      already should contain all sals for MARKER_ID.  */
13411
13412   for (i = 0; i < lsal->sals.nelts; ++i)
13413     {
13414       struct symtabs_and_lines expanded;
13415       struct tracepoint *tp;
13416       struct cleanup *old_chain;
13417       char *addr_string;
13418
13419       expanded.nelts = 1;
13420       expanded.sals = &lsal->sals.sals[i];
13421
13422       addr_string = xstrdup (canonical->addr_string);
13423       old_chain = make_cleanup (xfree, addr_string);
13424
13425       tp = XCNEW (struct tracepoint);
13426       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13427                            addr_string, NULL,
13428                            cond_string, extra_string,
13429                            type_wanted, disposition,
13430                            thread, task, ignore_count, ops,
13431                            from_tty, enabled, internal, flags,
13432                            canonical->special_display);
13433       /* Given that its possible to have multiple markers with
13434          the same string id, if the user is creating a static
13435          tracepoint by marker id ("strace -m MARKER_ID"), then
13436          store the sals index, so that breakpoint_re_set can
13437          try to match up which of the newly found markers
13438          corresponds to this one  */
13439       tp->static_trace_marker_id_idx = i;
13440
13441       install_breakpoint (internal, &tp->base, 0);
13442
13443       discard_cleanups (old_chain);
13444     }
13445 }
13446
13447 static void
13448 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13449                                struct symtabs_and_lines *sals)
13450 {
13451   struct tracepoint *tp = (struct tracepoint *) b;
13452
13453   *sals = decode_static_tracepoint_spec (s);
13454   if (sals->nelts > tp->static_trace_marker_id_idx)
13455     {
13456       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13457       sals->nelts = 1;
13458     }
13459   else
13460     error (_("marker %s not found"), tp->static_trace_marker_id);
13461 }
13462
13463 static struct breakpoint_ops strace_marker_breakpoint_ops;
13464
13465 static int
13466 strace_marker_p (struct breakpoint *b)
13467 {
13468   return b->ops == &strace_marker_breakpoint_ops;
13469 }
13470
13471 /* Delete a breakpoint and clean up all traces of it in the data
13472    structures.  */
13473
13474 void
13475 delete_breakpoint (struct breakpoint *bpt)
13476 {
13477   struct breakpoint *b;
13478
13479   gdb_assert (bpt != NULL);
13480
13481   /* Has this bp already been deleted?  This can happen because
13482      multiple lists can hold pointers to bp's.  bpstat lists are
13483      especial culprits.
13484
13485      One example of this happening is a watchpoint's scope bp.  When
13486      the scope bp triggers, we notice that the watchpoint is out of
13487      scope, and delete it.  We also delete its scope bp.  But the
13488      scope bp is marked "auto-deleting", and is already on a bpstat.
13489      That bpstat is then checked for auto-deleting bp's, which are
13490      deleted.
13491
13492      A real solution to this problem might involve reference counts in
13493      bp's, and/or giving them pointers back to their referencing
13494      bpstat's, and teaching delete_breakpoint to only free a bp's
13495      storage when no more references were extent.  A cheaper bandaid
13496      was chosen.  */
13497   if (bpt->type == bp_none)
13498     return;
13499
13500   /* At least avoid this stale reference until the reference counting
13501      of breakpoints gets resolved.  */
13502   if (bpt->related_breakpoint != bpt)
13503     {
13504       struct breakpoint *related;
13505       struct watchpoint *w;
13506
13507       if (bpt->type == bp_watchpoint_scope)
13508         w = (struct watchpoint *) bpt->related_breakpoint;
13509       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13510         w = (struct watchpoint *) bpt;
13511       else
13512         w = NULL;
13513       if (w != NULL)
13514         watchpoint_del_at_next_stop (w);
13515
13516       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13517       for (related = bpt; related->related_breakpoint != bpt;
13518            related = related->related_breakpoint);
13519       related->related_breakpoint = bpt->related_breakpoint;
13520       bpt->related_breakpoint = bpt;
13521     }
13522
13523   /* watch_command_1 creates a watchpoint but only sets its number if
13524      update_watchpoint succeeds in creating its bp_locations.  If there's
13525      a problem in that process, we'll be asked to delete the half-created
13526      watchpoint.  In that case, don't announce the deletion.  */
13527   if (bpt->number)
13528     observer_notify_breakpoint_deleted (bpt);
13529
13530   if (breakpoint_chain == bpt)
13531     breakpoint_chain = bpt->next;
13532
13533   ALL_BREAKPOINTS (b)
13534     if (b->next == bpt)
13535     {
13536       b->next = bpt->next;
13537       break;
13538     }
13539
13540   /* Be sure no bpstat's are pointing at the breakpoint after it's
13541      been freed.  */
13542   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13543      in all threads for now.  Note that we cannot just remove bpstats
13544      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13545      commands are associated with the bpstat; if we remove it here,
13546      then the later call to bpstat_do_actions (&stop_bpstat); in
13547      event-top.c won't do anything, and temporary breakpoints with
13548      commands won't work.  */
13549
13550   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13551
13552   /* Now that breakpoint is removed from breakpoint list, update the
13553      global location list.  This will remove locations that used to
13554      belong to this breakpoint.  Do this before freeing the breakpoint
13555      itself, since remove_breakpoint looks at location's owner.  It
13556      might be better design to have location completely
13557      self-contained, but it's not the case now.  */
13558   update_global_location_list (0);
13559
13560   bpt->ops->dtor (bpt);
13561   /* On the chance that someone will soon try again to delete this
13562      same bp, we mark it as deleted before freeing its storage.  */
13563   bpt->type = bp_none;
13564   xfree (bpt);
13565 }
13566
13567 static void
13568 do_delete_breakpoint_cleanup (void *b)
13569 {
13570   delete_breakpoint (b);
13571 }
13572
13573 struct cleanup *
13574 make_cleanup_delete_breakpoint (struct breakpoint *b)
13575 {
13576   return make_cleanup (do_delete_breakpoint_cleanup, b);
13577 }
13578
13579 /* Iterator function to call a user-provided callback function once
13580    for each of B and its related breakpoints.  */
13581
13582 static void
13583 iterate_over_related_breakpoints (struct breakpoint *b,
13584                                   void (*function) (struct breakpoint *,
13585                                                     void *),
13586                                   void *data)
13587 {
13588   struct breakpoint *related;
13589
13590   related = b;
13591   do
13592     {
13593       struct breakpoint *next;
13594
13595       /* FUNCTION may delete RELATED.  */
13596       next = related->related_breakpoint;
13597
13598       if (next == related)
13599         {
13600           /* RELATED is the last ring entry.  */
13601           function (related, data);
13602
13603           /* FUNCTION may have deleted it, so we'd never reach back to
13604              B.  There's nothing left to do anyway, so just break
13605              out.  */
13606           break;
13607         }
13608       else
13609         function (related, data);
13610
13611       related = next;
13612     }
13613   while (related != b);
13614 }
13615
13616 static void
13617 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13618 {
13619   delete_breakpoint (b);
13620 }
13621
13622 /* A callback for map_breakpoint_numbers that calls
13623    delete_breakpoint.  */
13624
13625 static void
13626 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13627 {
13628   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13629 }
13630
13631 void
13632 delete_command (char *arg, int from_tty)
13633 {
13634   struct breakpoint *b, *b_tmp;
13635
13636   dont_repeat ();
13637
13638   if (arg == 0)
13639     {
13640       int breaks_to_delete = 0;
13641
13642       /* Delete all breakpoints if no argument.  Do not delete
13643          internal breakpoints, these have to be deleted with an
13644          explicit breakpoint number argument.  */
13645       ALL_BREAKPOINTS (b)
13646         if (user_breakpoint_p (b))
13647           {
13648             breaks_to_delete = 1;
13649             break;
13650           }
13651
13652       /* Ask user only if there are some breakpoints to delete.  */
13653       if (!from_tty
13654           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13655         {
13656           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13657             if (user_breakpoint_p (b))
13658               delete_breakpoint (b);
13659         }
13660     }
13661   else
13662     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13663 }
13664
13665 static int
13666 all_locations_are_pending (struct bp_location *loc)
13667 {
13668   for (; loc; loc = loc->next)
13669     if (!loc->shlib_disabled
13670         && !loc->pspace->executing_startup)
13671       return 0;
13672   return 1;
13673 }
13674
13675 /* Subroutine of update_breakpoint_locations to simplify it.
13676    Return non-zero if multiple fns in list LOC have the same name.
13677    Null names are ignored.  */
13678
13679 static int
13680 ambiguous_names_p (struct bp_location *loc)
13681 {
13682   struct bp_location *l;
13683   htab_t htab = htab_create_alloc (13, htab_hash_string,
13684                                    (int (*) (const void *, 
13685                                              const void *)) streq,
13686                                    NULL, xcalloc, xfree);
13687
13688   for (l = loc; l != NULL; l = l->next)
13689     {
13690       const char **slot;
13691       const char *name = l->function_name;
13692
13693       /* Allow for some names to be NULL, ignore them.  */
13694       if (name == NULL)
13695         continue;
13696
13697       slot = (const char **) htab_find_slot (htab, (const void *) name,
13698                                              INSERT);
13699       /* NOTE: We can assume slot != NULL here because xcalloc never
13700          returns NULL.  */
13701       if (*slot != NULL)
13702         {
13703           htab_delete (htab);
13704           return 1;
13705         }
13706       *slot = name;
13707     }
13708
13709   htab_delete (htab);
13710   return 0;
13711 }
13712
13713 /* When symbols change, it probably means the sources changed as well,
13714    and it might mean the static tracepoint markers are no longer at
13715    the same address or line numbers they used to be at last we
13716    checked.  Losing your static tracepoints whenever you rebuild is
13717    undesirable.  This function tries to resync/rematch gdb static
13718    tracepoints with the markers on the target, for static tracepoints
13719    that have not been set by marker id.  Static tracepoint that have
13720    been set by marker id are reset by marker id in breakpoint_re_set.
13721    The heuristic is:
13722
13723    1) For a tracepoint set at a specific address, look for a marker at
13724    the old PC.  If one is found there, assume to be the same marker.
13725    If the name / string id of the marker found is different from the
13726    previous known name, assume that means the user renamed the marker
13727    in the sources, and output a warning.
13728
13729    2) For a tracepoint set at a given line number, look for a marker
13730    at the new address of the old line number.  If one is found there,
13731    assume to be the same marker.  If the name / string id of the
13732    marker found is different from the previous known name, assume that
13733    means the user renamed the marker in the sources, and output a
13734    warning.
13735
13736    3) If a marker is no longer found at the same address or line, it
13737    may mean the marker no longer exists.  But it may also just mean
13738    the code changed a bit.  Maybe the user added a few lines of code
13739    that made the marker move up or down (in line number terms).  Ask
13740    the target for info about the marker with the string id as we knew
13741    it.  If found, update line number and address in the matching
13742    static tracepoint.  This will get confused if there's more than one
13743    marker with the same ID (possible in UST, although unadvised
13744    precisely because it confuses tools).  */
13745
13746 static struct symtab_and_line
13747 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13748 {
13749   struct tracepoint *tp = (struct tracepoint *) b;
13750   struct static_tracepoint_marker marker;
13751   CORE_ADDR pc;
13752
13753   pc = sal.pc;
13754   if (sal.line)
13755     find_line_pc (sal.symtab, sal.line, &pc);
13756
13757   if (target_static_tracepoint_marker_at (pc, &marker))
13758     {
13759       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13760         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13761                  b->number,
13762                  tp->static_trace_marker_id, marker.str_id);
13763
13764       xfree (tp->static_trace_marker_id);
13765       tp->static_trace_marker_id = xstrdup (marker.str_id);
13766       release_static_tracepoint_marker (&marker);
13767
13768       return sal;
13769     }
13770
13771   /* Old marker wasn't found on target at lineno.  Try looking it up
13772      by string ID.  */
13773   if (!sal.explicit_pc
13774       && sal.line != 0
13775       && sal.symtab != NULL
13776       && tp->static_trace_marker_id != NULL)
13777     {
13778       VEC(static_tracepoint_marker_p) *markers;
13779
13780       markers
13781         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13782
13783       if (!VEC_empty(static_tracepoint_marker_p, markers))
13784         {
13785           struct symtab_and_line sal2;
13786           struct symbol *sym;
13787           struct static_tracepoint_marker *tpmarker;
13788           struct ui_out *uiout = current_uiout;
13789
13790           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13791
13792           xfree (tp->static_trace_marker_id);
13793           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13794
13795           warning (_("marker for static tracepoint %d (%s) not "
13796                      "found at previous line number"),
13797                    b->number, tp->static_trace_marker_id);
13798
13799           init_sal (&sal2);
13800
13801           sal2.pc = tpmarker->address;
13802
13803           sal2 = find_pc_line (tpmarker->address, 0);
13804           sym = find_pc_sect_function (tpmarker->address, NULL);
13805           ui_out_text (uiout, "Now in ");
13806           if (sym)
13807             {
13808               ui_out_field_string (uiout, "func",
13809                                    SYMBOL_PRINT_NAME (sym));
13810               ui_out_text (uiout, " at ");
13811             }
13812           ui_out_field_string (uiout, "file",
13813                                symtab_to_filename_for_display (sal2.symtab));
13814           ui_out_text (uiout, ":");
13815
13816           if (ui_out_is_mi_like_p (uiout))
13817             {
13818               const char *fullname = symtab_to_fullname (sal2.symtab);
13819
13820               ui_out_field_string (uiout, "fullname", fullname);
13821             }
13822
13823           ui_out_field_int (uiout, "line", sal2.line);
13824           ui_out_text (uiout, "\n");
13825
13826           b->loc->line_number = sal2.line;
13827           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13828
13829           xfree (b->addr_string);
13830           b->addr_string = xstrprintf ("%s:%d",
13831                                    symtab_to_filename_for_display (sal2.symtab),
13832                                        b->loc->line_number);
13833
13834           /* Might be nice to check if function changed, and warn if
13835              so.  */
13836
13837           release_static_tracepoint_marker (tpmarker);
13838         }
13839     }
13840   return sal;
13841 }
13842
13843 /* Returns 1 iff locations A and B are sufficiently same that
13844    we don't need to report breakpoint as changed.  */
13845
13846 static int
13847 locations_are_equal (struct bp_location *a, struct bp_location *b)
13848 {
13849   while (a && b)
13850     {
13851       if (a->address != b->address)
13852         return 0;
13853
13854       if (a->shlib_disabled != b->shlib_disabled)
13855         return 0;
13856
13857       if (a->enabled != b->enabled)
13858         return 0;
13859
13860       a = a->next;
13861       b = b->next;
13862     }
13863
13864   if ((a == NULL) != (b == NULL))
13865     return 0;
13866
13867   return 1;
13868 }
13869
13870 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13871    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13872    a ranged breakpoint.  */
13873
13874 void
13875 update_breakpoint_locations (struct breakpoint *b,
13876                              struct symtabs_and_lines sals,
13877                              struct symtabs_and_lines sals_end)
13878 {
13879   int i;
13880   struct bp_location *existing_locations = b->loc;
13881
13882   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13883     {
13884       /* Ranged breakpoints have only one start location and one end
13885          location.  */
13886       b->enable_state = bp_disabled;
13887       update_global_location_list (1);
13888       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13889                            "multiple locations found\n"),
13890                          b->number);
13891       return;
13892     }
13893
13894   /* If there's no new locations, and all existing locations are
13895      pending, don't do anything.  This optimizes the common case where
13896      all locations are in the same shared library, that was unloaded.
13897      We'd like to retain the location, so that when the library is
13898      loaded again, we don't loose the enabled/disabled status of the
13899      individual locations.  */
13900   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13901     return;
13902
13903   b->loc = NULL;
13904
13905   for (i = 0; i < sals.nelts; ++i)
13906     {
13907       struct bp_location *new_loc;
13908
13909       switch_to_program_space_and_thread (sals.sals[i].pspace);
13910
13911       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13912
13913       /* Reparse conditions, they might contain references to the
13914          old symtab.  */
13915       if (b->cond_string != NULL)
13916         {
13917           const char *s;
13918           volatile struct gdb_exception e;
13919
13920           s = b->cond_string;
13921           TRY_CATCH (e, RETURN_MASK_ERROR)
13922             {
13923               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13924                                            block_for_pc (sals.sals[i].pc), 
13925                                            0);
13926             }
13927           if (e.reason < 0)
13928             {
13929               warning (_("failed to reevaluate condition "
13930                          "for breakpoint %d: %s"), 
13931                        b->number, e.message);
13932               new_loc->enabled = 0;
13933             }
13934         }
13935
13936       if (sals_end.nelts)
13937         {
13938           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13939
13940           new_loc->length = end - sals.sals[0].pc + 1;
13941         }
13942     }
13943
13944   /* Update locations of permanent breakpoints.  */
13945   if (b->enable_state == bp_permanent)
13946     make_breakpoint_permanent (b);
13947
13948   /* If possible, carry over 'disable' status from existing
13949      breakpoints.  */
13950   {
13951     struct bp_location *e = existing_locations;
13952     /* If there are multiple breakpoints with the same function name,
13953        e.g. for inline functions, comparing function names won't work.
13954        Instead compare pc addresses; this is just a heuristic as things
13955        may have moved, but in practice it gives the correct answer
13956        often enough until a better solution is found.  */
13957     int have_ambiguous_names = ambiguous_names_p (b->loc);
13958
13959     for (; e; e = e->next)
13960       {
13961         if (!e->enabled && e->function_name)
13962           {
13963             struct bp_location *l = b->loc;
13964             if (have_ambiguous_names)
13965               {
13966                 for (; l; l = l->next)
13967                   if (breakpoint_locations_match (e, l))
13968                     {
13969                       l->enabled = 0;
13970                       break;
13971                     }
13972               }
13973             else
13974               {
13975                 for (; l; l = l->next)
13976                   if (l->function_name
13977                       && strcmp (e->function_name, l->function_name) == 0)
13978                     {
13979                       l->enabled = 0;
13980                       break;
13981                     }
13982               }
13983           }
13984       }
13985   }
13986
13987   if (!locations_are_equal (existing_locations, b->loc))
13988     observer_notify_breakpoint_modified (b);
13989
13990   update_global_location_list (1);
13991 }
13992
13993 /* Find the SaL locations corresponding to the given ADDR_STRING.
13994    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13995
13996 static struct symtabs_and_lines
13997 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13998 {
13999   char *s;
14000   struct symtabs_and_lines sals = {0};
14001   volatile struct gdb_exception e;
14002
14003   gdb_assert (b->ops != NULL);
14004   s = addr_string;
14005
14006   TRY_CATCH (e, RETURN_MASK_ERROR)
14007     {
14008       b->ops->decode_linespec (b, &s, &sals);
14009     }
14010   if (e.reason < 0)
14011     {
14012       int not_found_and_ok = 0;
14013       /* For pending breakpoints, it's expected that parsing will
14014          fail until the right shared library is loaded.  User has
14015          already told to create pending breakpoints and don't need
14016          extra messages.  If breakpoint is in bp_shlib_disabled
14017          state, then user already saw the message about that
14018          breakpoint being disabled, and don't want to see more
14019          errors.  */
14020       if (e.error == NOT_FOUND_ERROR
14021           && (b->condition_not_parsed 
14022               || (b->loc && b->loc->shlib_disabled)
14023               || (b->loc && b->loc->pspace->executing_startup)
14024               || b->enable_state == bp_disabled))
14025         not_found_and_ok = 1;
14026
14027       if (!not_found_and_ok)
14028         {
14029           /* We surely don't want to warn about the same breakpoint
14030              10 times.  One solution, implemented here, is disable
14031              the breakpoint on error.  Another solution would be to
14032              have separate 'warning emitted' flag.  Since this
14033              happens only when a binary has changed, I don't know
14034              which approach is better.  */
14035           b->enable_state = bp_disabled;
14036           throw_exception (e);
14037         }
14038     }
14039
14040   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14041     {
14042       int i;
14043
14044       for (i = 0; i < sals.nelts; ++i)
14045         resolve_sal_pc (&sals.sals[i]);
14046       if (b->condition_not_parsed && s && s[0])
14047         {
14048           char *cond_string, *extra_string;
14049           int thread, task;
14050
14051           find_condition_and_thread (s, sals.sals[0].pc,
14052                                      &cond_string, &thread, &task,
14053                                      &extra_string);
14054           if (cond_string)
14055             b->cond_string = cond_string;
14056           b->thread = thread;
14057           b->task = task;
14058           if (extra_string)
14059             b->extra_string = extra_string;
14060           b->condition_not_parsed = 0;
14061         }
14062
14063       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14064         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14065
14066       *found = 1;
14067     }
14068   else
14069     *found = 0;
14070
14071   return sals;
14072 }
14073
14074 /* The default re_set method, for typical hardware or software
14075    breakpoints.  Reevaluate the breakpoint and recreate its
14076    locations.  */
14077
14078 static void
14079 breakpoint_re_set_default (struct breakpoint *b)
14080 {
14081   int found;
14082   struct symtabs_and_lines sals, sals_end;
14083   struct symtabs_and_lines expanded = {0};
14084   struct symtabs_and_lines expanded_end = {0};
14085
14086   sals = addr_string_to_sals (b, b->addr_string, &found);
14087   if (found)
14088     {
14089       make_cleanup (xfree, sals.sals);
14090       expanded = sals;
14091     }
14092
14093   if (b->addr_string_range_end)
14094     {
14095       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14096       if (found)
14097         {
14098           make_cleanup (xfree, sals_end.sals);
14099           expanded_end = sals_end;
14100         }
14101     }
14102
14103   update_breakpoint_locations (b, expanded, expanded_end);
14104 }
14105
14106 /* Default method for creating SALs from an address string.  It basically
14107    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14108
14109 static void
14110 create_sals_from_address_default (char **arg,
14111                                   struct linespec_result *canonical,
14112                                   enum bptype type_wanted,
14113                                   char *addr_start, char **copy_arg)
14114 {
14115   parse_breakpoint_sals (arg, canonical);
14116 }
14117
14118 /* Call create_breakpoints_sal for the given arguments.  This is the default
14119    function for the `create_breakpoints_sal' method of
14120    breakpoint_ops.  */
14121
14122 static void
14123 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14124                                 struct linespec_result *canonical,
14125                                 struct linespec_sals *lsal,
14126                                 char *cond_string,
14127                                 char *extra_string,
14128                                 enum bptype type_wanted,
14129                                 enum bpdisp disposition,
14130                                 int thread,
14131                                 int task, int ignore_count,
14132                                 const struct breakpoint_ops *ops,
14133                                 int from_tty, int enabled,
14134                                 int internal, unsigned flags)
14135 {
14136   create_breakpoints_sal (gdbarch, canonical, cond_string,
14137                           extra_string,
14138                           type_wanted, disposition,
14139                           thread, task, ignore_count, ops, from_tty,
14140                           enabled, internal, flags);
14141 }
14142
14143 /* Decode the line represented by S by calling decode_line_full.  This is the
14144    default function for the `decode_linespec' method of breakpoint_ops.  */
14145
14146 static void
14147 decode_linespec_default (struct breakpoint *b, char **s,
14148                          struct symtabs_and_lines *sals)
14149 {
14150   struct linespec_result canonical;
14151
14152   init_linespec_result (&canonical);
14153   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14154                     (struct symtab *) NULL, 0,
14155                     &canonical, multiple_symbols_all,
14156                     b->filter);
14157
14158   /* We should get 0 or 1 resulting SALs.  */
14159   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14160
14161   if (VEC_length (linespec_sals, canonical.sals) > 0)
14162     {
14163       struct linespec_sals *lsal;
14164
14165       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14166       *sals = lsal->sals;
14167       /* Arrange it so the destructor does not free the
14168          contents.  */
14169       lsal->sals.sals = NULL;
14170     }
14171
14172   destroy_linespec_result (&canonical);
14173 }
14174
14175 /* Prepare the global context for a re-set of breakpoint B.  */
14176
14177 static struct cleanup *
14178 prepare_re_set_context (struct breakpoint *b)
14179 {
14180   struct cleanup *cleanups;
14181
14182   input_radix = b->input_radix;
14183   cleanups = save_current_space_and_thread ();
14184   if (b->pspace != NULL)
14185     switch_to_program_space_and_thread (b->pspace);
14186   set_language (b->language);
14187
14188   return cleanups;
14189 }
14190
14191 /* Reset a breakpoint given it's struct breakpoint * BINT.
14192    The value we return ends up being the return value from catch_errors.
14193    Unused in this case.  */
14194
14195 static int
14196 breakpoint_re_set_one (void *bint)
14197 {
14198   /* Get past catch_errs.  */
14199   struct breakpoint *b = (struct breakpoint *) bint;
14200   struct cleanup *cleanups;
14201
14202   cleanups = prepare_re_set_context (b);
14203   b->ops->re_set (b);
14204   do_cleanups (cleanups);
14205   return 0;
14206 }
14207
14208 /* Re-set all breakpoints after symbols have been re-loaded.  */
14209 void
14210 breakpoint_re_set (void)
14211 {
14212   struct breakpoint *b, *b_tmp;
14213   enum language save_language;
14214   int save_input_radix;
14215   struct cleanup *old_chain;
14216
14217   save_language = current_language->la_language;
14218   save_input_radix = input_radix;
14219   old_chain = save_current_program_space ();
14220
14221   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14222   {
14223     /* Format possible error msg.  */
14224     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14225                                 b->number);
14226     struct cleanup *cleanups = make_cleanup (xfree, message);
14227     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14228     do_cleanups (cleanups);
14229   }
14230   set_language (save_language);
14231   input_radix = save_input_radix;
14232
14233   jit_breakpoint_re_set ();
14234
14235   do_cleanups (old_chain);
14236
14237   create_overlay_event_breakpoint ();
14238   create_longjmp_master_breakpoint ();
14239   create_std_terminate_master_breakpoint ();
14240   create_exception_master_breakpoint ();
14241 }
14242 \f
14243 /* Reset the thread number of this breakpoint:
14244
14245    - If the breakpoint is for all threads, leave it as-is.
14246    - Else, reset it to the current thread for inferior_ptid.  */
14247 void
14248 breakpoint_re_set_thread (struct breakpoint *b)
14249 {
14250   if (b->thread != -1)
14251     {
14252       if (in_thread_list (inferior_ptid))
14253         b->thread = pid_to_thread_id (inferior_ptid);
14254
14255       /* We're being called after following a fork.  The new fork is
14256          selected as current, and unless this was a vfork will have a
14257          different program space from the original thread.  Reset that
14258          as well.  */
14259       b->loc->pspace = current_program_space;
14260     }
14261 }
14262
14263 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14264    If from_tty is nonzero, it prints a message to that effect,
14265    which ends with a period (no newline).  */
14266
14267 void
14268 set_ignore_count (int bptnum, int count, int from_tty)
14269 {
14270   struct breakpoint *b;
14271
14272   if (count < 0)
14273     count = 0;
14274
14275   ALL_BREAKPOINTS (b)
14276     if (b->number == bptnum)
14277     {
14278       if (is_tracepoint (b))
14279         {
14280           if (from_tty && count != 0)
14281             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14282                              bptnum);
14283           return;
14284         }
14285       
14286       b->ignore_count = count;
14287       if (from_tty)
14288         {
14289           if (count == 0)
14290             printf_filtered (_("Will stop next time "
14291                                "breakpoint %d is reached."),
14292                              bptnum);
14293           else if (count == 1)
14294             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14295                              bptnum);
14296           else
14297             printf_filtered (_("Will ignore next %d "
14298                                "crossings of breakpoint %d."),
14299                              count, bptnum);
14300         }
14301       observer_notify_breakpoint_modified (b);
14302       return;
14303     }
14304
14305   error (_("No breakpoint number %d."), bptnum);
14306 }
14307
14308 /* Command to set ignore-count of breakpoint N to COUNT.  */
14309
14310 static void
14311 ignore_command (char *args, int from_tty)
14312 {
14313   char *p = args;
14314   int num;
14315
14316   if (p == 0)
14317     error_no_arg (_("a breakpoint number"));
14318
14319   num = get_number (&p);
14320   if (num == 0)
14321     error (_("bad breakpoint number: '%s'"), args);
14322   if (*p == 0)
14323     error (_("Second argument (specified ignore-count) is missing."));
14324
14325   set_ignore_count (num,
14326                     longest_to_int (value_as_long (parse_and_eval (p))),
14327                     from_tty);
14328   if (from_tty)
14329     printf_filtered ("\n");
14330 }
14331 \f
14332 /* Call FUNCTION on each of the breakpoints
14333    whose numbers are given in ARGS.  */
14334
14335 static void
14336 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14337                                                       void *),
14338                         void *data)
14339 {
14340   int num;
14341   struct breakpoint *b, *tmp;
14342   int match;
14343   struct get_number_or_range_state state;
14344
14345   if (args == 0)
14346     error_no_arg (_("one or more breakpoint numbers"));
14347
14348   init_number_or_range (&state, args);
14349
14350   while (!state.finished)
14351     {
14352       char *p = state.string;
14353
14354       match = 0;
14355
14356       num = get_number_or_range (&state);
14357       if (num == 0)
14358         {
14359           warning (_("bad breakpoint number at or near '%s'"), p);
14360         }
14361       else
14362         {
14363           ALL_BREAKPOINTS_SAFE (b, tmp)
14364             if (b->number == num)
14365               {
14366                 match = 1;
14367                 function (b, data);
14368                 break;
14369               }
14370           if (match == 0)
14371             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14372         }
14373     }
14374 }
14375
14376 static struct bp_location *
14377 find_location_by_number (char *number)
14378 {
14379   char *dot = strchr (number, '.');
14380   char *p1;
14381   int bp_num;
14382   int loc_num;
14383   struct breakpoint *b;
14384   struct bp_location *loc;  
14385
14386   *dot = '\0';
14387
14388   p1 = number;
14389   bp_num = get_number (&p1);
14390   if (bp_num == 0)
14391     error (_("Bad breakpoint number '%s'"), number);
14392
14393   ALL_BREAKPOINTS (b)
14394     if (b->number == bp_num)
14395       {
14396         break;
14397       }
14398
14399   if (!b || b->number != bp_num)
14400     error (_("Bad breakpoint number '%s'"), number);
14401   
14402   p1 = dot+1;
14403   loc_num = get_number (&p1);
14404   if (loc_num == 0)
14405     error (_("Bad breakpoint location number '%s'"), number);
14406
14407   --loc_num;
14408   loc = b->loc;
14409   for (;loc_num && loc; --loc_num, loc = loc->next)
14410     ;
14411   if (!loc)
14412     error (_("Bad breakpoint location number '%s'"), dot+1);
14413     
14414   return loc;  
14415 }
14416
14417
14418 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14419    If from_tty is nonzero, it prints a message to that effect,
14420    which ends with a period (no newline).  */
14421
14422 void
14423 disable_breakpoint (struct breakpoint *bpt)
14424 {
14425   /* Never disable a watchpoint scope breakpoint; we want to
14426      hit them when we leave scope so we can delete both the
14427      watchpoint and its scope breakpoint at that time.  */
14428   if (bpt->type == bp_watchpoint_scope)
14429     return;
14430
14431   /* You can't disable permanent breakpoints.  */
14432   if (bpt->enable_state == bp_permanent)
14433     return;
14434
14435   bpt->enable_state = bp_disabled;
14436
14437   /* Mark breakpoint locations modified.  */
14438   mark_breakpoint_modified (bpt);
14439
14440   if (target_supports_enable_disable_tracepoint ()
14441       && current_trace_status ()->running && is_tracepoint (bpt))
14442     {
14443       struct bp_location *location;
14444      
14445       for (location = bpt->loc; location; location = location->next)
14446         target_disable_tracepoint (location);
14447     }
14448
14449   update_global_location_list (0);
14450
14451   observer_notify_breakpoint_modified (bpt);
14452 }
14453
14454 /* A callback for iterate_over_related_breakpoints.  */
14455
14456 static void
14457 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14458 {
14459   disable_breakpoint (b);
14460 }
14461
14462 /* A callback for map_breakpoint_numbers that calls
14463    disable_breakpoint.  */
14464
14465 static void
14466 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14467 {
14468   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14469 }
14470
14471 static void
14472 disable_command (char *args, int from_tty)
14473 {
14474   if (args == 0)
14475     {
14476       struct breakpoint *bpt;
14477
14478       ALL_BREAKPOINTS (bpt)
14479         if (user_breakpoint_p (bpt))
14480           disable_breakpoint (bpt);
14481     }
14482   else if (strchr (args, '.'))
14483     {
14484       struct bp_location *loc = find_location_by_number (args);
14485       if (loc)
14486         {
14487           if (loc->enabled)
14488             {
14489               loc->enabled = 0;
14490               mark_breakpoint_location_modified (loc);
14491             }
14492           if (target_supports_enable_disable_tracepoint ()
14493               && current_trace_status ()->running && loc->owner
14494               && is_tracepoint (loc->owner))
14495             target_disable_tracepoint (loc);
14496         }
14497       update_global_location_list (0);
14498     }
14499   else
14500     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14501 }
14502
14503 static void
14504 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14505                         int count)
14506 {
14507   int target_resources_ok;
14508
14509   if (bpt->type == bp_hardware_breakpoint)
14510     {
14511       int i;
14512       i = hw_breakpoint_used_count ();
14513       target_resources_ok = 
14514         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14515                                             i + 1, 0);
14516       if (target_resources_ok == 0)
14517         error (_("No hardware breakpoint support in the target."));
14518       else if (target_resources_ok < 0)
14519         error (_("Hardware breakpoints used exceeds limit."));
14520     }
14521
14522   if (is_watchpoint (bpt))
14523     {
14524       /* Initialize it just to avoid a GCC false warning.  */
14525       enum enable_state orig_enable_state = 0;
14526       volatile struct gdb_exception e;
14527
14528       TRY_CATCH (e, RETURN_MASK_ALL)
14529         {
14530           struct watchpoint *w = (struct watchpoint *) bpt;
14531
14532           orig_enable_state = bpt->enable_state;
14533           bpt->enable_state = bp_enabled;
14534           update_watchpoint (w, 1 /* reparse */);
14535         }
14536       if (e.reason < 0)
14537         {
14538           bpt->enable_state = orig_enable_state;
14539           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14540                              bpt->number);
14541           return;
14542         }
14543     }
14544
14545   if (bpt->enable_state != bp_permanent)
14546     bpt->enable_state = bp_enabled;
14547
14548   bpt->enable_state = bp_enabled;
14549
14550   /* Mark breakpoint locations modified.  */
14551   mark_breakpoint_modified (bpt);
14552
14553   if (target_supports_enable_disable_tracepoint ()
14554       && current_trace_status ()->running && is_tracepoint (bpt))
14555     {
14556       struct bp_location *location;
14557
14558       for (location = bpt->loc; location; location = location->next)
14559         target_enable_tracepoint (location);
14560     }
14561
14562   bpt->disposition = disposition;
14563   bpt->enable_count = count;
14564   update_global_location_list (1);
14565
14566   observer_notify_breakpoint_modified (bpt);
14567 }
14568
14569
14570 void
14571 enable_breakpoint (struct breakpoint *bpt)
14572 {
14573   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14574 }
14575
14576 static void
14577 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14578 {
14579   enable_breakpoint (bpt);
14580 }
14581
14582 /* A callback for map_breakpoint_numbers that calls
14583    enable_breakpoint.  */
14584
14585 static void
14586 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14587 {
14588   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14589 }
14590
14591 /* The enable command enables the specified breakpoints (or all defined
14592    breakpoints) so they once again become (or continue to be) effective
14593    in stopping the inferior.  */
14594
14595 static void
14596 enable_command (char *args, int from_tty)
14597 {
14598   if (args == 0)
14599     {
14600       struct breakpoint *bpt;
14601
14602       ALL_BREAKPOINTS (bpt)
14603         if (user_breakpoint_p (bpt))
14604           enable_breakpoint (bpt);
14605     }
14606   else if (strchr (args, '.'))
14607     {
14608       struct bp_location *loc = find_location_by_number (args);
14609       if (loc)
14610         {
14611           if (!loc->enabled)
14612             {
14613               loc->enabled = 1;
14614               mark_breakpoint_location_modified (loc);
14615             }
14616           if (target_supports_enable_disable_tracepoint ()
14617               && current_trace_status ()->running && loc->owner
14618               && is_tracepoint (loc->owner))
14619             target_enable_tracepoint (loc);
14620         }
14621       update_global_location_list (1);
14622     }
14623   else
14624     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14625 }
14626
14627 /* This struct packages up disposition data for application to multiple
14628    breakpoints.  */
14629
14630 struct disp_data
14631 {
14632   enum bpdisp disp;
14633   int count;
14634 };
14635
14636 static void
14637 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14638 {
14639   struct disp_data disp_data = *(struct disp_data *) arg;
14640
14641   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14642 }
14643
14644 static void
14645 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14646 {
14647   struct disp_data disp = { disp_disable, 1 };
14648
14649   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14650 }
14651
14652 static void
14653 enable_once_command (char *args, int from_tty)
14654 {
14655   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14656 }
14657
14658 static void
14659 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14660 {
14661   struct disp_data disp = { disp_disable, *(int *) countptr };
14662
14663   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14664 }
14665
14666 static void
14667 enable_count_command (char *args, int from_tty)
14668 {
14669   int count = get_number (&args);
14670
14671   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14672 }
14673
14674 static void
14675 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14676 {
14677   struct disp_data disp = { disp_del, 1 };
14678
14679   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14680 }
14681
14682 static void
14683 enable_delete_command (char *args, int from_tty)
14684 {
14685   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14686 }
14687 \f
14688 static void
14689 set_breakpoint_cmd (char *args, int from_tty)
14690 {
14691 }
14692
14693 static void
14694 show_breakpoint_cmd (char *args, int from_tty)
14695 {
14696 }
14697
14698 /* Invalidate last known value of any hardware watchpoint if
14699    the memory which that value represents has been written to by
14700    GDB itself.  */
14701
14702 static void
14703 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14704                                       CORE_ADDR addr, ssize_t len,
14705                                       const bfd_byte *data)
14706 {
14707   struct breakpoint *bp;
14708
14709   ALL_BREAKPOINTS (bp)
14710     if (bp->enable_state == bp_enabled
14711         && bp->type == bp_hardware_watchpoint)
14712       {
14713         struct watchpoint *wp = (struct watchpoint *) bp;
14714
14715         if (wp->val_valid && wp->val)
14716           {
14717             struct bp_location *loc;
14718
14719             for (loc = bp->loc; loc != NULL; loc = loc->next)
14720               if (loc->loc_type == bp_loc_hardware_watchpoint
14721                   && loc->address + loc->length > addr
14722                   && addr + len > loc->address)
14723                 {
14724                   value_free (wp->val);
14725                   wp->val = NULL;
14726                   wp->val_valid = 0;
14727                 }
14728           }
14729       }
14730 }
14731
14732 /* Create and insert a raw software breakpoint at PC.  Return an
14733    identifier, which should be used to remove the breakpoint later.
14734    In general, places which call this should be using something on the
14735    breakpoint chain instead; this function should be eliminated
14736    someday.  */
14737
14738 void *
14739 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14740                                   struct address_space *aspace, CORE_ADDR pc)
14741 {
14742   struct bp_target_info *bp_tgt;
14743
14744   bp_tgt = XZALLOC (struct bp_target_info);
14745
14746   bp_tgt->placed_address_space = aspace;
14747   bp_tgt->placed_address = pc;
14748
14749   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14750     {
14751       /* Could not insert the breakpoint.  */
14752       xfree (bp_tgt);
14753       return NULL;
14754     }
14755
14756   return bp_tgt;
14757 }
14758
14759 /* Remove a breakpoint BP inserted by
14760    deprecated_insert_raw_breakpoint.  */
14761
14762 int
14763 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14764 {
14765   struct bp_target_info *bp_tgt = bp;
14766   int ret;
14767
14768   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14769   xfree (bp_tgt);
14770
14771   return ret;
14772 }
14773
14774 /* One (or perhaps two) breakpoints used for software single
14775    stepping.  */
14776
14777 static void *single_step_breakpoints[2];
14778 static struct gdbarch *single_step_gdbarch[2];
14779
14780 /* Create and insert a breakpoint for software single step.  */
14781
14782 void
14783 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14784                                struct address_space *aspace, 
14785                                CORE_ADDR next_pc)
14786 {
14787   void **bpt_p;
14788
14789   if (single_step_breakpoints[0] == NULL)
14790     {
14791       bpt_p = &single_step_breakpoints[0];
14792       single_step_gdbarch[0] = gdbarch;
14793     }
14794   else
14795     {
14796       gdb_assert (single_step_breakpoints[1] == NULL);
14797       bpt_p = &single_step_breakpoints[1];
14798       single_step_gdbarch[1] = gdbarch;
14799     }
14800
14801   /* NOTE drow/2006-04-11: A future improvement to this function would
14802      be to only create the breakpoints once, and actually put them on
14803      the breakpoint chain.  That would let us use set_raw_breakpoint.
14804      We could adjust the addresses each time they were needed.  Doing
14805      this requires corresponding changes elsewhere where single step
14806      breakpoints are handled, however.  So, for now, we use this.  */
14807
14808   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14809   if (*bpt_p == NULL)
14810     error (_("Could not insert single-step breakpoint at %s"),
14811              paddress (gdbarch, next_pc));
14812 }
14813
14814 /* Check if the breakpoints used for software single stepping
14815    were inserted or not.  */
14816
14817 int
14818 single_step_breakpoints_inserted (void)
14819 {
14820   return (single_step_breakpoints[0] != NULL
14821           || single_step_breakpoints[1] != NULL);
14822 }
14823
14824 /* Remove and delete any breakpoints used for software single step.  */
14825
14826 void
14827 remove_single_step_breakpoints (void)
14828 {
14829   gdb_assert (single_step_breakpoints[0] != NULL);
14830
14831   /* See insert_single_step_breakpoint for more about this deprecated
14832      call.  */
14833   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14834                                     single_step_breakpoints[0]);
14835   single_step_gdbarch[0] = NULL;
14836   single_step_breakpoints[0] = NULL;
14837
14838   if (single_step_breakpoints[1] != NULL)
14839     {
14840       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14841                                         single_step_breakpoints[1]);
14842       single_step_gdbarch[1] = NULL;
14843       single_step_breakpoints[1] = NULL;
14844     }
14845 }
14846
14847 /* Delete software single step breakpoints without removing them from
14848    the inferior.  This is intended to be used if the inferior's address
14849    space where they were inserted is already gone, e.g. after exit or
14850    exec.  */
14851
14852 void
14853 cancel_single_step_breakpoints (void)
14854 {
14855   int i;
14856
14857   for (i = 0; i < 2; i++)
14858     if (single_step_breakpoints[i])
14859       {
14860         xfree (single_step_breakpoints[i]);
14861         single_step_breakpoints[i] = NULL;
14862         single_step_gdbarch[i] = NULL;
14863       }
14864 }
14865
14866 /* Detach software single-step breakpoints from INFERIOR_PTID without
14867    removing them.  */
14868
14869 static void
14870 detach_single_step_breakpoints (void)
14871 {
14872   int i;
14873
14874   for (i = 0; i < 2; i++)
14875     if (single_step_breakpoints[i])
14876       target_remove_breakpoint (single_step_gdbarch[i],
14877                                 single_step_breakpoints[i]);
14878 }
14879
14880 /* Check whether a software single-step breakpoint is inserted at
14881    PC.  */
14882
14883 static int
14884 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14885                                         CORE_ADDR pc)
14886 {
14887   int i;
14888
14889   for (i = 0; i < 2; i++)
14890     {
14891       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14892       if (bp_tgt
14893           && breakpoint_address_match (bp_tgt->placed_address_space,
14894                                        bp_tgt->placed_address,
14895                                        aspace, pc))
14896         return 1;
14897     }
14898
14899   return 0;
14900 }
14901
14902 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14903    non-zero otherwise.  */
14904 static int
14905 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14906 {
14907   if (syscall_catchpoint_p (bp)
14908       && bp->enable_state != bp_disabled
14909       && bp->enable_state != bp_call_disabled)
14910     return 1;
14911   else
14912     return 0;
14913 }
14914
14915 int
14916 catch_syscall_enabled (void)
14917 {
14918   struct catch_syscall_inferior_data *inf_data
14919     = get_catch_syscall_inferior_data (current_inferior ());
14920
14921   return inf_data->total_syscalls_count != 0;
14922 }
14923
14924 int
14925 catching_syscall_number (int syscall_number)
14926 {
14927   struct breakpoint *bp;
14928
14929   ALL_BREAKPOINTS (bp)
14930     if (is_syscall_catchpoint_enabled (bp))
14931       {
14932         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14933
14934         if (c->syscalls_to_be_caught)
14935           {
14936             int i, iter;
14937             for (i = 0;
14938                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14939                  i++)
14940               if (syscall_number == iter)
14941                 return 1;
14942           }
14943         else
14944           return 1;
14945       }
14946
14947   return 0;
14948 }
14949
14950 /* Complete syscall names.  Used by "catch syscall".  */
14951 static VEC (char_ptr) *
14952 catch_syscall_completer (struct cmd_list_element *cmd,
14953                          const char *text, const char *word)
14954 {
14955   const char **list = get_syscall_names ();
14956   VEC (char_ptr) *retlist
14957     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14958
14959   xfree (list);
14960   return retlist;
14961 }
14962
14963 /* Tracepoint-specific operations.  */
14964
14965 /* Set tracepoint count to NUM.  */
14966 static void
14967 set_tracepoint_count (int num)
14968 {
14969   tracepoint_count = num;
14970   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14971 }
14972
14973 static void
14974 trace_command (char *arg, int from_tty)
14975 {
14976   struct breakpoint_ops *ops;
14977   const char *arg_cp = arg;
14978
14979   if (arg && probe_linespec_to_ops (&arg_cp))
14980     ops = &tracepoint_probe_breakpoint_ops;
14981   else
14982     ops = &tracepoint_breakpoint_ops;
14983
14984   create_breakpoint (get_current_arch (),
14985                      arg,
14986                      NULL, 0, NULL, 1 /* parse arg */,
14987                      0 /* tempflag */,
14988                      bp_tracepoint /* type_wanted */,
14989                      0 /* Ignore count */,
14990                      pending_break_support,
14991                      ops,
14992                      from_tty,
14993                      1 /* enabled */,
14994                      0 /* internal */, 0);
14995 }
14996
14997 static void
14998 ftrace_command (char *arg, int from_tty)
14999 {
15000   create_breakpoint (get_current_arch (),
15001                      arg,
15002                      NULL, 0, NULL, 1 /* parse arg */,
15003                      0 /* tempflag */,
15004                      bp_fast_tracepoint /* type_wanted */,
15005                      0 /* Ignore count */,
15006                      pending_break_support,
15007                      &tracepoint_breakpoint_ops,
15008                      from_tty,
15009                      1 /* enabled */,
15010                      0 /* internal */, 0);
15011 }
15012
15013 /* strace command implementation.  Creates a static tracepoint.  */
15014
15015 static void
15016 strace_command (char *arg, int from_tty)
15017 {
15018   struct breakpoint_ops *ops;
15019
15020   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15021      or with a normal static tracepoint.  */
15022   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15023     ops = &strace_marker_breakpoint_ops;
15024   else
15025     ops = &tracepoint_breakpoint_ops;
15026
15027   create_breakpoint (get_current_arch (),
15028                      arg,
15029                      NULL, 0, NULL, 1 /* parse arg */,
15030                      0 /* tempflag */,
15031                      bp_static_tracepoint /* type_wanted */,
15032                      0 /* Ignore count */,
15033                      pending_break_support,
15034                      ops,
15035                      from_tty,
15036                      1 /* enabled */,
15037                      0 /* internal */, 0);
15038 }
15039
15040 /* Set up a fake reader function that gets command lines from a linked
15041    list that was acquired during tracepoint uploading.  */
15042
15043 static struct uploaded_tp *this_utp;
15044 static int next_cmd;
15045
15046 static char *
15047 read_uploaded_action (void)
15048 {
15049   char *rslt;
15050
15051   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15052
15053   next_cmd++;
15054
15055   return rslt;
15056 }
15057
15058 /* Given information about a tracepoint as recorded on a target (which
15059    can be either a live system or a trace file), attempt to create an
15060    equivalent GDB tracepoint.  This is not a reliable process, since
15061    the target does not necessarily have all the information used when
15062    the tracepoint was originally defined.  */
15063   
15064 struct tracepoint *
15065 create_tracepoint_from_upload (struct uploaded_tp *utp)
15066 {
15067   char *addr_str, small_buf[100];
15068   struct tracepoint *tp;
15069
15070   if (utp->at_string)
15071     addr_str = utp->at_string;
15072   else
15073     {
15074       /* In the absence of a source location, fall back to raw
15075          address.  Since there is no way to confirm that the address
15076          means the same thing as when the trace was started, warn the
15077          user.  */
15078       warning (_("Uploaded tracepoint %d has no "
15079                  "source location, using raw address"),
15080                utp->number);
15081       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15082       addr_str = small_buf;
15083     }
15084
15085   /* There's not much we can do with a sequence of bytecodes.  */
15086   if (utp->cond && !utp->cond_string)
15087     warning (_("Uploaded tracepoint %d condition "
15088                "has no source form, ignoring it"),
15089              utp->number);
15090
15091   if (!create_breakpoint (get_current_arch (),
15092                           addr_str,
15093                           utp->cond_string, -1, NULL,
15094                           0 /* parse cond/thread */,
15095                           0 /* tempflag */,
15096                           utp->type /* type_wanted */,
15097                           0 /* Ignore count */,
15098                           pending_break_support,
15099                           &tracepoint_breakpoint_ops,
15100                           0 /* from_tty */,
15101                           utp->enabled /* enabled */,
15102                           0 /* internal */,
15103                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15104     return NULL;
15105
15106   /* Get the tracepoint we just created.  */
15107   tp = get_tracepoint (tracepoint_count);
15108   gdb_assert (tp != NULL);
15109
15110   if (utp->pass > 0)
15111     {
15112       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15113                  tp->base.number);
15114
15115       trace_pass_command (small_buf, 0);
15116     }
15117
15118   /* If we have uploaded versions of the original commands, set up a
15119      special-purpose "reader" function and call the usual command line
15120      reader, then pass the result to the breakpoint command-setting
15121      function.  */
15122   if (!VEC_empty (char_ptr, utp->cmd_strings))
15123     {
15124       struct command_line *cmd_list;
15125
15126       this_utp = utp;
15127       next_cmd = 0;
15128
15129       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15130
15131       breakpoint_set_commands (&tp->base, cmd_list);
15132     }
15133   else if (!VEC_empty (char_ptr, utp->actions)
15134            || !VEC_empty (char_ptr, utp->step_actions))
15135     warning (_("Uploaded tracepoint %d actions "
15136                "have no source form, ignoring them"),
15137              utp->number);
15138
15139   /* Copy any status information that might be available.  */
15140   tp->base.hit_count = utp->hit_count;
15141   tp->traceframe_usage = utp->traceframe_usage;
15142
15143   return tp;
15144 }
15145   
15146 /* Print information on tracepoint number TPNUM_EXP, or all if
15147    omitted.  */
15148
15149 static void
15150 tracepoints_info (char *args, int from_tty)
15151 {
15152   struct ui_out *uiout = current_uiout;
15153   int num_printed;
15154
15155   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15156
15157   if (num_printed == 0)
15158     {
15159       if (args == NULL || *args == '\0')
15160         ui_out_message (uiout, 0, "No tracepoints.\n");
15161       else
15162         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15163     }
15164
15165   default_collect_info ();
15166 }
15167
15168 /* The 'enable trace' command enables tracepoints.
15169    Not supported by all targets.  */
15170 static void
15171 enable_trace_command (char *args, int from_tty)
15172 {
15173   enable_command (args, from_tty);
15174 }
15175
15176 /* The 'disable trace' command disables tracepoints.
15177    Not supported by all targets.  */
15178 static void
15179 disable_trace_command (char *args, int from_tty)
15180 {
15181   disable_command (args, from_tty);
15182 }
15183
15184 /* Remove a tracepoint (or all if no argument).  */
15185 static void
15186 delete_trace_command (char *arg, int from_tty)
15187 {
15188   struct breakpoint *b, *b_tmp;
15189
15190   dont_repeat ();
15191
15192   if (arg == 0)
15193     {
15194       int breaks_to_delete = 0;
15195
15196       /* Delete all breakpoints if no argument.
15197          Do not delete internal or call-dummy breakpoints, these
15198          have to be deleted with an explicit breakpoint number 
15199          argument.  */
15200       ALL_TRACEPOINTS (b)
15201         if (is_tracepoint (b) && user_breakpoint_p (b))
15202           {
15203             breaks_to_delete = 1;
15204             break;
15205           }
15206
15207       /* Ask user only if there are some breakpoints to delete.  */
15208       if (!from_tty
15209           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15210         {
15211           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15212             if (is_tracepoint (b) && user_breakpoint_p (b))
15213               delete_breakpoint (b);
15214         }
15215     }
15216   else
15217     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15218 }
15219
15220 /* Helper function for trace_pass_command.  */
15221
15222 static void
15223 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15224 {
15225   tp->pass_count = count;
15226   observer_notify_breakpoint_modified (&tp->base);
15227   if (from_tty)
15228     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15229                      tp->base.number, count);
15230 }
15231
15232 /* Set passcount for tracepoint.
15233
15234    First command argument is passcount, second is tracepoint number.
15235    If tracepoint number omitted, apply to most recently defined.
15236    Also accepts special argument "all".  */
15237
15238 static void
15239 trace_pass_command (char *args, int from_tty)
15240 {
15241   struct tracepoint *t1;
15242   unsigned int count;
15243
15244   if (args == 0 || *args == 0)
15245     error (_("passcount command requires an "
15246              "argument (count + optional TP num)"));
15247
15248   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15249
15250   args = skip_spaces (args);
15251   if (*args && strncasecmp (args, "all", 3) == 0)
15252     {
15253       struct breakpoint *b;
15254
15255       args += 3;                        /* Skip special argument "all".  */
15256       if (*args)
15257         error (_("Junk at end of arguments."));
15258
15259       ALL_TRACEPOINTS (b)
15260       {
15261         t1 = (struct tracepoint *) b;
15262         trace_pass_set_count (t1, count, from_tty);
15263       }
15264     }
15265   else if (*args == '\0')
15266     {
15267       t1 = get_tracepoint_by_number (&args, NULL, 1);
15268       if (t1)
15269         trace_pass_set_count (t1, count, from_tty);
15270     }
15271   else
15272     {
15273       struct get_number_or_range_state state;
15274
15275       init_number_or_range (&state, args);
15276       while (!state.finished)
15277         {
15278           t1 = get_tracepoint_by_number (&args, &state, 1);
15279           if (t1)
15280             trace_pass_set_count (t1, count, from_tty);
15281         }
15282     }
15283 }
15284
15285 struct tracepoint *
15286 get_tracepoint (int num)
15287 {
15288   struct breakpoint *t;
15289
15290   ALL_TRACEPOINTS (t)
15291     if (t->number == num)
15292       return (struct tracepoint *) t;
15293
15294   return NULL;
15295 }
15296
15297 /* Find the tracepoint with the given target-side number (which may be
15298    different from the tracepoint number after disconnecting and
15299    reconnecting).  */
15300
15301 struct tracepoint *
15302 get_tracepoint_by_number_on_target (int num)
15303 {
15304   struct breakpoint *b;
15305
15306   ALL_TRACEPOINTS (b)
15307     {
15308       struct tracepoint *t = (struct tracepoint *) b;
15309
15310       if (t->number_on_target == num)
15311         return t;
15312     }
15313
15314   return NULL;
15315 }
15316
15317 /* Utility: parse a tracepoint number and look it up in the list.
15318    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15319    If OPTIONAL_P is true, then if the argument is missing, the most
15320    recent tracepoint (tracepoint_count) is returned.  */
15321 struct tracepoint *
15322 get_tracepoint_by_number (char **arg,
15323                           struct get_number_or_range_state *state,
15324                           int optional_p)
15325 {
15326   struct breakpoint *t;
15327   int tpnum;
15328   char *instring = arg == NULL ? NULL : *arg;
15329
15330   if (state)
15331     {
15332       gdb_assert (!state->finished);
15333       tpnum = get_number_or_range (state);
15334     }
15335   else if (arg == NULL || *arg == NULL || ! **arg)
15336     {
15337       if (optional_p)
15338         tpnum = tracepoint_count;
15339       else
15340         error_no_arg (_("tracepoint number"));
15341     }
15342   else
15343     tpnum = get_number (arg);
15344
15345   if (tpnum <= 0)
15346     {
15347       if (instring && *instring)
15348         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15349                          instring);
15350       else
15351         printf_filtered (_("Tracepoint argument missing "
15352                            "and no previous tracepoint\n"));
15353       return NULL;
15354     }
15355
15356   ALL_TRACEPOINTS (t)
15357     if (t->number == tpnum)
15358     {
15359       return (struct tracepoint *) t;
15360     }
15361
15362   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15363   return NULL;
15364 }
15365
15366 void
15367 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15368 {
15369   if (b->thread != -1)
15370     fprintf_unfiltered (fp, " thread %d", b->thread);
15371
15372   if (b->task != 0)
15373     fprintf_unfiltered (fp, " task %d", b->task);
15374
15375   fprintf_unfiltered (fp, "\n");
15376 }
15377
15378 /* Save information on user settable breakpoints (watchpoints, etc) to
15379    a new script file named FILENAME.  If FILTER is non-NULL, call it
15380    on each breakpoint and only include the ones for which it returns
15381    non-zero.  */
15382
15383 static void
15384 save_breakpoints (char *filename, int from_tty,
15385                   int (*filter) (const struct breakpoint *))
15386 {
15387   struct breakpoint *tp;
15388   int any = 0;
15389   char *pathname;
15390   struct cleanup *cleanup;
15391   struct ui_file *fp;
15392   int extra_trace_bits = 0;
15393
15394   if (filename == 0 || *filename == 0)
15395     error (_("Argument required (file name in which to save)"));
15396
15397   /* See if we have anything to save.  */
15398   ALL_BREAKPOINTS (tp)
15399   {
15400     /* Skip internal and momentary breakpoints.  */
15401     if (!user_breakpoint_p (tp))
15402       continue;
15403
15404     /* If we have a filter, only save the breakpoints it accepts.  */
15405     if (filter && !filter (tp))
15406       continue;
15407
15408     any = 1;
15409
15410     if (is_tracepoint (tp))
15411       {
15412         extra_trace_bits = 1;
15413
15414         /* We can stop searching.  */
15415         break;
15416       }
15417   }
15418
15419   if (!any)
15420     {
15421       warning (_("Nothing to save."));
15422       return;
15423     }
15424
15425   pathname = tilde_expand (filename);
15426   cleanup = make_cleanup (xfree, pathname);
15427   fp = gdb_fopen (pathname, "w");
15428   if (!fp)
15429     error (_("Unable to open file '%s' for saving (%s)"),
15430            filename, safe_strerror (errno));
15431   make_cleanup_ui_file_delete (fp);
15432
15433   if (extra_trace_bits)
15434     save_trace_state_variables (fp);
15435
15436   ALL_BREAKPOINTS (tp)
15437   {
15438     /* Skip internal and momentary breakpoints.  */
15439     if (!user_breakpoint_p (tp))
15440       continue;
15441
15442     /* If we have a filter, only save the breakpoints it accepts.  */
15443     if (filter && !filter (tp))
15444       continue;
15445
15446     tp->ops->print_recreate (tp, fp);
15447
15448     /* Note, we can't rely on tp->number for anything, as we can't
15449        assume the recreated breakpoint numbers will match.  Use $bpnum
15450        instead.  */
15451
15452     if (tp->cond_string)
15453       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15454
15455     if (tp->ignore_count)
15456       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15457
15458     if (tp->type != bp_dprintf && tp->commands)
15459       {
15460         volatile struct gdb_exception ex;       
15461
15462         fprintf_unfiltered (fp, "  commands\n");
15463         
15464         ui_out_redirect (current_uiout, fp);
15465         TRY_CATCH (ex, RETURN_MASK_ALL)
15466           {
15467             print_command_lines (current_uiout, tp->commands->commands, 2);
15468           }
15469         ui_out_redirect (current_uiout, NULL);
15470
15471         if (ex.reason < 0)
15472           throw_exception (ex);
15473
15474         fprintf_unfiltered (fp, "  end\n");
15475       }
15476
15477     if (tp->enable_state == bp_disabled)
15478       fprintf_unfiltered (fp, "disable\n");
15479
15480     /* If this is a multi-location breakpoint, check if the locations
15481        should be individually disabled.  Watchpoint locations are
15482        special, and not user visible.  */
15483     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15484       {
15485         struct bp_location *loc;
15486         int n = 1;
15487
15488         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15489           if (!loc->enabled)
15490             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15491       }
15492   }
15493
15494   if (extra_trace_bits && *default_collect)
15495     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15496
15497   do_cleanups (cleanup);
15498   if (from_tty)
15499     printf_filtered (_("Saved to file '%s'.\n"), filename);
15500 }
15501
15502 /* The `save breakpoints' command.  */
15503
15504 static void
15505 save_breakpoints_command (char *args, int from_tty)
15506 {
15507   save_breakpoints (args, from_tty, NULL);
15508 }
15509
15510 /* The `save tracepoints' command.  */
15511
15512 static void
15513 save_tracepoints_command (char *args, int from_tty)
15514 {
15515   save_breakpoints (args, from_tty, is_tracepoint);
15516 }
15517
15518 /* Create a vector of all tracepoints.  */
15519
15520 VEC(breakpoint_p) *
15521 all_tracepoints (void)
15522 {
15523   VEC(breakpoint_p) *tp_vec = 0;
15524   struct breakpoint *tp;
15525
15526   ALL_TRACEPOINTS (tp)
15527   {
15528     VEC_safe_push (breakpoint_p, tp_vec, tp);
15529   }
15530
15531   return tp_vec;
15532 }
15533
15534 \f
15535 /* This help string is used for the break, hbreak, tbreak and thbreak
15536    commands.  It is defined as a macro to prevent duplication.
15537    COMMAND should be a string constant containing the name of the
15538    command.  */
15539 #define BREAK_ARGS_HELP(command) \
15540 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15541 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15542 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15543 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15544 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15545 If a line number is specified, break at start of code for that line.\n\
15546 If a function is specified, break at start of code for that function.\n\
15547 If an address is specified, break at that exact address.\n\
15548 With no LOCATION, uses current execution address of the selected\n\
15549 stack frame.  This is useful for breaking on return to a stack frame.\n\
15550 \n\
15551 THREADNUM is the number from \"info threads\".\n\
15552 CONDITION is a boolean expression.\n\
15553 \n\
15554 Multiple breakpoints at one place are permitted, and useful if their\n\
15555 conditions are different.\n\
15556 \n\
15557 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15558
15559 /* List of subcommands for "catch".  */
15560 static struct cmd_list_element *catch_cmdlist;
15561
15562 /* List of subcommands for "tcatch".  */
15563 static struct cmd_list_element *tcatch_cmdlist;
15564
15565 void
15566 add_catch_command (char *name, char *docstring,
15567                    void (*sfunc) (char *args, int from_tty,
15568                                   struct cmd_list_element *command),
15569                    completer_ftype *completer,
15570                    void *user_data_catch,
15571                    void *user_data_tcatch)
15572 {
15573   struct cmd_list_element *command;
15574
15575   command = add_cmd (name, class_breakpoint, NULL, docstring,
15576                      &catch_cmdlist);
15577   set_cmd_sfunc (command, sfunc);
15578   set_cmd_context (command, user_data_catch);
15579   set_cmd_completer (command, completer);
15580
15581   command = add_cmd (name, class_breakpoint, NULL, docstring,
15582                      &tcatch_cmdlist);
15583   set_cmd_sfunc (command, sfunc);
15584   set_cmd_context (command, user_data_tcatch);
15585   set_cmd_completer (command, completer);
15586 }
15587
15588 static void
15589 clear_syscall_counts (struct inferior *inf)
15590 {
15591   struct catch_syscall_inferior_data *inf_data
15592     = get_catch_syscall_inferior_data (inf);
15593
15594   inf_data->total_syscalls_count = 0;
15595   inf_data->any_syscall_count = 0;
15596   VEC_free (int, inf_data->syscalls_counts);
15597 }
15598
15599 static void
15600 save_command (char *arg, int from_tty)
15601 {
15602   printf_unfiltered (_("\"save\" must be followed by "
15603                        "the name of a save subcommand.\n"));
15604   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15605 }
15606
15607 struct breakpoint *
15608 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15609                           void *data)
15610 {
15611   struct breakpoint *b, *b_tmp;
15612
15613   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15614     {
15615       if ((*callback) (b, data))
15616         return b;
15617     }
15618
15619   return NULL;
15620 }
15621
15622 /* Zero if any of the breakpoint's locations could be a location where
15623    functions have been inlined, nonzero otherwise.  */
15624
15625 static int
15626 is_non_inline_function (struct breakpoint *b)
15627 {
15628   /* The shared library event breakpoint is set on the address of a
15629      non-inline function.  */
15630   if (b->type == bp_shlib_event)
15631     return 1;
15632
15633   return 0;
15634 }
15635
15636 /* Nonzero if the specified PC cannot be a location where functions
15637    have been inlined.  */
15638
15639 int
15640 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15641                            const struct target_waitstatus *ws)
15642 {
15643   struct breakpoint *b;
15644   struct bp_location *bl;
15645
15646   ALL_BREAKPOINTS (b)
15647     {
15648       if (!is_non_inline_function (b))
15649         continue;
15650
15651       for (bl = b->loc; bl != NULL; bl = bl->next)
15652         {
15653           if (!bl->shlib_disabled
15654               && bpstat_check_location (bl, aspace, pc, ws))
15655             return 1;
15656         }
15657     }
15658
15659   return 0;
15660 }
15661
15662 /* Remove any references to OBJFILE which is going to be freed.  */
15663
15664 void
15665 breakpoint_free_objfile (struct objfile *objfile)
15666 {
15667   struct bp_location **locp, *loc;
15668
15669   ALL_BP_LOCATIONS (loc, locp)
15670     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15671       loc->symtab = NULL;
15672 }
15673
15674 void
15675 initialize_breakpoint_ops (void)
15676 {
15677   static int initialized = 0;
15678
15679   struct breakpoint_ops *ops;
15680
15681   if (initialized)
15682     return;
15683   initialized = 1;
15684
15685   /* The breakpoint_ops structure to be inherit by all kinds of
15686      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15687      internal and momentary breakpoints, etc.).  */
15688   ops = &bkpt_base_breakpoint_ops;
15689   *ops = base_breakpoint_ops;
15690   ops->re_set = bkpt_re_set;
15691   ops->insert_location = bkpt_insert_location;
15692   ops->remove_location = bkpt_remove_location;
15693   ops->breakpoint_hit = bkpt_breakpoint_hit;
15694   ops->create_sals_from_address = bkpt_create_sals_from_address;
15695   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15696   ops->decode_linespec = bkpt_decode_linespec;
15697
15698   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15699   ops = &bkpt_breakpoint_ops;
15700   *ops = bkpt_base_breakpoint_ops;
15701   ops->re_set = bkpt_re_set;
15702   ops->resources_needed = bkpt_resources_needed;
15703   ops->print_it = bkpt_print_it;
15704   ops->print_mention = bkpt_print_mention;
15705   ops->print_recreate = bkpt_print_recreate;
15706
15707   /* Ranged breakpoints.  */
15708   ops = &ranged_breakpoint_ops;
15709   *ops = bkpt_breakpoint_ops;
15710   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15711   ops->resources_needed = resources_needed_ranged_breakpoint;
15712   ops->print_it = print_it_ranged_breakpoint;
15713   ops->print_one = print_one_ranged_breakpoint;
15714   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15715   ops->print_mention = print_mention_ranged_breakpoint;
15716   ops->print_recreate = print_recreate_ranged_breakpoint;
15717
15718   /* Internal breakpoints.  */
15719   ops = &internal_breakpoint_ops;
15720   *ops = bkpt_base_breakpoint_ops;
15721   ops->re_set = internal_bkpt_re_set;
15722   ops->check_status = internal_bkpt_check_status;
15723   ops->print_it = internal_bkpt_print_it;
15724   ops->print_mention = internal_bkpt_print_mention;
15725
15726   /* Momentary breakpoints.  */
15727   ops = &momentary_breakpoint_ops;
15728   *ops = bkpt_base_breakpoint_ops;
15729   ops->re_set = momentary_bkpt_re_set;
15730   ops->check_status = momentary_bkpt_check_status;
15731   ops->print_it = momentary_bkpt_print_it;
15732   ops->print_mention = momentary_bkpt_print_mention;
15733
15734   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15735   ops = &longjmp_breakpoint_ops;
15736   *ops = momentary_breakpoint_ops;
15737   ops->dtor = longjmp_bkpt_dtor;
15738
15739   /* Probe breakpoints.  */
15740   ops = &bkpt_probe_breakpoint_ops;
15741   *ops = bkpt_breakpoint_ops;
15742   ops->insert_location = bkpt_probe_insert_location;
15743   ops->remove_location = bkpt_probe_remove_location;
15744   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15745   ops->decode_linespec = bkpt_probe_decode_linespec;
15746
15747   /* Watchpoints.  */
15748   ops = &watchpoint_breakpoint_ops;
15749   *ops = base_breakpoint_ops;
15750   ops->dtor = dtor_watchpoint;
15751   ops->re_set = re_set_watchpoint;
15752   ops->insert_location = insert_watchpoint;
15753   ops->remove_location = remove_watchpoint;
15754   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15755   ops->check_status = check_status_watchpoint;
15756   ops->resources_needed = resources_needed_watchpoint;
15757   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15758   ops->print_it = print_it_watchpoint;
15759   ops->print_mention = print_mention_watchpoint;
15760   ops->print_recreate = print_recreate_watchpoint;
15761
15762   /* Masked watchpoints.  */
15763   ops = &masked_watchpoint_breakpoint_ops;
15764   *ops = watchpoint_breakpoint_ops;
15765   ops->insert_location = insert_masked_watchpoint;
15766   ops->remove_location = remove_masked_watchpoint;
15767   ops->resources_needed = resources_needed_masked_watchpoint;
15768   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15769   ops->print_it = print_it_masked_watchpoint;
15770   ops->print_one_detail = print_one_detail_masked_watchpoint;
15771   ops->print_mention = print_mention_masked_watchpoint;
15772   ops->print_recreate = print_recreate_masked_watchpoint;
15773
15774   /* Tracepoints.  */
15775   ops = &tracepoint_breakpoint_ops;
15776   *ops = base_breakpoint_ops;
15777   ops->re_set = tracepoint_re_set;
15778   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15779   ops->print_one_detail = tracepoint_print_one_detail;
15780   ops->print_mention = tracepoint_print_mention;
15781   ops->print_recreate = tracepoint_print_recreate;
15782   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15783   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15784   ops->decode_linespec = tracepoint_decode_linespec;
15785
15786   /* Probe tracepoints.  */
15787   ops = &tracepoint_probe_breakpoint_ops;
15788   *ops = tracepoint_breakpoint_ops;
15789   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15790   ops->decode_linespec = tracepoint_probe_decode_linespec;
15791
15792   /* Static tracepoints with marker (`-m').  */
15793   ops = &strace_marker_breakpoint_ops;
15794   *ops = tracepoint_breakpoint_ops;
15795   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15796   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15797   ops->decode_linespec = strace_marker_decode_linespec;
15798
15799   /* Fork catchpoints.  */
15800   ops = &catch_fork_breakpoint_ops;
15801   *ops = base_breakpoint_ops;
15802   ops->insert_location = insert_catch_fork;
15803   ops->remove_location = remove_catch_fork;
15804   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15805   ops->print_it = print_it_catch_fork;
15806   ops->print_one = print_one_catch_fork;
15807   ops->print_mention = print_mention_catch_fork;
15808   ops->print_recreate = print_recreate_catch_fork;
15809
15810   /* Vfork catchpoints.  */
15811   ops = &catch_vfork_breakpoint_ops;
15812   *ops = base_breakpoint_ops;
15813   ops->insert_location = insert_catch_vfork;
15814   ops->remove_location = remove_catch_vfork;
15815   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15816   ops->print_it = print_it_catch_vfork;
15817   ops->print_one = print_one_catch_vfork;
15818   ops->print_mention = print_mention_catch_vfork;
15819   ops->print_recreate = print_recreate_catch_vfork;
15820
15821   /* Exec catchpoints.  */
15822   ops = &catch_exec_breakpoint_ops;
15823   *ops = base_breakpoint_ops;
15824   ops->dtor = dtor_catch_exec;
15825   ops->insert_location = insert_catch_exec;
15826   ops->remove_location = remove_catch_exec;
15827   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15828   ops->print_it = print_it_catch_exec;
15829   ops->print_one = print_one_catch_exec;
15830   ops->print_mention = print_mention_catch_exec;
15831   ops->print_recreate = print_recreate_catch_exec;
15832
15833   /* Syscall catchpoints.  */
15834   ops = &catch_syscall_breakpoint_ops;
15835   *ops = base_breakpoint_ops;
15836   ops->dtor = dtor_catch_syscall;
15837   ops->insert_location = insert_catch_syscall;
15838   ops->remove_location = remove_catch_syscall;
15839   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15840   ops->print_it = print_it_catch_syscall;
15841   ops->print_one = print_one_catch_syscall;
15842   ops->print_mention = print_mention_catch_syscall;
15843   ops->print_recreate = print_recreate_catch_syscall;
15844
15845   /* Solib-related catchpoints.  */
15846   ops = &catch_solib_breakpoint_ops;
15847   *ops = base_breakpoint_ops;
15848   ops->dtor = dtor_catch_solib;
15849   ops->insert_location = insert_catch_solib;
15850   ops->remove_location = remove_catch_solib;
15851   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15852   ops->check_status = check_status_catch_solib;
15853   ops->print_it = print_it_catch_solib;
15854   ops->print_one = print_one_catch_solib;
15855   ops->print_mention = print_mention_catch_solib;
15856   ops->print_recreate = print_recreate_catch_solib;
15857
15858   ops = &dprintf_breakpoint_ops;
15859   *ops = bkpt_base_breakpoint_ops;
15860   ops->re_set = dprintf_re_set;
15861   ops->resources_needed = bkpt_resources_needed;
15862   ops->print_it = bkpt_print_it;
15863   ops->print_mention = bkpt_print_mention;
15864   ops->print_recreate = dprintf_print_recreate;
15865 }
15866
15867 /* Chain containing all defined "enable breakpoint" subcommands.  */
15868
15869 static struct cmd_list_element *enablebreaklist = NULL;
15870
15871 void
15872 _initialize_breakpoint (void)
15873 {
15874   struct cmd_list_element *c;
15875
15876   initialize_breakpoint_ops ();
15877
15878   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15879   observer_attach_inferior_exit (clear_syscall_counts);
15880   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15881
15882   breakpoint_objfile_key
15883     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15884
15885   catch_syscall_inferior_data
15886     = register_inferior_data_with_cleanup (NULL,
15887                                            catch_syscall_inferior_data_cleanup);
15888
15889   breakpoint_chain = 0;
15890   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15891      before a breakpoint is set.  */
15892   breakpoint_count = 0;
15893
15894   tracepoint_count = 0;
15895
15896   add_com ("ignore", class_breakpoint, ignore_command, _("\
15897 Set ignore-count of breakpoint number N to COUNT.\n\
15898 Usage is `ignore N COUNT'."));
15899   if (xdb_commands)
15900     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15901
15902   add_com ("commands", class_breakpoint, commands_command, _("\
15903 Set commands to be executed when a breakpoint is hit.\n\
15904 Give breakpoint number as argument after \"commands\".\n\
15905 With no argument, the targeted breakpoint is the last one set.\n\
15906 The commands themselves follow starting on the next line.\n\
15907 Type a line containing \"end\" to indicate the end of them.\n\
15908 Give \"silent\" as the first line to make the breakpoint silent;\n\
15909 then no output is printed when it is hit, except what the commands print."));
15910
15911   c = add_com ("condition", class_breakpoint, condition_command, _("\
15912 Specify breakpoint number N to break only if COND is true.\n\
15913 Usage is `condition N COND', where N is an integer and COND is an\n\
15914 expression to be evaluated whenever breakpoint N is reached."));
15915   set_cmd_completer (c, condition_completer);
15916
15917   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15918 Set a temporary breakpoint.\n\
15919 Like \"break\" except the breakpoint is only temporary,\n\
15920 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15921 by using \"enable delete\" on the breakpoint number.\n\
15922 \n"
15923 BREAK_ARGS_HELP ("tbreak")));
15924   set_cmd_completer (c, location_completer);
15925
15926   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15927 Set a hardware assisted breakpoint.\n\
15928 Like \"break\" except the breakpoint requires hardware support,\n\
15929 some target hardware may not have this support.\n\
15930 \n"
15931 BREAK_ARGS_HELP ("hbreak")));
15932   set_cmd_completer (c, location_completer);
15933
15934   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15935 Set a temporary hardware assisted breakpoint.\n\
15936 Like \"hbreak\" except the breakpoint is only temporary,\n\
15937 so it will be deleted when hit.\n\
15938 \n"
15939 BREAK_ARGS_HELP ("thbreak")));
15940   set_cmd_completer (c, location_completer);
15941
15942   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15943 Enable some breakpoints.\n\
15944 Give breakpoint numbers (separated by spaces) as arguments.\n\
15945 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15946 This is used to cancel the effect of the \"disable\" command.\n\
15947 With a subcommand you can enable temporarily."),
15948                   &enablelist, "enable ", 1, &cmdlist);
15949   if (xdb_commands)
15950     add_com ("ab", class_breakpoint, enable_command, _("\
15951 Enable some breakpoints.\n\
15952 Give breakpoint numbers (separated by spaces) as arguments.\n\
15953 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15954 This is used to cancel the effect of the \"disable\" command.\n\
15955 With a subcommand you can enable temporarily."));
15956
15957   add_com_alias ("en", "enable", class_breakpoint, 1);
15958
15959   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15960 Enable some breakpoints.\n\
15961 Give breakpoint numbers (separated by spaces) as arguments.\n\
15962 This is used to cancel the effect of the \"disable\" command.\n\
15963 May be abbreviated to simply \"enable\".\n"),
15964                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15965
15966   add_cmd ("once", no_class, enable_once_command, _("\
15967 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15968 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15969            &enablebreaklist);
15970
15971   add_cmd ("delete", no_class, enable_delete_command, _("\
15972 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15973 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15974            &enablebreaklist);
15975
15976   add_cmd ("count", no_class, enable_count_command, _("\
15977 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15978 If a breakpoint is hit while enabled in this fashion,\n\
15979 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15980            &enablebreaklist);
15981
15982   add_cmd ("delete", no_class, enable_delete_command, _("\
15983 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15984 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15985            &enablelist);
15986
15987   add_cmd ("once", no_class, enable_once_command, _("\
15988 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15989 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15990            &enablelist);
15991
15992   add_cmd ("count", no_class, enable_count_command, _("\
15993 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15994 If a breakpoint is hit while enabled in this fashion,\n\
15995 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15996            &enablelist);
15997
15998   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15999 Disable some breakpoints.\n\
16000 Arguments are breakpoint numbers with spaces in between.\n\
16001 To disable all breakpoints, give no argument.\n\
16002 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16003                   &disablelist, "disable ", 1, &cmdlist);
16004   add_com_alias ("dis", "disable", class_breakpoint, 1);
16005   add_com_alias ("disa", "disable", class_breakpoint, 1);
16006   if (xdb_commands)
16007     add_com ("sb", class_breakpoint, disable_command, _("\
16008 Disable some breakpoints.\n\
16009 Arguments are breakpoint numbers with spaces in between.\n\
16010 To disable all breakpoints, give no argument.\n\
16011 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16012
16013   add_cmd ("breakpoints", class_alias, disable_command, _("\
16014 Disable some breakpoints.\n\
16015 Arguments are breakpoint numbers with spaces in between.\n\
16016 To disable all breakpoints, give no argument.\n\
16017 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16018 This command may be abbreviated \"disable\"."),
16019            &disablelist);
16020
16021   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16022 Delete some breakpoints or auto-display expressions.\n\
16023 Arguments are breakpoint numbers with spaces in between.\n\
16024 To delete all breakpoints, give no argument.\n\
16025 \n\
16026 Also a prefix command for deletion of other GDB objects.\n\
16027 The \"unset\" command is also an alias for \"delete\"."),
16028                   &deletelist, "delete ", 1, &cmdlist);
16029   add_com_alias ("d", "delete", class_breakpoint, 1);
16030   add_com_alias ("del", "delete", class_breakpoint, 1);
16031   if (xdb_commands)
16032     add_com ("db", class_breakpoint, delete_command, _("\
16033 Delete some breakpoints.\n\
16034 Arguments are breakpoint numbers with spaces in between.\n\
16035 To delete all breakpoints, give no argument.\n"));
16036
16037   add_cmd ("breakpoints", class_alias, delete_command, _("\
16038 Delete some breakpoints or auto-display expressions.\n\
16039 Arguments are breakpoint numbers with spaces in between.\n\
16040 To delete all breakpoints, give no argument.\n\
16041 This command may be abbreviated \"delete\"."),
16042            &deletelist);
16043
16044   add_com ("clear", class_breakpoint, clear_command, _("\
16045 Clear breakpoint at specified line or function.\n\
16046 Argument may be line number, function name, or \"*\" and an address.\n\
16047 If line number is specified, all breakpoints in that line are cleared.\n\
16048 If function is specified, breakpoints at beginning of function are cleared.\n\
16049 If an address is specified, breakpoints at that address are cleared.\n\
16050 \n\
16051 With no argument, clears all breakpoints in the line that the selected frame\n\
16052 is executing in.\n\
16053 \n\
16054 See also the \"delete\" command which clears breakpoints by number."));
16055   add_com_alias ("cl", "clear", class_breakpoint, 1);
16056
16057   c = add_com ("break", class_breakpoint, break_command, _("\
16058 Set breakpoint at specified line or function.\n"
16059 BREAK_ARGS_HELP ("break")));
16060   set_cmd_completer (c, location_completer);
16061
16062   add_com_alias ("b", "break", class_run, 1);
16063   add_com_alias ("br", "break", class_run, 1);
16064   add_com_alias ("bre", "break", class_run, 1);
16065   add_com_alias ("brea", "break", class_run, 1);
16066
16067   if (xdb_commands)
16068    add_com_alias ("ba", "break", class_breakpoint, 1);
16069
16070   if (dbx_commands)
16071     {
16072       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16073 Break in function/address or break at a line in the current file."),
16074                              &stoplist, "stop ", 1, &cmdlist);
16075       add_cmd ("in", class_breakpoint, stopin_command,
16076                _("Break in function or address."), &stoplist);
16077       add_cmd ("at", class_breakpoint, stopat_command,
16078                _("Break at a line in the current file."), &stoplist);
16079       add_com ("status", class_info, breakpoints_info, _("\
16080 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16081 The \"Type\" column indicates one of:\n\
16082 \tbreakpoint     - normal breakpoint\n\
16083 \twatchpoint     - watchpoint\n\
16084 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16085 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16086 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16087 address and file/line number respectively.\n\
16088 \n\
16089 Convenience variable \"$_\" and default examine address for \"x\"\n\
16090 are set to the address of the last breakpoint listed unless the command\n\
16091 is prefixed with \"server \".\n\n\
16092 Convenience variable \"$bpnum\" contains the number of the last\n\
16093 breakpoint set."));
16094     }
16095
16096   add_info ("breakpoints", breakpoints_info, _("\
16097 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16098 The \"Type\" column indicates one of:\n\
16099 \tbreakpoint     - normal breakpoint\n\
16100 \twatchpoint     - watchpoint\n\
16101 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16102 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16103 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16104 address and file/line number respectively.\n\
16105 \n\
16106 Convenience variable \"$_\" and default examine address for \"x\"\n\
16107 are set to the address of the last breakpoint listed unless the command\n\
16108 is prefixed with \"server \".\n\n\
16109 Convenience variable \"$bpnum\" contains the number of the last\n\
16110 breakpoint set."));
16111
16112   add_info_alias ("b", "breakpoints", 1);
16113
16114   if (xdb_commands)
16115     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16116 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16117 The \"Type\" column indicates one of:\n\
16118 \tbreakpoint     - normal breakpoint\n\
16119 \twatchpoint     - watchpoint\n\
16120 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16121 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16122 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16123 address and file/line number respectively.\n\
16124 \n\
16125 Convenience variable \"$_\" and default examine address for \"x\"\n\
16126 are set to the address of the last breakpoint listed unless the command\n\
16127 is prefixed with \"server \".\n\n\
16128 Convenience variable \"$bpnum\" contains the number of the last\n\
16129 breakpoint set."));
16130
16131   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16132 Status of all breakpoints, or breakpoint number NUMBER.\n\
16133 The \"Type\" column indicates one of:\n\
16134 \tbreakpoint     - normal breakpoint\n\
16135 \twatchpoint     - watchpoint\n\
16136 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16137 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16138 \tuntil          - internal breakpoint used by the \"until\" command\n\
16139 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16140 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16141 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16142 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16143 address and file/line number respectively.\n\
16144 \n\
16145 Convenience variable \"$_\" and default examine address for \"x\"\n\
16146 are set to the address of the last breakpoint listed unless the command\n\
16147 is prefixed with \"server \".\n\n\
16148 Convenience variable \"$bpnum\" contains the number of the last\n\
16149 breakpoint set."),
16150            &maintenanceinfolist);
16151
16152   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16153 Set catchpoints to catch events."),
16154                   &catch_cmdlist, "catch ",
16155                   0/*allow-unknown*/, &cmdlist);
16156
16157   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16158 Set temporary catchpoints to catch events."),
16159                   &tcatch_cmdlist, "tcatch ",
16160                   0/*allow-unknown*/, &cmdlist);
16161
16162   add_catch_command ("fork", _("Catch calls to fork."),
16163                      catch_fork_command_1,
16164                      NULL,
16165                      (void *) (uintptr_t) catch_fork_permanent,
16166                      (void *) (uintptr_t) catch_fork_temporary);
16167   add_catch_command ("vfork", _("Catch calls to vfork."),
16168                      catch_fork_command_1,
16169                      NULL,
16170                      (void *) (uintptr_t) catch_vfork_permanent,
16171                      (void *) (uintptr_t) catch_vfork_temporary);
16172   add_catch_command ("exec", _("Catch calls to exec."),
16173                      catch_exec_command_1,
16174                      NULL,
16175                      CATCH_PERMANENT,
16176                      CATCH_TEMPORARY);
16177   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16178 Usage: catch load [REGEX]\n\
16179 If REGEX is given, only stop for libraries matching the regular expression."),
16180                      catch_load_command_1,
16181                      NULL,
16182                      CATCH_PERMANENT,
16183                      CATCH_TEMPORARY);
16184   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16185 Usage: catch unload [REGEX]\n\
16186 If REGEX is given, only stop for libraries matching the regular expression."),
16187                      catch_unload_command_1,
16188                      NULL,
16189                      CATCH_PERMANENT,
16190                      CATCH_TEMPORARY);
16191   add_catch_command ("syscall", _("\
16192 Catch system calls by their names and/or numbers.\n\
16193 Arguments say which system calls to catch.  If no arguments\n\
16194 are given, every system call will be caught.\n\
16195 Arguments, if given, should be one or more system call names\n\
16196 (if your system supports that), or system call numbers."),
16197                      catch_syscall_command_1,
16198                      catch_syscall_completer,
16199                      CATCH_PERMANENT,
16200                      CATCH_TEMPORARY);
16201
16202   c = add_com ("watch", class_breakpoint, watch_command, _("\
16203 Set a watchpoint for an expression.\n\
16204 Usage: watch [-l|-location] EXPRESSION\n\
16205 A watchpoint stops execution of your program whenever the value of\n\
16206 an expression changes.\n\
16207 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16208 the memory to which it refers."));
16209   set_cmd_completer (c, expression_completer);
16210
16211   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16212 Set a read watchpoint for an expression.\n\
16213 Usage: rwatch [-l|-location] EXPRESSION\n\
16214 A watchpoint stops execution of your program whenever the value of\n\
16215 an expression is read.\n\
16216 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16217 the memory to which it refers."));
16218   set_cmd_completer (c, expression_completer);
16219
16220   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16221 Set a watchpoint for an expression.\n\
16222 Usage: awatch [-l|-location] EXPRESSION\n\
16223 A watchpoint stops execution of your program whenever the value of\n\
16224 an expression is either read or written.\n\
16225 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16226 the memory to which it refers."));
16227   set_cmd_completer (c, expression_completer);
16228
16229   add_info ("watchpoints", watchpoints_info, _("\
16230 Status of specified watchpoints (all watchpoints if no argument)."));
16231
16232   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16233      respond to changes - contrary to the description.  */
16234   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16235                             &can_use_hw_watchpoints, _("\
16236 Set debugger's willingness to use watchpoint hardware."), _("\
16237 Show debugger's willingness to use watchpoint hardware."), _("\
16238 If zero, gdb will not use hardware for new watchpoints, even if\n\
16239 such is available.  (However, any hardware watchpoints that were\n\
16240 created before setting this to nonzero, will continue to use watchpoint\n\
16241 hardware.)"),
16242                             NULL,
16243                             show_can_use_hw_watchpoints,
16244                             &setlist, &showlist);
16245
16246   can_use_hw_watchpoints = 1;
16247
16248   /* Tracepoint manipulation commands.  */
16249
16250   c = add_com ("trace", class_breakpoint, trace_command, _("\
16251 Set a tracepoint at specified line or function.\n\
16252 \n"
16253 BREAK_ARGS_HELP ("trace") "\n\
16254 Do \"help tracepoints\" for info on other tracepoint commands."));
16255   set_cmd_completer (c, location_completer);
16256
16257   add_com_alias ("tp", "trace", class_alias, 0);
16258   add_com_alias ("tr", "trace", class_alias, 1);
16259   add_com_alias ("tra", "trace", class_alias, 1);
16260   add_com_alias ("trac", "trace", class_alias, 1);
16261
16262   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16263 Set a fast tracepoint at specified line or function.\n\
16264 \n"
16265 BREAK_ARGS_HELP ("ftrace") "\n\
16266 Do \"help tracepoints\" for info on other tracepoint commands."));
16267   set_cmd_completer (c, location_completer);
16268
16269   c = add_com ("strace", class_breakpoint, strace_command, _("\
16270 Set a static tracepoint at specified line, function or marker.\n\
16271 \n\
16272 strace [LOCATION] [if CONDITION]\n\
16273 LOCATION may be a line number, function name, \"*\" and an address,\n\
16274 or -m MARKER_ID.\n\
16275 If a line number is specified, probe the marker at start of code\n\
16276 for that line.  If a function is specified, probe the marker at start\n\
16277 of code for that function.  If an address is specified, probe the marker\n\
16278 at that exact address.  If a marker id is specified, probe the marker\n\
16279 with that name.  With no LOCATION, uses current execution address of\n\
16280 the selected stack frame.\n\
16281 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16282 This collects arbitrary user data passed in the probe point call to the\n\
16283 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16284 by printing the $_sdata variable like any other convenience variable.\n\
16285 \n\
16286 CONDITION is a boolean expression.\n\
16287 \n\
16288 Multiple tracepoints at one place are permitted, and useful if their\n\
16289 conditions are different.\n\
16290 \n\
16291 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16292 Do \"help tracepoints\" for info on other tracepoint commands."));
16293   set_cmd_completer (c, location_completer);
16294
16295   add_info ("tracepoints", tracepoints_info, _("\
16296 Status of specified tracepoints (all tracepoints if no argument).\n\
16297 Convenience variable \"$tpnum\" contains the number of the\n\
16298 last tracepoint set."));
16299
16300   add_info_alias ("tp", "tracepoints", 1);
16301
16302   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16303 Delete specified tracepoints.\n\
16304 Arguments are tracepoint numbers, separated by spaces.\n\
16305 No argument means delete all tracepoints."),
16306            &deletelist);
16307   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16308
16309   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16310 Disable specified tracepoints.\n\
16311 Arguments are tracepoint numbers, separated by spaces.\n\
16312 No argument means disable all tracepoints."),
16313            &disablelist);
16314   deprecate_cmd (c, "disable");
16315
16316   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16317 Enable specified tracepoints.\n\
16318 Arguments are tracepoint numbers, separated by spaces.\n\
16319 No argument means enable all tracepoints."),
16320            &enablelist);
16321   deprecate_cmd (c, "enable");
16322
16323   add_com ("passcount", class_trace, trace_pass_command, _("\
16324 Set the passcount for a tracepoint.\n\
16325 The trace will end when the tracepoint has been passed 'count' times.\n\
16326 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16327 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16328
16329   add_prefix_cmd ("save", class_breakpoint, save_command,
16330                   _("Save breakpoint definitions as a script."),
16331                   &save_cmdlist, "save ",
16332                   0/*allow-unknown*/, &cmdlist);
16333
16334   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16335 Save current breakpoint definitions as a script.\n\
16336 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16337 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16338 session to restore them."),
16339                &save_cmdlist);
16340   set_cmd_completer (c, filename_completer);
16341
16342   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16343 Save current tracepoint definitions as a script.\n\
16344 Use the 'source' command in another debug session to restore them."),
16345                &save_cmdlist);
16346   set_cmd_completer (c, filename_completer);
16347
16348   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16349   deprecate_cmd (c, "save tracepoints");
16350
16351   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16352 Breakpoint specific settings\n\
16353 Configure various breakpoint-specific variables such as\n\
16354 pending breakpoint behavior"),
16355                   &breakpoint_set_cmdlist, "set breakpoint ",
16356                   0/*allow-unknown*/, &setlist);
16357   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16358 Breakpoint specific settings\n\
16359 Configure various breakpoint-specific variables such as\n\
16360 pending breakpoint behavior"),
16361                   &breakpoint_show_cmdlist, "show breakpoint ",
16362                   0/*allow-unknown*/, &showlist);
16363
16364   add_setshow_auto_boolean_cmd ("pending", no_class,
16365                                 &pending_break_support, _("\
16366 Set debugger's behavior regarding pending breakpoints."), _("\
16367 Show debugger's behavior regarding pending breakpoints."), _("\
16368 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16369 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16370 an error.  If auto, an unrecognized breakpoint location results in a\n\
16371 user-query to see if a pending breakpoint should be created."),
16372                                 NULL,
16373                                 show_pending_break_support,
16374                                 &breakpoint_set_cmdlist,
16375                                 &breakpoint_show_cmdlist);
16376
16377   pending_break_support = AUTO_BOOLEAN_AUTO;
16378
16379   add_setshow_boolean_cmd ("auto-hw", no_class,
16380                            &automatic_hardware_breakpoints, _("\
16381 Set automatic usage of hardware breakpoints."), _("\
16382 Show automatic usage of hardware breakpoints."), _("\
16383 If set, the debugger will automatically use hardware breakpoints for\n\
16384 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16385 a warning will be emitted for such breakpoints."),
16386                            NULL,
16387                            show_automatic_hardware_breakpoints,
16388                            &breakpoint_set_cmdlist,
16389                            &breakpoint_show_cmdlist);
16390
16391   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16392                                 &always_inserted_mode, _("\
16393 Set mode for inserting breakpoints."), _("\
16394 Show mode for inserting breakpoints."), _("\
16395 When this mode is off, breakpoints are inserted in inferior when it is\n\
16396 resumed, and removed when execution stops.  When this mode is on,\n\
16397 breakpoints are inserted immediately and removed only when the user\n\
16398 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16399 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16400 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16401 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16402 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16403                                 NULL,
16404                                 &show_always_inserted_mode,
16405                                 &breakpoint_set_cmdlist,
16406                                 &breakpoint_show_cmdlist);
16407
16408   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16409                         condition_evaluation_enums,
16410                         &condition_evaluation_mode_1, _("\
16411 Set mode of breakpoint condition evaluation."), _("\
16412 Show mode of breakpoint condition evaluation."), _("\
16413 When this is set to \"host\", breakpoint conditions will be\n\
16414 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16415 breakpoint conditions will be downloaded to the target (if the target\n\
16416 supports such feature) and conditions will be evaluated on the target's side.\n\
16417 If this is set to \"auto\" (default), this will be automatically set to\n\
16418 \"target\" if it supports condition evaluation, otherwise it will\n\
16419 be set to \"gdb\""),
16420                            &set_condition_evaluation_mode,
16421                            &show_condition_evaluation_mode,
16422                            &breakpoint_set_cmdlist,
16423                            &breakpoint_show_cmdlist);
16424
16425   add_com ("break-range", class_breakpoint, break_range_command, _("\
16426 Set a breakpoint for an address range.\n\
16427 break-range START-LOCATION, END-LOCATION\n\
16428 where START-LOCATION and END-LOCATION can be one of the following:\n\
16429   LINENUM, for that line in the current file,\n\
16430   FILE:LINENUM, for that line in that file,\n\
16431   +OFFSET, for that number of lines after the current line\n\
16432            or the start of the range\n\
16433   FUNCTION, for the first line in that function,\n\
16434   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16435   *ADDRESS, for the instruction at that address.\n\
16436 \n\
16437 The breakpoint will stop execution of the inferior whenever it executes\n\
16438 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16439 range (including START-LOCATION and END-LOCATION)."));
16440
16441   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16442 Set a dynamic printf at specified line or function.\n\
16443 dprintf location,format string,arg1,arg2,...\n\
16444 location may be a line number, function name, or \"*\" and an address.\n\
16445 If a line number is specified, break at start of code for that line.\n\
16446 If a function is specified, break at start of code for that function.\n\
16447 "));
16448   set_cmd_completer (c, location_completer);
16449
16450   add_setshow_enum_cmd ("dprintf-style", class_support,
16451                         dprintf_style_enums, &dprintf_style, _("\
16452 Set the style of usage for dynamic printf."), _("\
16453 Show the style of usage for dynamic printf."), _("\
16454 This setting chooses how GDB will do a dynamic printf.\n\
16455 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16456 console, as with the \"printf\" command.\n\
16457 If the value is \"call\", the print is done by calling a function in your\n\
16458 program; by default printf(), but you can choose a different function or\n\
16459 output stream by setting dprintf-function and dprintf-channel."),
16460                         update_dprintf_commands, NULL,
16461                         &setlist, &showlist);
16462
16463   dprintf_function = xstrdup ("printf");
16464   add_setshow_string_cmd ("dprintf-function", class_support,
16465                           &dprintf_function, _("\
16466 Set the function to use for dynamic printf"), _("\
16467 Show the function to use for dynamic printf"), NULL,
16468                           update_dprintf_commands, NULL,
16469                           &setlist, &showlist);
16470
16471   dprintf_channel = xstrdup ("");
16472   add_setshow_string_cmd ("dprintf-channel", class_support,
16473                           &dprintf_channel, _("\
16474 Set the channel to use for dynamic printf"), _("\
16475 Show the channel to use for dynamic printf"), NULL,
16476                           update_dprintf_commands, NULL,
16477                           &setlist, &showlist);
16478
16479   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16480                            &disconnected_dprintf, _("\
16481 Set whether dprintf continues after GDB disconnects."), _("\
16482 Show whether dprintf continues after GDB disconnects."), _("\
16483 Use this to let dprintf commands continue to hit and produce output\n\
16484 even if GDB disconnects or detaches from the target."),
16485                            NULL,
16486                            NULL,
16487                            &setlist, &showlist);
16488
16489   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16490 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16491 (target agent only) This is useful for formatted output in user-defined commands."));
16492
16493   automatic_hardware_breakpoints = 1;
16494
16495   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16496 }