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