Fix PR cli/15603
[platform/upstream/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2013 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "python/python.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void create_sals_from_address_default (char **,
116                                               struct linespec_result *,
117                                               enum bptype, char *,
118                                               char **);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             struct linespec_sals *,
123                                             char *, char *, enum bptype,
124                                             enum bpdisp, int, int,
125                                             int,
126                                             const struct breakpoint_ops *,
127                                             int, int, int, unsigned);
128
129 static void decode_linespec_default (struct breakpoint *, char **,
130                                      struct symtabs_and_lines *);
131
132 static void clear_command (char *, int);
133
134 static void catch_command (char *, int);
135
136 static int can_use_hardware_watchpoint (struct value *);
137
138 static void break_command_1 (char *, int, int);
139
140 static void mention (struct breakpoint *);
141
142 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
143                                                                enum bptype,
144                                                                const struct breakpoint_ops *);
145 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
146                                                        const struct symtab_and_line *);
147
148 /* This function is used in gdbtk sources and thus can not be made
149    static.  */
150 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
151                                        struct symtab_and_line,
152                                        enum bptype,
153                                        const struct breakpoint_ops *);
154
155 static struct breakpoint *
156   momentary_breakpoint_from_master (struct breakpoint *orig,
157                                     enum bptype type,
158                                     const struct breakpoint_ops *ops);
159
160 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
161
162 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
163                                             CORE_ADDR bpaddr,
164                                             enum bptype bptype);
165
166 static void describe_other_breakpoints (struct gdbarch *,
167                                         struct program_space *, CORE_ADDR,
168                                         struct obj_section *, int);
169
170 static int breakpoint_address_match (struct address_space *aspace1,
171                                      CORE_ADDR addr1,
172                                      struct address_space *aspace2,
173                                      CORE_ADDR addr2);
174
175 static int watchpoint_locations_match (struct bp_location *loc1,
176                                        struct bp_location *loc2);
177
178 static int breakpoint_location_address_match (struct bp_location *bl,
179                                               struct address_space *aspace,
180                                               CORE_ADDR addr);
181
182 static void breakpoints_info (char *, int);
183
184 static void watchpoints_info (char *, int);
185
186 static int breakpoint_1 (char *, int, 
187                          int (*) (const struct breakpoint *));
188
189 static int breakpoint_cond_eval (void *);
190
191 static void cleanup_executing_breakpoints (void *);
192
193 static void commands_command (char *, int);
194
195 static void condition_command (char *, int);
196
197 typedef enum
198   {
199     mark_inserted,
200     mark_uninserted
201   }
202 insertion_state_t;
203
204 static int remove_breakpoint (struct bp_location *, insertion_state_t);
205 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
206
207 static enum print_stop_action print_bp_stop_message (bpstat bs);
208
209 static int watchpoint_check (void *);
210
211 static void maintenance_info_breakpoints (char *, int);
212
213 static int hw_breakpoint_used_count (void);
214
215 static int hw_watchpoint_use_count (struct breakpoint *);
216
217 static int hw_watchpoint_used_count_others (struct breakpoint *except,
218                                             enum bptype type,
219                                             int *other_type_used);
220
221 static void hbreak_command (char *, int);
222
223 static void thbreak_command (char *, int);
224
225 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
226                                     int count);
227
228 static void stop_command (char *arg, int from_tty);
229
230 static void stopin_command (char *arg, int from_tty);
231
232 static void stopat_command (char *arg, int from_tty);
233
234 static void tcatch_command (char *arg, int from_tty);
235
236 static void detach_single_step_breakpoints (void);
237
238 static int single_step_breakpoint_inserted_here_p (struct address_space *,
239                                                    CORE_ADDR pc);
240
241 static void free_bp_location (struct bp_location *loc);
242 static void incref_bp_location (struct bp_location *loc);
243 static void decref_bp_location (struct bp_location **loc);
244
245 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
246
247 static void update_global_location_list (int);
248
249 static void update_global_location_list_nothrow (int);
250
251 static int is_hardware_watchpoint (const struct breakpoint *bpt);
252
253 static void insert_breakpoint_locations (void);
254
255 static int syscall_catchpoint_p (struct breakpoint *b);
256
257 static void tracepoints_info (char *, int);
258
259 static void delete_trace_command (char *, int);
260
261 static void enable_trace_command (char *, int);
262
263 static void disable_trace_command (char *, int);
264
265 static void trace_pass_command (char *, int);
266
267 static void set_tracepoint_count (int num);
268
269 static int is_masked_watchpoint (const struct breakpoint *b);
270
271 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
272
273 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
274    otherwise.  */
275
276 static int strace_marker_p (struct breakpoint *b);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 struct breakpoint_ops base_breakpoint_ops;
281
282 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
283    that are implemented on top of software or hardware breakpoints
284    (user breakpoints, internal and momentary breakpoints, etc.).  */
285 static struct breakpoint_ops bkpt_base_breakpoint_ops;
286
287 /* Internal breakpoints class type.  */
288 static struct breakpoint_ops internal_breakpoint_ops;
289
290 /* Momentary breakpoints class type.  */
291 static struct breakpoint_ops momentary_breakpoint_ops;
292
293 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
294 static struct breakpoint_ops longjmp_breakpoint_ops;
295
296 /* The breakpoint_ops structure to be used in regular user created
297    breakpoints.  */
298 struct breakpoint_ops bkpt_breakpoint_ops;
299
300 /* Breakpoints set on probes.  */
301 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
302
303 /* Dynamic printf class type.  */
304 struct breakpoint_ops dprintf_breakpoint_ops;
305
306 /* The style in which to perform a dynamic printf.  This is a user
307    option because different output options have different tradeoffs;
308    if GDB does the printing, there is better error handling if there
309    is a problem with any of the arguments, but using an inferior
310    function lets you have special-purpose printers and sending of
311    output to the same place as compiled-in print functions.  */
312
313 static const char dprintf_style_gdb[] = "gdb";
314 static const char dprintf_style_call[] = "call";
315 static const char dprintf_style_agent[] = "agent";
316 static const char *const dprintf_style_enums[] = {
317   dprintf_style_gdb,
318   dprintf_style_call,
319   dprintf_style_agent,
320   NULL
321 };
322 static const char *dprintf_style = dprintf_style_gdb;
323
324 /* The function to use for dynamic printf if the preferred style is to
325    call into the inferior.  The value is simply a string that is
326    copied into the command, so it can be anything that GDB can
327    evaluate to a callable address, not necessarily a function name.  */
328
329 static char *dprintf_function = "";
330
331 /* The channel to use for dynamic printf if the preferred style is to
332    call into the inferior; if a nonempty string, it will be passed to
333    the call as the first argument, with the format string as the
334    second.  As with the dprintf function, this can be anything that
335    GDB knows how to evaluate, so in addition to common choices like
336    "stderr", this could be an app-specific expression like
337    "mystreams[curlogger]".  */
338
339 static char *dprintf_channel = "";
340
341 /* True if dprintf commands should continue to operate even if GDB
342    has disconnected.  */
343 static int disconnected_dprintf = 1;
344
345 /* A reference-counted struct command_line.  This lets multiple
346    breakpoints share a single command list.  */
347 struct counted_command_line
348 {
349   /* The reference count.  */
350   int refc;
351
352   /* The command list.  */
353   struct command_line *commands;
354 };
355
356 struct command_line *
357 breakpoint_commands (struct breakpoint *b)
358 {
359   return b->commands ? b->commands->commands : NULL;
360 }
361
362 /* Flag indicating that a command has proceeded the inferior past the
363    current breakpoint.  */
364
365 static int breakpoint_proceeded;
366
367 const char *
368 bpdisp_text (enum bpdisp disp)
369 {
370   /* NOTE: the following values are a part of MI protocol and
371      represent values of 'disp' field returned when inferior stops at
372      a breakpoint.  */
373   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
374
375   return bpdisps[(int) disp];
376 }
377
378 /* Prototypes for exported functions.  */
379 /* If FALSE, gdb will not use hardware support for watchpoints, even
380    if such is available.  */
381 static int can_use_hw_watchpoints;
382
383 static void
384 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
385                              struct cmd_list_element *c,
386                              const char *value)
387 {
388   fprintf_filtered (file,
389                     _("Debugger's willingness to use "
390                       "watchpoint hardware is %s.\n"),
391                     value);
392 }
393
394 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
395    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
396    for unrecognized breakpoint locations.
397    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
398 static enum auto_boolean pending_break_support;
399 static void
400 show_pending_break_support (struct ui_file *file, int from_tty,
401                             struct cmd_list_element *c,
402                             const char *value)
403 {
404   fprintf_filtered (file,
405                     _("Debugger's behavior regarding "
406                       "pending breakpoints is %s.\n"),
407                     value);
408 }
409
410 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
411    set with "break" but falling in read-only memory.
412    If 0, gdb will warn about such breakpoints, but won't automatically
413    use hardware breakpoints.  */
414 static int automatic_hardware_breakpoints;
415 static void
416 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
417                                      struct cmd_list_element *c,
418                                      const char *value)
419 {
420   fprintf_filtered (file,
421                     _("Automatic usage of hardware breakpoints is %s.\n"),
422                     value);
423 }
424
425 /* If on, gdb will keep breakpoints inserted even as inferior is
426    stopped, and immediately insert any new breakpoints.  If off, gdb
427    will insert breakpoints into inferior only when resuming it, and
428    will remove breakpoints upon stop.  If auto, GDB will behave as ON
429    if in non-stop mode, and as OFF if all-stop mode.*/
430
431 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
432
433 static void
434 show_always_inserted_mode (struct ui_file *file, int from_tty,
435                      struct cmd_list_element *c, const char *value)
436 {
437   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
438     fprintf_filtered (file,
439                       _("Always inserted breakpoint "
440                         "mode is %s (currently %s).\n"),
441                       value,
442                       breakpoints_always_inserted_mode () ? "on" : "off");
443   else
444     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
445                       value);
446 }
447
448 int
449 breakpoints_always_inserted_mode (void)
450 {
451   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
452           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
453 }
454
455 static const char condition_evaluation_both[] = "host or target";
456
457 /* Modes for breakpoint condition evaluation.  */
458 static const char condition_evaluation_auto[] = "auto";
459 static const char condition_evaluation_host[] = "host";
460 static const char condition_evaluation_target[] = "target";
461 static const char *const condition_evaluation_enums[] = {
462   condition_evaluation_auto,
463   condition_evaluation_host,
464   condition_evaluation_target,
465   NULL
466 };
467
468 /* Global that holds the current mode for breakpoint condition evaluation.  */
469 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
470
471 /* Global that we use to display information to the user (gets its value from
472    condition_evaluation_mode_1.  */
473 static const char *condition_evaluation_mode = condition_evaluation_auto;
474
475 /* Translate a condition evaluation mode MODE into either "host"
476    or "target".  This is used mostly to translate from "auto" to the
477    real setting that is being used.  It returns the translated
478    evaluation mode.  */
479
480 static const char *
481 translate_condition_evaluation_mode (const char *mode)
482 {
483   if (mode == condition_evaluation_auto)
484     {
485       if (target_supports_evaluation_of_breakpoint_conditions ())
486         return condition_evaluation_target;
487       else
488         return condition_evaluation_host;
489     }
490   else
491     return mode;
492 }
493
494 /* Discovers what condition_evaluation_auto translates to.  */
495
496 static const char *
497 breakpoint_condition_evaluation_mode (void)
498 {
499   return translate_condition_evaluation_mode (condition_evaluation_mode);
500 }
501
502 /* Return true if GDB should evaluate breakpoint conditions or false
503    otherwise.  */
504
505 static int
506 gdb_evaluates_breakpoint_condition_p (void)
507 {
508   const char *mode = breakpoint_condition_evaluation_mode ();
509
510   return (mode == condition_evaluation_host);
511 }
512
513 void _initialize_breakpoint (void);
514
515 /* Are we executing breakpoint commands?  */
516 static int executing_breakpoint_commands;
517
518 /* Are overlay event breakpoints enabled? */
519 static int overlay_events_enabled;
520
521 /* See description in breakpoint.h. */
522 int target_exact_watchpoints = 0;
523
524 /* Walk the following statement or block through all breakpoints.
525    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
526    current breakpoint.  */
527
528 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
529
530 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
531         for (B = breakpoint_chain;      \
532              B ? (TMP=B->next, 1): 0;   \
533              B = TMP)
534
535 /* Similar iterator for the low-level breakpoints.  SAFE variant is
536    not provided so update_global_location_list must not be called
537    while executing the block of ALL_BP_LOCATIONS.  */
538
539 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
540         for (BP_TMP = bp_location;                                      \
541              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
542              BP_TMP++)
543
544 /* Iterates through locations with address ADDRESS for the currently selected
545    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
546    to where the loop should start from.
547    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
548    appropriate location to start with.  */
549
550 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
551         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
552              BP_LOCP_TMP = BP_LOCP_START;                               \
553              BP_LOCP_START                                              \
554              && (BP_LOCP_TMP < bp_location + bp_location_count          \
555              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
556              BP_LOCP_TMP++)
557
558 /* Iterator for tracepoints only.  */
559
560 #define ALL_TRACEPOINTS(B)  \
561   for (B = breakpoint_chain; B; B = B->next)  \
562     if (is_tracepoint (B))
563
564 /* Chains of all breakpoints defined.  */
565
566 struct breakpoint *breakpoint_chain;
567
568 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
569
570 static struct bp_location **bp_location;
571
572 /* Number of elements of BP_LOCATION.  */
573
574 static unsigned bp_location_count;
575
576 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
577    ADDRESS for the current elements of BP_LOCATION which get a valid
578    result from bp_location_has_shadow.  You can use it for roughly
579    limiting the subrange of BP_LOCATION to scan for shadow bytes for
580    an address you need to read.  */
581
582 static CORE_ADDR bp_location_placed_address_before_address_max;
583
584 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
585    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
586    BP_LOCATION which get a valid result from bp_location_has_shadow.
587    You can use it for roughly limiting the subrange of BP_LOCATION to
588    scan for shadow bytes for an address you need to read.  */
589
590 static CORE_ADDR bp_location_shadow_len_after_address_max;
591
592 /* The locations that no longer correspond to any breakpoint, unlinked
593    from bp_location array, but for which a hit may still be reported
594    by a target.  */
595 VEC(bp_location_p) *moribund_locations = NULL;
596
597 /* Number of last breakpoint made.  */
598
599 static int breakpoint_count;
600
601 /* The value of `breakpoint_count' before the last command that
602    created breakpoints.  If the last (break-like) command created more
603    than one breakpoint, then the difference between BREAKPOINT_COUNT
604    and PREV_BREAKPOINT_COUNT is more than one.  */
605 static int prev_breakpoint_count;
606
607 /* Number of last tracepoint made.  */
608
609 static int tracepoint_count;
610
611 static struct cmd_list_element *breakpoint_set_cmdlist;
612 static struct cmd_list_element *breakpoint_show_cmdlist;
613 struct cmd_list_element *save_cmdlist;
614
615 /* Return whether a breakpoint is an active enabled breakpoint.  */
616 static int
617 breakpoint_enabled (struct breakpoint *b)
618 {
619   return (b->enable_state == bp_enabled);
620 }
621
622 /* Set breakpoint count to NUM.  */
623
624 static void
625 set_breakpoint_count (int num)
626 {
627   prev_breakpoint_count = breakpoint_count;
628   breakpoint_count = num;
629   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
630 }
631
632 /* Used by `start_rbreak_breakpoints' below, to record the current
633    breakpoint count before "rbreak" creates any breakpoint.  */
634 static int rbreak_start_breakpoint_count;
635
636 /* Called at the start an "rbreak" command to record the first
637    breakpoint made.  */
638
639 void
640 start_rbreak_breakpoints (void)
641 {
642   rbreak_start_breakpoint_count = breakpoint_count;
643 }
644
645 /* Called at the end of an "rbreak" command to record the last
646    breakpoint made.  */
647
648 void
649 end_rbreak_breakpoints (void)
650 {
651   prev_breakpoint_count = rbreak_start_breakpoint_count;
652 }
653
654 /* Used in run_command to zero the hit count when a new run starts.  */
655
656 void
657 clear_breakpoint_hit_counts (void)
658 {
659   struct breakpoint *b;
660
661   ALL_BREAKPOINTS (b)
662     b->hit_count = 0;
663 }
664
665 /* Allocate a new counted_command_line with reference count of 1.
666    The new structure owns COMMANDS.  */
667
668 static struct counted_command_line *
669 alloc_counted_command_line (struct command_line *commands)
670 {
671   struct counted_command_line *result
672     = xmalloc (sizeof (struct counted_command_line));
673
674   result->refc = 1;
675   result->commands = commands;
676   return result;
677 }
678
679 /* Increment reference count.  This does nothing if CMD is NULL.  */
680
681 static void
682 incref_counted_command_line (struct counted_command_line *cmd)
683 {
684   if (cmd)
685     ++cmd->refc;
686 }
687
688 /* Decrement reference count.  If the reference count reaches 0,
689    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
690    nothing if *CMDP is NULL.  */
691
692 static void
693 decref_counted_command_line (struct counted_command_line **cmdp)
694 {
695   if (*cmdp)
696     {
697       if (--(*cmdp)->refc == 0)
698         {
699           free_command_lines (&(*cmdp)->commands);
700           xfree (*cmdp);
701         }
702       *cmdp = NULL;
703     }
704 }
705
706 /* A cleanup function that calls decref_counted_command_line.  */
707
708 static void
709 do_cleanup_counted_command_line (void *arg)
710 {
711   decref_counted_command_line (arg);
712 }
713
714 /* Create a cleanup that calls decref_counted_command_line on the
715    argument.  */
716
717 static struct cleanup *
718 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
719 {
720   return make_cleanup (do_cleanup_counted_command_line, cmdp);
721 }
722
723 \f
724 /* Return the breakpoint with the specified number, or NULL
725    if the number does not refer to an existing breakpoint.  */
726
727 struct breakpoint *
728 get_breakpoint (int num)
729 {
730   struct breakpoint *b;
731
732   ALL_BREAKPOINTS (b)
733     if (b->number == num)
734       return b;
735   
736   return NULL;
737 }
738
739 \f
740
741 /* Mark locations as "conditions have changed" in case the target supports
742    evaluating conditions on its side.  */
743
744 static void
745 mark_breakpoint_modified (struct breakpoint *b)
746 {
747   struct bp_location *loc;
748
749   /* This is only meaningful if the target is
750      evaluating conditions and if the user has
751      opted for condition evaluation on the target's
752      side.  */
753   if (gdb_evaluates_breakpoint_condition_p ()
754       || !target_supports_evaluation_of_breakpoint_conditions ())
755     return;
756
757   if (!is_breakpoint (b))
758     return;
759
760   for (loc = b->loc; loc; loc = loc->next)
761     loc->condition_changed = condition_modified;
762 }
763
764 /* Mark location as "conditions have changed" in case the target supports
765    evaluating conditions on its side.  */
766
767 static void
768 mark_breakpoint_location_modified (struct bp_location *loc)
769 {
770   /* This is only meaningful if the target is
771      evaluating conditions and if the user has
772      opted for condition evaluation on the target's
773      side.  */
774   if (gdb_evaluates_breakpoint_condition_p ()
775       || !target_supports_evaluation_of_breakpoint_conditions ())
776
777     return;
778
779   if (!is_breakpoint (loc->owner))
780     return;
781
782   loc->condition_changed = condition_modified;
783 }
784
785 /* Sets the condition-evaluation mode using the static global
786    condition_evaluation_mode.  */
787
788 static void
789 set_condition_evaluation_mode (char *args, int from_tty,
790                                struct cmd_list_element *c)
791 {
792   const char *old_mode, *new_mode;
793
794   if ((condition_evaluation_mode_1 == condition_evaluation_target)
795       && !target_supports_evaluation_of_breakpoint_conditions ())
796     {
797       condition_evaluation_mode_1 = condition_evaluation_mode;
798       warning (_("Target does not support breakpoint condition evaluation.\n"
799                  "Using host evaluation mode instead."));
800       return;
801     }
802
803   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
804   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
805
806   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
807      settings was "auto".  */
808   condition_evaluation_mode = condition_evaluation_mode_1;
809
810   /* Only update the mode if the user picked a different one.  */
811   if (new_mode != old_mode)
812     {
813       struct bp_location *loc, **loc_tmp;
814       /* If the user switched to a different evaluation mode, we
815          need to synch the changes with the target as follows:
816
817          "host" -> "target": Send all (valid) conditions to the target.
818          "target" -> "host": Remove all the conditions from the target.
819       */
820
821       if (new_mode == condition_evaluation_target)
822         {
823           /* Mark everything modified and synch conditions with the
824              target.  */
825           ALL_BP_LOCATIONS (loc, loc_tmp)
826             mark_breakpoint_location_modified (loc);
827         }
828       else
829         {
830           /* Manually mark non-duplicate locations to synch conditions
831              with the target.  We do this to remove all the conditions the
832              target knows about.  */
833           ALL_BP_LOCATIONS (loc, loc_tmp)
834             if (is_breakpoint (loc->owner) && loc->inserted)
835               loc->needs_update = 1;
836         }
837
838       /* Do the update.  */
839       update_global_location_list (1);
840     }
841
842   return;
843 }
844
845 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
846    what "auto" is translating to.  */
847
848 static void
849 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
850                                 struct cmd_list_element *c, const char *value)
851 {
852   if (condition_evaluation_mode == condition_evaluation_auto)
853     fprintf_filtered (file,
854                       _("Breakpoint condition evaluation "
855                         "mode is %s (currently %s).\n"),
856                       value,
857                       breakpoint_condition_evaluation_mode ());
858   else
859     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
860                       value);
861 }
862
863 /* A comparison function for bp_location AP and BP that is used by
864    bsearch.  This comparison function only cares about addresses, unlike
865    the more general bp_location_compare function.  */
866
867 static int
868 bp_location_compare_addrs (const void *ap, const void *bp)
869 {
870   struct bp_location *a = *(void **) ap;
871   struct bp_location *b = *(void **) bp;
872
873   if (a->address == b->address)
874     return 0;
875   else
876     return ((a->address > b->address) - (a->address < b->address));
877 }
878
879 /* Helper function to skip all bp_locations with addresses
880    less than ADDRESS.  It returns the first bp_location that
881    is greater than or equal to ADDRESS.  If none is found, just
882    return NULL.  */
883
884 static struct bp_location **
885 get_first_locp_gte_addr (CORE_ADDR address)
886 {
887   struct bp_location dummy_loc;
888   struct bp_location *dummy_locp = &dummy_loc;
889   struct bp_location **locp_found = NULL;
890
891   /* Initialize the dummy location's address field.  */
892   memset (&dummy_loc, 0, sizeof (struct bp_location));
893   dummy_loc.address = address;
894
895   /* Find a close match to the first location at ADDRESS.  */
896   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
897                         sizeof (struct bp_location **),
898                         bp_location_compare_addrs);
899
900   /* Nothing was found, nothing left to do.  */
901   if (locp_found == NULL)
902     return NULL;
903
904   /* We may have found a location that is at ADDRESS but is not the first in the
905      location's list.  Go backwards (if possible) and locate the first one.  */
906   while ((locp_found - 1) >= bp_location
907          && (*(locp_found - 1))->address == address)
908     locp_found--;
909
910   return locp_found;
911 }
912
913 void
914 set_breakpoint_condition (struct breakpoint *b, char *exp,
915                           int from_tty)
916 {
917   xfree (b->cond_string);
918   b->cond_string = NULL;
919
920   if (is_watchpoint (b))
921     {
922       struct watchpoint *w = (struct watchpoint *) b;
923
924       xfree (w->cond_exp);
925       w->cond_exp = NULL;
926     }
927   else
928     {
929       struct bp_location *loc;
930
931       for (loc = b->loc; loc; loc = loc->next)
932         {
933           xfree (loc->cond);
934           loc->cond = NULL;
935
936           /* No need to free the condition agent expression
937              bytecode (if we have one).  We will handle this
938              when we go through update_global_location_list.  */
939         }
940     }
941
942   if (*exp == 0)
943     {
944       if (from_tty)
945         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
946     }
947   else
948     {
949       const char *arg = exp;
950
951       /* I don't know if it matters whether this is the string the user
952          typed in or the decompiled expression.  */
953       b->cond_string = xstrdup (arg);
954       b->condition_not_parsed = 0;
955
956       if (is_watchpoint (b))
957         {
958           struct watchpoint *w = (struct watchpoint *) b;
959
960           innermost_block = NULL;
961           arg = exp;
962           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
963           if (*arg)
964             error (_("Junk at end of expression"));
965           w->cond_exp_valid_block = innermost_block;
966         }
967       else
968         {
969           struct bp_location *loc;
970
971           for (loc = b->loc; loc; loc = loc->next)
972             {
973               arg = exp;
974               loc->cond =
975                 parse_exp_1 (&arg, loc->address,
976                              block_for_pc (loc->address), 0);
977               if (*arg)
978                 error (_("Junk at end of expression"));
979             }
980         }
981     }
982   mark_breakpoint_modified (b);
983
984   observer_notify_breakpoint_modified (b);
985 }
986
987 /* Completion for the "condition" command.  */
988
989 static VEC (char_ptr) *
990 condition_completer (struct cmd_list_element *cmd,
991                      const char *text, const char *word)
992 {
993   const char *space;
994
995   text = skip_spaces_const (text);
996   space = skip_to_space_const (text);
997   if (*space == '\0')
998     {
999       int len;
1000       struct breakpoint *b;
1001       VEC (char_ptr) *result = NULL;
1002
1003       if (text[0] == '$')
1004         {
1005           /* We don't support completion of history indices.  */
1006           if (isdigit (text[1]))
1007             return NULL;
1008           return complete_internalvar (&text[1]);
1009         }
1010
1011       /* We're completing the breakpoint number.  */
1012       len = strlen (text);
1013
1014       ALL_BREAKPOINTS (b)
1015         {
1016           char number[50];
1017
1018           xsnprintf (number, sizeof (number), "%d", b->number);
1019
1020           if (strncmp (number, text, len) == 0)
1021             VEC_safe_push (char_ptr, result, xstrdup (number));
1022         }
1023
1024       return result;
1025     }
1026
1027   /* We're completing the expression part.  */
1028   text = skip_spaces_const (space);
1029   return expression_completer (cmd, text, word);
1030 }
1031
1032 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1033
1034 static void
1035 condition_command (char *arg, int from_tty)
1036 {
1037   struct breakpoint *b;
1038   char *p;
1039   int bnum;
1040
1041   if (arg == 0)
1042     error_no_arg (_("breakpoint number"));
1043
1044   p = arg;
1045   bnum = get_number (&p);
1046   if (bnum == 0)
1047     error (_("Bad breakpoint argument: '%s'"), arg);
1048
1049   ALL_BREAKPOINTS (b)
1050     if (b->number == bnum)
1051       {
1052         /* Check if this breakpoint has a Python object assigned to
1053            it, and if it has a definition of the "stop"
1054            method.  This method and conditions entered into GDB from
1055            the CLI are mutually exclusive.  */
1056         if (b->py_bp_object
1057             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1058           error (_("Cannot set a condition where a Python 'stop' "
1059                    "method has been defined in the breakpoint."));
1060         set_breakpoint_condition (b, p, from_tty);
1061
1062         if (is_breakpoint (b))
1063           update_global_location_list (1);
1064
1065         return;
1066       }
1067
1068   error (_("No breakpoint number %d."), bnum);
1069 }
1070
1071 /* Check that COMMAND do not contain commands that are suitable
1072    only for tracepoints and not suitable for ordinary breakpoints.
1073    Throw if any such commands is found.  */
1074
1075 static void
1076 check_no_tracepoint_commands (struct command_line *commands)
1077 {
1078   struct command_line *c;
1079
1080   for (c = commands; c; c = c->next)
1081     {
1082       int i;
1083
1084       if (c->control_type == while_stepping_control)
1085         error (_("The 'while-stepping' command can "
1086                  "only be used for tracepoints"));
1087
1088       for (i = 0; i < c->body_count; ++i)
1089         check_no_tracepoint_commands ((c->body_list)[i]);
1090
1091       /* Not that command parsing removes leading whitespace and comment
1092          lines and also empty lines.  So, we only need to check for
1093          command directly.  */
1094       if (strstr (c->line, "collect ") == c->line)
1095         error (_("The 'collect' command can only be used for tracepoints"));
1096
1097       if (strstr (c->line, "teval ") == c->line)
1098         error (_("The 'teval' command can only be used for tracepoints"));
1099     }
1100 }
1101
1102 /* Encapsulate tests for different types of tracepoints.  */
1103
1104 static int
1105 is_tracepoint_type (enum bptype type)
1106 {
1107   return (type == bp_tracepoint
1108           || type == bp_fast_tracepoint
1109           || type == bp_static_tracepoint);
1110 }
1111
1112 int
1113 is_tracepoint (const struct breakpoint *b)
1114 {
1115   return is_tracepoint_type (b->type);
1116 }
1117
1118 /* A helper function that validates that COMMANDS are valid for a
1119    breakpoint.  This function will throw an exception if a problem is
1120    found.  */
1121
1122 static void
1123 validate_commands_for_breakpoint (struct breakpoint *b,
1124                                   struct command_line *commands)
1125 {
1126   if (is_tracepoint (b))
1127     {
1128       struct tracepoint *t = (struct tracepoint *) b;
1129       struct command_line *c;
1130       struct command_line *while_stepping = 0;
1131
1132       /* Reset the while-stepping step count.  The previous commands
1133          might have included a while-stepping action, while the new
1134          ones might not.  */
1135       t->step_count = 0;
1136
1137       /* We need to verify that each top-level element of commands is
1138          valid for tracepoints, that there's at most one
1139          while-stepping element, and that the while-stepping's body
1140          has valid tracing commands excluding nested while-stepping.
1141          We also need to validate the tracepoint action line in the
1142          context of the tracepoint --- validate_actionline actually
1143          has side effects, like setting the tracepoint's
1144          while-stepping STEP_COUNT, in addition to checking if the
1145          collect/teval actions parse and make sense in the
1146          tracepoint's context.  */
1147       for (c = commands; c; c = c->next)
1148         {
1149           if (c->control_type == while_stepping_control)
1150             {
1151               if (b->type == bp_fast_tracepoint)
1152                 error (_("The 'while-stepping' command "
1153                          "cannot be used for fast tracepoint"));
1154               else if (b->type == bp_static_tracepoint)
1155                 error (_("The 'while-stepping' command "
1156                          "cannot be used for static tracepoint"));
1157
1158               if (while_stepping)
1159                 error (_("The 'while-stepping' command "
1160                          "can be used only once"));
1161               else
1162                 while_stepping = c;
1163             }
1164
1165           validate_actionline (c->line, b);
1166         }
1167       if (while_stepping)
1168         {
1169           struct command_line *c2;
1170
1171           gdb_assert (while_stepping->body_count == 1);
1172           c2 = while_stepping->body_list[0];
1173           for (; c2; c2 = c2->next)
1174             {
1175               if (c2->control_type == while_stepping_control)
1176                 error (_("The 'while-stepping' command cannot be nested"));
1177             }
1178         }
1179     }
1180   else
1181     {
1182       check_no_tracepoint_commands (commands);
1183     }
1184 }
1185
1186 /* Return a vector of all the static tracepoints set at ADDR.  The
1187    caller is responsible for releasing the vector.  */
1188
1189 VEC(breakpoint_p) *
1190 static_tracepoints_here (CORE_ADDR addr)
1191 {
1192   struct breakpoint *b;
1193   VEC(breakpoint_p) *found = 0;
1194   struct bp_location *loc;
1195
1196   ALL_BREAKPOINTS (b)
1197     if (b->type == bp_static_tracepoint)
1198       {
1199         for (loc = b->loc; loc; loc = loc->next)
1200           if (loc->address == addr)
1201             VEC_safe_push(breakpoint_p, found, b);
1202       }
1203
1204   return found;
1205 }
1206
1207 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1208    validate that only allowed commands are included.  */
1209
1210 void
1211 breakpoint_set_commands (struct breakpoint *b, 
1212                          struct command_line *commands)
1213 {
1214   validate_commands_for_breakpoint (b, commands);
1215
1216   decref_counted_command_line (&b->commands);
1217   b->commands = alloc_counted_command_line (commands);
1218   observer_notify_breakpoint_modified (b);
1219 }
1220
1221 /* Set the internal `silent' flag on the breakpoint.  Note that this
1222    is not the same as the "silent" that may appear in the breakpoint's
1223    commands.  */
1224
1225 void
1226 breakpoint_set_silent (struct breakpoint *b, int silent)
1227 {
1228   int old_silent = b->silent;
1229
1230   b->silent = silent;
1231   if (old_silent != silent)
1232     observer_notify_breakpoint_modified (b);
1233 }
1234
1235 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1236    breakpoint work for any thread.  */
1237
1238 void
1239 breakpoint_set_thread (struct breakpoint *b, int thread)
1240 {
1241   int old_thread = b->thread;
1242
1243   b->thread = thread;
1244   if (old_thread != thread)
1245     observer_notify_breakpoint_modified (b);
1246 }
1247
1248 /* Set the task for this breakpoint.  If TASK is 0, make the
1249    breakpoint work for any task.  */
1250
1251 void
1252 breakpoint_set_task (struct breakpoint *b, int task)
1253 {
1254   int old_task = b->task;
1255
1256   b->task = task;
1257   if (old_task != task)
1258     observer_notify_breakpoint_modified (b);
1259 }
1260
1261 void
1262 check_tracepoint_command (char *line, void *closure)
1263 {
1264   struct breakpoint *b = closure;
1265
1266   validate_actionline (line, b);
1267 }
1268
1269 /* A structure used to pass information through
1270    map_breakpoint_numbers.  */
1271
1272 struct commands_info
1273 {
1274   /* True if the command was typed at a tty.  */
1275   int from_tty;
1276
1277   /* The breakpoint range spec.  */
1278   char *arg;
1279
1280   /* Non-NULL if the body of the commands are being read from this
1281      already-parsed command.  */
1282   struct command_line *control;
1283
1284   /* The command lines read from the user, or NULL if they have not
1285      yet been read.  */
1286   struct counted_command_line *cmd;
1287 };
1288
1289 /* A callback for map_breakpoint_numbers that sets the commands for
1290    commands_command.  */
1291
1292 static void
1293 do_map_commands_command (struct breakpoint *b, void *data)
1294 {
1295   struct commands_info *info = data;
1296
1297   if (info->cmd == NULL)
1298     {
1299       struct command_line *l;
1300
1301       if (info->control != NULL)
1302         l = copy_command_lines (info->control->body_list[0]);
1303       else
1304         {
1305           struct cleanup *old_chain;
1306           char *str;
1307
1308           str = xstrprintf (_("Type commands for breakpoint(s) "
1309                               "%s, one per line."),
1310                             info->arg);
1311
1312           old_chain = make_cleanup (xfree, str);
1313
1314           l = read_command_lines (str,
1315                                   info->from_tty, 1,
1316                                   (is_tracepoint (b)
1317                                    ? check_tracepoint_command : 0),
1318                                   b);
1319
1320           do_cleanups (old_chain);
1321         }
1322
1323       info->cmd = alloc_counted_command_line (l);
1324     }
1325
1326   /* If a breakpoint was on the list more than once, we don't need to
1327      do anything.  */
1328   if (b->commands != info->cmd)
1329     {
1330       validate_commands_for_breakpoint (b, info->cmd->commands);
1331       incref_counted_command_line (info->cmd);
1332       decref_counted_command_line (&b->commands);
1333       b->commands = info->cmd;
1334       observer_notify_breakpoint_modified (b);
1335     }
1336 }
1337
1338 static void
1339 commands_command_1 (char *arg, int from_tty, 
1340                     struct command_line *control)
1341 {
1342   struct cleanup *cleanups;
1343   struct commands_info info;
1344
1345   info.from_tty = from_tty;
1346   info.control = control;
1347   info.cmd = NULL;
1348   /* If we read command lines from the user, then `info' will hold an
1349      extra reference to the commands that we must clean up.  */
1350   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1351
1352   if (arg == NULL || !*arg)
1353     {
1354       if (breakpoint_count - prev_breakpoint_count > 1)
1355         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1356                           breakpoint_count);
1357       else if (breakpoint_count > 0)
1358         arg = xstrprintf ("%d", breakpoint_count);
1359       else
1360         {
1361           /* So that we don't try to free the incoming non-NULL
1362              argument in the cleanup below.  Mapping breakpoint
1363              numbers will fail in this case.  */
1364           arg = NULL;
1365         }
1366     }
1367   else
1368     /* The command loop has some static state, so we need to preserve
1369        our argument.  */
1370     arg = xstrdup (arg);
1371
1372   if (arg != NULL)
1373     make_cleanup (xfree, arg);
1374
1375   info.arg = arg;
1376
1377   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1378
1379   if (info.cmd == NULL)
1380     error (_("No breakpoints specified."));
1381
1382   do_cleanups (cleanups);
1383 }
1384
1385 static void
1386 commands_command (char *arg, int from_tty)
1387 {
1388   commands_command_1 (arg, from_tty, NULL);
1389 }
1390
1391 /* Like commands_command, but instead of reading the commands from
1392    input stream, takes them from an already parsed command structure.
1393
1394    This is used by cli-script.c to DTRT with breakpoint commands
1395    that are part of if and while bodies.  */
1396 enum command_control_type
1397 commands_from_control_command (char *arg, struct command_line *cmd)
1398 {
1399   commands_command_1 (arg, 0, cmd);
1400   return simple_control;
1401 }
1402
1403 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1404
1405 static int
1406 bp_location_has_shadow (struct bp_location *bl)
1407 {
1408   if (bl->loc_type != bp_loc_software_breakpoint)
1409     return 0;
1410   if (!bl->inserted)
1411     return 0;
1412   if (bl->target_info.shadow_len == 0)
1413     /* BL isn't valid, or doesn't shadow memory.  */
1414     return 0;
1415   return 1;
1416 }
1417
1418 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1419    by replacing any memory breakpoints with their shadowed contents.
1420
1421    If READBUF is not NULL, this buffer must not overlap with any of
1422    the breakpoint location's shadow_contents buffers.  Otherwise,
1423    a failed assertion internal error will be raised.
1424
1425    The range of shadowed area by each bp_location is:
1426      bl->address - bp_location_placed_address_before_address_max
1427      up to bl->address + bp_location_shadow_len_after_address_max
1428    The range we were requested to resolve shadows for is:
1429      memaddr ... memaddr + len
1430    Thus the safe cutoff boundaries for performance optimization are
1431      memaddr + len <= (bl->address
1432                        - bp_location_placed_address_before_address_max)
1433    and:
1434      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1435
1436 void
1437 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1438                         const gdb_byte *writebuf_org,
1439                         ULONGEST memaddr, LONGEST len)
1440 {
1441   /* Left boundary, right boundary and median element of our binary
1442      search.  */
1443   unsigned bc_l, bc_r, bc;
1444
1445   /* Find BC_L which is a leftmost element which may affect BUF
1446      content.  It is safe to report lower value but a failure to
1447      report higher one.  */
1448
1449   bc_l = 0;
1450   bc_r = bp_location_count;
1451   while (bc_l + 1 < bc_r)
1452     {
1453       struct bp_location *bl;
1454
1455       bc = (bc_l + bc_r) / 2;
1456       bl = bp_location[bc];
1457
1458       /* Check first BL->ADDRESS will not overflow due to the added
1459          constant.  Then advance the left boundary only if we are sure
1460          the BC element can in no way affect the BUF content (MEMADDR
1461          to MEMADDR + LEN range).
1462
1463          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1464          offset so that we cannot miss a breakpoint with its shadow
1465          range tail still reaching MEMADDR.  */
1466
1467       if ((bl->address + bp_location_shadow_len_after_address_max
1468            >= bl->address)
1469           && (bl->address + bp_location_shadow_len_after_address_max
1470               <= memaddr))
1471         bc_l = bc;
1472       else
1473         bc_r = bc;
1474     }
1475
1476   /* Due to the binary search above, we need to make sure we pick the
1477      first location that's at BC_L's address.  E.g., if there are
1478      multiple locations at the same address, BC_L may end up pointing
1479      at a duplicate location, and miss the "master"/"inserted"
1480      location.  Say, given locations L1, L2 and L3 at addresses A and
1481      B:
1482
1483       L1@A, L2@A, L3@B, ...
1484
1485      BC_L could end up pointing at location L2, while the "master"
1486      location could be L1.  Since the `loc->inserted' flag is only set
1487      on "master" locations, we'd forget to restore the shadow of L1
1488      and L2.  */
1489   while (bc_l > 0
1490          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1491     bc_l--;
1492
1493   /* Now do full processing of the found relevant range of elements.  */
1494
1495   for (bc = bc_l; bc < bp_location_count; bc++)
1496   {
1497     struct bp_location *bl = bp_location[bc];
1498     CORE_ADDR bp_addr = 0;
1499     int bp_size = 0;
1500     int bptoffset = 0;
1501
1502     /* bp_location array has BL->OWNER always non-NULL.  */
1503     if (bl->owner->type == bp_none)
1504       warning (_("reading through apparently deleted breakpoint #%d?"),
1505                bl->owner->number);
1506
1507     /* Performance optimization: any further element can no longer affect BUF
1508        content.  */
1509
1510     if (bl->address >= bp_location_placed_address_before_address_max
1511         && memaddr + len <= (bl->address
1512                              - bp_location_placed_address_before_address_max))
1513       break;
1514
1515     if (!bp_location_has_shadow (bl))
1516       continue;
1517     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1518                                    current_program_space->aspace, 0))
1519       continue;
1520
1521     /* Addresses and length of the part of the breakpoint that
1522        we need to copy.  */
1523     bp_addr = bl->target_info.placed_address;
1524     bp_size = bl->target_info.shadow_len;
1525
1526     if (bp_addr + bp_size <= memaddr)
1527       /* The breakpoint is entirely before the chunk of memory we
1528          are reading.  */
1529       continue;
1530
1531     if (bp_addr >= memaddr + len)
1532       /* The breakpoint is entirely after the chunk of memory we are
1533          reading.  */
1534       continue;
1535
1536     /* Offset within shadow_contents.  */
1537     if (bp_addr < memaddr)
1538       {
1539         /* Only copy the second part of the breakpoint.  */
1540         bp_size -= memaddr - bp_addr;
1541         bptoffset = memaddr - bp_addr;
1542         bp_addr = memaddr;
1543       }
1544
1545     if (bp_addr + bp_size > memaddr + len)
1546       {
1547         /* Only copy the first part of the breakpoint.  */
1548         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1549       }
1550
1551     if (readbuf != NULL)
1552       {
1553         /* Verify that the readbuf buffer does not overlap with
1554            the shadow_contents buffer.  */
1555         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1556                     || readbuf >= (bl->target_info.shadow_contents
1557                                    + bl->target_info.shadow_len));
1558
1559         /* Update the read buffer with this inserted breakpoint's
1560            shadow.  */
1561         memcpy (readbuf + bp_addr - memaddr,
1562                 bl->target_info.shadow_contents + bptoffset, bp_size);
1563       }
1564     else
1565       {
1566         struct gdbarch *gdbarch = bl->gdbarch;
1567         const unsigned char *bp;
1568         CORE_ADDR placed_address = bl->target_info.placed_address;
1569         int placed_size = bl->target_info.placed_size;
1570
1571         /* Update the shadow with what we want to write to memory.  */
1572         memcpy (bl->target_info.shadow_contents + bptoffset,
1573                 writebuf_org + bp_addr - memaddr, bp_size);
1574
1575         /* Determine appropriate breakpoint contents and size for this
1576            address.  */
1577         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1578
1579         /* Update the final write buffer with this inserted
1580            breakpoint's INSN.  */
1581         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1582       }
1583   }
1584 }
1585 \f
1586
1587 /* Return true if BPT is either a software breakpoint or a hardware
1588    breakpoint.  */
1589
1590 int
1591 is_breakpoint (const struct breakpoint *bpt)
1592 {
1593   return (bpt->type == bp_breakpoint
1594           || bpt->type == bp_hardware_breakpoint
1595           || bpt->type == bp_dprintf);
1596 }
1597
1598 /* Return true if BPT is of any hardware watchpoint kind.  */
1599
1600 static int
1601 is_hardware_watchpoint (const struct breakpoint *bpt)
1602 {
1603   return (bpt->type == bp_hardware_watchpoint
1604           || bpt->type == bp_read_watchpoint
1605           || bpt->type == bp_access_watchpoint);
1606 }
1607
1608 /* Return true if BPT is of any watchpoint kind, hardware or
1609    software.  */
1610
1611 int
1612 is_watchpoint (const struct breakpoint *bpt)
1613 {
1614   return (is_hardware_watchpoint (bpt)
1615           || bpt->type == bp_watchpoint);
1616 }
1617
1618 /* Returns true if the current thread and its running state are safe
1619    to evaluate or update watchpoint B.  Watchpoints on local
1620    expressions need to be evaluated in the context of the thread that
1621    was current when the watchpoint was created, and, that thread needs
1622    to be stopped to be able to select the correct frame context.
1623    Watchpoints on global expressions can be evaluated on any thread,
1624    and in any state.  It is presently left to the target allowing
1625    memory accesses when threads are running.  */
1626
1627 static int
1628 watchpoint_in_thread_scope (struct watchpoint *b)
1629 {
1630   return (b->base.pspace == current_program_space
1631           && (ptid_equal (b->watchpoint_thread, null_ptid)
1632               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1633                   && !is_executing (inferior_ptid))));
1634 }
1635
1636 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1637    associated bp_watchpoint_scope breakpoint.  */
1638
1639 static void
1640 watchpoint_del_at_next_stop (struct watchpoint *w)
1641 {
1642   struct breakpoint *b = &w->base;
1643
1644   if (b->related_breakpoint != b)
1645     {
1646       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1647       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1648       b->related_breakpoint->disposition = disp_del_at_next_stop;
1649       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1650       b->related_breakpoint = b;
1651     }
1652   b->disposition = disp_del_at_next_stop;
1653 }
1654
1655 /* Assuming that B is a watchpoint:
1656    - Reparse watchpoint expression, if REPARSE is non-zero
1657    - Evaluate expression and store the result in B->val
1658    - Evaluate the condition if there is one, and store the result
1659      in b->loc->cond.
1660    - Update the list of values that must be watched in B->loc.
1661
1662    If the watchpoint disposition is disp_del_at_next_stop, then do
1663    nothing.  If this is local watchpoint that is out of scope, delete
1664    it.
1665
1666    Even with `set breakpoint always-inserted on' the watchpoints are
1667    removed + inserted on each stop here.  Normal breakpoints must
1668    never be removed because they might be missed by a running thread
1669    when debugging in non-stop mode.  On the other hand, hardware
1670    watchpoints (is_hardware_watchpoint; processed here) are specific
1671    to each LWP since they are stored in each LWP's hardware debug
1672    registers.  Therefore, such LWP must be stopped first in order to
1673    be able to modify its hardware watchpoints.
1674
1675    Hardware watchpoints must be reset exactly once after being
1676    presented to the user.  It cannot be done sooner, because it would
1677    reset the data used to present the watchpoint hit to the user.  And
1678    it must not be done later because it could display the same single
1679    watchpoint hit during multiple GDB stops.  Note that the latter is
1680    relevant only to the hardware watchpoint types bp_read_watchpoint
1681    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1682    not user-visible - its hit is suppressed if the memory content has
1683    not changed.
1684
1685    The following constraints influence the location where we can reset
1686    hardware watchpoints:
1687
1688    * target_stopped_by_watchpoint and target_stopped_data_address are
1689      called several times when GDB stops.
1690
1691    [linux] 
1692    * Multiple hardware watchpoints can be hit at the same time,
1693      causing GDB to stop.  GDB only presents one hardware watchpoint
1694      hit at a time as the reason for stopping, and all the other hits
1695      are presented later, one after the other, each time the user
1696      requests the execution to be resumed.  Execution is not resumed
1697      for the threads still having pending hit event stored in
1698      LWP_INFO->STATUS.  While the watchpoint is already removed from
1699      the inferior on the first stop the thread hit event is kept being
1700      reported from its cached value by linux_nat_stopped_data_address
1701      until the real thread resume happens after the watchpoint gets
1702      presented and thus its LWP_INFO->STATUS gets reset.
1703
1704    Therefore the hardware watchpoint hit can get safely reset on the
1705    watchpoint removal from inferior.  */
1706
1707 static void
1708 update_watchpoint (struct watchpoint *b, int reparse)
1709 {
1710   int within_current_scope;
1711   struct frame_id saved_frame_id;
1712   int frame_saved;
1713
1714   /* If this is a local watchpoint, we only want to check if the
1715      watchpoint frame is in scope if the current thread is the thread
1716      that was used to create the watchpoint.  */
1717   if (!watchpoint_in_thread_scope (b))
1718     return;
1719
1720   if (b->base.disposition == disp_del_at_next_stop)
1721     return;
1722  
1723   frame_saved = 0;
1724
1725   /* Determine if the watchpoint is within scope.  */
1726   if (b->exp_valid_block == NULL)
1727     within_current_scope = 1;
1728   else
1729     {
1730       struct frame_info *fi = get_current_frame ();
1731       struct gdbarch *frame_arch = get_frame_arch (fi);
1732       CORE_ADDR frame_pc = get_frame_pc (fi);
1733
1734       /* If we're in a function epilogue, unwinding may not work
1735          properly, so do not attempt to recreate locations at this
1736          point.  See similar comments in watchpoint_check.  */
1737       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1738         return;
1739
1740       /* Save the current frame's ID so we can restore it after
1741          evaluating the watchpoint expression on its own frame.  */
1742       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1743          took a frame parameter, so that we didn't have to change the
1744          selected frame.  */
1745       frame_saved = 1;
1746       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1747
1748       fi = frame_find_by_id (b->watchpoint_frame);
1749       within_current_scope = (fi != NULL);
1750       if (within_current_scope)
1751         select_frame (fi);
1752     }
1753
1754   /* We don't free locations.  They are stored in the bp_location array
1755      and update_global_location_list will eventually delete them and
1756      remove breakpoints if needed.  */
1757   b->base.loc = NULL;
1758
1759   if (within_current_scope && reparse)
1760     {
1761       const char *s;
1762
1763       if (b->exp)
1764         {
1765           xfree (b->exp);
1766           b->exp = NULL;
1767         }
1768       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1769       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1770       /* If the meaning of expression itself changed, the old value is
1771          no longer relevant.  We don't want to report a watchpoint hit
1772          to the user when the old value and the new value may actually
1773          be completely different objects.  */
1774       value_free (b->val);
1775       b->val = NULL;
1776       b->val_valid = 0;
1777
1778       /* Note that unlike with breakpoints, the watchpoint's condition
1779          expression is stored in the breakpoint object, not in the
1780          locations (re)created below.  */
1781       if (b->base.cond_string != NULL)
1782         {
1783           if (b->cond_exp != NULL)
1784             {
1785               xfree (b->cond_exp);
1786               b->cond_exp = NULL;
1787             }
1788
1789           s = b->base.cond_string;
1790           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1791         }
1792     }
1793
1794   /* If we failed to parse the expression, for example because
1795      it refers to a global variable in a not-yet-loaded shared library,
1796      don't try to insert watchpoint.  We don't automatically delete
1797      such watchpoint, though, since failure to parse expression
1798      is different from out-of-scope watchpoint.  */
1799   if ( !target_has_execution)
1800     {
1801       /* Without execution, memory can't change.  No use to try and
1802          set watchpoint locations.  The watchpoint will be reset when
1803          the target gains execution, through breakpoint_re_set.  */
1804     }
1805   else if (within_current_scope && b->exp)
1806     {
1807       int pc = 0;
1808       struct value *val_chain, *v, *result, *next;
1809       struct program_space *frame_pspace;
1810
1811       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1812
1813       /* Avoid setting b->val if it's already set.  The meaning of
1814          b->val is 'the last value' user saw, and we should update
1815          it only if we reported that last value to user.  As it
1816          happens, the code that reports it updates b->val directly.
1817          We don't keep track of the memory value for masked
1818          watchpoints.  */
1819       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1820         {
1821           b->val = v;
1822           b->val_valid = 1;
1823         }
1824
1825       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1826
1827       /* Look at each value on the value chain.  */
1828       for (v = val_chain; v; v = value_next (v))
1829         {
1830           /* If it's a memory location, and GDB actually needed
1831              its contents to evaluate the expression, then we
1832              must watch it.  If the first value returned is
1833              still lazy, that means an error occurred reading it;
1834              watch it anyway in case it becomes readable.  */
1835           if (VALUE_LVAL (v) == lval_memory
1836               && (v == val_chain || ! value_lazy (v)))
1837             {
1838               struct type *vtype = check_typedef (value_type (v));
1839
1840               /* We only watch structs and arrays if user asked
1841                  for it explicitly, never if they just happen to
1842                  appear in the middle of some value chain.  */
1843               if (v == result
1844                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1845                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1846                 {
1847                   CORE_ADDR addr;
1848                   int type;
1849                   struct bp_location *loc, **tmp;
1850
1851                   addr = value_address (v);
1852                   type = hw_write;
1853                   if (b->base.type == bp_read_watchpoint)
1854                     type = hw_read;
1855                   else if (b->base.type == bp_access_watchpoint)
1856                     type = hw_access;
1857
1858                   loc = allocate_bp_location (&b->base);
1859                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1860                     ;
1861                   *tmp = loc;
1862                   loc->gdbarch = get_type_arch (value_type (v));
1863
1864                   loc->pspace = frame_pspace;
1865                   loc->address = addr;
1866                   loc->length = TYPE_LENGTH (value_type (v));
1867                   loc->watchpoint_type = type;
1868                 }
1869             }
1870         }
1871
1872       /* Change the type of breakpoint between hardware assisted or
1873          an ordinary watchpoint depending on the hardware support
1874          and free hardware slots.  REPARSE is set when the inferior
1875          is started.  */
1876       if (reparse)
1877         {
1878           int reg_cnt;
1879           enum bp_loc_type loc_type;
1880           struct bp_location *bl;
1881
1882           reg_cnt = can_use_hardware_watchpoint (val_chain);
1883
1884           if (reg_cnt)
1885             {
1886               int i, target_resources_ok, other_type_used;
1887               enum bptype type;
1888
1889               /* Use an exact watchpoint when there's only one memory region to be
1890                  watched, and only one debug register is needed to watch it.  */
1891               b->exact = target_exact_watchpoints && reg_cnt == 1;
1892
1893               /* We need to determine how many resources are already
1894                  used for all other hardware watchpoints plus this one
1895                  to see if we still have enough resources to also fit
1896                  this watchpoint in as well.  */
1897
1898               /* If this is a software watchpoint, we try to turn it
1899                  to a hardware one -- count resources as if B was of
1900                  hardware watchpoint type.  */
1901               type = b->base.type;
1902               if (type == bp_watchpoint)
1903                 type = bp_hardware_watchpoint;
1904
1905               /* This watchpoint may or may not have been placed on
1906                  the list yet at this point (it won't be in the list
1907                  if we're trying to create it for the first time,
1908                  through watch_command), so always account for it
1909                  manually.  */
1910
1911               /* Count resources used by all watchpoints except B.  */
1912               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1913
1914               /* Add in the resources needed for B.  */
1915               i += hw_watchpoint_use_count (&b->base);
1916
1917               target_resources_ok
1918                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1919               if (target_resources_ok <= 0)
1920                 {
1921                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1922
1923                   if (target_resources_ok == 0 && !sw_mode)
1924                     error (_("Target does not support this type of "
1925                              "hardware watchpoint."));
1926                   else if (target_resources_ok < 0 && !sw_mode)
1927                     error (_("There are not enough available hardware "
1928                              "resources for this watchpoint."));
1929
1930                   /* Downgrade to software watchpoint.  */
1931                   b->base.type = bp_watchpoint;
1932                 }
1933               else
1934                 {
1935                   /* If this was a software watchpoint, we've just
1936                      found we have enough resources to turn it to a
1937                      hardware watchpoint.  Otherwise, this is a
1938                      nop.  */
1939                   b->base.type = type;
1940                 }
1941             }
1942           else if (!b->base.ops->works_in_software_mode (&b->base))
1943             error (_("Expression cannot be implemented with "
1944                      "read/access watchpoint."));
1945           else
1946             b->base.type = bp_watchpoint;
1947
1948           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1949                       : bp_loc_hardware_watchpoint);
1950           for (bl = b->base.loc; bl; bl = bl->next)
1951             bl->loc_type = loc_type;
1952         }
1953
1954       for (v = val_chain; v; v = next)
1955         {
1956           next = value_next (v);
1957           if (v != b->val)
1958             value_free (v);
1959         }
1960
1961       /* If a software watchpoint is not watching any memory, then the
1962          above left it without any location set up.  But,
1963          bpstat_stop_status requires a location to be able to report
1964          stops, so make sure there's at least a dummy one.  */
1965       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1966         {
1967           struct breakpoint *base = &b->base;
1968           base->loc = allocate_bp_location (base);
1969           base->loc->pspace = frame_pspace;
1970           base->loc->address = -1;
1971           base->loc->length = -1;
1972           base->loc->watchpoint_type = -1;
1973         }
1974     }
1975   else if (!within_current_scope)
1976     {
1977       printf_filtered (_("\
1978 Watchpoint %d deleted because the program has left the block\n\
1979 in which its expression is valid.\n"),
1980                        b->base.number);
1981       watchpoint_del_at_next_stop (b);
1982     }
1983
1984   /* Restore the selected frame.  */
1985   if (frame_saved)
1986     select_frame (frame_find_by_id (saved_frame_id));
1987 }
1988
1989
1990 /* Returns 1 iff breakpoint location should be
1991    inserted in the inferior.  We don't differentiate the type of BL's owner
1992    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1993    breakpoint_ops is not defined, because in insert_bp_location,
1994    tracepoint's insert_location will not be called.  */
1995 static int
1996 should_be_inserted (struct bp_location *bl)
1997 {
1998   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1999     return 0;
2000
2001   if (bl->owner->disposition == disp_del_at_next_stop)
2002     return 0;
2003
2004   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2005     return 0;
2006
2007   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2008     return 0;
2009
2010   /* This is set for example, when we're attached to the parent of a
2011      vfork, and have detached from the child.  The child is running
2012      free, and we expect it to do an exec or exit, at which point the
2013      OS makes the parent schedulable again (and the target reports
2014      that the vfork is done).  Until the child is done with the shared
2015      memory region, do not insert breakpoints in the parent, otherwise
2016      the child could still trip on the parent's breakpoints.  Since
2017      the parent is blocked anyway, it won't miss any breakpoint.  */
2018   if (bl->pspace->breakpoints_not_allowed)
2019     return 0;
2020
2021   return 1;
2022 }
2023
2024 /* Same as should_be_inserted but does the check assuming
2025    that the location is not duplicated.  */
2026
2027 static int
2028 unduplicated_should_be_inserted (struct bp_location *bl)
2029 {
2030   int result;
2031   const int save_duplicate = bl->duplicate;
2032
2033   bl->duplicate = 0;
2034   result = should_be_inserted (bl);
2035   bl->duplicate = save_duplicate;
2036   return result;
2037 }
2038
2039 /* Parses a conditional described by an expression COND into an
2040    agent expression bytecode suitable for evaluation
2041    by the bytecode interpreter.  Return NULL if there was
2042    any error during parsing.  */
2043
2044 static struct agent_expr *
2045 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2046 {
2047   struct agent_expr *aexpr = NULL;
2048   volatile struct gdb_exception ex;
2049
2050   if (!cond)
2051     return NULL;
2052
2053   /* We don't want to stop processing, so catch any errors
2054      that may show up.  */
2055   TRY_CATCH (ex, RETURN_MASK_ERROR)
2056     {
2057       aexpr = gen_eval_for_expr (scope, cond);
2058     }
2059
2060   if (ex.reason < 0)
2061     {
2062       /* If we got here, it means the condition could not be parsed to a valid
2063          bytecode expression and thus can't be evaluated on the target's side.
2064          It's no use iterating through the conditions.  */
2065       return NULL;
2066     }
2067
2068   /* We have a valid agent expression.  */
2069   return aexpr;
2070 }
2071
2072 /* Based on location BL, create a list of breakpoint conditions to be
2073    passed on to the target.  If we have duplicated locations with different
2074    conditions, we will add such conditions to the list.  The idea is that the
2075    target will evaluate the list of conditions and will only notify GDB when
2076    one of them is true.  */
2077
2078 static void
2079 build_target_condition_list (struct bp_location *bl)
2080 {
2081   struct bp_location **locp = NULL, **loc2p;
2082   int null_condition_or_parse_error = 0;
2083   int modified = bl->needs_update;
2084   struct bp_location *loc;
2085
2086   /* This is only meaningful if the target is
2087      evaluating conditions and if the user has
2088      opted for condition evaluation on the target's
2089      side.  */
2090   if (gdb_evaluates_breakpoint_condition_p ()
2091       || !target_supports_evaluation_of_breakpoint_conditions ())
2092     return;
2093
2094   /* Do a first pass to check for locations with no assigned
2095      conditions or conditions that fail to parse to a valid agent expression
2096      bytecode.  If any of these happen, then it's no use to send conditions
2097      to the target since this location will always trigger and generate a
2098      response back to GDB.  */
2099   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2100     {
2101       loc = (*loc2p);
2102       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2103         {
2104           if (modified)
2105             {
2106               struct agent_expr *aexpr;
2107
2108               /* Re-parse the conditions since something changed.  In that
2109                  case we already freed the condition bytecodes (see
2110                  force_breakpoint_reinsertion).  We just
2111                  need to parse the condition to bytecodes again.  */
2112               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2113               loc->cond_bytecode = aexpr;
2114
2115               /* Check if we managed to parse the conditional expression
2116                  correctly.  If not, we will not send this condition
2117                  to the target.  */
2118               if (aexpr)
2119                 continue;
2120             }
2121
2122           /* If we have a NULL bytecode expression, it means something
2123              went wrong or we have a null condition expression.  */
2124           if (!loc->cond_bytecode)
2125             {
2126               null_condition_or_parse_error = 1;
2127               break;
2128             }
2129         }
2130     }
2131
2132   /* If any of these happened, it means we will have to evaluate the conditions
2133      for the location's address on gdb's side.  It is no use keeping bytecodes
2134      for all the other duplicate locations, thus we free all of them here.
2135
2136      This is so we have a finer control over which locations' conditions are
2137      being evaluated by GDB or the remote stub.  */
2138   if (null_condition_or_parse_error)
2139     {
2140       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2141         {
2142           loc = (*loc2p);
2143           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2144             {
2145               /* Only go as far as the first NULL bytecode is
2146                  located.  */
2147               if (!loc->cond_bytecode)
2148                 return;
2149
2150               free_agent_expr (loc->cond_bytecode);
2151               loc->cond_bytecode = NULL;
2152             }
2153         }
2154     }
2155
2156   /* No NULL conditions or failed bytecode generation.  Build a condition list
2157      for this location's address.  */
2158   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2159     {
2160       loc = (*loc2p);
2161       if (loc->cond
2162           && is_breakpoint (loc->owner)
2163           && loc->pspace->num == bl->pspace->num
2164           && loc->owner->enable_state == bp_enabled
2165           && loc->enabled)
2166         /* Add the condition to the vector.  This will be used later to send the
2167            conditions to the target.  */
2168         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2169                        loc->cond_bytecode);
2170     }
2171
2172   return;
2173 }
2174
2175 /* Parses a command described by string CMD into an agent expression
2176    bytecode suitable for evaluation by the bytecode interpreter.
2177    Return NULL if there was any error during parsing.  */
2178
2179 static struct agent_expr *
2180 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2181 {
2182   struct cleanup *old_cleanups = 0;
2183   struct expression *expr, **argvec;
2184   struct agent_expr *aexpr = NULL;
2185   volatile struct gdb_exception ex;
2186   const char *cmdrest;
2187   const char *format_start, *format_end;
2188   struct format_piece *fpieces;
2189   int nargs;
2190   struct gdbarch *gdbarch = get_current_arch ();
2191
2192   if (!cmd)
2193     return NULL;
2194
2195   cmdrest = cmd;
2196
2197   if (*cmdrest == ',')
2198     ++cmdrest;
2199   cmdrest = skip_spaces_const (cmdrest);
2200
2201   if (*cmdrest++ != '"')
2202     error (_("No format string following the location"));
2203
2204   format_start = cmdrest;
2205
2206   fpieces = parse_format_string (&cmdrest);
2207
2208   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2209
2210   format_end = cmdrest;
2211
2212   if (*cmdrest++ != '"')
2213     error (_("Bad format string, non-terminated '\"'."));
2214   
2215   cmdrest = skip_spaces_const (cmdrest);
2216
2217   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2218     error (_("Invalid argument syntax"));
2219
2220   if (*cmdrest == ',')
2221     cmdrest++;
2222   cmdrest = skip_spaces_const (cmdrest);
2223
2224   /* For each argument, make an expression.  */
2225
2226   argvec = (struct expression **) alloca (strlen (cmd)
2227                                          * sizeof (struct expression *));
2228
2229   nargs = 0;
2230   while (*cmdrest != '\0')
2231     {
2232       const char *cmd1;
2233
2234       cmd1 = cmdrest;
2235       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2236       argvec[nargs++] = expr;
2237       cmdrest = cmd1;
2238       if (*cmdrest == ',')
2239         ++cmdrest;
2240     }
2241
2242   /* We don't want to stop processing, so catch any errors
2243      that may show up.  */
2244   TRY_CATCH (ex, RETURN_MASK_ERROR)
2245     {
2246       aexpr = gen_printf (scope, gdbarch, 0, 0,
2247                           format_start, format_end - format_start,
2248                           fpieces, nargs, argvec);
2249     }
2250
2251   do_cleanups (old_cleanups);
2252
2253   if (ex.reason < 0)
2254     {
2255       /* If we got here, it means the command could not be parsed to a valid
2256          bytecode expression and thus can't be evaluated on the target's side.
2257          It's no use iterating through the other commands.  */
2258       return NULL;
2259     }
2260
2261   /* We have a valid agent expression, return it.  */
2262   return aexpr;
2263 }
2264
2265 /* Based on location BL, create a list of breakpoint commands to be
2266    passed on to the target.  If we have duplicated locations with
2267    different commands, we will add any such to the list.  */
2268
2269 static void
2270 build_target_command_list (struct bp_location *bl)
2271 {
2272   struct bp_location **locp = NULL, **loc2p;
2273   int null_command_or_parse_error = 0;
2274   int modified = bl->needs_update;
2275   struct bp_location *loc;
2276
2277   /* For now, limit to agent-style dprintf breakpoints.  */
2278   if (bl->owner->type != bp_dprintf
2279       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2280     return;
2281
2282   if (!target_can_run_breakpoint_commands ())
2283     return;
2284
2285   /* Do a first pass to check for locations with no assigned
2286      conditions or conditions that fail to parse to a valid agent expression
2287      bytecode.  If any of these happen, then it's no use to send conditions
2288      to the target since this location will always trigger and generate a
2289      response back to GDB.  */
2290   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2291     {
2292       loc = (*loc2p);
2293       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2294         {
2295           if (modified)
2296             {
2297               struct agent_expr *aexpr;
2298
2299               /* Re-parse the commands since something changed.  In that
2300                  case we already freed the command bytecodes (see
2301                  force_breakpoint_reinsertion).  We just
2302                  need to parse the command to bytecodes again.  */
2303               aexpr = parse_cmd_to_aexpr (bl->address,
2304                                           loc->owner->extra_string);
2305               loc->cmd_bytecode = aexpr;
2306
2307               if (!aexpr)
2308                 continue;
2309             }
2310
2311           /* If we have a NULL bytecode expression, it means something
2312              went wrong or we have a null command expression.  */
2313           if (!loc->cmd_bytecode)
2314             {
2315               null_command_or_parse_error = 1;
2316               break;
2317             }
2318         }
2319     }
2320
2321   /* If anything failed, then we're not doing target-side commands,
2322      and so clean up.  */
2323   if (null_command_or_parse_error)
2324     {
2325       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2326         {
2327           loc = (*loc2p);
2328           if (is_breakpoint (loc->owner)
2329               && loc->pspace->num == bl->pspace->num)
2330             {
2331               /* Only go as far as the first NULL bytecode is
2332                  located.  */
2333               if (loc->cmd_bytecode == NULL)
2334                 return;
2335
2336               free_agent_expr (loc->cmd_bytecode);
2337               loc->cmd_bytecode = NULL;
2338             }
2339         }
2340     }
2341
2342   /* No NULL commands or failed bytecode generation.  Build a command list
2343      for this location's address.  */
2344   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2345     {
2346       loc = (*loc2p);
2347       if (loc->owner->extra_string
2348           && is_breakpoint (loc->owner)
2349           && loc->pspace->num == bl->pspace->num
2350           && loc->owner->enable_state == bp_enabled
2351           && loc->enabled)
2352         /* Add the command to the vector.  This will be used later
2353            to send the commands to the target.  */
2354         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2355                        loc->cmd_bytecode);
2356     }
2357
2358   bl->target_info.persist = 0;
2359   /* Maybe flag this location as persistent.  */
2360   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2361     bl->target_info.persist = 1;
2362 }
2363
2364 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2365    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2366    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2367    Returns 0 for success, 1 if the bp_location type is not supported or
2368    -1 for failure.
2369
2370    NOTE drow/2003-09-09: This routine could be broken down to an
2371    object-style method for each breakpoint or catchpoint type.  */
2372 static int
2373 insert_bp_location (struct bp_location *bl,
2374                     struct ui_file *tmp_error_stream,
2375                     int *disabled_breaks,
2376                     int *hw_breakpoint_error,
2377                     int *hw_bp_error_explained_already)
2378 {
2379   int val = 0;
2380   char *hw_bp_err_string = NULL;
2381   struct gdb_exception e;
2382
2383   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2384     return 0;
2385
2386   /* Note we don't initialize bl->target_info, as that wipes out
2387      the breakpoint location's shadow_contents if the breakpoint
2388      is still inserted at that location.  This in turn breaks
2389      target_read_memory which depends on these buffers when
2390      a memory read is requested at the breakpoint location:
2391      Once the target_info has been wiped, we fail to see that
2392      we have a breakpoint inserted at that address and thus
2393      read the breakpoint instead of returning the data saved in
2394      the breakpoint location's shadow contents.  */
2395   bl->target_info.placed_address = bl->address;
2396   bl->target_info.placed_address_space = bl->pspace->aspace;
2397   bl->target_info.length = bl->length;
2398
2399   /* When working with target-side conditions, we must pass all the conditions
2400      for the same breakpoint address down to the target since GDB will not
2401      insert those locations.  With a list of breakpoint conditions, the target
2402      can decide when to stop and notify GDB.  */
2403
2404   if (is_breakpoint (bl->owner))
2405     {
2406       build_target_condition_list (bl);
2407       build_target_command_list (bl);
2408       /* Reset the modification marker.  */
2409       bl->needs_update = 0;
2410     }
2411
2412   if (bl->loc_type == bp_loc_software_breakpoint
2413       || bl->loc_type == bp_loc_hardware_breakpoint)
2414     {
2415       if (bl->owner->type != bp_hardware_breakpoint)
2416         {
2417           /* If the explicitly specified breakpoint type
2418              is not hardware breakpoint, check the memory map to see
2419              if the breakpoint address is in read only memory or not.
2420
2421              Two important cases are:
2422              - location type is not hardware breakpoint, memory
2423              is readonly.  We change the type of the location to
2424              hardware breakpoint.
2425              - location type is hardware breakpoint, memory is
2426              read-write.  This means we've previously made the
2427              location hardware one, but then the memory map changed,
2428              so we undo.
2429              
2430              When breakpoints are removed, remove_breakpoints will use
2431              location types we've just set here, the only possible
2432              problem is that memory map has changed during running
2433              program, but it's not going to work anyway with current
2434              gdb.  */
2435           struct mem_region *mr 
2436             = lookup_mem_region (bl->target_info.placed_address);
2437           
2438           if (mr)
2439             {
2440               if (automatic_hardware_breakpoints)
2441                 {
2442                   enum bp_loc_type new_type;
2443                   
2444                   if (mr->attrib.mode != MEM_RW)
2445                     new_type = bp_loc_hardware_breakpoint;
2446                   else 
2447                     new_type = bp_loc_software_breakpoint;
2448                   
2449                   if (new_type != bl->loc_type)
2450                     {
2451                       static int said = 0;
2452
2453                       bl->loc_type = new_type;
2454                       if (!said)
2455                         {
2456                           fprintf_filtered (gdb_stdout,
2457                                             _("Note: automatically using "
2458                                               "hardware breakpoints for "
2459                                               "read-only addresses.\n"));
2460                           said = 1;
2461                         }
2462                     }
2463                 }
2464               else if (bl->loc_type == bp_loc_software_breakpoint
2465                        && mr->attrib.mode != MEM_RW)        
2466                 warning (_("cannot set software breakpoint "
2467                            "at readonly address %s"),
2468                          paddress (bl->gdbarch, bl->address));
2469             }
2470         }
2471         
2472       /* First check to see if we have to handle an overlay.  */
2473       if (overlay_debugging == ovly_off
2474           || bl->section == NULL
2475           || !(section_is_overlay (bl->section)))
2476         {
2477           /* No overlay handling: just set the breakpoint.  */
2478           TRY_CATCH (e, RETURN_MASK_ALL)
2479             {
2480               val = bl->owner->ops->insert_location (bl);
2481             }
2482           if (e.reason < 0)
2483             {
2484               val = 1;
2485               hw_bp_err_string = (char *) e.message;
2486             }
2487         }
2488       else
2489         {
2490           /* This breakpoint is in an overlay section.
2491              Shall we set a breakpoint at the LMA?  */
2492           if (!overlay_events_enabled)
2493             {
2494               /* Yes -- overlay event support is not active, 
2495                  so we must try to set a breakpoint at the LMA.
2496                  This will not work for a hardware breakpoint.  */
2497               if (bl->loc_type == bp_loc_hardware_breakpoint)
2498                 warning (_("hardware breakpoint %d not supported in overlay!"),
2499                          bl->owner->number);
2500               else
2501                 {
2502                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2503                                                              bl->section);
2504                   /* Set a software (trap) breakpoint at the LMA.  */
2505                   bl->overlay_target_info = bl->target_info;
2506                   bl->overlay_target_info.placed_address = addr;
2507                   val = target_insert_breakpoint (bl->gdbarch,
2508                                                   &bl->overlay_target_info);
2509                   if (val != 0)
2510                     fprintf_unfiltered (tmp_error_stream,
2511                                         "Overlay breakpoint %d "
2512                                         "failed: in ROM?\n",
2513                                         bl->owner->number);
2514                 }
2515             }
2516           /* Shall we set a breakpoint at the VMA? */
2517           if (section_is_mapped (bl->section))
2518             {
2519               /* Yes.  This overlay section is mapped into memory.  */
2520               TRY_CATCH (e, RETURN_MASK_ALL)
2521                 {
2522                   val = bl->owner->ops->insert_location (bl);
2523                 }
2524               if (e.reason < 0)
2525                 {
2526                   val = 1;
2527                   hw_bp_err_string = (char *) e.message;
2528                 }
2529             }
2530           else
2531             {
2532               /* No.  This breakpoint will not be inserted.  
2533                  No error, but do not mark the bp as 'inserted'.  */
2534               return 0;
2535             }
2536         }
2537
2538       if (val)
2539         {
2540           /* Can't set the breakpoint.  */
2541           if (solib_name_from_address (bl->pspace, bl->address))
2542             {
2543               /* See also: disable_breakpoints_in_shlibs.  */
2544               val = 0;
2545               bl->shlib_disabled = 1;
2546               observer_notify_breakpoint_modified (bl->owner);
2547               if (!*disabled_breaks)
2548                 {
2549                   fprintf_unfiltered (tmp_error_stream, 
2550                                       "Cannot insert breakpoint %d.\n", 
2551                                       bl->owner->number);
2552                   fprintf_unfiltered (tmp_error_stream, 
2553                                       "Temporarily disabling shared "
2554                                       "library breakpoints:\n");
2555                 }
2556               *disabled_breaks = 1;
2557               fprintf_unfiltered (tmp_error_stream,
2558                                   "breakpoint #%d\n", bl->owner->number);
2559             }
2560           else
2561             {
2562               if (bl->loc_type == bp_loc_hardware_breakpoint)
2563                 {
2564                   *hw_breakpoint_error = 1;
2565                   *hw_bp_error_explained_already = hw_bp_err_string != NULL;
2566                   fprintf_unfiltered (tmp_error_stream,
2567                                       "Cannot insert hardware breakpoint %d%s",
2568                                       bl->owner->number, hw_bp_err_string ? ":" : ".\n");
2569                   if (hw_bp_err_string)
2570                     fprintf_unfiltered (tmp_error_stream, "%s.\n", hw_bp_err_string);
2571                 }
2572               else
2573                 {
2574                   fprintf_unfiltered (tmp_error_stream, 
2575                                       "Cannot insert breakpoint %d.\n", 
2576                                       bl->owner->number);
2577                   fprintf_filtered (tmp_error_stream, 
2578                                     "Error accessing memory address ");
2579                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2580                                   tmp_error_stream);
2581                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2582                                     safe_strerror (val));
2583                 }
2584
2585             }
2586         }
2587       else
2588         bl->inserted = 1;
2589
2590       return val;
2591     }
2592
2593   else if (bl->loc_type == bp_loc_hardware_watchpoint
2594            /* NOTE drow/2003-09-08: This state only exists for removing
2595               watchpoints.  It's not clear that it's necessary...  */
2596            && bl->owner->disposition != disp_del_at_next_stop)
2597     {
2598       gdb_assert (bl->owner->ops != NULL
2599                   && bl->owner->ops->insert_location != NULL);
2600
2601       val = bl->owner->ops->insert_location (bl);
2602
2603       /* If trying to set a read-watchpoint, and it turns out it's not
2604          supported, try emulating one with an access watchpoint.  */
2605       if (val == 1 && bl->watchpoint_type == hw_read)
2606         {
2607           struct bp_location *loc, **loc_temp;
2608
2609           /* But don't try to insert it, if there's already another
2610              hw_access location that would be considered a duplicate
2611              of this one.  */
2612           ALL_BP_LOCATIONS (loc, loc_temp)
2613             if (loc != bl
2614                 && loc->watchpoint_type == hw_access
2615                 && watchpoint_locations_match (bl, loc))
2616               {
2617                 bl->duplicate = 1;
2618                 bl->inserted = 1;
2619                 bl->target_info = loc->target_info;
2620                 bl->watchpoint_type = hw_access;
2621                 val = 0;
2622                 break;
2623               }
2624
2625           if (val == 1)
2626             {
2627               bl->watchpoint_type = hw_access;
2628               val = bl->owner->ops->insert_location (bl);
2629
2630               if (val)
2631                 /* Back to the original value.  */
2632                 bl->watchpoint_type = hw_read;
2633             }
2634         }
2635
2636       bl->inserted = (val == 0);
2637     }
2638
2639   else if (bl->owner->type == bp_catchpoint)
2640     {
2641       gdb_assert (bl->owner->ops != NULL
2642                   && bl->owner->ops->insert_location != NULL);
2643
2644       val = bl->owner->ops->insert_location (bl);
2645       if (val)
2646         {
2647           bl->owner->enable_state = bp_disabled;
2648
2649           if (val == 1)
2650             warning (_("\
2651 Error inserting catchpoint %d: Your system does not support this type\n\
2652 of catchpoint."), bl->owner->number);
2653           else
2654             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2655         }
2656
2657       bl->inserted = (val == 0);
2658
2659       /* We've already printed an error message if there was a problem
2660          inserting this catchpoint, and we've disabled the catchpoint,
2661          so just return success.  */
2662       return 0;
2663     }
2664
2665   return 0;
2666 }
2667
2668 /* This function is called when program space PSPACE is about to be
2669    deleted.  It takes care of updating breakpoints to not reference
2670    PSPACE anymore.  */
2671
2672 void
2673 breakpoint_program_space_exit (struct program_space *pspace)
2674 {
2675   struct breakpoint *b, *b_temp;
2676   struct bp_location *loc, **loc_temp;
2677
2678   /* Remove any breakpoint that was set through this program space.  */
2679   ALL_BREAKPOINTS_SAFE (b, b_temp)
2680     {
2681       if (b->pspace == pspace)
2682         delete_breakpoint (b);
2683     }
2684
2685   /* Breakpoints set through other program spaces could have locations
2686      bound to PSPACE as well.  Remove those.  */
2687   ALL_BP_LOCATIONS (loc, loc_temp)
2688     {
2689       struct bp_location *tmp;
2690
2691       if (loc->pspace == pspace)
2692         {
2693           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2694           if (loc->owner->loc == loc)
2695             loc->owner->loc = loc->next;
2696           else
2697             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2698               if (tmp->next == loc)
2699                 {
2700                   tmp->next = loc->next;
2701                   break;
2702                 }
2703         }
2704     }
2705
2706   /* Now update the global location list to permanently delete the
2707      removed locations above.  */
2708   update_global_location_list (0);
2709 }
2710
2711 /* Make sure all breakpoints are inserted in inferior.
2712    Throws exception on any error.
2713    A breakpoint that is already inserted won't be inserted
2714    again, so calling this function twice is safe.  */
2715 void
2716 insert_breakpoints (void)
2717 {
2718   struct breakpoint *bpt;
2719
2720   ALL_BREAKPOINTS (bpt)
2721     if (is_hardware_watchpoint (bpt))
2722       {
2723         struct watchpoint *w = (struct watchpoint *) bpt;
2724
2725         update_watchpoint (w, 0 /* don't reparse.  */);
2726       }
2727
2728   update_global_location_list (1);
2729
2730   /* update_global_location_list does not insert breakpoints when
2731      always_inserted_mode is not enabled.  Explicitly insert them
2732      now.  */
2733   if (!breakpoints_always_inserted_mode ())
2734     insert_breakpoint_locations ();
2735 }
2736
2737 /* Invoke CALLBACK for each of bp_location.  */
2738
2739 void
2740 iterate_over_bp_locations (walk_bp_location_callback callback)
2741 {
2742   struct bp_location *loc, **loc_tmp;
2743
2744   ALL_BP_LOCATIONS (loc, loc_tmp)
2745     {
2746       callback (loc, NULL);
2747     }
2748 }
2749
2750 /* This is used when we need to synch breakpoint conditions between GDB and the
2751    target.  It is the case with deleting and disabling of breakpoints when using
2752    always-inserted mode.  */
2753
2754 static void
2755 update_inserted_breakpoint_locations (void)
2756 {
2757   struct bp_location *bl, **blp_tmp;
2758   int error_flag = 0;
2759   int val = 0;
2760   int disabled_breaks = 0;
2761   int hw_breakpoint_error = 0;
2762   int hw_bp_details_reported = 0;
2763
2764   struct ui_file *tmp_error_stream = mem_fileopen ();
2765   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2766
2767   /* Explicitly mark the warning -- this will only be printed if
2768      there was an error.  */
2769   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2770
2771   save_current_space_and_thread ();
2772
2773   ALL_BP_LOCATIONS (bl, blp_tmp)
2774     {
2775       /* We only want to update software breakpoints and hardware
2776          breakpoints.  */
2777       if (!is_breakpoint (bl->owner))
2778         continue;
2779
2780       /* We only want to update locations that are already inserted
2781          and need updating.  This is to avoid unwanted insertion during
2782          deletion of breakpoints.  */
2783       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2784         continue;
2785
2786       switch_to_program_space_and_thread (bl->pspace);
2787
2788       /* For targets that support global breakpoints, there's no need
2789          to select an inferior to insert breakpoint to.  In fact, even
2790          if we aren't attached to any process yet, we should still
2791          insert breakpoints.  */
2792       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2793           && ptid_equal (inferior_ptid, null_ptid))
2794         continue;
2795
2796       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2797                                     &hw_breakpoint_error, &hw_bp_details_reported);
2798       if (val)
2799         error_flag = val;
2800     }
2801
2802   if (error_flag)
2803     {
2804       target_terminal_ours_for_output ();
2805       error_stream (tmp_error_stream);
2806     }
2807
2808   do_cleanups (cleanups);
2809 }
2810
2811 /* Used when starting or continuing the program.  */
2812
2813 static void
2814 insert_breakpoint_locations (void)
2815 {
2816   struct breakpoint *bpt;
2817   struct bp_location *bl, **blp_tmp;
2818   int error_flag = 0;
2819   int val = 0;
2820   int disabled_breaks = 0;
2821   int hw_breakpoint_error = 0;
2822   int hw_bp_error_explained_already = 0;
2823
2824   struct ui_file *tmp_error_stream = mem_fileopen ();
2825   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2826   
2827   /* Explicitly mark the warning -- this will only be printed if
2828      there was an error.  */
2829   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2830
2831   save_current_space_and_thread ();
2832
2833   ALL_BP_LOCATIONS (bl, blp_tmp)
2834     {
2835       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2836         continue;
2837
2838       /* There is no point inserting thread-specific breakpoints if
2839          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2840          has BL->OWNER always non-NULL.  */
2841       if (bl->owner->thread != -1
2842           && !valid_thread_id (bl->owner->thread))
2843         continue;
2844
2845       switch_to_program_space_and_thread (bl->pspace);
2846
2847       /* For targets that support global breakpoints, there's no need
2848          to select an inferior to insert breakpoint to.  In fact, even
2849          if we aren't attached to any process yet, we should still
2850          insert breakpoints.  */
2851       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2852           && ptid_equal (inferior_ptid, null_ptid))
2853         continue;
2854
2855       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2856                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
2857       if (val)
2858         error_flag = val;
2859     }
2860
2861   /* If we failed to insert all locations of a watchpoint, remove
2862      them, as half-inserted watchpoint is of limited use.  */
2863   ALL_BREAKPOINTS (bpt)  
2864     {
2865       int some_failed = 0;
2866       struct bp_location *loc;
2867
2868       if (!is_hardware_watchpoint (bpt))
2869         continue;
2870
2871       if (!breakpoint_enabled (bpt))
2872         continue;
2873
2874       if (bpt->disposition == disp_del_at_next_stop)
2875         continue;
2876       
2877       for (loc = bpt->loc; loc; loc = loc->next)
2878         if (!loc->inserted && should_be_inserted (loc))
2879           {
2880             some_failed = 1;
2881             break;
2882           }
2883       if (some_failed)
2884         {
2885           for (loc = bpt->loc; loc; loc = loc->next)
2886             if (loc->inserted)
2887               remove_breakpoint (loc, mark_uninserted);
2888
2889           hw_breakpoint_error = 1;
2890           fprintf_unfiltered (tmp_error_stream,
2891                               "Could not insert hardware watchpoint %d.\n", 
2892                               bpt->number);
2893           error_flag = -1;
2894         }
2895     }
2896
2897   if (error_flag)
2898     {
2899       /* If a hardware breakpoint or watchpoint was inserted, add a
2900          message about possibly exhausted resources.  */
2901       if (hw_breakpoint_error && !hw_bp_error_explained_already)
2902         {
2903           fprintf_unfiltered (tmp_error_stream, 
2904                               "Could not insert hardware breakpoints:\n\
2905 You may have requested too many hardware breakpoints/watchpoints.\n");
2906         }
2907       target_terminal_ours_for_output ();
2908       error_stream (tmp_error_stream);
2909     }
2910
2911   do_cleanups (cleanups);
2912 }
2913
2914 /* Used when the program stops.
2915    Returns zero if successful, or non-zero if there was a problem
2916    removing a breakpoint location.  */
2917
2918 int
2919 remove_breakpoints (void)
2920 {
2921   struct bp_location *bl, **blp_tmp;
2922   int val = 0;
2923
2924   ALL_BP_LOCATIONS (bl, blp_tmp)
2925   {
2926     if (bl->inserted && !is_tracepoint (bl->owner))
2927       val |= remove_breakpoint (bl, mark_uninserted);
2928   }
2929   return val;
2930 }
2931
2932 /* Remove breakpoints of process PID.  */
2933
2934 int
2935 remove_breakpoints_pid (int pid)
2936 {
2937   struct bp_location *bl, **blp_tmp;
2938   int val;
2939   struct inferior *inf = find_inferior_pid (pid);
2940
2941   ALL_BP_LOCATIONS (bl, blp_tmp)
2942   {
2943     if (bl->pspace != inf->pspace)
2944       continue;
2945
2946     if (bl->owner->type == bp_dprintf)
2947       continue;
2948
2949     if (bl->inserted)
2950       {
2951         val = remove_breakpoint (bl, mark_uninserted);
2952         if (val != 0)
2953           return val;
2954       }
2955   }
2956   return 0;
2957 }
2958
2959 int
2960 reattach_breakpoints (int pid)
2961 {
2962   struct cleanup *old_chain;
2963   struct bp_location *bl, **blp_tmp;
2964   int val;
2965   struct ui_file *tmp_error_stream;
2966   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
2967   struct inferior *inf;
2968   struct thread_info *tp;
2969
2970   tp = any_live_thread_of_process (pid);
2971   if (tp == NULL)
2972     return 1;
2973
2974   inf = find_inferior_pid (pid);
2975   old_chain = save_inferior_ptid ();
2976
2977   inferior_ptid = tp->ptid;
2978
2979   tmp_error_stream = mem_fileopen ();
2980   make_cleanup_ui_file_delete (tmp_error_stream);
2981
2982   ALL_BP_LOCATIONS (bl, blp_tmp)
2983   {
2984     if (bl->pspace != inf->pspace)
2985       continue;
2986
2987     if (bl->inserted)
2988       {
2989         bl->inserted = 0;
2990         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
2991         if (val != 0)
2992           {
2993             do_cleanups (old_chain);
2994             return val;
2995           }
2996       }
2997   }
2998   do_cleanups (old_chain);
2999   return 0;
3000 }
3001
3002 static int internal_breakpoint_number = -1;
3003
3004 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3005    If INTERNAL is non-zero, the breakpoint number will be populated
3006    from internal_breakpoint_number and that variable decremented.
3007    Otherwise the breakpoint number will be populated from
3008    breakpoint_count and that value incremented.  Internal breakpoints
3009    do not set the internal var bpnum.  */
3010 static void
3011 set_breakpoint_number (int internal, struct breakpoint *b)
3012 {
3013   if (internal)
3014     b->number = internal_breakpoint_number--;
3015   else
3016     {
3017       set_breakpoint_count (breakpoint_count + 1);
3018       b->number = breakpoint_count;
3019     }
3020 }
3021
3022 static struct breakpoint *
3023 create_internal_breakpoint (struct gdbarch *gdbarch,
3024                             CORE_ADDR address, enum bptype type,
3025                             const struct breakpoint_ops *ops)
3026 {
3027   struct symtab_and_line sal;
3028   struct breakpoint *b;
3029
3030   init_sal (&sal);              /* Initialize to zeroes.  */
3031
3032   sal.pc = address;
3033   sal.section = find_pc_overlay (sal.pc);
3034   sal.pspace = current_program_space;
3035
3036   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3037   b->number = internal_breakpoint_number--;
3038   b->disposition = disp_donttouch;
3039
3040   return b;
3041 }
3042
3043 static const char *const longjmp_names[] =
3044   {
3045     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3046   };
3047 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3048
3049 /* Per-objfile data private to breakpoint.c.  */
3050 struct breakpoint_objfile_data
3051 {
3052   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3053   struct minimal_symbol *overlay_msym;
3054
3055   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3056   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3057
3058   /* True if we have looked for longjmp probes.  */
3059   int longjmp_searched;
3060
3061   /* SystemTap probe points for longjmp (if any).  */
3062   VEC (probe_p) *longjmp_probes;
3063
3064   /* Minimal symbol for "std::terminate()" (if any).  */
3065   struct minimal_symbol *terminate_msym;
3066
3067   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3068   struct minimal_symbol *exception_msym;
3069
3070   /* True if we have looked for exception probes.  */
3071   int exception_searched;
3072
3073   /* SystemTap probe points for unwinding (if any).  */
3074   VEC (probe_p) *exception_probes;
3075 };
3076
3077 static const struct objfile_data *breakpoint_objfile_key;
3078
3079 /* Minimal symbol not found sentinel.  */
3080 static struct minimal_symbol msym_not_found;
3081
3082 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3083
3084 static int
3085 msym_not_found_p (const struct minimal_symbol *msym)
3086 {
3087   return msym == &msym_not_found;
3088 }
3089
3090 /* Return per-objfile data needed by breakpoint.c.
3091    Allocate the data if necessary.  */
3092
3093 static struct breakpoint_objfile_data *
3094 get_breakpoint_objfile_data (struct objfile *objfile)
3095 {
3096   struct breakpoint_objfile_data *bp_objfile_data;
3097
3098   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3099   if (bp_objfile_data == NULL)
3100     {
3101       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3102                                        sizeof (*bp_objfile_data));
3103
3104       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3105       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3106     }
3107   return bp_objfile_data;
3108 }
3109
3110 static void
3111 free_breakpoint_probes (struct objfile *obj, void *data)
3112 {
3113   struct breakpoint_objfile_data *bp_objfile_data = data;
3114
3115   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3116   VEC_free (probe_p, bp_objfile_data->exception_probes);
3117 }
3118
3119 static void
3120 create_overlay_event_breakpoint (void)
3121 {
3122   struct objfile *objfile;
3123   const char *const func_name = "_ovly_debug_event";
3124
3125   ALL_OBJFILES (objfile)
3126     {
3127       struct breakpoint *b;
3128       struct breakpoint_objfile_data *bp_objfile_data;
3129       CORE_ADDR addr;
3130
3131       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3132
3133       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3134         continue;
3135
3136       if (bp_objfile_data->overlay_msym == NULL)
3137         {
3138           struct minimal_symbol *m;
3139
3140           m = lookup_minimal_symbol_text (func_name, objfile);
3141           if (m == NULL)
3142             {
3143               /* Avoid future lookups in this objfile.  */
3144               bp_objfile_data->overlay_msym = &msym_not_found;
3145               continue;
3146             }
3147           bp_objfile_data->overlay_msym = m;
3148         }
3149
3150       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3151       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3152                                       bp_overlay_event,
3153                                       &internal_breakpoint_ops);
3154       b->addr_string = xstrdup (func_name);
3155
3156       if (overlay_debugging == ovly_auto)
3157         {
3158           b->enable_state = bp_enabled;
3159           overlay_events_enabled = 1;
3160         }
3161       else
3162        {
3163          b->enable_state = bp_disabled;
3164          overlay_events_enabled = 0;
3165        }
3166     }
3167   update_global_location_list (1);
3168 }
3169
3170 static void
3171 create_longjmp_master_breakpoint (void)
3172 {
3173   struct program_space *pspace;
3174   struct cleanup *old_chain;
3175
3176   old_chain = save_current_program_space ();
3177
3178   ALL_PSPACES (pspace)
3179   {
3180     struct objfile *objfile;
3181
3182     set_current_program_space (pspace);
3183
3184     ALL_OBJFILES (objfile)
3185     {
3186       int i;
3187       struct gdbarch *gdbarch;
3188       struct breakpoint_objfile_data *bp_objfile_data;
3189
3190       gdbarch = get_objfile_arch (objfile);
3191       if (!gdbarch_get_longjmp_target_p (gdbarch))
3192         continue;
3193
3194       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3195
3196       if (!bp_objfile_data->longjmp_searched)
3197         {
3198           bp_objfile_data->longjmp_probes
3199             = find_probes_in_objfile (objfile, "libc", "longjmp");
3200           bp_objfile_data->longjmp_searched = 1;
3201         }
3202
3203       if (bp_objfile_data->longjmp_probes != NULL)
3204         {
3205           int i;
3206           struct probe *probe;
3207           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3208
3209           for (i = 0;
3210                VEC_iterate (probe_p,
3211                             bp_objfile_data->longjmp_probes,
3212                             i, probe);
3213                ++i)
3214             {
3215               struct breakpoint *b;
3216
3217               b = create_internal_breakpoint (gdbarch, probe->address,
3218                                               bp_longjmp_master,
3219                                               &internal_breakpoint_ops);
3220               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3221               b->enable_state = bp_disabled;
3222             }
3223
3224           continue;
3225         }
3226
3227       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3228         {
3229           struct breakpoint *b;
3230           const char *func_name;
3231           CORE_ADDR addr;
3232
3233           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3234             continue;
3235
3236           func_name = longjmp_names[i];
3237           if (bp_objfile_data->longjmp_msym[i] == NULL)
3238             {
3239               struct minimal_symbol *m;
3240
3241               m = lookup_minimal_symbol_text (func_name, objfile);
3242               if (m == NULL)
3243                 {
3244                   /* Prevent future lookups in this objfile.  */
3245                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3246                   continue;
3247                 }
3248               bp_objfile_data->longjmp_msym[i] = m;
3249             }
3250
3251           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3252           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3253                                           &internal_breakpoint_ops);
3254           b->addr_string = xstrdup (func_name);
3255           b->enable_state = bp_disabled;
3256         }
3257     }
3258   }
3259   update_global_location_list (1);
3260
3261   do_cleanups (old_chain);
3262 }
3263
3264 /* Create a master std::terminate breakpoint.  */
3265 static void
3266 create_std_terminate_master_breakpoint (void)
3267 {
3268   struct program_space *pspace;
3269   struct cleanup *old_chain;
3270   const char *const func_name = "std::terminate()";
3271
3272   old_chain = save_current_program_space ();
3273
3274   ALL_PSPACES (pspace)
3275   {
3276     struct objfile *objfile;
3277     CORE_ADDR addr;
3278
3279     set_current_program_space (pspace);
3280
3281     ALL_OBJFILES (objfile)
3282     {
3283       struct breakpoint *b;
3284       struct breakpoint_objfile_data *bp_objfile_data;
3285
3286       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3287
3288       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3289         continue;
3290
3291       if (bp_objfile_data->terminate_msym == NULL)
3292         {
3293           struct minimal_symbol *m;
3294
3295           m = lookup_minimal_symbol (func_name, NULL, objfile);
3296           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3297                             && MSYMBOL_TYPE (m) != mst_file_text))
3298             {
3299               /* Prevent future lookups in this objfile.  */
3300               bp_objfile_data->terminate_msym = &msym_not_found;
3301               continue;
3302             }
3303           bp_objfile_data->terminate_msym = m;
3304         }
3305
3306       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3307       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3308                                       bp_std_terminate_master,
3309                                       &internal_breakpoint_ops);
3310       b->addr_string = xstrdup (func_name);
3311       b->enable_state = bp_disabled;
3312     }
3313   }
3314
3315   update_global_location_list (1);
3316
3317   do_cleanups (old_chain);
3318 }
3319
3320 /* Install a master breakpoint on the unwinder's debug hook.  */
3321
3322 static void
3323 create_exception_master_breakpoint (void)
3324 {
3325   struct objfile *objfile;
3326   const char *const func_name = "_Unwind_DebugHook";
3327
3328   ALL_OBJFILES (objfile)
3329     {
3330       struct breakpoint *b;
3331       struct gdbarch *gdbarch;
3332       struct breakpoint_objfile_data *bp_objfile_data;
3333       CORE_ADDR addr;
3334
3335       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3336
3337       /* We prefer the SystemTap probe point if it exists.  */
3338       if (!bp_objfile_data->exception_searched)
3339         {
3340           bp_objfile_data->exception_probes
3341             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3342           bp_objfile_data->exception_searched = 1;
3343         }
3344
3345       if (bp_objfile_data->exception_probes != NULL)
3346         {
3347           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3348           int i;
3349           struct probe *probe;
3350
3351           for (i = 0;
3352                VEC_iterate (probe_p,
3353                             bp_objfile_data->exception_probes,
3354                             i, probe);
3355                ++i)
3356             {
3357               struct breakpoint *b;
3358
3359               b = create_internal_breakpoint (gdbarch, probe->address,
3360                                               bp_exception_master,
3361                                               &internal_breakpoint_ops);
3362               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3363               b->enable_state = bp_disabled;
3364             }
3365
3366           continue;
3367         }
3368
3369       /* Otherwise, try the hook function.  */
3370
3371       if (msym_not_found_p (bp_objfile_data->exception_msym))
3372         continue;
3373
3374       gdbarch = get_objfile_arch (objfile);
3375
3376       if (bp_objfile_data->exception_msym == NULL)
3377         {
3378           struct minimal_symbol *debug_hook;
3379
3380           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3381           if (debug_hook == NULL)
3382             {
3383               bp_objfile_data->exception_msym = &msym_not_found;
3384               continue;
3385             }
3386
3387           bp_objfile_data->exception_msym = debug_hook;
3388         }
3389
3390       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3391       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3392                                                  &current_target);
3393       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3394                                       &internal_breakpoint_ops);
3395       b->addr_string = xstrdup (func_name);
3396       b->enable_state = bp_disabled;
3397     }
3398
3399   update_global_location_list (1);
3400 }
3401
3402 void
3403 update_breakpoints_after_exec (void)
3404 {
3405   struct breakpoint *b, *b_tmp;
3406   struct bp_location *bploc, **bplocp_tmp;
3407
3408   /* We're about to delete breakpoints from GDB's lists.  If the
3409      INSERTED flag is true, GDB will try to lift the breakpoints by
3410      writing the breakpoints' "shadow contents" back into memory.  The
3411      "shadow contents" are NOT valid after an exec, so GDB should not
3412      do that.  Instead, the target is responsible from marking
3413      breakpoints out as soon as it detects an exec.  We don't do that
3414      here instead, because there may be other attempts to delete
3415      breakpoints after detecting an exec and before reaching here.  */
3416   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3417     if (bploc->pspace == current_program_space)
3418       gdb_assert (!bploc->inserted);
3419
3420   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3421   {
3422     if (b->pspace != current_program_space)
3423       continue;
3424
3425     /* Solib breakpoints must be explicitly reset after an exec().  */
3426     if (b->type == bp_shlib_event)
3427       {
3428         delete_breakpoint (b);
3429         continue;
3430       }
3431
3432     /* JIT breakpoints must be explicitly reset after an exec().  */
3433     if (b->type == bp_jit_event)
3434       {
3435         delete_breakpoint (b);
3436         continue;
3437       }
3438
3439     /* Thread event breakpoints must be set anew after an exec(),
3440        as must overlay event and longjmp master breakpoints.  */
3441     if (b->type == bp_thread_event || b->type == bp_overlay_event
3442         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3443         || b->type == bp_exception_master)
3444       {
3445         delete_breakpoint (b);
3446         continue;
3447       }
3448
3449     /* Step-resume breakpoints are meaningless after an exec().  */
3450     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3451       {
3452         delete_breakpoint (b);
3453         continue;
3454       }
3455
3456     /* Longjmp and longjmp-resume breakpoints are also meaningless
3457        after an exec.  */
3458     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3459         || b->type == bp_longjmp_call_dummy
3460         || b->type == bp_exception || b->type == bp_exception_resume)
3461       {
3462         delete_breakpoint (b);
3463         continue;
3464       }
3465
3466     if (b->type == bp_catchpoint)
3467       {
3468         /* For now, none of the bp_catchpoint breakpoints need to
3469            do anything at this point.  In the future, if some of
3470            the catchpoints need to something, we will need to add
3471            a new method, and call this method from here.  */
3472         continue;
3473       }
3474
3475     /* bp_finish is a special case.  The only way we ought to be able
3476        to see one of these when an exec() has happened, is if the user
3477        caught a vfork, and then said "finish".  Ordinarily a finish just
3478        carries them to the call-site of the current callee, by setting
3479        a temporary bp there and resuming.  But in this case, the finish
3480        will carry them entirely through the vfork & exec.
3481
3482        We don't want to allow a bp_finish to remain inserted now.  But
3483        we can't safely delete it, 'cause finish_command has a handle to
3484        the bp on a bpstat, and will later want to delete it.  There's a
3485        chance (and I've seen it happen) that if we delete the bp_finish
3486        here, that its storage will get reused by the time finish_command
3487        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3488        We really must allow finish_command to delete a bp_finish.
3489
3490        In the absence of a general solution for the "how do we know
3491        it's safe to delete something others may have handles to?"
3492        problem, what we'll do here is just uninsert the bp_finish, and
3493        let finish_command delete it.
3494
3495        (We know the bp_finish is "doomed" in the sense that it's
3496        momentary, and will be deleted as soon as finish_command sees
3497        the inferior stopped.  So it doesn't matter that the bp's
3498        address is probably bogus in the new a.out, unlike e.g., the
3499        solib breakpoints.)  */
3500
3501     if (b->type == bp_finish)
3502       {
3503         continue;
3504       }
3505
3506     /* Without a symbolic address, we have little hope of the
3507        pre-exec() address meaning the same thing in the post-exec()
3508        a.out.  */
3509     if (b->addr_string == NULL)
3510       {
3511         delete_breakpoint (b);
3512         continue;
3513       }
3514   }
3515   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3516   create_overlay_event_breakpoint ();
3517   create_longjmp_master_breakpoint ();
3518   create_std_terminate_master_breakpoint ();
3519   create_exception_master_breakpoint ();
3520 }
3521
3522 int
3523 detach_breakpoints (ptid_t ptid)
3524 {
3525   struct bp_location *bl, **blp_tmp;
3526   int val = 0;
3527   struct cleanup *old_chain = save_inferior_ptid ();
3528   struct inferior *inf = current_inferior ();
3529
3530   if (PIDGET (ptid) == PIDGET (inferior_ptid))
3531     error (_("Cannot detach breakpoints of inferior_ptid"));
3532
3533   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3534   inferior_ptid = ptid;
3535   ALL_BP_LOCATIONS (bl, blp_tmp)
3536   {
3537     if (bl->pspace != inf->pspace)
3538       continue;
3539
3540     /* This function must physically remove breakpoints locations
3541        from the specified ptid, without modifying the breakpoint
3542        package's state.  Locations of type bp_loc_other are only
3543        maintained at GDB side.  So, there is no need to remove
3544        these bp_loc_other locations.  Moreover, removing these
3545        would modify the breakpoint package's state.  */
3546     if (bl->loc_type == bp_loc_other)
3547       continue;
3548
3549     if (bl->inserted)
3550       val |= remove_breakpoint_1 (bl, mark_inserted);
3551   }
3552
3553   /* Detach single-step breakpoints as well.  */
3554   detach_single_step_breakpoints ();
3555
3556   do_cleanups (old_chain);
3557   return val;
3558 }
3559
3560 /* Remove the breakpoint location BL from the current address space.
3561    Note that this is used to detach breakpoints from a child fork.
3562    When we get here, the child isn't in the inferior list, and neither
3563    do we have objects to represent its address space --- we should
3564    *not* look at bl->pspace->aspace here.  */
3565
3566 static int
3567 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3568 {
3569   int val;
3570
3571   /* BL is never in moribund_locations by our callers.  */
3572   gdb_assert (bl->owner != NULL);
3573
3574   if (bl->owner->enable_state == bp_permanent)
3575     /* Permanent breakpoints cannot be inserted or removed.  */
3576     return 0;
3577
3578   /* The type of none suggests that owner is actually deleted.
3579      This should not ever happen.  */
3580   gdb_assert (bl->owner->type != bp_none);
3581
3582   if (bl->loc_type == bp_loc_software_breakpoint
3583       || bl->loc_type == bp_loc_hardware_breakpoint)
3584     {
3585       /* "Normal" instruction breakpoint: either the standard
3586          trap-instruction bp (bp_breakpoint), or a
3587          bp_hardware_breakpoint.  */
3588
3589       /* First check to see if we have to handle an overlay.  */
3590       if (overlay_debugging == ovly_off
3591           || bl->section == NULL
3592           || !(section_is_overlay (bl->section)))
3593         {
3594           /* No overlay handling: just remove the breakpoint.  */
3595           val = bl->owner->ops->remove_location (bl);
3596         }
3597       else
3598         {
3599           /* This breakpoint is in an overlay section.
3600              Did we set a breakpoint at the LMA?  */
3601           if (!overlay_events_enabled)
3602               {
3603                 /* Yes -- overlay event support is not active, so we
3604                    should have set a breakpoint at the LMA.  Remove it.  
3605                 */
3606                 /* Ignore any failures: if the LMA is in ROM, we will
3607                    have already warned when we failed to insert it.  */
3608                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3609                   target_remove_hw_breakpoint (bl->gdbarch,
3610                                                &bl->overlay_target_info);
3611                 else
3612                   target_remove_breakpoint (bl->gdbarch,
3613                                             &bl->overlay_target_info);
3614               }
3615           /* Did we set a breakpoint at the VMA? 
3616              If so, we will have marked the breakpoint 'inserted'.  */
3617           if (bl->inserted)
3618             {
3619               /* Yes -- remove it.  Previously we did not bother to
3620                  remove the breakpoint if the section had been
3621                  unmapped, but let's not rely on that being safe.  We
3622                  don't know what the overlay manager might do.  */
3623
3624               /* However, we should remove *software* breakpoints only
3625                  if the section is still mapped, or else we overwrite
3626                  wrong code with the saved shadow contents.  */
3627               if (bl->loc_type == bp_loc_hardware_breakpoint
3628                   || section_is_mapped (bl->section))
3629                 val = bl->owner->ops->remove_location (bl);
3630               else
3631                 val = 0;
3632             }
3633           else
3634             {
3635               /* No -- not inserted, so no need to remove.  No error.  */
3636               val = 0;
3637             }
3638         }
3639
3640       /* In some cases, we might not be able to remove a breakpoint
3641          in a shared library that has already been removed, but we
3642          have not yet processed the shlib unload event.  */
3643       if (val && solib_name_from_address (bl->pspace, bl->address))
3644         val = 0;
3645
3646       if (val)
3647         return val;
3648       bl->inserted = (is == mark_inserted);
3649     }
3650   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3651     {
3652       gdb_assert (bl->owner->ops != NULL
3653                   && bl->owner->ops->remove_location != NULL);
3654
3655       bl->inserted = (is == mark_inserted);
3656       bl->owner->ops->remove_location (bl);
3657
3658       /* Failure to remove any of the hardware watchpoints comes here.  */
3659       if ((is == mark_uninserted) && (bl->inserted))
3660         warning (_("Could not remove hardware watchpoint %d."),
3661                  bl->owner->number);
3662     }
3663   else if (bl->owner->type == bp_catchpoint
3664            && breakpoint_enabled (bl->owner)
3665            && !bl->duplicate)
3666     {
3667       gdb_assert (bl->owner->ops != NULL
3668                   && bl->owner->ops->remove_location != NULL);
3669
3670       val = bl->owner->ops->remove_location (bl);
3671       if (val)
3672         return val;
3673
3674       bl->inserted = (is == mark_inserted);
3675     }
3676
3677   return 0;
3678 }
3679
3680 static int
3681 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3682 {
3683   int ret;
3684   struct cleanup *old_chain;
3685
3686   /* BL is never in moribund_locations by our callers.  */
3687   gdb_assert (bl->owner != NULL);
3688
3689   if (bl->owner->enable_state == bp_permanent)
3690     /* Permanent breakpoints cannot be inserted or removed.  */
3691     return 0;
3692
3693   /* The type of none suggests that owner is actually deleted.
3694      This should not ever happen.  */
3695   gdb_assert (bl->owner->type != bp_none);
3696
3697   old_chain = save_current_space_and_thread ();
3698
3699   switch_to_program_space_and_thread (bl->pspace);
3700
3701   ret = remove_breakpoint_1 (bl, is);
3702
3703   do_cleanups (old_chain);
3704   return ret;
3705 }
3706
3707 /* Clear the "inserted" flag in all breakpoints.  */
3708
3709 void
3710 mark_breakpoints_out (void)
3711 {
3712   struct bp_location *bl, **blp_tmp;
3713
3714   ALL_BP_LOCATIONS (bl, blp_tmp)
3715     if (bl->pspace == current_program_space)
3716       bl->inserted = 0;
3717 }
3718
3719 /* Clear the "inserted" flag in all breakpoints and delete any
3720    breakpoints which should go away between runs of the program.
3721
3722    Plus other such housekeeping that has to be done for breakpoints
3723    between runs.
3724
3725    Note: this function gets called at the end of a run (by
3726    generic_mourn_inferior) and when a run begins (by
3727    init_wait_for_inferior).  */
3728
3729
3730
3731 void
3732 breakpoint_init_inferior (enum inf_context context)
3733 {
3734   struct breakpoint *b, *b_tmp;
3735   struct bp_location *bl, **blp_tmp;
3736   int ix;
3737   struct program_space *pspace = current_program_space;
3738
3739   /* If breakpoint locations are shared across processes, then there's
3740      nothing to do.  */
3741   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3742     return;
3743
3744   ALL_BP_LOCATIONS (bl, blp_tmp)
3745   {
3746     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3747     if (bl->pspace == pspace
3748         && bl->owner->enable_state != bp_permanent)
3749       bl->inserted = 0;
3750   }
3751
3752   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3753   {
3754     if (b->loc && b->loc->pspace != pspace)
3755       continue;
3756
3757     switch (b->type)
3758       {
3759       case bp_call_dummy:
3760       case bp_longjmp_call_dummy:
3761
3762         /* If the call dummy breakpoint is at the entry point it will
3763            cause problems when the inferior is rerun, so we better get
3764            rid of it.  */
3765
3766       case bp_watchpoint_scope:
3767
3768         /* Also get rid of scope breakpoints.  */
3769
3770       case bp_shlib_event:
3771
3772         /* Also remove solib event breakpoints.  Their addresses may
3773            have changed since the last time we ran the program.
3774            Actually we may now be debugging against different target;
3775            and so the solib backend that installed this breakpoint may
3776            not be used in by the target.  E.g.,
3777
3778            (gdb) file prog-linux
3779            (gdb) run               # native linux target
3780            ...
3781            (gdb) kill
3782            (gdb) file prog-win.exe
3783            (gdb) tar rem :9999     # remote Windows gdbserver.
3784         */
3785
3786       case bp_step_resume:
3787
3788         /* Also remove step-resume breakpoints.  */
3789
3790         delete_breakpoint (b);
3791         break;
3792
3793       case bp_watchpoint:
3794       case bp_hardware_watchpoint:
3795       case bp_read_watchpoint:
3796       case bp_access_watchpoint:
3797         {
3798           struct watchpoint *w = (struct watchpoint *) b;
3799
3800           /* Likewise for watchpoints on local expressions.  */
3801           if (w->exp_valid_block != NULL)
3802             delete_breakpoint (b);
3803           else if (context == inf_starting)
3804             {
3805               /* Reset val field to force reread of starting value in
3806                  insert_breakpoints.  */
3807               if (w->val)
3808                 value_free (w->val);
3809               w->val = NULL;
3810               w->val_valid = 0;
3811           }
3812         }
3813         break;
3814       default:
3815         break;
3816       }
3817   }
3818
3819   /* Get rid of the moribund locations.  */
3820   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3821     decref_bp_location (&bl);
3822   VEC_free (bp_location_p, moribund_locations);
3823 }
3824
3825 /* These functions concern about actual breakpoints inserted in the
3826    target --- to e.g. check if we need to do decr_pc adjustment or if
3827    we need to hop over the bkpt --- so we check for address space
3828    match, not program space.  */
3829
3830 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3831    exists at PC.  It returns ordinary_breakpoint_here if it's an
3832    ordinary breakpoint, or permanent_breakpoint_here if it's a
3833    permanent breakpoint.
3834    - When continuing from a location with an ordinary breakpoint, we
3835      actually single step once before calling insert_breakpoints.
3836    - When continuing from a location with a permanent breakpoint, we
3837      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3838      the target, to advance the PC past the breakpoint.  */
3839
3840 enum breakpoint_here
3841 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3842 {
3843   struct bp_location *bl, **blp_tmp;
3844   int any_breakpoint_here = 0;
3845
3846   ALL_BP_LOCATIONS (bl, blp_tmp)
3847     {
3848       if (bl->loc_type != bp_loc_software_breakpoint
3849           && bl->loc_type != bp_loc_hardware_breakpoint)
3850         continue;
3851
3852       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3853       if ((breakpoint_enabled (bl->owner)
3854            || bl->owner->enable_state == bp_permanent)
3855           && breakpoint_location_address_match (bl, aspace, pc))
3856         {
3857           if (overlay_debugging 
3858               && section_is_overlay (bl->section)
3859               && !section_is_mapped (bl->section))
3860             continue;           /* unmapped overlay -- can't be a match */
3861           else if (bl->owner->enable_state == bp_permanent)
3862             return permanent_breakpoint_here;
3863           else
3864             any_breakpoint_here = 1;
3865         }
3866     }
3867
3868   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3869 }
3870
3871 /* Return true if there's a moribund breakpoint at PC.  */
3872
3873 int
3874 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3875 {
3876   struct bp_location *loc;
3877   int ix;
3878
3879   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3880     if (breakpoint_location_address_match (loc, aspace, pc))
3881       return 1;
3882
3883   return 0;
3884 }
3885
3886 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3887    inserted using regular breakpoint_chain / bp_location array
3888    mechanism.  This does not check for single-step breakpoints, which
3889    are inserted and removed using direct target manipulation.  */
3890
3891 int
3892 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3893                                     CORE_ADDR pc)
3894 {
3895   struct bp_location *bl, **blp_tmp;
3896
3897   ALL_BP_LOCATIONS (bl, blp_tmp)
3898     {
3899       if (bl->loc_type != bp_loc_software_breakpoint
3900           && bl->loc_type != bp_loc_hardware_breakpoint)
3901         continue;
3902
3903       if (bl->inserted
3904           && breakpoint_location_address_match (bl, aspace, pc))
3905         {
3906           if (overlay_debugging 
3907               && section_is_overlay (bl->section)
3908               && !section_is_mapped (bl->section))
3909             continue;           /* unmapped overlay -- can't be a match */
3910           else
3911             return 1;
3912         }
3913     }
3914   return 0;
3915 }
3916
3917 /* Returns non-zero iff there's either regular breakpoint
3918    or a single step breakpoint inserted at PC.  */
3919
3920 int
3921 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3922 {
3923   if (regular_breakpoint_inserted_here_p (aspace, pc))
3924     return 1;
3925
3926   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3927     return 1;
3928
3929   return 0;
3930 }
3931
3932 /* This function returns non-zero iff there is a software breakpoint
3933    inserted at PC.  */
3934
3935 int
3936 software_breakpoint_inserted_here_p (struct address_space *aspace,
3937                                      CORE_ADDR pc)
3938 {
3939   struct bp_location *bl, **blp_tmp;
3940
3941   ALL_BP_LOCATIONS (bl, blp_tmp)
3942     {
3943       if (bl->loc_type != bp_loc_software_breakpoint)
3944         continue;
3945
3946       if (bl->inserted
3947           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3948                                        aspace, pc))
3949         {
3950           if (overlay_debugging 
3951               && section_is_overlay (bl->section)
3952               && !section_is_mapped (bl->section))
3953             continue;           /* unmapped overlay -- can't be a match */
3954           else
3955             return 1;
3956         }
3957     }
3958
3959   /* Also check for software single-step breakpoints.  */
3960   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3961     return 1;
3962
3963   return 0;
3964 }
3965
3966 int
3967 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3968                                        CORE_ADDR addr, ULONGEST len)
3969 {
3970   struct breakpoint *bpt;
3971
3972   ALL_BREAKPOINTS (bpt)
3973     {
3974       struct bp_location *loc;
3975
3976       if (bpt->type != bp_hardware_watchpoint
3977           && bpt->type != bp_access_watchpoint)
3978         continue;
3979
3980       if (!breakpoint_enabled (bpt))
3981         continue;
3982
3983       for (loc = bpt->loc; loc; loc = loc->next)
3984         if (loc->pspace->aspace == aspace && loc->inserted)
3985           {
3986             CORE_ADDR l, h;
3987
3988             /* Check for intersection.  */
3989             l = max (loc->address, addr);
3990             h = min (loc->address + loc->length, addr + len);
3991             if (l < h)
3992               return 1;
3993           }
3994     }
3995   return 0;
3996 }
3997
3998 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3999    PC is valid for process/thread PTID.  */
4000
4001 int
4002 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4003                          ptid_t ptid)
4004 {
4005   struct bp_location *bl, **blp_tmp;
4006   /* The thread and task IDs associated to PTID, computed lazily.  */
4007   int thread = -1;
4008   int task = 0;
4009   
4010   ALL_BP_LOCATIONS (bl, blp_tmp)
4011     {
4012       if (bl->loc_type != bp_loc_software_breakpoint
4013           && bl->loc_type != bp_loc_hardware_breakpoint)
4014         continue;
4015
4016       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4017       if (!breakpoint_enabled (bl->owner)
4018           && bl->owner->enable_state != bp_permanent)
4019         continue;
4020
4021       if (!breakpoint_location_address_match (bl, aspace, pc))
4022         continue;
4023
4024       if (bl->owner->thread != -1)
4025         {
4026           /* This is a thread-specific breakpoint.  Check that ptid
4027              matches that thread.  If thread hasn't been computed yet,
4028              it is now time to do so.  */
4029           if (thread == -1)
4030             thread = pid_to_thread_id (ptid);
4031           if (bl->owner->thread != thread)
4032             continue;
4033         }
4034
4035       if (bl->owner->task != 0)
4036         {
4037           /* This is a task-specific breakpoint.  Check that ptid
4038              matches that task.  If task hasn't been computed yet,
4039              it is now time to do so.  */
4040           if (task == 0)
4041             task = ada_get_task_number (ptid);
4042           if (bl->owner->task != task)
4043             continue;
4044         }
4045
4046       if (overlay_debugging 
4047           && section_is_overlay (bl->section)
4048           && !section_is_mapped (bl->section))
4049         continue;           /* unmapped overlay -- can't be a match */
4050
4051       return 1;
4052     }
4053
4054   return 0;
4055 }
4056 \f
4057
4058 /* bpstat stuff.  External routines' interfaces are documented
4059    in breakpoint.h.  */
4060
4061 int
4062 is_catchpoint (struct breakpoint *ep)
4063 {
4064   return (ep->type == bp_catchpoint);
4065 }
4066
4067 /* Frees any storage that is part of a bpstat.  Does not walk the
4068    'next' chain.  */
4069
4070 static void
4071 bpstat_free (bpstat bs)
4072 {
4073   if (bs->old_val != NULL)
4074     value_free (bs->old_val);
4075   decref_counted_command_line (&bs->commands);
4076   decref_bp_location (&bs->bp_location_at);
4077   xfree (bs);
4078 }
4079
4080 /* Clear a bpstat so that it says we are not at any breakpoint.
4081    Also free any storage that is part of a bpstat.  */
4082
4083 void
4084 bpstat_clear (bpstat *bsp)
4085 {
4086   bpstat p;
4087   bpstat q;
4088
4089   if (bsp == 0)
4090     return;
4091   p = *bsp;
4092   while (p != NULL)
4093     {
4094       q = p->next;
4095       bpstat_free (p);
4096       p = q;
4097     }
4098   *bsp = NULL;
4099 }
4100
4101 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4102    is part of the bpstat is copied as well.  */
4103
4104 bpstat
4105 bpstat_copy (bpstat bs)
4106 {
4107   bpstat p = NULL;
4108   bpstat tmp;
4109   bpstat retval = NULL;
4110
4111   if (bs == NULL)
4112     return bs;
4113
4114   for (; bs != NULL; bs = bs->next)
4115     {
4116       tmp = (bpstat) xmalloc (sizeof (*tmp));
4117       memcpy (tmp, bs, sizeof (*tmp));
4118       incref_counted_command_line (tmp->commands);
4119       incref_bp_location (tmp->bp_location_at);
4120       if (bs->old_val != NULL)
4121         {
4122           tmp->old_val = value_copy (bs->old_val);
4123           release_value (tmp->old_val);
4124         }
4125
4126       if (p == NULL)
4127         /* This is the first thing in the chain.  */
4128         retval = tmp;
4129       else
4130         p->next = tmp;
4131       p = tmp;
4132     }
4133   p->next = NULL;
4134   return retval;
4135 }
4136
4137 /* Find the bpstat associated with this breakpoint.  */
4138
4139 bpstat
4140 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4141 {
4142   if (bsp == NULL)
4143     return NULL;
4144
4145   for (; bsp != NULL; bsp = bsp->next)
4146     {
4147       if (bsp->breakpoint_at == breakpoint)
4148         return bsp;
4149     }
4150   return NULL;
4151 }
4152
4153 /* See breakpoint.h.  */
4154
4155 enum bpstat_signal_value
4156 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
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;
4165
4166       if (bsp->breakpoint_at == NULL)
4167         {
4168           /* A moribund location can never explain a signal other than
4169              GDB_SIGNAL_TRAP.  */
4170           if (sig == GDB_SIGNAL_TRAP)
4171             newval = BPSTAT_SIGNAL_HIDE;
4172           else
4173             newval = BPSTAT_SIGNAL_NO;
4174         }
4175       else
4176         newval = bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4177                                                            sig);
4178
4179       if (newval > result)
4180         result = newval;
4181     }
4182
4183   return result;
4184 }
4185
4186 /* Put in *NUM the breakpoint number of the first breakpoint we are
4187    stopped at.  *BSP upon return is a bpstat which points to the
4188    remaining breakpoints stopped at (but which is not guaranteed to be
4189    good for anything but further calls to bpstat_num).
4190
4191    Return 0 if passed a bpstat which does not indicate any breakpoints.
4192    Return -1 if stopped at a breakpoint that has been deleted since
4193    we set it.
4194    Return 1 otherwise.  */
4195
4196 int
4197 bpstat_num (bpstat *bsp, int *num)
4198 {
4199   struct breakpoint *b;
4200
4201   if ((*bsp) == NULL)
4202     return 0;                   /* No more breakpoint values */
4203
4204   /* We assume we'll never have several bpstats that correspond to a
4205      single breakpoint -- otherwise, this function might return the
4206      same number more than once and this will look ugly.  */
4207   b = (*bsp)->breakpoint_at;
4208   *bsp = (*bsp)->next;
4209   if (b == NULL)
4210     return -1;                  /* breakpoint that's been deleted since */
4211
4212   *num = b->number;             /* We have its number */
4213   return 1;
4214 }
4215
4216 /* See breakpoint.h.  */
4217
4218 void
4219 bpstat_clear_actions (void)
4220 {
4221   struct thread_info *tp;
4222   bpstat bs;
4223
4224   if (ptid_equal (inferior_ptid, null_ptid))
4225     return;
4226
4227   tp = find_thread_ptid (inferior_ptid);
4228   if (tp == NULL)
4229     return;
4230
4231   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4232     {
4233       decref_counted_command_line (&bs->commands);
4234
4235       if (bs->old_val != NULL)
4236         {
4237           value_free (bs->old_val);
4238           bs->old_val = NULL;
4239         }
4240     }
4241 }
4242
4243 /* Called when a command is about to proceed the inferior.  */
4244
4245 static void
4246 breakpoint_about_to_proceed (void)
4247 {
4248   if (!ptid_equal (inferior_ptid, null_ptid))
4249     {
4250       struct thread_info *tp = inferior_thread ();
4251
4252       /* Allow inferior function calls in breakpoint commands to not
4253          interrupt the command list.  When the call finishes
4254          successfully, the inferior will be standing at the same
4255          breakpoint as if nothing happened.  */
4256       if (tp->control.in_infcall)
4257         return;
4258     }
4259
4260   breakpoint_proceeded = 1;
4261 }
4262
4263 /* Stub for cleaning up our state if we error-out of a breakpoint
4264    command.  */
4265 static void
4266 cleanup_executing_breakpoints (void *ignore)
4267 {
4268   executing_breakpoint_commands = 0;
4269 }
4270
4271 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4272    or its equivalent.  */
4273
4274 static int
4275 command_line_is_silent (struct command_line *cmd)
4276 {
4277   return cmd && (strcmp ("silent", cmd->line) == 0
4278                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4279 }
4280
4281 /* Execute all the commands associated with all the breakpoints at
4282    this location.  Any of these commands could cause the process to
4283    proceed beyond this point, etc.  We look out for such changes by
4284    checking the global "breakpoint_proceeded" after each command.
4285
4286    Returns true if a breakpoint command resumed the inferior.  In that
4287    case, it is the caller's responsibility to recall it again with the
4288    bpstat of the current thread.  */
4289
4290 static int
4291 bpstat_do_actions_1 (bpstat *bsp)
4292 {
4293   bpstat bs;
4294   struct cleanup *old_chain;
4295   int again = 0;
4296
4297   /* Avoid endless recursion if a `source' command is contained
4298      in bs->commands.  */
4299   if (executing_breakpoint_commands)
4300     return 0;
4301
4302   executing_breakpoint_commands = 1;
4303   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4304
4305   prevent_dont_repeat ();
4306
4307   /* This pointer will iterate over the list of bpstat's.  */
4308   bs = *bsp;
4309
4310   breakpoint_proceeded = 0;
4311   for (; bs != NULL; bs = bs->next)
4312     {
4313       struct counted_command_line *ccmd;
4314       struct command_line *cmd;
4315       struct cleanup *this_cmd_tree_chain;
4316
4317       /* Take ownership of the BSP's command tree, if it has one.
4318
4319          The command tree could legitimately contain commands like
4320          'step' and 'next', which call clear_proceed_status, which
4321          frees stop_bpstat's command tree.  To make sure this doesn't
4322          free the tree we're executing out from under us, we need to
4323          take ownership of the tree ourselves.  Since a given bpstat's
4324          commands are only executed once, we don't need to copy it; we
4325          can clear the pointer in the bpstat, and make sure we free
4326          the tree when we're done.  */
4327       ccmd = bs->commands;
4328       bs->commands = NULL;
4329       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4330       cmd = ccmd ? ccmd->commands : NULL;
4331       if (command_line_is_silent (cmd))
4332         {
4333           /* The action has been already done by bpstat_stop_status.  */
4334           cmd = cmd->next;
4335         }
4336
4337       while (cmd != NULL)
4338         {
4339           execute_control_command (cmd);
4340
4341           if (breakpoint_proceeded)
4342             break;
4343           else
4344             cmd = cmd->next;
4345         }
4346
4347       /* We can free this command tree now.  */
4348       do_cleanups (this_cmd_tree_chain);
4349
4350       if (breakpoint_proceeded)
4351         {
4352           if (target_can_async_p ())
4353             /* If we are in async mode, then the target might be still
4354                running, not stopped at any breakpoint, so nothing for
4355                us to do here -- just return to the event loop.  */
4356             ;
4357           else
4358             /* In sync mode, when execute_control_command returns
4359                we're already standing on the next breakpoint.
4360                Breakpoint commands for that stop were not run, since
4361                execute_command does not run breakpoint commands --
4362                only command_line_handler does, but that one is not
4363                involved in execution of breakpoint commands.  So, we
4364                can now execute breakpoint commands.  It should be
4365                noted that making execute_command do bpstat actions is
4366                not an option -- in this case we'll have recursive
4367                invocation of bpstat for each breakpoint with a
4368                command, and can easily blow up GDB stack.  Instead, we
4369                return true, which will trigger the caller to recall us
4370                with the new stop_bpstat.  */
4371             again = 1;
4372           break;
4373         }
4374     }
4375   do_cleanups (old_chain);
4376   return again;
4377 }
4378
4379 void
4380 bpstat_do_actions (void)
4381 {
4382   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4383
4384   /* Do any commands attached to breakpoint we are stopped at.  */
4385   while (!ptid_equal (inferior_ptid, null_ptid)
4386          && target_has_execution
4387          && !is_exited (inferior_ptid)
4388          && !is_executing (inferior_ptid))
4389     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4390        and only return when it is stopped at the next breakpoint, we
4391        keep doing breakpoint actions until it returns false to
4392        indicate the inferior was not resumed.  */
4393     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4394       break;
4395
4396   discard_cleanups (cleanup_if_error);
4397 }
4398
4399 /* Print out the (old or new) value associated with a watchpoint.  */
4400
4401 static void
4402 watchpoint_value_print (struct value *val, struct ui_file *stream)
4403 {
4404   if (val == NULL)
4405     fprintf_unfiltered (stream, _("<unreadable>"));
4406   else
4407     {
4408       struct value_print_options opts;
4409       get_user_print_options (&opts);
4410       value_print (val, stream, &opts);
4411     }
4412 }
4413
4414 /* Generic routine for printing messages indicating why we
4415    stopped.  The behavior of this function depends on the value
4416    'print_it' in the bpstat structure.  Under some circumstances we
4417    may decide not to print anything here and delegate the task to
4418    normal_stop().  */
4419
4420 static enum print_stop_action
4421 print_bp_stop_message (bpstat bs)
4422 {
4423   switch (bs->print_it)
4424     {
4425     case print_it_noop:
4426       /* Nothing should be printed for this bpstat entry.  */
4427       return PRINT_UNKNOWN;
4428       break;
4429
4430     case print_it_done:
4431       /* We still want to print the frame, but we already printed the
4432          relevant messages.  */
4433       return PRINT_SRC_AND_LOC;
4434       break;
4435
4436     case print_it_normal:
4437       {
4438         struct breakpoint *b = bs->breakpoint_at;
4439
4440         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4441            which has since been deleted.  */
4442         if (b == NULL)
4443           return PRINT_UNKNOWN;
4444
4445         /* Normal case.  Call the breakpoint's print_it method.  */
4446         return b->ops->print_it (bs);
4447       }
4448       break;
4449
4450     default:
4451       internal_error (__FILE__, __LINE__,
4452                       _("print_bp_stop_message: unrecognized enum value"));
4453       break;
4454     }
4455 }
4456
4457 /* A helper function that prints a shared library stopped event.  */
4458
4459 static void
4460 print_solib_event (int is_catchpoint)
4461 {
4462   int any_deleted
4463     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4464   int any_added
4465     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4466
4467   if (!is_catchpoint)
4468     {
4469       if (any_added || any_deleted)
4470         ui_out_text (current_uiout,
4471                      _("Stopped due to shared library event:\n"));
4472       else
4473         ui_out_text (current_uiout,
4474                      _("Stopped due to shared library event (no "
4475                        "libraries added or removed)\n"));
4476     }
4477
4478   if (ui_out_is_mi_like_p (current_uiout))
4479     ui_out_field_string (current_uiout, "reason",
4480                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4481
4482   if (any_deleted)
4483     {
4484       struct cleanup *cleanup;
4485       char *name;
4486       int ix;
4487
4488       ui_out_text (current_uiout, _("  Inferior unloaded "));
4489       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4490                                                     "removed");
4491       for (ix = 0;
4492            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4493                         ix, name);
4494            ++ix)
4495         {
4496           if (ix > 0)
4497             ui_out_text (current_uiout, "    ");
4498           ui_out_field_string (current_uiout, "library", name);
4499           ui_out_text (current_uiout, "\n");
4500         }
4501
4502       do_cleanups (cleanup);
4503     }
4504
4505   if (any_added)
4506     {
4507       struct so_list *iter;
4508       int ix;
4509       struct cleanup *cleanup;
4510
4511       ui_out_text (current_uiout, _("  Inferior loaded "));
4512       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4513                                                     "added");
4514       for (ix = 0;
4515            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4516                         ix, iter);
4517            ++ix)
4518         {
4519           if (ix > 0)
4520             ui_out_text (current_uiout, "    ");
4521           ui_out_field_string (current_uiout, "library", iter->so_name);
4522           ui_out_text (current_uiout, "\n");
4523         }
4524
4525       do_cleanups (cleanup);
4526     }
4527 }
4528
4529 /* Print a message indicating what happened.  This is called from
4530    normal_stop().  The input to this routine is the head of the bpstat
4531    list - a list of the eventpoints that caused this stop.  KIND is
4532    the target_waitkind for the stopping event.  This
4533    routine calls the generic print routine for printing a message
4534    about reasons for stopping.  This will print (for example) the
4535    "Breakpoint n," part of the output.  The return value of this
4536    routine is one of:
4537
4538    PRINT_UNKNOWN: Means we printed nothing.
4539    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4540    code to print the location.  An example is 
4541    "Breakpoint 1, " which should be followed by
4542    the location.
4543    PRINT_SRC_ONLY: Means we printed something, but there is no need
4544    to also print the location part of the message.
4545    An example is the catch/throw messages, which
4546    don't require a location appended to the end.
4547    PRINT_NOTHING: We have done some printing and we don't need any 
4548    further info to be printed.  */
4549
4550 enum print_stop_action
4551 bpstat_print (bpstat bs, int kind)
4552 {
4553   int val;
4554
4555   /* Maybe another breakpoint in the chain caused us to stop.
4556      (Currently all watchpoints go on the bpstat whether hit or not.
4557      That probably could (should) be changed, provided care is taken
4558      with respect to bpstat_explains_signal).  */
4559   for (; bs; bs = bs->next)
4560     {
4561       val = print_bp_stop_message (bs);
4562       if (val == PRINT_SRC_ONLY 
4563           || val == PRINT_SRC_AND_LOC 
4564           || val == PRINT_NOTHING)
4565         return val;
4566     }
4567
4568   /* If we had hit a shared library event breakpoint,
4569      print_bp_stop_message would print out this message.  If we hit an
4570      OS-level shared library event, do the same thing.  */
4571   if (kind == TARGET_WAITKIND_LOADED)
4572     {
4573       print_solib_event (0);
4574       return PRINT_NOTHING;
4575     }
4576
4577   /* We reached the end of the chain, or we got a null BS to start
4578      with and nothing was printed.  */
4579   return PRINT_UNKNOWN;
4580 }
4581
4582 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4583    used inside a catch_errors to evaluate the breakpoint condition.
4584    The argument is a "struct expression *" that has been cast to a
4585    "char *" to make it pass through catch_errors.  */
4586
4587 static int
4588 breakpoint_cond_eval (void *exp)
4589 {
4590   struct value *mark = value_mark ();
4591   int i = !value_true (evaluate_expression ((struct expression *) exp));
4592
4593   value_free_to_mark (mark);
4594   return i;
4595 }
4596
4597 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4598
4599 static bpstat
4600 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4601 {
4602   bpstat bs;
4603
4604   bs = (bpstat) xmalloc (sizeof (*bs));
4605   bs->next = NULL;
4606   **bs_link_pointer = bs;
4607   *bs_link_pointer = &bs->next;
4608   bs->breakpoint_at = bl->owner;
4609   bs->bp_location_at = bl;
4610   incref_bp_location (bl);
4611   /* If the condition is false, etc., don't do the commands.  */
4612   bs->commands = NULL;
4613   bs->old_val = NULL;
4614   bs->print_it = print_it_normal;
4615   return bs;
4616 }
4617 \f
4618 /* The target has stopped with waitstatus WS.  Check if any hardware
4619    watchpoints have triggered, according to the target.  */
4620
4621 int
4622 watchpoints_triggered (struct target_waitstatus *ws)
4623 {
4624   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4625   CORE_ADDR addr;
4626   struct breakpoint *b;
4627
4628   if (!stopped_by_watchpoint)
4629     {
4630       /* We were not stopped by a watchpoint.  Mark all watchpoints
4631          as not triggered.  */
4632       ALL_BREAKPOINTS (b)
4633         if (is_hardware_watchpoint (b))
4634           {
4635             struct watchpoint *w = (struct watchpoint *) b;
4636
4637             w->watchpoint_triggered = watch_triggered_no;
4638           }
4639
4640       return 0;
4641     }
4642
4643   if (!target_stopped_data_address (&current_target, &addr))
4644     {
4645       /* We were stopped by a watchpoint, but we don't know where.
4646          Mark all watchpoints as unknown.  */
4647       ALL_BREAKPOINTS (b)
4648         if (is_hardware_watchpoint (b))
4649           {
4650             struct watchpoint *w = (struct watchpoint *) b;
4651
4652             w->watchpoint_triggered = watch_triggered_unknown;
4653           }
4654
4655       return stopped_by_watchpoint;
4656     }
4657
4658   /* The target could report the data address.  Mark watchpoints
4659      affected by this data address as triggered, and all others as not
4660      triggered.  */
4661
4662   ALL_BREAKPOINTS (b)
4663     if (is_hardware_watchpoint (b))
4664       {
4665         struct watchpoint *w = (struct watchpoint *) b;
4666         struct bp_location *loc;
4667
4668         w->watchpoint_triggered = watch_triggered_no;
4669         for (loc = b->loc; loc; loc = loc->next)
4670           {
4671             if (is_masked_watchpoint (b))
4672               {
4673                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4674                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4675
4676                 if (newaddr == start)
4677                   {
4678                     w->watchpoint_triggered = watch_triggered_yes;
4679                     break;
4680                   }
4681               }
4682             /* Exact match not required.  Within range is sufficient.  */
4683             else if (target_watchpoint_addr_within_range (&current_target,
4684                                                          addr, loc->address,
4685                                                          loc->length))
4686               {
4687                 w->watchpoint_triggered = watch_triggered_yes;
4688                 break;
4689               }
4690           }
4691       }
4692
4693   return 1;
4694 }
4695
4696 /* Possible return values for watchpoint_check (this can't be an enum
4697    because of check_errors).  */
4698 /* The watchpoint has been deleted.  */
4699 #define WP_DELETED 1
4700 /* The value has changed.  */
4701 #define WP_VALUE_CHANGED 2
4702 /* The value has not changed.  */
4703 #define WP_VALUE_NOT_CHANGED 3
4704 /* Ignore this watchpoint, no matter if the value changed or not.  */
4705 #define WP_IGNORE 4
4706
4707 #define BP_TEMPFLAG 1
4708 #define BP_HARDWAREFLAG 2
4709
4710 /* Evaluate watchpoint condition expression and check if its value
4711    changed.
4712
4713    P should be a pointer to struct bpstat, but is defined as a void *
4714    in order for this function to be usable with catch_errors.  */
4715
4716 static int
4717 watchpoint_check (void *p)
4718 {
4719   bpstat bs = (bpstat) p;
4720   struct watchpoint *b;
4721   struct frame_info *fr;
4722   int within_current_scope;
4723
4724   /* BS is built from an existing struct breakpoint.  */
4725   gdb_assert (bs->breakpoint_at != NULL);
4726   b = (struct watchpoint *) bs->breakpoint_at;
4727
4728   /* If this is a local watchpoint, we only want to check if the
4729      watchpoint frame is in scope if the current thread is the thread
4730      that was used to create the watchpoint.  */
4731   if (!watchpoint_in_thread_scope (b))
4732     return WP_IGNORE;
4733
4734   if (b->exp_valid_block == NULL)
4735     within_current_scope = 1;
4736   else
4737     {
4738       struct frame_info *frame = get_current_frame ();
4739       struct gdbarch *frame_arch = get_frame_arch (frame);
4740       CORE_ADDR frame_pc = get_frame_pc (frame);
4741
4742       /* in_function_epilogue_p() returns a non-zero value if we're
4743          still in the function but the stack frame has already been
4744          invalidated.  Since we can't rely on the values of local
4745          variables after the stack has been destroyed, we are treating
4746          the watchpoint in that state as `not changed' without further
4747          checking.  Don't mark watchpoints as changed if the current
4748          frame is in an epilogue - even if they are in some other
4749          frame, our view of the stack is likely to be wrong and
4750          frame_find_by_id could error out.  */
4751       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4752         return WP_IGNORE;
4753
4754       fr = frame_find_by_id (b->watchpoint_frame);
4755       within_current_scope = (fr != NULL);
4756
4757       /* If we've gotten confused in the unwinder, we might have
4758          returned a frame that can't describe this variable.  */
4759       if (within_current_scope)
4760         {
4761           struct symbol *function;
4762
4763           function = get_frame_function (fr);
4764           if (function == NULL
4765               || !contained_in (b->exp_valid_block,
4766                                 SYMBOL_BLOCK_VALUE (function)))
4767             within_current_scope = 0;
4768         }
4769
4770       if (within_current_scope)
4771         /* If we end up stopping, the current frame will get selected
4772            in normal_stop.  So this call to select_frame won't affect
4773            the user.  */
4774         select_frame (fr);
4775     }
4776
4777   if (within_current_scope)
4778     {
4779       /* We use value_{,free_to_}mark because it could be a *long*
4780          time before we return to the command level and call
4781          free_all_values.  We can't call free_all_values because we
4782          might be in the middle of evaluating a function call.  */
4783
4784       int pc = 0;
4785       struct value *mark;
4786       struct value *new_val;
4787
4788       if (is_masked_watchpoint (&b->base))
4789         /* Since we don't know the exact trigger address (from
4790            stopped_data_address), just tell the user we've triggered
4791            a mask watchpoint.  */
4792         return WP_VALUE_CHANGED;
4793
4794       mark = value_mark ();
4795       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4796
4797       /* We use value_equal_contents instead of value_equal because
4798          the latter coerces an array to a pointer, thus comparing just
4799          the address of the array instead of its contents.  This is
4800          not what we want.  */
4801       if ((b->val != NULL) != (new_val != NULL)
4802           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4803         {
4804           if (new_val != NULL)
4805             {
4806               release_value (new_val);
4807               value_free_to_mark (mark);
4808             }
4809           bs->old_val = b->val;
4810           b->val = new_val;
4811           b->val_valid = 1;
4812           return WP_VALUE_CHANGED;
4813         }
4814       else
4815         {
4816           /* Nothing changed.  */
4817           value_free_to_mark (mark);
4818           return WP_VALUE_NOT_CHANGED;
4819         }
4820     }
4821   else
4822     {
4823       struct ui_out *uiout = current_uiout;
4824
4825       /* This seems like the only logical thing to do because
4826          if we temporarily ignored the watchpoint, then when
4827          we reenter the block in which it is valid it contains
4828          garbage (in the case of a function, it may have two
4829          garbage values, one before and one after the prologue).
4830          So we can't even detect the first assignment to it and
4831          watch after that (since the garbage may or may not equal
4832          the first value assigned).  */
4833       /* We print all the stop information in
4834          breakpoint_ops->print_it, but in this case, by the time we
4835          call breakpoint_ops->print_it this bp will be deleted
4836          already.  So we have no choice but print the information
4837          here.  */
4838       if (ui_out_is_mi_like_p (uiout))
4839         ui_out_field_string
4840           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4841       ui_out_text (uiout, "\nWatchpoint ");
4842       ui_out_field_int (uiout, "wpnum", b->base.number);
4843       ui_out_text (uiout,
4844                    " deleted because the program has left the block in\n\
4845 which its expression is valid.\n");     
4846
4847       /* Make sure the watchpoint's commands aren't executed.  */
4848       decref_counted_command_line (&b->base.commands);
4849       watchpoint_del_at_next_stop (b);
4850
4851       return WP_DELETED;
4852     }
4853 }
4854
4855 /* Return true if it looks like target has stopped due to hitting
4856    breakpoint location BL.  This function does not check if we should
4857    stop, only if BL explains the stop.  */
4858
4859 static int
4860 bpstat_check_location (const struct bp_location *bl,
4861                        struct address_space *aspace, CORE_ADDR bp_addr,
4862                        const struct target_waitstatus *ws)
4863 {
4864   struct breakpoint *b = bl->owner;
4865
4866   /* BL is from an existing breakpoint.  */
4867   gdb_assert (b != NULL);
4868
4869   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4870 }
4871
4872 /* Determine if the watched values have actually changed, and we
4873    should stop.  If not, set BS->stop to 0.  */
4874
4875 static void
4876 bpstat_check_watchpoint (bpstat bs)
4877 {
4878   const struct bp_location *bl;
4879   struct watchpoint *b;
4880
4881   /* BS is built for existing struct breakpoint.  */
4882   bl = bs->bp_location_at;
4883   gdb_assert (bl != NULL);
4884   b = (struct watchpoint *) bs->breakpoint_at;
4885   gdb_assert (b != NULL);
4886
4887     {
4888       int must_check_value = 0;
4889       
4890       if (b->base.type == bp_watchpoint)
4891         /* For a software watchpoint, we must always check the
4892            watched value.  */
4893         must_check_value = 1;
4894       else if (b->watchpoint_triggered == watch_triggered_yes)
4895         /* We have a hardware watchpoint (read, write, or access)
4896            and the target earlier reported an address watched by
4897            this watchpoint.  */
4898         must_check_value = 1;
4899       else if (b->watchpoint_triggered == watch_triggered_unknown
4900                && b->base.type == bp_hardware_watchpoint)
4901         /* We were stopped by a hardware watchpoint, but the target could
4902            not report the data address.  We must check the watchpoint's
4903            value.  Access and read watchpoints are out of luck; without
4904            a data address, we can't figure it out.  */
4905         must_check_value = 1;
4906
4907       if (must_check_value)
4908         {
4909           char *message
4910             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4911                           b->base.number);
4912           struct cleanup *cleanups = make_cleanup (xfree, message);
4913           int e = catch_errors (watchpoint_check, bs, message,
4914                                 RETURN_MASK_ALL);
4915           do_cleanups (cleanups);
4916           switch (e)
4917             {
4918             case WP_DELETED:
4919               /* We've already printed what needs to be printed.  */
4920               bs->print_it = print_it_done;
4921               /* Stop.  */
4922               break;
4923             case WP_IGNORE:
4924               bs->print_it = print_it_noop;
4925               bs->stop = 0;
4926               break;
4927             case WP_VALUE_CHANGED:
4928               if (b->base.type == bp_read_watchpoint)
4929                 {
4930                   /* There are two cases to consider here:
4931
4932                      1. We're watching the triggered memory for reads.
4933                      In that case, trust the target, and always report
4934                      the watchpoint hit to the user.  Even though
4935                      reads don't cause value changes, the value may
4936                      have changed since the last time it was read, and
4937                      since we're not trapping writes, we will not see
4938                      those, and as such we should ignore our notion of
4939                      old value.
4940
4941                      2. We're watching the triggered memory for both
4942                      reads and writes.  There are two ways this may
4943                      happen:
4944
4945                      2.1. This is a target that can't break on data
4946                      reads only, but can break on accesses (reads or
4947                      writes), such as e.g., x86.  We detect this case
4948                      at the time we try to insert read watchpoints.
4949
4950                      2.2. Otherwise, the target supports read
4951                      watchpoints, but, the user set an access or write
4952                      watchpoint watching the same memory as this read
4953                      watchpoint.
4954
4955                      If we're watching memory writes as well as reads,
4956                      ignore watchpoint hits when we find that the
4957                      value hasn't changed, as reads don't cause
4958                      changes.  This still gives false positives when
4959                      the program writes the same value to memory as
4960                      what there was already in memory (we will confuse
4961                      it for a read), but it's much better than
4962                      nothing.  */
4963
4964                   int other_write_watchpoint = 0;
4965
4966                   if (bl->watchpoint_type == hw_read)
4967                     {
4968                       struct breakpoint *other_b;
4969
4970                       ALL_BREAKPOINTS (other_b)
4971                         if (other_b->type == bp_hardware_watchpoint
4972                             || other_b->type == bp_access_watchpoint)
4973                           {
4974                             struct watchpoint *other_w =
4975                               (struct watchpoint *) other_b;
4976
4977                             if (other_w->watchpoint_triggered
4978                                 == watch_triggered_yes)
4979                               {
4980                                 other_write_watchpoint = 1;
4981                                 break;
4982                               }
4983                           }
4984                     }
4985
4986                   if (other_write_watchpoint
4987                       || bl->watchpoint_type == hw_access)
4988                     {
4989                       /* We're watching the same memory for writes,
4990                          and the value changed since the last time we
4991                          updated it, so this trap must be for a write.
4992                          Ignore it.  */
4993                       bs->print_it = print_it_noop;
4994                       bs->stop = 0;
4995                     }
4996                 }
4997               break;
4998             case WP_VALUE_NOT_CHANGED:
4999               if (b->base.type == bp_hardware_watchpoint
5000                   || b->base.type == bp_watchpoint)
5001                 {
5002                   /* Don't stop: write watchpoints shouldn't fire if
5003                      the value hasn't changed.  */
5004                   bs->print_it = print_it_noop;
5005                   bs->stop = 0;
5006                 }
5007               /* Stop.  */
5008               break;
5009             default:
5010               /* Can't happen.  */
5011             case 0:
5012               /* Error from catch_errors.  */
5013               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5014               watchpoint_del_at_next_stop (b);
5015               /* We've already printed what needs to be printed.  */
5016               bs->print_it = print_it_done;
5017               break;
5018             }
5019         }
5020       else      /* must_check_value == 0 */
5021         {
5022           /* This is a case where some watchpoint(s) triggered, but
5023              not at the address of this watchpoint, or else no
5024              watchpoint triggered after all.  So don't print
5025              anything for this watchpoint.  */
5026           bs->print_it = print_it_noop;
5027           bs->stop = 0;
5028         }
5029     }
5030 }
5031
5032
5033 /* Check conditions (condition proper, frame, thread and ignore count)
5034    of breakpoint referred to by BS.  If we should not stop for this
5035    breakpoint, set BS->stop to 0.  */
5036
5037 static void
5038 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5039 {
5040   int thread_id = pid_to_thread_id (ptid);
5041   const struct bp_location *bl;
5042   struct breakpoint *b;
5043
5044   /* BS is built for existing struct breakpoint.  */
5045   bl = bs->bp_location_at;
5046   gdb_assert (bl != NULL);
5047   b = bs->breakpoint_at;
5048   gdb_assert (b != NULL);
5049
5050   /* Even if the target evaluated the condition on its end and notified GDB, we
5051      need to do so again since GDB does not know if we stopped due to a
5052      breakpoint or a single step breakpoint.  */
5053
5054   if (frame_id_p (b->frame_id)
5055       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5056     bs->stop = 0;
5057   else if (bs->stop)
5058     {
5059       int value_is_zero = 0;
5060       struct expression *cond;
5061
5062       /* Evaluate Python breakpoints that have a "stop"
5063          method implemented.  */
5064       if (b->py_bp_object)
5065         bs->stop = gdbpy_should_stop (b->py_bp_object);
5066
5067       if (is_watchpoint (b))
5068         {
5069           struct watchpoint *w = (struct watchpoint *) b;
5070
5071           cond = w->cond_exp;
5072         }
5073       else
5074         cond = bl->cond;
5075
5076       if (cond && b->disposition != disp_del_at_next_stop)
5077         {
5078           int within_current_scope = 1;
5079           struct watchpoint * w;
5080
5081           /* We use value_mark and value_free_to_mark because it could
5082              be a long time before we return to the command level and
5083              call free_all_values.  We can't call free_all_values
5084              because we might be in the middle of evaluating a
5085              function call.  */
5086           struct value *mark = value_mark ();
5087
5088           if (is_watchpoint (b))
5089             w = (struct watchpoint *) b;
5090           else
5091             w = NULL;
5092
5093           /* Need to select the frame, with all that implies so that
5094              the conditions will have the right context.  Because we
5095              use the frame, we will not see an inlined function's
5096              variables when we arrive at a breakpoint at the start
5097              of the inlined function; the current frame will be the
5098              call site.  */
5099           if (w == NULL || w->cond_exp_valid_block == NULL)
5100             select_frame (get_current_frame ());
5101           else
5102             {
5103               struct frame_info *frame;
5104
5105               /* For local watchpoint expressions, which particular
5106                  instance of a local is being watched matters, so we
5107                  keep track of the frame to evaluate the expression
5108                  in.  To evaluate the condition however, it doesn't
5109                  really matter which instantiation of the function
5110                  where the condition makes sense triggers the
5111                  watchpoint.  This allows an expression like "watch
5112                  global if q > 10" set in `func', catch writes to
5113                  global on all threads that call `func', or catch
5114                  writes on all recursive calls of `func' by a single
5115                  thread.  We simply always evaluate the condition in
5116                  the innermost frame that's executing where it makes
5117                  sense to evaluate the condition.  It seems
5118                  intuitive.  */
5119               frame = block_innermost_frame (w->cond_exp_valid_block);
5120               if (frame != NULL)
5121                 select_frame (frame);
5122               else
5123                 within_current_scope = 0;
5124             }
5125           if (within_current_scope)
5126             value_is_zero
5127               = catch_errors (breakpoint_cond_eval, cond,
5128                               "Error in testing breakpoint condition:\n",
5129                               RETURN_MASK_ALL);
5130           else
5131             {
5132               warning (_("Watchpoint condition cannot be tested "
5133                          "in the current scope"));
5134               /* If we failed to set the right context for this
5135                  watchpoint, unconditionally report it.  */
5136               value_is_zero = 0;
5137             }
5138           /* FIXME-someday, should give breakpoint #.  */
5139           value_free_to_mark (mark);
5140         }
5141
5142       if (cond && value_is_zero)
5143         {
5144           bs->stop = 0;
5145         }
5146       else if (b->thread != -1 && b->thread != thread_id)
5147         {
5148           bs->stop = 0;
5149         }
5150       else if (b->ignore_count > 0)
5151         {
5152           b->ignore_count--;
5153           bs->stop = 0;
5154           /* Increase the hit count even though we don't stop.  */
5155           ++(b->hit_count);
5156           observer_notify_breakpoint_modified (b);
5157         }       
5158     }
5159 }
5160
5161
5162 /* Get a bpstat associated with having just stopped at address
5163    BP_ADDR in thread PTID.
5164
5165    Determine whether we stopped at a breakpoint, etc, or whether we
5166    don't understand this stop.  Result is a chain of bpstat's such
5167    that:
5168
5169    if we don't understand the stop, the result is a null pointer.
5170
5171    if we understand why we stopped, the result is not null.
5172
5173    Each element of the chain refers to a particular breakpoint or
5174    watchpoint at which we have stopped.  (We may have stopped for
5175    several reasons concurrently.)
5176
5177    Each element of the chain has valid next, breakpoint_at,
5178    commands, FIXME??? fields.  */
5179
5180 bpstat
5181 bpstat_stop_status (struct address_space *aspace,
5182                     CORE_ADDR bp_addr, ptid_t ptid,
5183                     const struct target_waitstatus *ws)
5184 {
5185   struct breakpoint *b = NULL;
5186   struct bp_location *bl;
5187   struct bp_location *loc;
5188   /* First item of allocated bpstat's.  */
5189   bpstat bs_head = NULL, *bs_link = &bs_head;
5190   /* Pointer to the last thing in the chain currently.  */
5191   bpstat bs;
5192   int ix;
5193   int need_remove_insert;
5194   int removed_any;
5195
5196   /* First, build the bpstat chain with locations that explain a
5197      target stop, while being careful to not set the target running,
5198      as that may invalidate locations (in particular watchpoint
5199      locations are recreated).  Resuming will happen here with
5200      breakpoint conditions or watchpoint expressions that include
5201      inferior function calls.  */
5202
5203   ALL_BREAKPOINTS (b)
5204     {
5205       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5206         continue;
5207
5208       for (bl = b->loc; bl != NULL; bl = bl->next)
5209         {
5210           /* For hardware watchpoints, we look only at the first
5211              location.  The watchpoint_check function will work on the
5212              entire expression, not the individual locations.  For
5213              read watchpoints, the watchpoints_triggered function has
5214              checked all locations already.  */
5215           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5216             break;
5217
5218           if (!bl->enabled || bl->shlib_disabled)
5219             continue;
5220
5221           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5222             continue;
5223
5224           /* Come here if it's a watchpoint, or if the break address
5225              matches.  */
5226
5227           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5228                                                    explain stop.  */
5229
5230           /* Assume we stop.  Should we find a watchpoint that is not
5231              actually triggered, or if the condition of the breakpoint
5232              evaluates as false, we'll reset 'stop' to 0.  */
5233           bs->stop = 1;
5234           bs->print = 1;
5235
5236           /* If this is a scope breakpoint, mark the associated
5237              watchpoint as triggered so that we will handle the
5238              out-of-scope event.  We'll get to the watchpoint next
5239              iteration.  */
5240           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5241             {
5242               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5243
5244               w->watchpoint_triggered = watch_triggered_yes;
5245             }
5246         }
5247     }
5248
5249   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5250     {
5251       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5252         {
5253           bs = bpstat_alloc (loc, &bs_link);
5254           /* For hits of moribund locations, we should just proceed.  */
5255           bs->stop = 0;
5256           bs->print = 0;
5257           bs->print_it = print_it_noop;
5258         }
5259     }
5260
5261   /* A bit of special processing for shlib breakpoints.  We need to
5262      process solib loading here, so that the lists of loaded and
5263      unloaded libraries are correct before we handle "catch load" and
5264      "catch unload".  */
5265   for (bs = bs_head; bs != NULL; bs = bs->next)
5266     {
5267       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5268         {
5269           handle_solib_event ();
5270           break;
5271         }
5272     }
5273
5274   /* Now go through the locations that caused the target to stop, and
5275      check whether we're interested in reporting this stop to higher
5276      layers, or whether we should resume the target transparently.  */
5277
5278   removed_any = 0;
5279
5280   for (bs = bs_head; bs != NULL; bs = bs->next)
5281     {
5282       if (!bs->stop)
5283         continue;
5284
5285       b = bs->breakpoint_at;
5286       b->ops->check_status (bs);
5287       if (bs->stop)
5288         {
5289           bpstat_check_breakpoint_conditions (bs, ptid);
5290
5291           if (bs->stop)
5292             {
5293               ++(b->hit_count);
5294               observer_notify_breakpoint_modified (b);
5295
5296               /* We will stop here.  */
5297               if (b->disposition == disp_disable)
5298                 {
5299                   --(b->enable_count);
5300                   if (b->enable_count <= 0
5301                       && b->enable_state != bp_permanent)
5302                     b->enable_state = bp_disabled;
5303                   removed_any = 1;
5304                 }
5305               if (b->silent)
5306                 bs->print = 0;
5307               bs->commands = b->commands;
5308               incref_counted_command_line (bs->commands);
5309               if (command_line_is_silent (bs->commands
5310                                           ? bs->commands->commands : NULL))
5311                 bs->print = 0;
5312             }
5313
5314         }
5315
5316       /* Print nothing for this entry if we don't stop or don't
5317          print.  */
5318       if (!bs->stop || !bs->print)
5319         bs->print_it = print_it_noop;
5320     }
5321
5322   /* If we aren't stopping, the value of some hardware watchpoint may
5323      not have changed, but the intermediate memory locations we are
5324      watching may have.  Don't bother if we're stopping; this will get
5325      done later.  */
5326   need_remove_insert = 0;
5327   if (! bpstat_causes_stop (bs_head))
5328     for (bs = bs_head; bs != NULL; bs = bs->next)
5329       if (!bs->stop
5330           && bs->breakpoint_at
5331           && is_hardware_watchpoint (bs->breakpoint_at))
5332         {
5333           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5334
5335           update_watchpoint (w, 0 /* don't reparse.  */);
5336           need_remove_insert = 1;
5337         }
5338
5339   if (need_remove_insert)
5340     update_global_location_list (1);
5341   else if (removed_any)
5342     update_global_location_list (0);
5343
5344   return bs_head;
5345 }
5346
5347 static void
5348 handle_jit_event (void)
5349 {
5350   struct frame_info *frame;
5351   struct gdbarch *gdbarch;
5352
5353   /* Switch terminal for any messages produced by
5354      breakpoint_re_set.  */
5355   target_terminal_ours_for_output ();
5356
5357   frame = get_current_frame ();
5358   gdbarch = get_frame_arch (frame);
5359
5360   jit_event_handler (gdbarch);
5361
5362   target_terminal_inferior ();
5363 }
5364
5365 /* Prepare WHAT final decision for infrun.  */
5366
5367 /* Decide what infrun needs to do with this bpstat.  */
5368
5369 struct bpstat_what
5370 bpstat_what (bpstat bs_head)
5371 {
5372   struct bpstat_what retval;
5373   int jit_event = 0;
5374   bpstat bs;
5375
5376   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5377   retval.call_dummy = STOP_NONE;
5378   retval.is_longjmp = 0;
5379
5380   for (bs = bs_head; bs != NULL; bs = bs->next)
5381     {
5382       /* Extract this BS's action.  After processing each BS, we check
5383          if its action overrides all we've seem so far.  */
5384       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5385       enum bptype bptype;
5386
5387       if (bs->breakpoint_at == NULL)
5388         {
5389           /* I suspect this can happen if it was a momentary
5390              breakpoint which has since been deleted.  */
5391           bptype = bp_none;
5392         }
5393       else
5394         bptype = bs->breakpoint_at->type;
5395
5396       switch (bptype)
5397         {
5398         case bp_none:
5399           break;
5400         case bp_breakpoint:
5401         case bp_hardware_breakpoint:
5402         case bp_until:
5403         case bp_finish:
5404         case bp_shlib_event:
5405           if (bs->stop)
5406             {
5407               if (bs->print)
5408                 this_action = BPSTAT_WHAT_STOP_NOISY;
5409               else
5410                 this_action = BPSTAT_WHAT_STOP_SILENT;
5411             }
5412           else
5413             this_action = BPSTAT_WHAT_SINGLE;
5414           break;
5415         case bp_watchpoint:
5416         case bp_hardware_watchpoint:
5417         case bp_read_watchpoint:
5418         case bp_access_watchpoint:
5419           if (bs->stop)
5420             {
5421               if (bs->print)
5422                 this_action = BPSTAT_WHAT_STOP_NOISY;
5423               else
5424                 this_action = BPSTAT_WHAT_STOP_SILENT;
5425             }
5426           else
5427             {
5428               /* There was a watchpoint, but we're not stopping.
5429                  This requires no further action.  */
5430             }
5431           break;
5432         case bp_longjmp:
5433         case bp_longjmp_call_dummy:
5434         case bp_exception:
5435           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5436           retval.is_longjmp = bptype != bp_exception;
5437           break;
5438         case bp_longjmp_resume:
5439         case bp_exception_resume:
5440           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5441           retval.is_longjmp = bptype == bp_longjmp_resume;
5442           break;
5443         case bp_step_resume:
5444           if (bs->stop)
5445             this_action = BPSTAT_WHAT_STEP_RESUME;
5446           else
5447             {
5448               /* It is for the wrong frame.  */
5449               this_action = BPSTAT_WHAT_SINGLE;
5450             }
5451           break;
5452         case bp_hp_step_resume:
5453           if (bs->stop)
5454             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5455           else
5456             {
5457               /* It is for the wrong frame.  */
5458               this_action = BPSTAT_WHAT_SINGLE;
5459             }
5460           break;
5461         case bp_watchpoint_scope:
5462         case bp_thread_event:
5463         case bp_overlay_event:
5464         case bp_longjmp_master:
5465         case bp_std_terminate_master:
5466         case bp_exception_master:
5467           this_action = BPSTAT_WHAT_SINGLE;
5468           break;
5469         case bp_catchpoint:
5470           if (bs->stop)
5471             {
5472               if (bs->print)
5473                 this_action = BPSTAT_WHAT_STOP_NOISY;
5474               else
5475                 this_action = BPSTAT_WHAT_STOP_SILENT;
5476             }
5477           else
5478             {
5479               /* There was a catchpoint, but we're not stopping.
5480                  This requires no further action.  */
5481             }
5482           break;
5483         case bp_jit_event:
5484           jit_event = 1;
5485           this_action = BPSTAT_WHAT_SINGLE;
5486           break;
5487         case bp_call_dummy:
5488           /* Make sure the action is stop (silent or noisy),
5489              so infrun.c pops the dummy frame.  */
5490           retval.call_dummy = STOP_STACK_DUMMY;
5491           this_action = BPSTAT_WHAT_STOP_SILENT;
5492           break;
5493         case bp_std_terminate:
5494           /* Make sure the action is stop (silent or noisy),
5495              so infrun.c pops the dummy frame.  */
5496           retval.call_dummy = STOP_STD_TERMINATE;
5497           this_action = BPSTAT_WHAT_STOP_SILENT;
5498           break;
5499         case bp_tracepoint:
5500         case bp_fast_tracepoint:
5501         case bp_static_tracepoint:
5502           /* Tracepoint hits should not be reported back to GDB, and
5503              if one got through somehow, it should have been filtered
5504              out already.  */
5505           internal_error (__FILE__, __LINE__,
5506                           _("bpstat_what: tracepoint encountered"));
5507           break;
5508         case bp_gnu_ifunc_resolver:
5509           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5510           this_action = BPSTAT_WHAT_SINGLE;
5511           break;
5512         case bp_gnu_ifunc_resolver_return:
5513           /* The breakpoint will be removed, execution will restart from the
5514              PC of the former breakpoint.  */
5515           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5516           break;
5517
5518         case bp_dprintf:
5519           if (bs->stop)
5520             this_action = BPSTAT_WHAT_STOP_SILENT;
5521           else
5522             this_action = BPSTAT_WHAT_SINGLE;
5523           break;
5524
5525         default:
5526           internal_error (__FILE__, __LINE__,
5527                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5528         }
5529
5530       retval.main_action = max (retval.main_action, this_action);
5531     }
5532
5533   /* These operations may affect the bs->breakpoint_at state so they are
5534      delayed after MAIN_ACTION is decided above.  */
5535
5536   if (jit_event)
5537     {
5538       if (debug_infrun)
5539         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5540
5541       handle_jit_event ();
5542     }
5543
5544   for (bs = bs_head; bs != NULL; bs = bs->next)
5545     {
5546       struct breakpoint *b = bs->breakpoint_at;
5547
5548       if (b == NULL)
5549         continue;
5550       switch (b->type)
5551         {
5552         case bp_gnu_ifunc_resolver:
5553           gnu_ifunc_resolver_stop (b);
5554           break;
5555         case bp_gnu_ifunc_resolver_return:
5556           gnu_ifunc_resolver_return_stop (b);
5557           break;
5558         }
5559     }
5560
5561   return retval;
5562 }
5563
5564 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5565    without hardware support).  This isn't related to a specific bpstat,
5566    just to things like whether watchpoints are set.  */
5567
5568 int
5569 bpstat_should_step (void)
5570 {
5571   struct breakpoint *b;
5572
5573   ALL_BREAKPOINTS (b)
5574     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5575       return 1;
5576   return 0;
5577 }
5578
5579 int
5580 bpstat_causes_stop (bpstat bs)
5581 {
5582   for (; bs != NULL; bs = bs->next)
5583     if (bs->stop)
5584       return 1;
5585
5586   return 0;
5587 }
5588
5589 \f
5590
5591 /* Compute a string of spaces suitable to indent the next line
5592    so it starts at the position corresponding to the table column
5593    named COL_NAME in the currently active table of UIOUT.  */
5594
5595 static char *
5596 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5597 {
5598   static char wrap_indent[80];
5599   int i, total_width, width, align;
5600   char *text;
5601
5602   total_width = 0;
5603   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5604     {
5605       if (strcmp (text, col_name) == 0)
5606         {
5607           gdb_assert (total_width < sizeof wrap_indent);
5608           memset (wrap_indent, ' ', total_width);
5609           wrap_indent[total_width] = 0;
5610
5611           return wrap_indent;
5612         }
5613
5614       total_width += width + 1;
5615     }
5616
5617   return NULL;
5618 }
5619
5620 /* Determine if the locations of this breakpoint will have their conditions
5621    evaluated by the target, host or a mix of both.  Returns the following:
5622
5623     "host": Host evals condition.
5624     "host or target": Host or Target evals condition.
5625     "target": Target evals condition.
5626 */
5627
5628 static const char *
5629 bp_condition_evaluator (struct breakpoint *b)
5630 {
5631   struct bp_location *bl;
5632   char host_evals = 0;
5633   char target_evals = 0;
5634
5635   if (!b)
5636     return NULL;
5637
5638   if (!is_breakpoint (b))
5639     return NULL;
5640
5641   if (gdb_evaluates_breakpoint_condition_p ()
5642       || !target_supports_evaluation_of_breakpoint_conditions ())
5643     return condition_evaluation_host;
5644
5645   for (bl = b->loc; bl; bl = bl->next)
5646     {
5647       if (bl->cond_bytecode)
5648         target_evals++;
5649       else
5650         host_evals++;
5651     }
5652
5653   if (host_evals && target_evals)
5654     return condition_evaluation_both;
5655   else if (target_evals)
5656     return condition_evaluation_target;
5657   else
5658     return condition_evaluation_host;
5659 }
5660
5661 /* Determine the breakpoint location's condition evaluator.  This is
5662    similar to bp_condition_evaluator, but for locations.  */
5663
5664 static const char *
5665 bp_location_condition_evaluator (struct bp_location *bl)
5666 {
5667   if (bl && !is_breakpoint (bl->owner))
5668     return NULL;
5669
5670   if (gdb_evaluates_breakpoint_condition_p ()
5671       || !target_supports_evaluation_of_breakpoint_conditions ())
5672     return condition_evaluation_host;
5673
5674   if (bl && bl->cond_bytecode)
5675     return condition_evaluation_target;
5676   else
5677     return condition_evaluation_host;
5678 }
5679
5680 /* Print the LOC location out of the list of B->LOC locations.  */
5681
5682 static void
5683 print_breakpoint_location (struct breakpoint *b,
5684                            struct bp_location *loc)
5685 {
5686   struct ui_out *uiout = current_uiout;
5687   struct cleanup *old_chain = save_current_program_space ();
5688
5689   if (loc != NULL && loc->shlib_disabled)
5690     loc = NULL;
5691
5692   if (loc != NULL)
5693     set_current_program_space (loc->pspace);
5694
5695   if (b->display_canonical)
5696     ui_out_field_string (uiout, "what", b->addr_string);
5697   else if (loc && loc->symtab)
5698     {
5699       struct symbol *sym 
5700         = find_pc_sect_function (loc->address, loc->section);
5701       if (sym)
5702         {
5703           ui_out_text (uiout, "in ");
5704           ui_out_field_string (uiout, "func",
5705                                SYMBOL_PRINT_NAME (sym));
5706           ui_out_text (uiout, " ");
5707           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5708           ui_out_text (uiout, "at ");
5709         }
5710       ui_out_field_string (uiout, "file",
5711                            symtab_to_filename_for_display (loc->symtab));
5712       ui_out_text (uiout, ":");
5713
5714       if (ui_out_is_mi_like_p (uiout))
5715         ui_out_field_string (uiout, "fullname",
5716                              symtab_to_fullname (loc->symtab));
5717       
5718       ui_out_field_int (uiout, "line", loc->line_number);
5719     }
5720   else if (loc)
5721     {
5722       struct ui_file *stb = mem_fileopen ();
5723       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5724
5725       print_address_symbolic (loc->gdbarch, loc->address, stb,
5726                               demangle, "");
5727       ui_out_field_stream (uiout, "at", stb);
5728
5729       do_cleanups (stb_chain);
5730     }
5731   else
5732     ui_out_field_string (uiout, "pending", b->addr_string);
5733
5734   if (loc && is_breakpoint (b)
5735       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5736       && bp_condition_evaluator (b) == condition_evaluation_both)
5737     {
5738       ui_out_text (uiout, " (");
5739       ui_out_field_string (uiout, "evaluated-by",
5740                            bp_location_condition_evaluator (loc));
5741       ui_out_text (uiout, ")");
5742     }
5743
5744   do_cleanups (old_chain);
5745 }
5746
5747 static const char *
5748 bptype_string (enum bptype type)
5749 {
5750   struct ep_type_description
5751     {
5752       enum bptype type;
5753       char *description;
5754     };
5755   static struct ep_type_description bptypes[] =
5756   {
5757     {bp_none, "?deleted?"},
5758     {bp_breakpoint, "breakpoint"},
5759     {bp_hardware_breakpoint, "hw breakpoint"},
5760     {bp_until, "until"},
5761     {bp_finish, "finish"},
5762     {bp_watchpoint, "watchpoint"},
5763     {bp_hardware_watchpoint, "hw watchpoint"},
5764     {bp_read_watchpoint, "read watchpoint"},
5765     {bp_access_watchpoint, "acc watchpoint"},
5766     {bp_longjmp, "longjmp"},
5767     {bp_longjmp_resume, "longjmp resume"},
5768     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5769     {bp_exception, "exception"},
5770     {bp_exception_resume, "exception resume"},
5771     {bp_step_resume, "step resume"},
5772     {bp_hp_step_resume, "high-priority step resume"},
5773     {bp_watchpoint_scope, "watchpoint scope"},
5774     {bp_call_dummy, "call dummy"},
5775     {bp_std_terminate, "std::terminate"},
5776     {bp_shlib_event, "shlib events"},
5777     {bp_thread_event, "thread events"},
5778     {bp_overlay_event, "overlay events"},
5779     {bp_longjmp_master, "longjmp master"},
5780     {bp_std_terminate_master, "std::terminate master"},
5781     {bp_exception_master, "exception master"},
5782     {bp_catchpoint, "catchpoint"},
5783     {bp_tracepoint, "tracepoint"},
5784     {bp_fast_tracepoint, "fast tracepoint"},
5785     {bp_static_tracepoint, "static tracepoint"},
5786     {bp_dprintf, "dprintf"},
5787     {bp_jit_event, "jit events"},
5788     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5789     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5790   };
5791
5792   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5793       || ((int) type != bptypes[(int) type].type))
5794     internal_error (__FILE__, __LINE__,
5795                     _("bptypes table does not describe type #%d."),
5796                     (int) type);
5797
5798   return bptypes[(int) type].description;
5799 }
5800
5801 DEF_VEC_I(int);
5802
5803 /* For MI, output a field named 'thread-groups' with a list as the value.
5804    For CLI, prefix the list with the string 'inf'. */
5805
5806 static void
5807 output_thread_groups (struct ui_out *uiout,
5808                       const char *field_name,
5809                       VEC(int) *inf_num,
5810                       int mi_only)
5811 {
5812   struct cleanup *back_to;
5813   int is_mi = ui_out_is_mi_like_p (uiout);
5814   int inf;
5815   int i;
5816
5817   /* For backward compatibility, don't display inferiors in CLI unless
5818      there are several.  Always display them for MI. */
5819   if (!is_mi && mi_only)
5820     return;
5821
5822   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
5823
5824   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
5825     {
5826       if (is_mi)
5827         {
5828           char mi_group[10];
5829
5830           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
5831           ui_out_field_string (uiout, NULL, mi_group);
5832         }
5833       else
5834         {
5835           if (i == 0)
5836             ui_out_text (uiout, " inf ");
5837           else
5838             ui_out_text (uiout, ", ");
5839         
5840           ui_out_text (uiout, plongest (inf));
5841         }
5842     }
5843
5844   do_cleanups (back_to);
5845 }
5846
5847 /* Print B to gdb_stdout.  */
5848
5849 static void
5850 print_one_breakpoint_location (struct breakpoint *b,
5851                                struct bp_location *loc,
5852                                int loc_number,
5853                                struct bp_location **last_loc,
5854                                int allflag)
5855 {
5856   struct command_line *l;
5857   static char bpenables[] = "nynny";
5858
5859   struct ui_out *uiout = current_uiout;
5860   int header_of_multiple = 0;
5861   int part_of_multiple = (loc != NULL);
5862   struct value_print_options opts;
5863
5864   get_user_print_options (&opts);
5865
5866   gdb_assert (!loc || loc_number != 0);
5867   /* See comment in print_one_breakpoint concerning treatment of
5868      breakpoints with single disabled location.  */
5869   if (loc == NULL 
5870       && (b->loc != NULL 
5871           && (b->loc->next != NULL || !b->loc->enabled)))
5872     header_of_multiple = 1;
5873   if (loc == NULL)
5874     loc = b->loc;
5875
5876   annotate_record ();
5877
5878   /* 1 */
5879   annotate_field (0);
5880   if (part_of_multiple)
5881     {
5882       char *formatted;
5883       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5884       ui_out_field_string (uiout, "number", formatted);
5885       xfree (formatted);
5886     }
5887   else
5888     {
5889       ui_out_field_int (uiout, "number", b->number);
5890     }
5891
5892   /* 2 */
5893   annotate_field (1);
5894   if (part_of_multiple)
5895     ui_out_field_skip (uiout, "type");
5896   else
5897     ui_out_field_string (uiout, "type", bptype_string (b->type));
5898
5899   /* 3 */
5900   annotate_field (2);
5901   if (part_of_multiple)
5902     ui_out_field_skip (uiout, "disp");
5903   else
5904     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5905
5906
5907   /* 4 */
5908   annotate_field (3);
5909   if (part_of_multiple)
5910     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5911   else
5912     ui_out_field_fmt (uiout, "enabled", "%c", 
5913                       bpenables[(int) b->enable_state]);
5914   ui_out_spaces (uiout, 2);
5915
5916   
5917   /* 5 and 6 */
5918   if (b->ops != NULL && b->ops->print_one != NULL)
5919     {
5920       /* Although the print_one can possibly print all locations,
5921          calling it here is not likely to get any nice result.  So,
5922          make sure there's just one location.  */
5923       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5924       b->ops->print_one (b, last_loc);
5925     }
5926   else
5927     switch (b->type)
5928       {
5929       case bp_none:
5930         internal_error (__FILE__, __LINE__,
5931                         _("print_one_breakpoint: bp_none encountered\n"));
5932         break;
5933
5934       case bp_watchpoint:
5935       case bp_hardware_watchpoint:
5936       case bp_read_watchpoint:
5937       case bp_access_watchpoint:
5938         {
5939           struct watchpoint *w = (struct watchpoint *) b;
5940
5941           /* Field 4, the address, is omitted (which makes the columns
5942              not line up too nicely with the headers, but the effect
5943              is relatively readable).  */
5944           if (opts.addressprint)
5945             ui_out_field_skip (uiout, "addr");
5946           annotate_field (5);
5947           ui_out_field_string (uiout, "what", w->exp_string);
5948         }
5949         break;
5950
5951       case bp_breakpoint:
5952       case bp_hardware_breakpoint:
5953       case bp_until:
5954       case bp_finish:
5955       case bp_longjmp:
5956       case bp_longjmp_resume:
5957       case bp_longjmp_call_dummy:
5958       case bp_exception:
5959       case bp_exception_resume:
5960       case bp_step_resume:
5961       case bp_hp_step_resume:
5962       case bp_watchpoint_scope:
5963       case bp_call_dummy:
5964       case bp_std_terminate:
5965       case bp_shlib_event:
5966       case bp_thread_event:
5967       case bp_overlay_event:
5968       case bp_longjmp_master:
5969       case bp_std_terminate_master:
5970       case bp_exception_master:
5971       case bp_tracepoint:
5972       case bp_fast_tracepoint:
5973       case bp_static_tracepoint:
5974       case bp_dprintf:
5975       case bp_jit_event:
5976       case bp_gnu_ifunc_resolver:
5977       case bp_gnu_ifunc_resolver_return:
5978         if (opts.addressprint)
5979           {
5980             annotate_field (4);
5981             if (header_of_multiple)
5982               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5983             else if (b->loc == NULL || loc->shlib_disabled)
5984               ui_out_field_string (uiout, "addr", "<PENDING>");
5985             else
5986               ui_out_field_core_addr (uiout, "addr",
5987                                       loc->gdbarch, loc->address);
5988           }
5989         annotate_field (5);
5990         if (!header_of_multiple)
5991           print_breakpoint_location (b, loc);
5992         if (b->loc)
5993           *last_loc = b->loc;
5994         break;
5995       }
5996
5997
5998   if (loc != NULL && !header_of_multiple)
5999     {
6000       struct inferior *inf;
6001       VEC(int) *inf_num = NULL;
6002       int mi_only = 1;
6003
6004       ALL_INFERIORS (inf)
6005         {
6006           if (inf->pspace == loc->pspace)
6007             VEC_safe_push (int, inf_num, inf->num);
6008         }
6009
6010         /* For backward compatibility, don't display inferiors in CLI unless
6011            there are several.  Always display for MI. */
6012         if (allflag
6013             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6014                 && (number_of_program_spaces () > 1
6015                     || number_of_inferiors () > 1)
6016                 /* LOC is for existing B, it cannot be in
6017                    moribund_locations and thus having NULL OWNER.  */
6018                 && loc->owner->type != bp_catchpoint))
6019         mi_only = 0;
6020       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6021       VEC_free (int, inf_num);
6022     }
6023
6024   if (!part_of_multiple)
6025     {
6026       if (b->thread != -1)
6027         {
6028           /* FIXME: This seems to be redundant and lost here; see the
6029              "stop only in" line a little further down.  */
6030           ui_out_text (uiout, " thread ");
6031           ui_out_field_int (uiout, "thread", b->thread);
6032         }
6033       else if (b->task != 0)
6034         {
6035           ui_out_text (uiout, " task ");
6036           ui_out_field_int (uiout, "task", b->task);
6037         }
6038     }
6039
6040   ui_out_text (uiout, "\n");
6041
6042   if (!part_of_multiple)
6043     b->ops->print_one_detail (b, uiout);
6044
6045   if (part_of_multiple && frame_id_p (b->frame_id))
6046     {
6047       annotate_field (6);
6048       ui_out_text (uiout, "\tstop only in stack frame at ");
6049       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6050          the frame ID.  */
6051       ui_out_field_core_addr (uiout, "frame",
6052                               b->gdbarch, b->frame_id.stack_addr);
6053       ui_out_text (uiout, "\n");
6054     }
6055   
6056   if (!part_of_multiple && b->cond_string)
6057     {
6058       annotate_field (7);
6059       if (is_tracepoint (b))
6060         ui_out_text (uiout, "\ttrace only if ");
6061       else
6062         ui_out_text (uiout, "\tstop only if ");
6063       ui_out_field_string (uiout, "cond", b->cond_string);
6064
6065       /* Print whether the target is doing the breakpoint's condition
6066          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6067       if (is_breakpoint (b)
6068           && breakpoint_condition_evaluation_mode ()
6069           == condition_evaluation_target)
6070         {
6071           ui_out_text (uiout, " (");
6072           ui_out_field_string (uiout, "evaluated-by",
6073                                bp_condition_evaluator (b));
6074           ui_out_text (uiout, " evals)");
6075         }
6076       ui_out_text (uiout, "\n");
6077     }
6078
6079   if (!part_of_multiple && b->thread != -1)
6080     {
6081       /* FIXME should make an annotation for this.  */
6082       ui_out_text (uiout, "\tstop only in thread ");
6083       ui_out_field_int (uiout, "thread", b->thread);
6084       ui_out_text (uiout, "\n");
6085     }
6086   
6087   if (!part_of_multiple)
6088     {
6089       if (b->hit_count)
6090         {
6091           /* FIXME should make an annotation for this.  */
6092           if (is_catchpoint (b))
6093             ui_out_text (uiout, "\tcatchpoint");
6094           else if (is_tracepoint (b))
6095             ui_out_text (uiout, "\ttracepoint");
6096           else
6097             ui_out_text (uiout, "\tbreakpoint");
6098           ui_out_text (uiout, " already hit ");
6099           ui_out_field_int (uiout, "times", b->hit_count);
6100           if (b->hit_count == 1)
6101             ui_out_text (uiout, " time\n");
6102           else
6103             ui_out_text (uiout, " times\n");
6104         }
6105       else
6106         {
6107           /* Output the count also if it is zero, but only if this is mi.  */
6108           if (ui_out_is_mi_like_p (uiout))
6109             ui_out_field_int (uiout, "times", b->hit_count);
6110         }
6111     }
6112
6113   if (!part_of_multiple && b->ignore_count)
6114     {
6115       annotate_field (8);
6116       ui_out_text (uiout, "\tignore next ");
6117       ui_out_field_int (uiout, "ignore", b->ignore_count);
6118       ui_out_text (uiout, " hits\n");
6119     }
6120
6121   /* Note that an enable count of 1 corresponds to "enable once"
6122      behavior, which is reported by the combination of enablement and
6123      disposition, so we don't need to mention it here.  */
6124   if (!part_of_multiple && b->enable_count > 1)
6125     {
6126       annotate_field (8);
6127       ui_out_text (uiout, "\tdisable after ");
6128       /* Tweak the wording to clarify that ignore and enable counts
6129          are distinct, and have additive effect.  */
6130       if (b->ignore_count)
6131         ui_out_text (uiout, "additional ");
6132       else
6133         ui_out_text (uiout, "next ");
6134       ui_out_field_int (uiout, "enable", b->enable_count);
6135       ui_out_text (uiout, " hits\n");
6136     }
6137
6138   if (!part_of_multiple && is_tracepoint (b))
6139     {
6140       struct tracepoint *tp = (struct tracepoint *) b;
6141
6142       if (tp->traceframe_usage)
6143         {
6144           ui_out_text (uiout, "\ttrace buffer usage ");
6145           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6146           ui_out_text (uiout, " bytes\n");
6147         }
6148     }
6149
6150   l = b->commands ? b->commands->commands : NULL;
6151   if (!part_of_multiple && l)
6152     {
6153       struct cleanup *script_chain;
6154
6155       annotate_field (9);
6156       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6157       print_command_lines (uiout, l, 4);
6158       do_cleanups (script_chain);
6159     }
6160
6161   if (is_tracepoint (b))
6162     {
6163       struct tracepoint *t = (struct tracepoint *) b;
6164
6165       if (!part_of_multiple && t->pass_count)
6166         {
6167           annotate_field (10);
6168           ui_out_text (uiout, "\tpass count ");
6169           ui_out_field_int (uiout, "pass", t->pass_count);
6170           ui_out_text (uiout, " \n");
6171         }
6172
6173       /* Don't display it when tracepoint or tracepoint location is
6174          pending.   */
6175       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6176         {
6177           annotate_field (11);
6178
6179           if (ui_out_is_mi_like_p (uiout))
6180             ui_out_field_string (uiout, "installed",
6181                                  loc->inserted ? "y" : "n");
6182           else
6183             {
6184               if (loc->inserted)
6185                 ui_out_text (uiout, "\t");
6186               else
6187                 ui_out_text (uiout, "\tnot ");
6188               ui_out_text (uiout, "installed on target\n");
6189             }
6190         }
6191     }
6192
6193   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6194     {
6195       if (is_watchpoint (b))
6196         {
6197           struct watchpoint *w = (struct watchpoint *) b;
6198
6199           ui_out_field_string (uiout, "original-location", w->exp_string);
6200         }
6201       else if (b->addr_string)
6202         ui_out_field_string (uiout, "original-location", b->addr_string);
6203     }
6204 }
6205
6206 static void
6207 print_one_breakpoint (struct breakpoint *b,
6208                       struct bp_location **last_loc, 
6209                       int allflag)
6210 {
6211   struct cleanup *bkpt_chain;
6212   struct ui_out *uiout = current_uiout;
6213
6214   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6215
6216   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6217   do_cleanups (bkpt_chain);
6218
6219   /* If this breakpoint has custom print function,
6220      it's already printed.  Otherwise, print individual
6221      locations, if any.  */
6222   if (b->ops == NULL || b->ops->print_one == NULL)
6223     {
6224       /* If breakpoint has a single location that is disabled, we
6225          print it as if it had several locations, since otherwise it's
6226          hard to represent "breakpoint enabled, location disabled"
6227          situation.
6228
6229          Note that while hardware watchpoints have several locations
6230          internally, that's not a property exposed to user.  */
6231       if (b->loc 
6232           && !is_hardware_watchpoint (b)
6233           && (b->loc->next || !b->loc->enabled))
6234         {
6235           struct bp_location *loc;
6236           int n = 1;
6237
6238           for (loc = b->loc; loc; loc = loc->next, ++n)
6239             {
6240               struct cleanup *inner2 =
6241                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6242               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6243               do_cleanups (inner2);
6244             }
6245         }
6246     }
6247 }
6248
6249 static int
6250 breakpoint_address_bits (struct breakpoint *b)
6251 {
6252   int print_address_bits = 0;
6253   struct bp_location *loc;
6254
6255   for (loc = b->loc; loc; loc = loc->next)
6256     {
6257       int addr_bit;
6258
6259       /* Software watchpoints that aren't watching memory don't have
6260          an address to print.  */
6261       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6262         continue;
6263
6264       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6265       if (addr_bit > print_address_bits)
6266         print_address_bits = addr_bit;
6267     }
6268
6269   return print_address_bits;
6270 }
6271
6272 struct captured_breakpoint_query_args
6273   {
6274     int bnum;
6275   };
6276
6277 static int
6278 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6279 {
6280   struct captured_breakpoint_query_args *args = data;
6281   struct breakpoint *b;
6282   struct bp_location *dummy_loc = NULL;
6283
6284   ALL_BREAKPOINTS (b)
6285     {
6286       if (args->bnum == b->number)
6287         {
6288           print_one_breakpoint (b, &dummy_loc, 0);
6289           return GDB_RC_OK;
6290         }
6291     }
6292   return GDB_RC_NONE;
6293 }
6294
6295 enum gdb_rc
6296 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6297                       char **error_message)
6298 {
6299   struct captured_breakpoint_query_args args;
6300
6301   args.bnum = bnum;
6302   /* For the moment we don't trust print_one_breakpoint() to not throw
6303      an error.  */
6304   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6305                                  error_message, RETURN_MASK_ALL) < 0)
6306     return GDB_RC_FAIL;
6307   else
6308     return GDB_RC_OK;
6309 }
6310
6311 /* Return true if this breakpoint was set by the user, false if it is
6312    internal or momentary.  */
6313
6314 int
6315 user_breakpoint_p (struct breakpoint *b)
6316 {
6317   return b->number > 0;
6318 }
6319
6320 /* Print information on user settable breakpoint (watchpoint, etc)
6321    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6322    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6323    FILTER is non-NULL, call it on each breakpoint and only include the
6324    ones for which it returns non-zero.  Return the total number of
6325    breakpoints listed.  */
6326
6327 static int
6328 breakpoint_1 (char *args, int allflag, 
6329               int (*filter) (const struct breakpoint *))
6330 {
6331   struct breakpoint *b;
6332   struct bp_location *last_loc = NULL;
6333   int nr_printable_breakpoints;
6334   struct cleanup *bkpttbl_chain;
6335   struct value_print_options opts;
6336   int print_address_bits = 0;
6337   int print_type_col_width = 14;
6338   struct ui_out *uiout = current_uiout;
6339
6340   get_user_print_options (&opts);
6341
6342   /* Compute the number of rows in the table, as well as the size
6343      required for address fields.  */
6344   nr_printable_breakpoints = 0;
6345   ALL_BREAKPOINTS (b)
6346     {
6347       /* If we have a filter, only list the breakpoints it accepts.  */
6348       if (filter && !filter (b))
6349         continue;
6350
6351       /* If we have an "args" string, it is a list of breakpoints to 
6352          accept.  Skip the others.  */
6353       if (args != NULL && *args != '\0')
6354         {
6355           if (allflag && parse_and_eval_long (args) != b->number)
6356             continue;
6357           if (!allflag && !number_is_in_list (args, b->number))
6358             continue;
6359         }
6360
6361       if (allflag || user_breakpoint_p (b))
6362         {
6363           int addr_bit, type_len;
6364
6365           addr_bit = breakpoint_address_bits (b);
6366           if (addr_bit > print_address_bits)
6367             print_address_bits = addr_bit;
6368
6369           type_len = strlen (bptype_string (b->type));
6370           if (type_len > print_type_col_width)
6371             print_type_col_width = type_len;
6372
6373           nr_printable_breakpoints++;
6374         }
6375     }
6376
6377   if (opts.addressprint)
6378     bkpttbl_chain 
6379       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6380                                              nr_printable_breakpoints,
6381                                              "BreakpointTable");
6382   else
6383     bkpttbl_chain 
6384       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6385                                              nr_printable_breakpoints,
6386                                              "BreakpointTable");
6387
6388   if (nr_printable_breakpoints > 0)
6389     annotate_breakpoints_headers ();
6390   if (nr_printable_breakpoints > 0)
6391     annotate_field (0);
6392   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6393   if (nr_printable_breakpoints > 0)
6394     annotate_field (1);
6395   ui_out_table_header (uiout, print_type_col_width, ui_left,
6396                        "type", "Type");                         /* 2 */
6397   if (nr_printable_breakpoints > 0)
6398     annotate_field (2);
6399   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6400   if (nr_printable_breakpoints > 0)
6401     annotate_field (3);
6402   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6403   if (opts.addressprint)
6404     {
6405       if (nr_printable_breakpoints > 0)
6406         annotate_field (4);
6407       if (print_address_bits <= 32)
6408         ui_out_table_header (uiout, 10, ui_left, 
6409                              "addr", "Address");                /* 5 */
6410       else
6411         ui_out_table_header (uiout, 18, ui_left, 
6412                              "addr", "Address");                /* 5 */
6413     }
6414   if (nr_printable_breakpoints > 0)
6415     annotate_field (5);
6416   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6417   ui_out_table_body (uiout);
6418   if (nr_printable_breakpoints > 0)
6419     annotate_breakpoints_table ();
6420
6421   ALL_BREAKPOINTS (b)
6422     {
6423       QUIT;
6424       /* If we have a filter, only list the breakpoints it accepts.  */
6425       if (filter && !filter (b))
6426         continue;
6427
6428       /* If we have an "args" string, it is a list of breakpoints to 
6429          accept.  Skip the others.  */
6430
6431       if (args != NULL && *args != '\0')
6432         {
6433           if (allflag)  /* maintenance info breakpoint */
6434             {
6435               if (parse_and_eval_long (args) != b->number)
6436                 continue;
6437             }
6438           else          /* all others */
6439             {
6440               if (!number_is_in_list (args, b->number))
6441                 continue;
6442             }
6443         }
6444       /* We only print out user settable breakpoints unless the
6445          allflag is set.  */
6446       if (allflag || user_breakpoint_p (b))
6447         print_one_breakpoint (b, &last_loc, allflag);
6448     }
6449
6450   do_cleanups (bkpttbl_chain);
6451
6452   if (nr_printable_breakpoints == 0)
6453     {
6454       /* If there's a filter, let the caller decide how to report
6455          empty list.  */
6456       if (!filter)
6457         {
6458           if (args == NULL || *args == '\0')
6459             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6460           else
6461             ui_out_message (uiout, 0, 
6462                             "No breakpoint or watchpoint matching '%s'.\n",
6463                             args);
6464         }
6465     }
6466   else
6467     {
6468       if (last_loc && !server_command)
6469         set_next_address (last_loc->gdbarch, last_loc->address);
6470     }
6471
6472   /* FIXME?  Should this be moved up so that it is only called when
6473      there have been breakpoints? */
6474   annotate_breakpoints_table_end ();
6475
6476   return nr_printable_breakpoints;
6477 }
6478
6479 /* Display the value of default-collect in a way that is generally
6480    compatible with the breakpoint list.  */
6481
6482 static void
6483 default_collect_info (void)
6484 {
6485   struct ui_out *uiout = current_uiout;
6486
6487   /* If it has no value (which is frequently the case), say nothing; a
6488      message like "No default-collect." gets in user's face when it's
6489      not wanted.  */
6490   if (!*default_collect)
6491     return;
6492
6493   /* The following phrase lines up nicely with per-tracepoint collect
6494      actions.  */
6495   ui_out_text (uiout, "default collect ");
6496   ui_out_field_string (uiout, "default-collect", default_collect);
6497   ui_out_text (uiout, " \n");
6498 }
6499   
6500 static void
6501 breakpoints_info (char *args, int from_tty)
6502 {
6503   breakpoint_1 (args, 0, NULL);
6504
6505   default_collect_info ();
6506 }
6507
6508 static void
6509 watchpoints_info (char *args, int from_tty)
6510 {
6511   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6512   struct ui_out *uiout = current_uiout;
6513
6514   if (num_printed == 0)
6515     {
6516       if (args == NULL || *args == '\0')
6517         ui_out_message (uiout, 0, "No watchpoints.\n");
6518       else
6519         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6520     }
6521 }
6522
6523 static void
6524 maintenance_info_breakpoints (char *args, int from_tty)
6525 {
6526   breakpoint_1 (args, 1, NULL);
6527
6528   default_collect_info ();
6529 }
6530
6531 static int
6532 breakpoint_has_pc (struct breakpoint *b,
6533                    struct program_space *pspace,
6534                    CORE_ADDR pc, struct obj_section *section)
6535 {
6536   struct bp_location *bl = b->loc;
6537
6538   for (; bl; bl = bl->next)
6539     {
6540       if (bl->pspace == pspace
6541           && bl->address == pc
6542           && (!overlay_debugging || bl->section == section))
6543         return 1;         
6544     }
6545   return 0;
6546 }
6547
6548 /* Print a message describing any user-breakpoints set at PC.  This
6549    concerns with logical breakpoints, so we match program spaces, not
6550    address spaces.  */
6551
6552 static void
6553 describe_other_breakpoints (struct gdbarch *gdbarch,
6554                             struct program_space *pspace, CORE_ADDR pc,
6555                             struct obj_section *section, int thread)
6556 {
6557   int others = 0;
6558   struct breakpoint *b;
6559
6560   ALL_BREAKPOINTS (b)
6561     others += (user_breakpoint_p (b)
6562                && breakpoint_has_pc (b, pspace, pc, section));
6563   if (others > 0)
6564     {
6565       if (others == 1)
6566         printf_filtered (_("Note: breakpoint "));
6567       else /* if (others == ???) */
6568         printf_filtered (_("Note: breakpoints "));
6569       ALL_BREAKPOINTS (b)
6570         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6571           {
6572             others--;
6573             printf_filtered ("%d", b->number);
6574             if (b->thread == -1 && thread != -1)
6575               printf_filtered (" (all threads)");
6576             else if (b->thread != -1)
6577               printf_filtered (" (thread %d)", b->thread);
6578             printf_filtered ("%s%s ",
6579                              ((b->enable_state == bp_disabled
6580                                || b->enable_state == bp_call_disabled)
6581                               ? " (disabled)"
6582                               : b->enable_state == bp_permanent 
6583                               ? " (permanent)"
6584                               : ""),
6585                              (others > 1) ? "," 
6586                              : ((others == 1) ? " and" : ""));
6587           }
6588       printf_filtered (_("also set at pc "));
6589       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6590       printf_filtered (".\n");
6591     }
6592 }
6593 \f
6594
6595 /* Return true iff it is meaningful to use the address member of
6596    BPT.  For some breakpoint types, the address member is irrelevant
6597    and it makes no sense to attempt to compare it to other addresses
6598    (or use it for any other purpose either).
6599
6600    More specifically, each of the following breakpoint types will
6601    always have a zero valued address and we don't want to mark
6602    breakpoints of any of these types to be a duplicate of an actual
6603    breakpoint at address zero:
6604
6605       bp_watchpoint
6606       bp_catchpoint
6607
6608 */
6609
6610 static int
6611 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6612 {
6613   enum bptype type = bpt->type;
6614
6615   return (type != bp_watchpoint && type != bp_catchpoint);
6616 }
6617
6618 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6619    true if LOC1 and LOC2 represent the same watchpoint location.  */
6620
6621 static int
6622 watchpoint_locations_match (struct bp_location *loc1, 
6623                             struct bp_location *loc2)
6624 {
6625   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6626   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6627
6628   /* Both of them must exist.  */
6629   gdb_assert (w1 != NULL);
6630   gdb_assert (w2 != NULL);
6631
6632   /* If the target can evaluate the condition expression in hardware,
6633      then we we need to insert both watchpoints even if they are at
6634      the same place.  Otherwise the watchpoint will only trigger when
6635      the condition of whichever watchpoint was inserted evaluates to
6636      true, not giving a chance for GDB to check the condition of the
6637      other watchpoint.  */
6638   if ((w1->cond_exp
6639        && target_can_accel_watchpoint_condition (loc1->address, 
6640                                                  loc1->length,
6641                                                  loc1->watchpoint_type,
6642                                                  w1->cond_exp))
6643       || (w2->cond_exp
6644           && target_can_accel_watchpoint_condition (loc2->address, 
6645                                                     loc2->length,
6646                                                     loc2->watchpoint_type,
6647                                                     w2->cond_exp)))
6648     return 0;
6649
6650   /* Note that this checks the owner's type, not the location's.  In
6651      case the target does not support read watchpoints, but does
6652      support access watchpoints, we'll have bp_read_watchpoint
6653      watchpoints with hw_access locations.  Those should be considered
6654      duplicates of hw_read locations.  The hw_read locations will
6655      become hw_access locations later.  */
6656   return (loc1->owner->type == loc2->owner->type
6657           && loc1->pspace->aspace == loc2->pspace->aspace
6658           && loc1->address == loc2->address
6659           && loc1->length == loc2->length);
6660 }
6661
6662 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6663    same breakpoint location.  In most targets, this can only be true
6664    if ASPACE1 matches ASPACE2.  On targets that have global
6665    breakpoints, the address space doesn't really matter.  */
6666
6667 static int
6668 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6669                           struct address_space *aspace2, CORE_ADDR addr2)
6670 {
6671   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6672            || aspace1 == aspace2)
6673           && addr1 == addr2);
6674 }
6675
6676 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6677    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6678    matches ASPACE2.  On targets that have global breakpoints, the address
6679    space doesn't really matter.  */
6680
6681 static int
6682 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6683                                 int len1, struct address_space *aspace2,
6684                                 CORE_ADDR addr2)
6685 {
6686   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6687            || aspace1 == aspace2)
6688           && addr2 >= addr1 && addr2 < addr1 + len1);
6689 }
6690
6691 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6692    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6693    matches the breakpoint's address space.  On targets that have global
6694    breakpoints, the address space doesn't really matter.  */
6695
6696 static int
6697 breakpoint_location_address_match (struct bp_location *bl,
6698                                    struct address_space *aspace,
6699                                    CORE_ADDR addr)
6700 {
6701   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6702                                     aspace, addr)
6703           || (bl->length
6704               && breakpoint_address_match_range (bl->pspace->aspace,
6705                                                  bl->address, bl->length,
6706                                                  aspace, addr)));
6707 }
6708
6709 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6710    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6711    true, otherwise returns false.  */
6712
6713 static int
6714 tracepoint_locations_match (struct bp_location *loc1,
6715                             struct bp_location *loc2)
6716 {
6717   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6718     /* Since tracepoint locations are never duplicated with others', tracepoint
6719        locations at the same address of different tracepoints are regarded as
6720        different locations.  */
6721     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6722   else
6723     return 0;
6724 }
6725
6726 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6727    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6728    represent the same location.  */
6729
6730 static int
6731 breakpoint_locations_match (struct bp_location *loc1, 
6732                             struct bp_location *loc2)
6733 {
6734   int hw_point1, hw_point2;
6735
6736   /* Both of them must not be in moribund_locations.  */
6737   gdb_assert (loc1->owner != NULL);
6738   gdb_assert (loc2->owner != NULL);
6739
6740   hw_point1 = is_hardware_watchpoint (loc1->owner);
6741   hw_point2 = is_hardware_watchpoint (loc2->owner);
6742
6743   if (hw_point1 != hw_point2)
6744     return 0;
6745   else if (hw_point1)
6746     return watchpoint_locations_match (loc1, loc2);
6747   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6748     return tracepoint_locations_match (loc1, loc2);
6749   else
6750     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6751     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6752                                      loc2->pspace->aspace, loc2->address)
6753             && loc1->length == loc2->length);
6754 }
6755
6756 static void
6757 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6758                                int bnum, int have_bnum)
6759 {
6760   /* The longest string possibly returned by hex_string_custom
6761      is 50 chars.  These must be at least that big for safety.  */
6762   char astr1[64];
6763   char astr2[64];
6764
6765   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6766   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6767   if (have_bnum)
6768     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6769              bnum, astr1, astr2);
6770   else
6771     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6772 }
6773
6774 /* Adjust a breakpoint's address to account for architectural
6775    constraints on breakpoint placement.  Return the adjusted address.
6776    Note: Very few targets require this kind of adjustment.  For most
6777    targets, this function is simply the identity function.  */
6778
6779 static CORE_ADDR
6780 adjust_breakpoint_address (struct gdbarch *gdbarch,
6781                            CORE_ADDR bpaddr, enum bptype bptype)
6782 {
6783   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6784     {
6785       /* Very few targets need any kind of breakpoint adjustment.  */
6786       return bpaddr;
6787     }
6788   else if (bptype == bp_watchpoint
6789            || bptype == bp_hardware_watchpoint
6790            || bptype == bp_read_watchpoint
6791            || bptype == bp_access_watchpoint
6792            || bptype == bp_catchpoint)
6793     {
6794       /* Watchpoints and the various bp_catch_* eventpoints should not
6795          have their addresses modified.  */
6796       return bpaddr;
6797     }
6798   else
6799     {
6800       CORE_ADDR adjusted_bpaddr;
6801
6802       /* Some targets have architectural constraints on the placement
6803          of breakpoint instructions.  Obtain the adjusted address.  */
6804       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6805
6806       /* An adjusted breakpoint address can significantly alter
6807          a user's expectations.  Print a warning if an adjustment
6808          is required.  */
6809       if (adjusted_bpaddr != bpaddr)
6810         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6811
6812       return adjusted_bpaddr;
6813     }
6814 }
6815
6816 void
6817 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6818                   struct breakpoint *owner)
6819 {
6820   memset (loc, 0, sizeof (*loc));
6821
6822   gdb_assert (ops != NULL);
6823
6824   loc->ops = ops;
6825   loc->owner = owner;
6826   loc->cond = NULL;
6827   loc->cond_bytecode = NULL;
6828   loc->shlib_disabled = 0;
6829   loc->enabled = 1;
6830
6831   switch (owner->type)
6832     {
6833     case bp_breakpoint:
6834     case bp_until:
6835     case bp_finish:
6836     case bp_longjmp:
6837     case bp_longjmp_resume:
6838     case bp_longjmp_call_dummy:
6839     case bp_exception:
6840     case bp_exception_resume:
6841     case bp_step_resume:
6842     case bp_hp_step_resume:
6843     case bp_watchpoint_scope:
6844     case bp_call_dummy:
6845     case bp_std_terminate:
6846     case bp_shlib_event:
6847     case bp_thread_event:
6848     case bp_overlay_event:
6849     case bp_jit_event:
6850     case bp_longjmp_master:
6851     case bp_std_terminate_master:
6852     case bp_exception_master:
6853     case bp_gnu_ifunc_resolver:
6854     case bp_gnu_ifunc_resolver_return:
6855     case bp_dprintf:
6856       loc->loc_type = bp_loc_software_breakpoint;
6857       mark_breakpoint_location_modified (loc);
6858       break;
6859     case bp_hardware_breakpoint:
6860       loc->loc_type = bp_loc_hardware_breakpoint;
6861       mark_breakpoint_location_modified (loc);
6862       break;
6863     case bp_hardware_watchpoint:
6864     case bp_read_watchpoint:
6865     case bp_access_watchpoint:
6866       loc->loc_type = bp_loc_hardware_watchpoint;
6867       break;
6868     case bp_watchpoint:
6869     case bp_catchpoint:
6870     case bp_tracepoint:
6871     case bp_fast_tracepoint:
6872     case bp_static_tracepoint:
6873       loc->loc_type = bp_loc_other;
6874       break;
6875     default:
6876       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6877     }
6878
6879   loc->refc = 1;
6880 }
6881
6882 /* Allocate a struct bp_location.  */
6883
6884 static struct bp_location *
6885 allocate_bp_location (struct breakpoint *bpt)
6886 {
6887   return bpt->ops->allocate_location (bpt);
6888 }
6889
6890 static void
6891 free_bp_location (struct bp_location *loc)
6892 {
6893   loc->ops->dtor (loc);
6894   xfree (loc);
6895 }
6896
6897 /* Increment reference count.  */
6898
6899 static void
6900 incref_bp_location (struct bp_location *bl)
6901 {
6902   ++bl->refc;
6903 }
6904
6905 /* Decrement reference count.  If the reference count reaches 0,
6906    destroy the bp_location.  Sets *BLP to NULL.  */
6907
6908 static void
6909 decref_bp_location (struct bp_location **blp)
6910 {
6911   gdb_assert ((*blp)->refc > 0);
6912
6913   if (--(*blp)->refc == 0)
6914     free_bp_location (*blp);
6915   *blp = NULL;
6916 }
6917
6918 /* Add breakpoint B at the end of the global breakpoint chain.  */
6919
6920 static void
6921 add_to_breakpoint_chain (struct breakpoint *b)
6922 {
6923   struct breakpoint *b1;
6924
6925   /* Add this breakpoint to the end of the chain so that a list of
6926      breakpoints will come out in order of increasing numbers.  */
6927
6928   b1 = breakpoint_chain;
6929   if (b1 == 0)
6930     breakpoint_chain = b;
6931   else
6932     {
6933       while (b1->next)
6934         b1 = b1->next;
6935       b1->next = b;
6936     }
6937 }
6938
6939 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6940
6941 static void
6942 init_raw_breakpoint_without_location (struct breakpoint *b,
6943                                       struct gdbarch *gdbarch,
6944                                       enum bptype bptype,
6945                                       const struct breakpoint_ops *ops)
6946 {
6947   memset (b, 0, sizeof (*b));
6948
6949   gdb_assert (ops != NULL);
6950
6951   b->ops = ops;
6952   b->type = bptype;
6953   b->gdbarch = gdbarch;
6954   b->language = current_language->la_language;
6955   b->input_radix = input_radix;
6956   b->thread = -1;
6957   b->enable_state = bp_enabled;
6958   b->next = 0;
6959   b->silent = 0;
6960   b->ignore_count = 0;
6961   b->commands = NULL;
6962   b->frame_id = null_frame_id;
6963   b->condition_not_parsed = 0;
6964   b->py_bp_object = NULL;
6965   b->related_breakpoint = b;
6966 }
6967
6968 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6969    that has type BPTYPE and has no locations as yet.  */
6970
6971 static struct breakpoint *
6972 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6973                                      enum bptype bptype,
6974                                      const struct breakpoint_ops *ops)
6975 {
6976   struct breakpoint *b = XNEW (struct breakpoint);
6977
6978   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6979   add_to_breakpoint_chain (b);
6980   return b;
6981 }
6982
6983 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6984    resolutions should be made as the user specified the location explicitly
6985    enough.  */
6986
6987 static void
6988 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6989 {
6990   gdb_assert (loc->owner != NULL);
6991
6992   if (loc->owner->type == bp_breakpoint
6993       || loc->owner->type == bp_hardware_breakpoint
6994       || is_tracepoint (loc->owner))
6995     {
6996       int is_gnu_ifunc;
6997       const char *function_name;
6998       CORE_ADDR func_addr;
6999
7000       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7001                                           &func_addr, NULL, &is_gnu_ifunc);
7002
7003       if (is_gnu_ifunc && !explicit_loc)
7004         {
7005           struct breakpoint *b = loc->owner;
7006
7007           gdb_assert (loc->pspace == current_program_space);
7008           if (gnu_ifunc_resolve_name (function_name,
7009                                       &loc->requested_address))
7010             {
7011               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7012               loc->address = adjust_breakpoint_address (loc->gdbarch,
7013                                                         loc->requested_address,
7014                                                         b->type);
7015             }
7016           else if (b->type == bp_breakpoint && b->loc == loc
7017                    && loc->next == NULL && b->related_breakpoint == b)
7018             {
7019               /* Create only the whole new breakpoint of this type but do not
7020                  mess more complicated breakpoints with multiple locations.  */
7021               b->type = bp_gnu_ifunc_resolver;
7022               /* Remember the resolver's address for use by the return
7023                  breakpoint.  */
7024               loc->related_address = func_addr;
7025             }
7026         }
7027
7028       if (function_name)
7029         loc->function_name = xstrdup (function_name);
7030     }
7031 }
7032
7033 /* Attempt to determine architecture of location identified by SAL.  */
7034 struct gdbarch *
7035 get_sal_arch (struct symtab_and_line sal)
7036 {
7037   if (sal.section)
7038     return get_objfile_arch (sal.section->objfile);
7039   if (sal.symtab)
7040     return get_objfile_arch (sal.symtab->objfile);
7041
7042   return NULL;
7043 }
7044
7045 /* Low level routine for partially initializing a breakpoint of type
7046    BPTYPE.  The newly created breakpoint's address, section, source
7047    file name, and line number are provided by SAL.
7048
7049    It is expected that the caller will complete the initialization of
7050    the newly created breakpoint struct as well as output any status
7051    information regarding the creation of a new breakpoint.  */
7052
7053 static void
7054 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7055                      struct symtab_and_line sal, enum bptype bptype,
7056                      const struct breakpoint_ops *ops)
7057 {
7058   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7059
7060   add_location_to_breakpoint (b, &sal);
7061
7062   if (bptype != bp_catchpoint)
7063     gdb_assert (sal.pspace != NULL);
7064
7065   /* Store the program space that was used to set the breakpoint,
7066      except for ordinary breakpoints, which are independent of the
7067      program space.  */
7068   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7069     b->pspace = sal.pspace;
7070 }
7071
7072 /* set_raw_breakpoint is a low level routine for allocating and
7073    partially initializing a breakpoint of type BPTYPE.  The newly
7074    created breakpoint's address, section, source file name, and line
7075    number are provided by SAL.  The newly created and partially
7076    initialized breakpoint is added to the breakpoint chain and
7077    is also returned as the value of this function.
7078
7079    It is expected that the caller will complete the initialization of
7080    the newly created breakpoint struct as well as output any status
7081    information regarding the creation of a new breakpoint.  In
7082    particular, set_raw_breakpoint does NOT set the breakpoint
7083    number!  Care should be taken to not allow an error to occur
7084    prior to completing the initialization of the breakpoint.  If this
7085    should happen, a bogus breakpoint will be left on the chain.  */
7086
7087 struct breakpoint *
7088 set_raw_breakpoint (struct gdbarch *gdbarch,
7089                     struct symtab_and_line sal, enum bptype bptype,
7090                     const struct breakpoint_ops *ops)
7091 {
7092   struct breakpoint *b = XNEW (struct breakpoint);
7093
7094   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7095   add_to_breakpoint_chain (b);
7096   return b;
7097 }
7098
7099
7100 /* Note that the breakpoint object B describes a permanent breakpoint
7101    instruction, hard-wired into the inferior's code.  */
7102 void
7103 make_breakpoint_permanent (struct breakpoint *b)
7104 {
7105   struct bp_location *bl;
7106
7107   b->enable_state = bp_permanent;
7108
7109   /* By definition, permanent breakpoints are already present in the
7110      code.  Mark all locations as inserted.  For now,
7111      make_breakpoint_permanent is called in just one place, so it's
7112      hard to say if it's reasonable to have permanent breakpoint with
7113      multiple locations or not, but it's easy to implement.  */
7114   for (bl = b->loc; bl; bl = bl->next)
7115     bl->inserted = 1;
7116 }
7117
7118 /* Call this routine when stepping and nexting to enable a breakpoint
7119    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7120    initiated the operation.  */
7121
7122 void
7123 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7124 {
7125   struct breakpoint *b, *b_tmp;
7126   int thread = tp->num;
7127
7128   /* To avoid having to rescan all objfile symbols at every step,
7129      we maintain a list of continually-inserted but always disabled
7130      longjmp "master" breakpoints.  Here, we simply create momentary
7131      clones of those and enable them for the requested thread.  */
7132   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7133     if (b->pspace == current_program_space
7134         && (b->type == bp_longjmp_master
7135             || b->type == bp_exception_master))
7136       {
7137         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7138         struct breakpoint *clone;
7139
7140         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7141            after their removal.  */
7142         clone = momentary_breakpoint_from_master (b, type,
7143                                                   &longjmp_breakpoint_ops);
7144         clone->thread = thread;
7145       }
7146
7147   tp->initiating_frame = frame;
7148 }
7149
7150 /* Delete all longjmp breakpoints from THREAD.  */
7151 void
7152 delete_longjmp_breakpoint (int thread)
7153 {
7154   struct breakpoint *b, *b_tmp;
7155
7156   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7157     if (b->type == bp_longjmp || b->type == bp_exception)
7158       {
7159         if (b->thread == thread)
7160           delete_breakpoint (b);
7161       }
7162 }
7163
7164 void
7165 delete_longjmp_breakpoint_at_next_stop (int thread)
7166 {
7167   struct breakpoint *b, *b_tmp;
7168
7169   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7170     if (b->type == bp_longjmp || b->type == bp_exception)
7171       {
7172         if (b->thread == thread)
7173           b->disposition = disp_del_at_next_stop;
7174       }
7175 }
7176
7177 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7178    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7179    pointer to any of them.  Return NULL if this system cannot place longjmp
7180    breakpoints.  */
7181
7182 struct breakpoint *
7183 set_longjmp_breakpoint_for_call_dummy (void)
7184 {
7185   struct breakpoint *b, *retval = NULL;
7186
7187   ALL_BREAKPOINTS (b)
7188     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7189       {
7190         struct breakpoint *new_b;
7191
7192         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7193                                                   &momentary_breakpoint_ops);
7194         new_b->thread = pid_to_thread_id (inferior_ptid);
7195
7196         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7197
7198         gdb_assert (new_b->related_breakpoint == new_b);
7199         if (retval == NULL)
7200           retval = new_b;
7201         new_b->related_breakpoint = retval;
7202         while (retval->related_breakpoint != new_b->related_breakpoint)
7203           retval = retval->related_breakpoint;
7204         retval->related_breakpoint = new_b;
7205       }
7206
7207   return retval;
7208 }
7209
7210 /* Verify all existing dummy frames and their associated breakpoints for
7211    THREAD.  Remove those which can no longer be found in the current frame
7212    stack.
7213
7214    You should call this function only at places where it is safe to currently
7215    unwind the whole stack.  Failed stack unwind would discard live dummy
7216    frames.  */
7217
7218 void
7219 check_longjmp_breakpoint_for_call_dummy (int thread)
7220 {
7221   struct breakpoint *b, *b_tmp;
7222
7223   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7224     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7225       {
7226         struct breakpoint *dummy_b = b->related_breakpoint;
7227
7228         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7229           dummy_b = dummy_b->related_breakpoint;
7230         if (dummy_b->type != bp_call_dummy
7231             || frame_find_by_id (dummy_b->frame_id) != NULL)
7232           continue;
7233         
7234         dummy_frame_discard (dummy_b->frame_id);
7235
7236         while (b->related_breakpoint != b)
7237           {
7238             if (b_tmp == b->related_breakpoint)
7239               b_tmp = b->related_breakpoint->next;
7240             delete_breakpoint (b->related_breakpoint);
7241           }
7242         delete_breakpoint (b);
7243       }
7244 }
7245
7246 void
7247 enable_overlay_breakpoints (void)
7248 {
7249   struct breakpoint *b;
7250
7251   ALL_BREAKPOINTS (b)
7252     if (b->type == bp_overlay_event)
7253     {
7254       b->enable_state = bp_enabled;
7255       update_global_location_list (1);
7256       overlay_events_enabled = 1;
7257     }
7258 }
7259
7260 void
7261 disable_overlay_breakpoints (void)
7262 {
7263   struct breakpoint *b;
7264
7265   ALL_BREAKPOINTS (b)
7266     if (b->type == bp_overlay_event)
7267     {
7268       b->enable_state = bp_disabled;
7269       update_global_location_list (0);
7270       overlay_events_enabled = 0;
7271     }
7272 }
7273
7274 /* Set an active std::terminate breakpoint for each std::terminate
7275    master breakpoint.  */
7276 void
7277 set_std_terminate_breakpoint (void)
7278 {
7279   struct breakpoint *b, *b_tmp;
7280
7281   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7282     if (b->pspace == current_program_space
7283         && b->type == bp_std_terminate_master)
7284       {
7285         momentary_breakpoint_from_master (b, bp_std_terminate,
7286                                           &momentary_breakpoint_ops);
7287       }
7288 }
7289
7290 /* Delete all the std::terminate breakpoints.  */
7291 void
7292 delete_std_terminate_breakpoint (void)
7293 {
7294   struct breakpoint *b, *b_tmp;
7295
7296   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7297     if (b->type == bp_std_terminate)
7298       delete_breakpoint (b);
7299 }
7300
7301 struct breakpoint *
7302 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7303 {
7304   struct breakpoint *b;
7305
7306   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7307                                   &internal_breakpoint_ops);
7308
7309   b->enable_state = bp_enabled;
7310   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7311   b->addr_string
7312     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7313
7314   update_global_location_list_nothrow (1);
7315
7316   return b;
7317 }
7318
7319 void
7320 remove_thread_event_breakpoints (void)
7321 {
7322   struct breakpoint *b, *b_tmp;
7323
7324   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7325     if (b->type == bp_thread_event
7326         && b->loc->pspace == current_program_space)
7327       delete_breakpoint (b);
7328 }
7329
7330 struct lang_and_radix
7331   {
7332     enum language lang;
7333     int radix;
7334   };
7335
7336 /* Create a breakpoint for JIT code registration and unregistration.  */
7337
7338 struct breakpoint *
7339 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7340 {
7341   struct breakpoint *b;
7342
7343   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7344                                   &internal_breakpoint_ops);
7345   update_global_location_list_nothrow (1);
7346   return b;
7347 }
7348
7349 /* Remove JIT code registration and unregistration breakpoint(s).  */
7350
7351 void
7352 remove_jit_event_breakpoints (void)
7353 {
7354   struct breakpoint *b, *b_tmp;
7355
7356   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7357     if (b->type == bp_jit_event
7358         && b->loc->pspace == current_program_space)
7359       delete_breakpoint (b);
7360 }
7361
7362 void
7363 remove_solib_event_breakpoints (void)
7364 {
7365   struct breakpoint *b, *b_tmp;
7366
7367   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7368     if (b->type == bp_shlib_event
7369         && b->loc->pspace == current_program_space)
7370       delete_breakpoint (b);
7371 }
7372
7373 struct breakpoint *
7374 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7375 {
7376   struct breakpoint *b;
7377
7378   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7379                                   &internal_breakpoint_ops);
7380   update_global_location_list_nothrow (1);
7381   return b;
7382 }
7383
7384 /* Disable any breakpoints that are on code in shared libraries.  Only
7385    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7386
7387 void
7388 disable_breakpoints_in_shlibs (void)
7389 {
7390   struct bp_location *loc, **locp_tmp;
7391
7392   ALL_BP_LOCATIONS (loc, locp_tmp)
7393   {
7394     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7395     struct breakpoint *b = loc->owner;
7396
7397     /* We apply the check to all breakpoints, including disabled for
7398        those with loc->duplicate set.  This is so that when breakpoint
7399        becomes enabled, or the duplicate is removed, gdb will try to
7400        insert all breakpoints.  If we don't set shlib_disabled here,
7401        we'll try to insert those breakpoints and fail.  */
7402     if (((b->type == bp_breakpoint)
7403          || (b->type == bp_jit_event)
7404          || (b->type == bp_hardware_breakpoint)
7405          || (is_tracepoint (b)))
7406         && loc->pspace == current_program_space
7407         && !loc->shlib_disabled
7408         && solib_name_from_address (loc->pspace, loc->address)
7409         )
7410       {
7411         loc->shlib_disabled = 1;
7412       }
7413   }
7414 }
7415
7416 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7417    library.  Only apply to enabled breakpoints, disabled ones can just stay
7418    disabled.  */
7419
7420 static void
7421 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7422 {
7423   struct bp_location *loc, **locp_tmp;
7424   int disabled_shlib_breaks = 0;
7425
7426   /* SunOS a.out shared libraries are always mapped, so do not
7427      disable breakpoints; they will only be reported as unloaded
7428      through clear_solib when GDB discards its shared library
7429      list.  See clear_solib for more information.  */
7430   if (exec_bfd != NULL
7431       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7432     return;
7433
7434   ALL_BP_LOCATIONS (loc, locp_tmp)
7435   {
7436     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7437     struct breakpoint *b = loc->owner;
7438
7439     if (solib->pspace == loc->pspace
7440         && !loc->shlib_disabled
7441         && (((b->type == bp_breakpoint
7442               || b->type == bp_jit_event
7443               || b->type == bp_hardware_breakpoint)
7444              && (loc->loc_type == bp_loc_hardware_breakpoint
7445                  || loc->loc_type == bp_loc_software_breakpoint))
7446             || is_tracepoint (b))
7447         && solib_contains_address_p (solib, loc->address))
7448       {
7449         loc->shlib_disabled = 1;
7450         /* At this point, we cannot rely on remove_breakpoint
7451            succeeding so we must mark the breakpoint as not inserted
7452            to prevent future errors occurring in remove_breakpoints.  */
7453         loc->inserted = 0;
7454
7455         /* This may cause duplicate notifications for the same breakpoint.  */
7456         observer_notify_breakpoint_modified (b);
7457
7458         if (!disabled_shlib_breaks)
7459           {
7460             target_terminal_ours_for_output ();
7461             warning (_("Temporarily disabling breakpoints "
7462                        "for unloaded shared library \"%s\""),
7463                      solib->so_name);
7464           }
7465         disabled_shlib_breaks = 1;
7466       }
7467   }
7468 }
7469
7470 /* FORK & VFORK catchpoints.  */
7471
7472 /* An instance of this type is used to represent a fork or vfork
7473    catchpoint.  It includes a "struct breakpoint" as a kind of base
7474    class; users downcast to "struct breakpoint *" when needed.  A
7475    breakpoint is really of this type iff its ops pointer points to
7476    CATCH_FORK_BREAKPOINT_OPS.  */
7477
7478 struct fork_catchpoint
7479 {
7480   /* The base class.  */
7481   struct breakpoint base;
7482
7483   /* Process id of a child process whose forking triggered this
7484      catchpoint.  This field is only valid immediately after this
7485      catchpoint has triggered.  */
7486   ptid_t forked_inferior_pid;
7487 };
7488
7489 /* Implement the "insert" breakpoint_ops method for fork
7490    catchpoints.  */
7491
7492 static int
7493 insert_catch_fork (struct bp_location *bl)
7494 {
7495   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7496 }
7497
7498 /* Implement the "remove" breakpoint_ops method for fork
7499    catchpoints.  */
7500
7501 static int
7502 remove_catch_fork (struct bp_location *bl)
7503 {
7504   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7505 }
7506
7507 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7508    catchpoints.  */
7509
7510 static int
7511 breakpoint_hit_catch_fork (const struct bp_location *bl,
7512                            struct address_space *aspace, CORE_ADDR bp_addr,
7513                            const struct target_waitstatus *ws)
7514 {
7515   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7516
7517   if (ws->kind != TARGET_WAITKIND_FORKED)
7518     return 0;
7519
7520   c->forked_inferior_pid = ws->value.related_pid;
7521   return 1;
7522 }
7523
7524 /* Implement the "print_it" breakpoint_ops method for fork
7525    catchpoints.  */
7526
7527 static enum print_stop_action
7528 print_it_catch_fork (bpstat bs)
7529 {
7530   struct ui_out *uiout = current_uiout;
7531   struct breakpoint *b = bs->breakpoint_at;
7532   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7533
7534   annotate_catchpoint (b->number);
7535   if (b->disposition == disp_del)
7536     ui_out_text (uiout, "\nTemporary catchpoint ");
7537   else
7538     ui_out_text (uiout, "\nCatchpoint ");
7539   if (ui_out_is_mi_like_p (uiout))
7540     {
7541       ui_out_field_string (uiout, "reason",
7542                            async_reason_lookup (EXEC_ASYNC_FORK));
7543       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7544     }
7545   ui_out_field_int (uiout, "bkptno", b->number);
7546   ui_out_text (uiout, " (forked process ");
7547   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7548   ui_out_text (uiout, "), ");
7549   return PRINT_SRC_AND_LOC;
7550 }
7551
7552 /* Implement the "print_one" breakpoint_ops method for fork
7553    catchpoints.  */
7554
7555 static void
7556 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7557 {
7558   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7559   struct value_print_options opts;
7560   struct ui_out *uiout = current_uiout;
7561
7562   get_user_print_options (&opts);
7563
7564   /* Field 4, the address, is omitted (which makes the columns not
7565      line up too nicely with the headers, but the effect is relatively
7566      readable).  */
7567   if (opts.addressprint)
7568     ui_out_field_skip (uiout, "addr");
7569   annotate_field (5);
7570   ui_out_text (uiout, "fork");
7571   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7572     {
7573       ui_out_text (uiout, ", process ");
7574       ui_out_field_int (uiout, "what",
7575                         ptid_get_pid (c->forked_inferior_pid));
7576       ui_out_spaces (uiout, 1);
7577     }
7578
7579   if (ui_out_is_mi_like_p (uiout))
7580     ui_out_field_string (uiout, "catch-type", "fork");
7581 }
7582
7583 /* Implement the "print_mention" breakpoint_ops method for fork
7584    catchpoints.  */
7585
7586 static void
7587 print_mention_catch_fork (struct breakpoint *b)
7588 {
7589   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7590 }
7591
7592 /* Implement the "print_recreate" breakpoint_ops method for fork
7593    catchpoints.  */
7594
7595 static void
7596 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7597 {
7598   fprintf_unfiltered (fp, "catch fork");
7599   print_recreate_thread (b, fp);
7600 }
7601
7602 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7603
7604 static struct breakpoint_ops catch_fork_breakpoint_ops;
7605
7606 /* Implement the "insert" breakpoint_ops method for vfork
7607    catchpoints.  */
7608
7609 static int
7610 insert_catch_vfork (struct bp_location *bl)
7611 {
7612   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7613 }
7614
7615 /* Implement the "remove" breakpoint_ops method for vfork
7616    catchpoints.  */
7617
7618 static int
7619 remove_catch_vfork (struct bp_location *bl)
7620 {
7621   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7622 }
7623
7624 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7625    catchpoints.  */
7626
7627 static int
7628 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7629                             struct address_space *aspace, CORE_ADDR bp_addr,
7630                             const struct target_waitstatus *ws)
7631 {
7632   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7633
7634   if (ws->kind != TARGET_WAITKIND_VFORKED)
7635     return 0;
7636
7637   c->forked_inferior_pid = ws->value.related_pid;
7638   return 1;
7639 }
7640
7641 /* Implement the "print_it" breakpoint_ops method for vfork
7642    catchpoints.  */
7643
7644 static enum print_stop_action
7645 print_it_catch_vfork (bpstat bs)
7646 {
7647   struct ui_out *uiout = current_uiout;
7648   struct breakpoint *b = bs->breakpoint_at;
7649   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7650
7651   annotate_catchpoint (b->number);
7652   if (b->disposition == disp_del)
7653     ui_out_text (uiout, "\nTemporary catchpoint ");
7654   else
7655     ui_out_text (uiout, "\nCatchpoint ");
7656   if (ui_out_is_mi_like_p (uiout))
7657     {
7658       ui_out_field_string (uiout, "reason",
7659                            async_reason_lookup (EXEC_ASYNC_VFORK));
7660       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7661     }
7662   ui_out_field_int (uiout, "bkptno", b->number);
7663   ui_out_text (uiout, " (vforked process ");
7664   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7665   ui_out_text (uiout, "), ");
7666   return PRINT_SRC_AND_LOC;
7667 }
7668
7669 /* Implement the "print_one" breakpoint_ops method for vfork
7670    catchpoints.  */
7671
7672 static void
7673 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7674 {
7675   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7676   struct value_print_options opts;
7677   struct ui_out *uiout = current_uiout;
7678
7679   get_user_print_options (&opts);
7680   /* Field 4, the address, is omitted (which makes the columns not
7681      line up too nicely with the headers, but the effect is relatively
7682      readable).  */
7683   if (opts.addressprint)
7684     ui_out_field_skip (uiout, "addr");
7685   annotate_field (5);
7686   ui_out_text (uiout, "vfork");
7687   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7688     {
7689       ui_out_text (uiout, ", process ");
7690       ui_out_field_int (uiout, "what",
7691                         ptid_get_pid (c->forked_inferior_pid));
7692       ui_out_spaces (uiout, 1);
7693     }
7694
7695   if (ui_out_is_mi_like_p (uiout))
7696     ui_out_field_string (uiout, "catch-type", "vfork");
7697 }
7698
7699 /* Implement the "print_mention" breakpoint_ops method for vfork
7700    catchpoints.  */
7701
7702 static void
7703 print_mention_catch_vfork (struct breakpoint *b)
7704 {
7705   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7706 }
7707
7708 /* Implement the "print_recreate" breakpoint_ops method for vfork
7709    catchpoints.  */
7710
7711 static void
7712 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7713 {
7714   fprintf_unfiltered (fp, "catch vfork");
7715   print_recreate_thread (b, fp);
7716 }
7717
7718 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7719
7720 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7721
7722 /* An instance of this type is used to represent an solib catchpoint.
7723    It includes a "struct breakpoint" as a kind of base class; users
7724    downcast to "struct breakpoint *" when needed.  A breakpoint is
7725    really of this type iff its ops pointer points to
7726    CATCH_SOLIB_BREAKPOINT_OPS.  */
7727
7728 struct solib_catchpoint
7729 {
7730   /* The base class.  */
7731   struct breakpoint base;
7732
7733   /* True for "catch load", false for "catch unload".  */
7734   unsigned char is_load;
7735
7736   /* Regular expression to match, if any.  COMPILED is only valid when
7737      REGEX is non-NULL.  */
7738   char *regex;
7739   regex_t compiled;
7740 };
7741
7742 static void
7743 dtor_catch_solib (struct breakpoint *b)
7744 {
7745   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7746
7747   if (self->regex)
7748     regfree (&self->compiled);
7749   xfree (self->regex);
7750
7751   base_breakpoint_ops.dtor (b);
7752 }
7753
7754 static int
7755 insert_catch_solib (struct bp_location *ignore)
7756 {
7757   return 0;
7758 }
7759
7760 static int
7761 remove_catch_solib (struct bp_location *ignore)
7762 {
7763   return 0;
7764 }
7765
7766 static int
7767 breakpoint_hit_catch_solib (const struct bp_location *bl,
7768                             struct address_space *aspace,
7769                             CORE_ADDR bp_addr,
7770                             const struct target_waitstatus *ws)
7771 {
7772   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7773   struct breakpoint *other;
7774
7775   if (ws->kind == TARGET_WAITKIND_LOADED)
7776     return 1;
7777
7778   ALL_BREAKPOINTS (other)
7779   {
7780     struct bp_location *other_bl;
7781
7782     if (other == bl->owner)
7783       continue;
7784
7785     if (other->type != bp_shlib_event)
7786       continue;
7787
7788     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7789       continue;
7790
7791     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7792       {
7793         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7794           return 1;
7795       }
7796   }
7797
7798   return 0;
7799 }
7800
7801 static void
7802 check_status_catch_solib (struct bpstats *bs)
7803 {
7804   struct solib_catchpoint *self
7805     = (struct solib_catchpoint *) bs->breakpoint_at;
7806   int ix;
7807
7808   if (self->is_load)
7809     {
7810       struct so_list *iter;
7811
7812       for (ix = 0;
7813            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7814                         ix, iter);
7815            ++ix)
7816         {
7817           if (!self->regex
7818               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7819             return;
7820         }
7821     }
7822   else
7823     {
7824       char *iter;
7825
7826       for (ix = 0;
7827            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7828                         ix, iter);
7829            ++ix)
7830         {
7831           if (!self->regex
7832               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7833             return;
7834         }
7835     }
7836
7837   bs->stop = 0;
7838   bs->print_it = print_it_noop;
7839 }
7840
7841 static enum print_stop_action
7842 print_it_catch_solib (bpstat bs)
7843 {
7844   struct breakpoint *b = bs->breakpoint_at;
7845   struct ui_out *uiout = current_uiout;
7846
7847   annotate_catchpoint (b->number);
7848   if (b->disposition == disp_del)
7849     ui_out_text (uiout, "\nTemporary catchpoint ");
7850   else
7851     ui_out_text (uiout, "\nCatchpoint ");
7852   ui_out_field_int (uiout, "bkptno", b->number);
7853   ui_out_text (uiout, "\n");
7854   if (ui_out_is_mi_like_p (uiout))
7855     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7856   print_solib_event (1);
7857   return PRINT_SRC_AND_LOC;
7858 }
7859
7860 static void
7861 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7862 {
7863   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7864   struct value_print_options opts;
7865   struct ui_out *uiout = current_uiout;
7866   char *msg;
7867
7868   get_user_print_options (&opts);
7869   /* Field 4, the address, is omitted (which makes the columns not
7870      line up too nicely with the headers, but the effect is relatively
7871      readable).  */
7872   if (opts.addressprint)
7873     {
7874       annotate_field (4);
7875       ui_out_field_skip (uiout, "addr");
7876     }
7877
7878   annotate_field (5);
7879   if (self->is_load)
7880     {
7881       if (self->regex)
7882         msg = xstrprintf (_("load of library matching %s"), self->regex);
7883       else
7884         msg = xstrdup (_("load of library"));
7885     }
7886   else
7887     {
7888       if (self->regex)
7889         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7890       else
7891         msg = xstrdup (_("unload of library"));
7892     }
7893   ui_out_field_string (uiout, "what", msg);
7894   xfree (msg);
7895
7896   if (ui_out_is_mi_like_p (uiout))
7897     ui_out_field_string (uiout, "catch-type",
7898                          self->is_load ? "load" : "unload");
7899 }
7900
7901 static void
7902 print_mention_catch_solib (struct breakpoint *b)
7903 {
7904   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7905
7906   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7907                    self->is_load ? "load" : "unload");
7908 }
7909
7910 static void
7911 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7912 {
7913   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7914
7915   fprintf_unfiltered (fp, "%s %s",
7916                       b->disposition == disp_del ? "tcatch" : "catch",
7917                       self->is_load ? "load" : "unload");
7918   if (self->regex)
7919     fprintf_unfiltered (fp, " %s", self->regex);
7920   fprintf_unfiltered (fp, "\n");
7921 }
7922
7923 static struct breakpoint_ops catch_solib_breakpoint_ops;
7924
7925 /* Shared helper function (MI and CLI) for creating and installing
7926    a shared object event catchpoint.  If IS_LOAD is non-zero then
7927    the events to be caught are load events, otherwise they are
7928    unload events.  If IS_TEMP is non-zero the catchpoint is a
7929    temporary one.  If ENABLED is non-zero the catchpoint is
7930    created in an enabled state.  */
7931
7932 void
7933 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
7934 {
7935   struct solib_catchpoint *c;
7936   struct gdbarch *gdbarch = get_current_arch ();
7937   struct cleanup *cleanup;
7938
7939   if (!arg)
7940     arg = "";
7941   arg = skip_spaces (arg);
7942
7943   c = XCNEW (struct solib_catchpoint);
7944   cleanup = make_cleanup (xfree, c);
7945
7946   if (*arg != '\0')
7947     {
7948       int errcode;
7949
7950       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7951       if (errcode != 0)
7952         {
7953           char *err = get_regcomp_error (errcode, &c->compiled);
7954
7955           make_cleanup (xfree, err);
7956           error (_("Invalid regexp (%s): %s"), err, arg);
7957         }
7958       c->regex = xstrdup (arg);
7959     }
7960
7961   c->is_load = is_load;
7962   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
7963                    &catch_solib_breakpoint_ops);
7964
7965   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
7966
7967   discard_cleanups (cleanup);
7968   install_breakpoint (0, &c->base, 1);
7969 }
7970
7971 /* A helper function that does all the work for "catch load" and
7972    "catch unload".  */
7973
7974 static void
7975 catch_load_or_unload (char *arg, int from_tty, int is_load,
7976                       struct cmd_list_element *command)
7977 {
7978   int tempflag;
7979   const int enabled = 1;
7980
7981   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7982
7983   add_solib_catchpoint (arg, is_load, tempflag, enabled);
7984 }
7985
7986 static void
7987 catch_load_command_1 (char *arg, int from_tty,
7988                       struct cmd_list_element *command)
7989 {
7990   catch_load_or_unload (arg, from_tty, 1, command);
7991 }
7992
7993 static void
7994 catch_unload_command_1 (char *arg, int from_tty,
7995                         struct cmd_list_element *command)
7996 {
7997   catch_load_or_unload (arg, from_tty, 0, command);
7998 }
7999
8000 /* An instance of this type is used to represent a syscall catchpoint.
8001    It includes a "struct breakpoint" as a kind of base class; users
8002    downcast to "struct breakpoint *" when needed.  A breakpoint is
8003    really of this type iff its ops pointer points to
8004    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8005
8006 struct syscall_catchpoint
8007 {
8008   /* The base class.  */
8009   struct breakpoint base;
8010
8011   /* Syscall numbers used for the 'catch syscall' feature.  If no
8012      syscall has been specified for filtering, its value is NULL.
8013      Otherwise, it holds a list of all syscalls to be caught.  The
8014      list elements are allocated with xmalloc.  */
8015   VEC(int) *syscalls_to_be_caught;
8016 };
8017
8018 /* Implement the "dtor" breakpoint_ops method for syscall
8019    catchpoints.  */
8020
8021 static void
8022 dtor_catch_syscall (struct breakpoint *b)
8023 {
8024   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8025
8026   VEC_free (int, c->syscalls_to_be_caught);
8027
8028   base_breakpoint_ops.dtor (b);
8029 }
8030
8031 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8032
8033 struct catch_syscall_inferior_data
8034 {
8035   /* We keep a count of the number of times the user has requested a
8036      particular syscall to be tracked, and pass this information to the
8037      target.  This lets capable targets implement filtering directly.  */
8038
8039   /* Number of times that "any" syscall is requested.  */
8040   int any_syscall_count;
8041
8042   /* Count of each system call.  */
8043   VEC(int) *syscalls_counts;
8044
8045   /* This counts all syscall catch requests, so we can readily determine
8046      if any catching is necessary.  */
8047   int total_syscalls_count;
8048 };
8049
8050 static struct catch_syscall_inferior_data*
8051 get_catch_syscall_inferior_data (struct inferior *inf)
8052 {
8053   struct catch_syscall_inferior_data *inf_data;
8054
8055   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8056   if (inf_data == NULL)
8057     {
8058       inf_data = XZALLOC (struct catch_syscall_inferior_data);
8059       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8060     }
8061
8062   return inf_data;
8063 }
8064
8065 static void
8066 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8067 {
8068   xfree (arg);
8069 }
8070
8071
8072 /* Implement the "insert" breakpoint_ops method for syscall
8073    catchpoints.  */
8074
8075 static int
8076 insert_catch_syscall (struct bp_location *bl)
8077 {
8078   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8079   struct inferior *inf = current_inferior ();
8080   struct catch_syscall_inferior_data *inf_data
8081     = get_catch_syscall_inferior_data (inf);
8082
8083   ++inf_data->total_syscalls_count;
8084   if (!c->syscalls_to_be_caught)
8085     ++inf_data->any_syscall_count;
8086   else
8087     {
8088       int i, iter;
8089
8090       for (i = 0;
8091            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8092            i++)
8093         {
8094           int elem;
8095
8096           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8097             {
8098               int old_size = VEC_length (int, inf_data->syscalls_counts);
8099               uintptr_t vec_addr_offset
8100                 = old_size * ((uintptr_t) sizeof (int));
8101               uintptr_t vec_addr;
8102               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8103               vec_addr = ((uintptr_t) VEC_address (int,
8104                                                   inf_data->syscalls_counts)
8105                           + vec_addr_offset);
8106               memset ((void *) vec_addr, 0,
8107                       (iter + 1 - old_size) * sizeof (int));
8108             }
8109           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8110           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8111         }
8112     }
8113
8114   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8115                                         inf_data->total_syscalls_count != 0,
8116                                         inf_data->any_syscall_count,
8117                                         VEC_length (int,
8118                                                     inf_data->syscalls_counts),
8119                                         VEC_address (int,
8120                                                      inf_data->syscalls_counts));
8121 }
8122
8123 /* Implement the "remove" breakpoint_ops method for syscall
8124    catchpoints.  */
8125
8126 static int
8127 remove_catch_syscall (struct bp_location *bl)
8128 {
8129   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8130   struct inferior *inf = current_inferior ();
8131   struct catch_syscall_inferior_data *inf_data
8132     = get_catch_syscall_inferior_data (inf);
8133
8134   --inf_data->total_syscalls_count;
8135   if (!c->syscalls_to_be_caught)
8136     --inf_data->any_syscall_count;
8137   else
8138     {
8139       int i, iter;
8140
8141       for (i = 0;
8142            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8143            i++)
8144         {
8145           int elem;
8146           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8147             /* Shouldn't happen.  */
8148             continue;
8149           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8150           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8151         }
8152     }
8153
8154   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8155                                         inf_data->total_syscalls_count != 0,
8156                                         inf_data->any_syscall_count,
8157                                         VEC_length (int,
8158                                                     inf_data->syscalls_counts),
8159                                         VEC_address (int,
8160                                                      inf_data->syscalls_counts));
8161 }
8162
8163 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8164    catchpoints.  */
8165
8166 static int
8167 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8168                               struct address_space *aspace, CORE_ADDR bp_addr,
8169                               const struct target_waitstatus *ws)
8170 {
8171   /* We must check if we are catching specific syscalls in this
8172      breakpoint.  If we are, then we must guarantee that the called
8173      syscall is the same syscall we are catching.  */
8174   int syscall_number = 0;
8175   const struct syscall_catchpoint *c
8176     = (const struct syscall_catchpoint *) bl->owner;
8177
8178   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8179       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8180     return 0;
8181
8182   syscall_number = ws->value.syscall_number;
8183
8184   /* Now, checking if the syscall is the same.  */
8185   if (c->syscalls_to_be_caught)
8186     {
8187       int i, iter;
8188
8189       for (i = 0;
8190            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8191            i++)
8192         if (syscall_number == iter)
8193           break;
8194       /* Not the same.  */
8195       if (!iter)
8196         return 0;
8197     }
8198
8199   return 1;
8200 }
8201
8202 /* Implement the "print_it" breakpoint_ops method for syscall
8203    catchpoints.  */
8204
8205 static enum print_stop_action
8206 print_it_catch_syscall (bpstat bs)
8207 {
8208   struct ui_out *uiout = current_uiout;
8209   struct breakpoint *b = bs->breakpoint_at;
8210   /* These are needed because we want to know in which state a
8211      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8212      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8213      must print "called syscall" or "returned from syscall".  */
8214   ptid_t ptid;
8215   struct target_waitstatus last;
8216   struct syscall s;
8217
8218   get_last_target_status (&ptid, &last);
8219
8220   get_syscall_by_number (last.value.syscall_number, &s);
8221
8222   annotate_catchpoint (b->number);
8223
8224   if (b->disposition == disp_del)
8225     ui_out_text (uiout, "\nTemporary catchpoint ");
8226   else
8227     ui_out_text (uiout, "\nCatchpoint ");
8228   if (ui_out_is_mi_like_p (uiout))
8229     {
8230       ui_out_field_string (uiout, "reason",
8231                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8232                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8233                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8234       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8235     }
8236   ui_out_field_int (uiout, "bkptno", b->number);
8237
8238   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8239     ui_out_text (uiout, " (call to syscall ");
8240   else
8241     ui_out_text (uiout, " (returned from syscall ");
8242
8243   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8244     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8245   if (s.name != NULL)
8246     ui_out_field_string (uiout, "syscall-name", s.name);
8247
8248   ui_out_text (uiout, "), ");
8249
8250   return PRINT_SRC_AND_LOC;
8251 }
8252
8253 /* Implement the "print_one" breakpoint_ops method for syscall
8254    catchpoints.  */
8255
8256 static void
8257 print_one_catch_syscall (struct breakpoint *b,
8258                          struct bp_location **last_loc)
8259 {
8260   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8261   struct value_print_options opts;
8262   struct ui_out *uiout = current_uiout;
8263
8264   get_user_print_options (&opts);
8265   /* Field 4, the address, is omitted (which makes the columns not
8266      line up too nicely with the headers, but the effect is relatively
8267      readable).  */
8268   if (opts.addressprint)
8269     ui_out_field_skip (uiout, "addr");
8270   annotate_field (5);
8271
8272   if (c->syscalls_to_be_caught
8273       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8274     ui_out_text (uiout, "syscalls \"");
8275   else
8276     ui_out_text (uiout, "syscall \"");
8277
8278   if (c->syscalls_to_be_caught)
8279     {
8280       int i, iter;
8281       char *text = xstrprintf ("%s", "");
8282
8283       for (i = 0;
8284            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8285            i++)
8286         {
8287           char *x = text;
8288           struct syscall s;
8289           get_syscall_by_number (iter, &s);
8290
8291           if (s.name != NULL)
8292             text = xstrprintf ("%s%s, ", text, s.name);
8293           else
8294             text = xstrprintf ("%s%d, ", text, iter);
8295
8296           /* We have to xfree the last 'text' (now stored at 'x')
8297              because xstrprintf dynamically allocates new space for it
8298              on every call.  */
8299           xfree (x);
8300         }
8301       /* Remove the last comma.  */
8302       text[strlen (text) - 2] = '\0';
8303       ui_out_field_string (uiout, "what", text);
8304     }
8305   else
8306     ui_out_field_string (uiout, "what", "<any syscall>");
8307   ui_out_text (uiout, "\" ");
8308
8309   if (ui_out_is_mi_like_p (uiout))
8310     ui_out_field_string (uiout, "catch-type", "syscall");
8311 }
8312
8313 /* Implement the "print_mention" breakpoint_ops method for syscall
8314    catchpoints.  */
8315
8316 static void
8317 print_mention_catch_syscall (struct breakpoint *b)
8318 {
8319   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8320
8321   if (c->syscalls_to_be_caught)
8322     {
8323       int i, iter;
8324
8325       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8326         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8327       else
8328         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8329
8330       for (i = 0;
8331            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8332            i++)
8333         {
8334           struct syscall s;
8335           get_syscall_by_number (iter, &s);
8336
8337           if (s.name)
8338             printf_filtered (" '%s' [%d]", s.name, s.number);
8339           else
8340             printf_filtered (" %d", s.number);
8341         }
8342       printf_filtered (")");
8343     }
8344   else
8345     printf_filtered (_("Catchpoint %d (any syscall)"),
8346                      b->number);
8347 }
8348
8349 /* Implement the "print_recreate" breakpoint_ops method for syscall
8350    catchpoints.  */
8351
8352 static void
8353 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8354 {
8355   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8356
8357   fprintf_unfiltered (fp, "catch syscall");
8358
8359   if (c->syscalls_to_be_caught)
8360     {
8361       int i, iter;
8362
8363       for (i = 0;
8364            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8365            i++)
8366         {
8367           struct syscall s;
8368
8369           get_syscall_by_number (iter, &s);
8370           if (s.name)
8371             fprintf_unfiltered (fp, " %s", s.name);
8372           else
8373             fprintf_unfiltered (fp, " %d", s.number);
8374         }
8375     }
8376   print_recreate_thread (b, fp);
8377 }
8378
8379 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8380
8381 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8382
8383 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8384
8385 static int
8386 syscall_catchpoint_p (struct breakpoint *b)
8387 {
8388   return (b->ops == &catch_syscall_breakpoint_ops);
8389 }
8390
8391 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8392    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8393    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8394    the breakpoint_ops structure associated to the catchpoint.  */
8395
8396 void
8397 init_catchpoint (struct breakpoint *b,
8398                  struct gdbarch *gdbarch, int tempflag,
8399                  char *cond_string,
8400                  const struct breakpoint_ops *ops)
8401 {
8402   struct symtab_and_line sal;
8403
8404   init_sal (&sal);
8405   sal.pspace = current_program_space;
8406
8407   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8408
8409   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8410   b->disposition = tempflag ? disp_del : disp_donttouch;
8411 }
8412
8413 void
8414 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8415 {
8416   add_to_breakpoint_chain (b);
8417   set_breakpoint_number (internal, b);
8418   if (is_tracepoint (b))
8419     set_tracepoint_count (breakpoint_count);
8420   if (!internal)
8421     mention (b);
8422   observer_notify_breakpoint_created (b);
8423
8424   if (update_gll)
8425     update_global_location_list (1);
8426 }
8427
8428 static void
8429 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8430                                     int tempflag, char *cond_string,
8431                                     const struct breakpoint_ops *ops)
8432 {
8433   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8434
8435   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8436
8437   c->forked_inferior_pid = null_ptid;
8438
8439   install_breakpoint (0, &c->base, 1);
8440 }
8441
8442 /* Exec catchpoints.  */
8443
8444 /* An instance of this type is used to represent an exec catchpoint.
8445    It includes a "struct breakpoint" as a kind of base class; users
8446    downcast to "struct breakpoint *" when needed.  A breakpoint is
8447    really of this type iff its ops pointer points to
8448    CATCH_EXEC_BREAKPOINT_OPS.  */
8449
8450 struct exec_catchpoint
8451 {
8452   /* The base class.  */
8453   struct breakpoint base;
8454
8455   /* Filename of a program whose exec triggered this catchpoint.
8456      This field is only valid immediately after this catchpoint has
8457      triggered.  */
8458   char *exec_pathname;
8459 };
8460
8461 /* Implement the "dtor" breakpoint_ops method for exec
8462    catchpoints.  */
8463
8464 static void
8465 dtor_catch_exec (struct breakpoint *b)
8466 {
8467   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8468
8469   xfree (c->exec_pathname);
8470
8471   base_breakpoint_ops.dtor (b);
8472 }
8473
8474 static int
8475 insert_catch_exec (struct bp_location *bl)
8476 {
8477   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8478 }
8479
8480 static int
8481 remove_catch_exec (struct bp_location *bl)
8482 {
8483   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8484 }
8485
8486 static int
8487 breakpoint_hit_catch_exec (const struct bp_location *bl,
8488                            struct address_space *aspace, CORE_ADDR bp_addr,
8489                            const struct target_waitstatus *ws)
8490 {
8491   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8492
8493   if (ws->kind != TARGET_WAITKIND_EXECD)
8494     return 0;
8495
8496   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8497   return 1;
8498 }
8499
8500 static enum print_stop_action
8501 print_it_catch_exec (bpstat bs)
8502 {
8503   struct ui_out *uiout = current_uiout;
8504   struct breakpoint *b = bs->breakpoint_at;
8505   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8506
8507   annotate_catchpoint (b->number);
8508   if (b->disposition == disp_del)
8509     ui_out_text (uiout, "\nTemporary catchpoint ");
8510   else
8511     ui_out_text (uiout, "\nCatchpoint ");
8512   if (ui_out_is_mi_like_p (uiout))
8513     {
8514       ui_out_field_string (uiout, "reason",
8515                            async_reason_lookup (EXEC_ASYNC_EXEC));
8516       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8517     }
8518   ui_out_field_int (uiout, "bkptno", b->number);
8519   ui_out_text (uiout, " (exec'd ");
8520   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8521   ui_out_text (uiout, "), ");
8522
8523   return PRINT_SRC_AND_LOC;
8524 }
8525
8526 static void
8527 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8528 {
8529   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8530   struct value_print_options opts;
8531   struct ui_out *uiout = current_uiout;
8532
8533   get_user_print_options (&opts);
8534
8535   /* Field 4, the address, is omitted (which makes the columns
8536      not line up too nicely with the headers, but the effect
8537      is relatively readable).  */
8538   if (opts.addressprint)
8539     ui_out_field_skip (uiout, "addr");
8540   annotate_field (5);
8541   ui_out_text (uiout, "exec");
8542   if (c->exec_pathname != NULL)
8543     {
8544       ui_out_text (uiout, ", program \"");
8545       ui_out_field_string (uiout, "what", c->exec_pathname);
8546       ui_out_text (uiout, "\" ");
8547     }
8548
8549   if (ui_out_is_mi_like_p (uiout))
8550     ui_out_field_string (uiout, "catch-type", "exec");
8551 }
8552
8553 static void
8554 print_mention_catch_exec (struct breakpoint *b)
8555 {
8556   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8557 }
8558
8559 /* Implement the "print_recreate" breakpoint_ops method for exec
8560    catchpoints.  */
8561
8562 static void
8563 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8564 {
8565   fprintf_unfiltered (fp, "catch exec");
8566   print_recreate_thread (b, fp);
8567 }
8568
8569 static struct breakpoint_ops catch_exec_breakpoint_ops;
8570
8571 static void
8572 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8573                                  const struct breakpoint_ops *ops)
8574 {
8575   struct syscall_catchpoint *c;
8576   struct gdbarch *gdbarch = get_current_arch ();
8577
8578   c = XNEW (struct syscall_catchpoint);
8579   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8580   c->syscalls_to_be_caught = filter;
8581
8582   install_breakpoint (0, &c->base, 1);
8583 }
8584
8585 static int
8586 hw_breakpoint_used_count (void)
8587 {
8588   int i = 0;
8589   struct breakpoint *b;
8590   struct bp_location *bl;
8591
8592   ALL_BREAKPOINTS (b)
8593   {
8594     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8595       for (bl = b->loc; bl; bl = bl->next)
8596         {
8597           /* Special types of hardware breakpoints may use more than
8598              one register.  */
8599           i += b->ops->resources_needed (bl);
8600         }
8601   }
8602
8603   return i;
8604 }
8605
8606 /* Returns the resources B would use if it were a hardware
8607    watchpoint.  */
8608
8609 static int
8610 hw_watchpoint_use_count (struct breakpoint *b)
8611 {
8612   int i = 0;
8613   struct bp_location *bl;
8614
8615   if (!breakpoint_enabled (b))
8616     return 0;
8617
8618   for (bl = b->loc; bl; bl = bl->next)
8619     {
8620       /* Special types of hardware watchpoints may use more than
8621          one register.  */
8622       i += b->ops->resources_needed (bl);
8623     }
8624
8625   return i;
8626 }
8627
8628 /* Returns the sum the used resources of all hardware watchpoints of
8629    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8630    the sum of the used resources of all hardware watchpoints of other
8631    types _not_ TYPE.  */
8632
8633 static int
8634 hw_watchpoint_used_count_others (struct breakpoint *except,
8635                                  enum bptype type, int *other_type_used)
8636 {
8637   int i = 0;
8638   struct breakpoint *b;
8639
8640   *other_type_used = 0;
8641   ALL_BREAKPOINTS (b)
8642     {
8643       if (b == except)
8644         continue;
8645       if (!breakpoint_enabled (b))
8646         continue;
8647
8648       if (b->type == type)
8649         i += hw_watchpoint_use_count (b);
8650       else if (is_hardware_watchpoint (b))
8651         *other_type_used = 1;
8652     }
8653
8654   return i;
8655 }
8656
8657 void
8658 disable_watchpoints_before_interactive_call_start (void)
8659 {
8660   struct breakpoint *b;
8661
8662   ALL_BREAKPOINTS (b)
8663   {
8664     if (is_watchpoint (b) && breakpoint_enabled (b))
8665       {
8666         b->enable_state = bp_call_disabled;
8667         update_global_location_list (0);
8668       }
8669   }
8670 }
8671
8672 void
8673 enable_watchpoints_after_interactive_call_stop (void)
8674 {
8675   struct breakpoint *b;
8676
8677   ALL_BREAKPOINTS (b)
8678   {
8679     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8680       {
8681         b->enable_state = bp_enabled;
8682         update_global_location_list (1);
8683       }
8684   }
8685 }
8686
8687 void
8688 disable_breakpoints_before_startup (void)
8689 {
8690   current_program_space->executing_startup = 1;
8691   update_global_location_list (0);
8692 }
8693
8694 void
8695 enable_breakpoints_after_startup (void)
8696 {
8697   current_program_space->executing_startup = 0;
8698   breakpoint_re_set ();
8699 }
8700
8701
8702 /* Set a breakpoint that will evaporate an end of command
8703    at address specified by SAL.
8704    Restrict it to frame FRAME if FRAME is nonzero.  */
8705
8706 struct breakpoint *
8707 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8708                           struct frame_id frame_id, enum bptype type)
8709 {
8710   struct breakpoint *b;
8711
8712   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8713      tail-called one.  */
8714   gdb_assert (!frame_id_artificial_p (frame_id));
8715
8716   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8717   b->enable_state = bp_enabled;
8718   b->disposition = disp_donttouch;
8719   b->frame_id = frame_id;
8720
8721   /* If we're debugging a multi-threaded program, then we want
8722      momentary breakpoints to be active in only a single thread of
8723      control.  */
8724   if (in_thread_list (inferior_ptid))
8725     b->thread = pid_to_thread_id (inferior_ptid);
8726
8727   update_global_location_list_nothrow (1);
8728
8729   return b;
8730 }
8731
8732 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8733    The new breakpoint will have type TYPE, and use OPS as it
8734    breakpoint_ops.  */
8735
8736 static struct breakpoint *
8737 momentary_breakpoint_from_master (struct breakpoint *orig,
8738                                   enum bptype type,
8739                                   const struct breakpoint_ops *ops)
8740 {
8741   struct breakpoint *copy;
8742
8743   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8744   copy->loc = allocate_bp_location (copy);
8745   set_breakpoint_location_function (copy->loc, 1);
8746
8747   copy->loc->gdbarch = orig->loc->gdbarch;
8748   copy->loc->requested_address = orig->loc->requested_address;
8749   copy->loc->address = orig->loc->address;
8750   copy->loc->section = orig->loc->section;
8751   copy->loc->pspace = orig->loc->pspace;
8752   copy->loc->probe = orig->loc->probe;
8753   copy->loc->line_number = orig->loc->line_number;
8754   copy->loc->symtab = orig->loc->symtab;
8755   copy->frame_id = orig->frame_id;
8756   copy->thread = orig->thread;
8757   copy->pspace = orig->pspace;
8758
8759   copy->enable_state = bp_enabled;
8760   copy->disposition = disp_donttouch;
8761   copy->number = internal_breakpoint_number--;
8762
8763   update_global_location_list_nothrow (0);
8764   return copy;
8765 }
8766
8767 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8768    ORIG is NULL.  */
8769
8770 struct breakpoint *
8771 clone_momentary_breakpoint (struct breakpoint *orig)
8772 {
8773   /* If there's nothing to clone, then return nothing.  */
8774   if (orig == NULL)
8775     return NULL;
8776
8777   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8778 }
8779
8780 struct breakpoint *
8781 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8782                                 enum bptype type)
8783 {
8784   struct symtab_and_line sal;
8785
8786   sal = find_pc_line (pc, 0);
8787   sal.pc = pc;
8788   sal.section = find_pc_overlay (pc);
8789   sal.explicit_pc = 1;
8790
8791   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8792 }
8793 \f
8794
8795 /* Tell the user we have just set a breakpoint B.  */
8796
8797 static void
8798 mention (struct breakpoint *b)
8799 {
8800   b->ops->print_mention (b);
8801   if (ui_out_is_mi_like_p (current_uiout))
8802     return;
8803   printf_filtered ("\n");
8804 }
8805 \f
8806
8807 static struct bp_location *
8808 add_location_to_breakpoint (struct breakpoint *b,
8809                             const struct symtab_and_line *sal)
8810 {
8811   struct bp_location *loc, **tmp;
8812   CORE_ADDR adjusted_address;
8813   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8814
8815   if (loc_gdbarch == NULL)
8816     loc_gdbarch = b->gdbarch;
8817
8818   /* Adjust the breakpoint's address prior to allocating a location.
8819      Once we call allocate_bp_location(), that mostly uninitialized
8820      location will be placed on the location chain.  Adjustment of the
8821      breakpoint may cause target_read_memory() to be called and we do
8822      not want its scan of the location chain to find a breakpoint and
8823      location that's only been partially initialized.  */
8824   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8825                                                 sal->pc, b->type);
8826
8827   /* Sort the locations by their ADDRESS.  */
8828   loc = allocate_bp_location (b);
8829   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8830        tmp = &((*tmp)->next))
8831     ;
8832   loc->next = *tmp;
8833   *tmp = loc;
8834
8835   loc->requested_address = sal->pc;
8836   loc->address = adjusted_address;
8837   loc->pspace = sal->pspace;
8838   loc->probe = sal->probe;
8839   gdb_assert (loc->pspace != NULL);
8840   loc->section = sal->section;
8841   loc->gdbarch = loc_gdbarch;
8842   loc->line_number = sal->line;
8843   loc->symtab = sal->symtab;
8844
8845   set_breakpoint_location_function (loc,
8846                                     sal->explicit_pc || sal->explicit_line);
8847   return loc;
8848 }
8849 \f
8850
8851 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8852    return 0 otherwise.  */
8853
8854 static int
8855 bp_loc_is_permanent (struct bp_location *loc)
8856 {
8857   int len;
8858   CORE_ADDR addr;
8859   const gdb_byte *bpoint;
8860   gdb_byte *target_mem;
8861   struct cleanup *cleanup;
8862   int retval = 0;
8863
8864   gdb_assert (loc != NULL);
8865
8866   addr = loc->address;
8867   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8868
8869   /* Software breakpoints unsupported?  */
8870   if (bpoint == NULL)
8871     return 0;
8872
8873   target_mem = alloca (len);
8874
8875   /* Enable the automatic memory restoration from breakpoints while
8876      we read the memory.  Otherwise we could say about our temporary
8877      breakpoints they are permanent.  */
8878   cleanup = save_current_space_and_thread ();
8879
8880   switch_to_program_space_and_thread (loc->pspace);
8881   make_show_memory_breakpoints_cleanup (0);
8882
8883   if (target_read_memory (loc->address, target_mem, len) == 0
8884       && memcmp (target_mem, bpoint, len) == 0)
8885     retval = 1;
8886
8887   do_cleanups (cleanup);
8888
8889   return retval;
8890 }
8891
8892 /* Build a command list for the dprintf corresponding to the current
8893    settings of the dprintf style options.  */
8894
8895 static void
8896 update_dprintf_command_list (struct breakpoint *b)
8897 {
8898   char *dprintf_args = b->extra_string;
8899   char *printf_line = NULL;
8900
8901   if (!dprintf_args)
8902     return;
8903
8904   dprintf_args = skip_spaces (dprintf_args);
8905
8906   /* Allow a comma, as it may have terminated a location, but don't
8907      insist on it.  */
8908   if (*dprintf_args == ',')
8909     ++dprintf_args;
8910   dprintf_args = skip_spaces (dprintf_args);
8911
8912   if (*dprintf_args != '"')
8913     error (_("Bad format string, missing '\"'."));
8914
8915   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8916     printf_line = xstrprintf ("printf %s", dprintf_args);
8917   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8918     {
8919       if (!dprintf_function)
8920         error (_("No function supplied for dprintf call"));
8921
8922       if (dprintf_channel && strlen (dprintf_channel) > 0)
8923         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8924                                   dprintf_function,
8925                                   dprintf_channel,
8926                                   dprintf_args);
8927       else
8928         printf_line = xstrprintf ("call (void) %s (%s)",
8929                                   dprintf_function,
8930                                   dprintf_args);
8931     }
8932   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8933     {
8934       if (target_can_run_breakpoint_commands ())
8935         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8936       else
8937         {
8938           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8939           printf_line = xstrprintf ("printf %s", dprintf_args);
8940         }
8941     }
8942   else
8943     internal_error (__FILE__, __LINE__,
8944                     _("Invalid dprintf style."));
8945
8946   gdb_assert (printf_line != NULL);
8947   /* Manufacture a printf/continue sequence.  */
8948   {
8949     struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8950
8951     if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8952       {
8953         cont_cmd_line = xmalloc (sizeof (struct command_line));
8954         cont_cmd_line->control_type = simple_control;
8955         cont_cmd_line->body_count = 0;
8956         cont_cmd_line->body_list = NULL;
8957         cont_cmd_line->next = NULL;
8958         cont_cmd_line->line = xstrdup ("continue");
8959       }
8960
8961     printf_cmd_line = xmalloc (sizeof (struct command_line));
8962     printf_cmd_line->control_type = simple_control;
8963     printf_cmd_line->body_count = 0;
8964     printf_cmd_line->body_list = NULL;
8965     printf_cmd_line->next = cont_cmd_line;
8966     printf_cmd_line->line = printf_line;
8967
8968     breakpoint_set_commands (b, printf_cmd_line);
8969   }
8970 }
8971
8972 /* Update all dprintf commands, making their command lists reflect
8973    current style settings.  */
8974
8975 static void
8976 update_dprintf_commands (char *args, int from_tty,
8977                          struct cmd_list_element *c)
8978 {
8979   struct breakpoint *b;
8980
8981   ALL_BREAKPOINTS (b)
8982     {
8983       if (b->type == bp_dprintf)
8984         update_dprintf_command_list (b);
8985     }
8986 }
8987
8988 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8989    as textual description of the location, and COND_STRING
8990    as condition expression.  */
8991
8992 static void
8993 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8994                      struct symtabs_and_lines sals, char *addr_string,
8995                      char *filter, char *cond_string,
8996                      char *extra_string,
8997                      enum bptype type, enum bpdisp disposition,
8998                      int thread, int task, int ignore_count,
8999                      const struct breakpoint_ops *ops, int from_tty,
9000                      int enabled, int internal, unsigned flags,
9001                      int display_canonical)
9002 {
9003   int i;
9004
9005   if (type == bp_hardware_breakpoint)
9006     {
9007       int target_resources_ok;
9008
9009       i = hw_breakpoint_used_count ();
9010       target_resources_ok =
9011         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9012                                             i + 1, 0);
9013       if (target_resources_ok == 0)
9014         error (_("No hardware breakpoint support in the target."));
9015       else if (target_resources_ok < 0)
9016         error (_("Hardware breakpoints used exceeds limit."));
9017     }
9018
9019   gdb_assert (sals.nelts > 0);
9020
9021   for (i = 0; i < sals.nelts; ++i)
9022     {
9023       struct symtab_and_line sal = sals.sals[i];
9024       struct bp_location *loc;
9025
9026       if (from_tty)
9027         {
9028           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9029           if (!loc_gdbarch)
9030             loc_gdbarch = gdbarch;
9031
9032           describe_other_breakpoints (loc_gdbarch,
9033                                       sal.pspace, sal.pc, sal.section, thread);
9034         }
9035
9036       if (i == 0)
9037         {
9038           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9039           b->thread = thread;
9040           b->task = task;
9041
9042           b->cond_string = cond_string;
9043           b->extra_string = extra_string;
9044           b->ignore_count = ignore_count;
9045           b->enable_state = enabled ? bp_enabled : bp_disabled;
9046           b->disposition = disposition;
9047
9048           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9049             b->loc->inserted = 1;
9050
9051           if (type == bp_static_tracepoint)
9052             {
9053               struct tracepoint *t = (struct tracepoint *) b;
9054               struct static_tracepoint_marker marker;
9055
9056               if (strace_marker_p (b))
9057                 {
9058                   /* We already know the marker exists, otherwise, we
9059                      wouldn't see a sal for it.  */
9060                   char *p = &addr_string[3];
9061                   char *endp;
9062                   char *marker_str;
9063
9064                   p = skip_spaces (p);
9065
9066                   endp = skip_to_space (p);
9067
9068                   marker_str = savestring (p, endp - p);
9069                   t->static_trace_marker_id = marker_str;
9070
9071                   printf_filtered (_("Probed static tracepoint "
9072                                      "marker \"%s\"\n"),
9073                                    t->static_trace_marker_id);
9074                 }
9075               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9076                 {
9077                   t->static_trace_marker_id = xstrdup (marker.str_id);
9078                   release_static_tracepoint_marker (&marker);
9079
9080                   printf_filtered (_("Probed static tracepoint "
9081                                      "marker \"%s\"\n"),
9082                                    t->static_trace_marker_id);
9083                 }
9084               else
9085                 warning (_("Couldn't determine the static "
9086                            "tracepoint marker to probe"));
9087             }
9088
9089           loc = b->loc;
9090         }
9091       else
9092         {
9093           loc = add_location_to_breakpoint (b, &sal);
9094           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9095             loc->inserted = 1;
9096         }
9097
9098       if (bp_loc_is_permanent (loc))
9099         make_breakpoint_permanent (b);
9100
9101       if (b->cond_string)
9102         {
9103           const char *arg = b->cond_string;
9104
9105           loc->cond = parse_exp_1 (&arg, loc->address,
9106                                    block_for_pc (loc->address), 0);
9107           if (*arg)
9108               error (_("Garbage '%s' follows condition"), arg);
9109         }
9110
9111       /* Dynamic printf requires and uses additional arguments on the
9112          command line, otherwise it's an error.  */
9113       if (type == bp_dprintf)
9114         {
9115           if (b->extra_string)
9116             update_dprintf_command_list (b);
9117           else
9118             error (_("Format string required"));
9119         }
9120       else if (b->extra_string)
9121         error (_("Garbage '%s' at end of command"), b->extra_string);
9122     }
9123
9124   b->display_canonical = display_canonical;
9125   if (addr_string)
9126     b->addr_string = addr_string;
9127   else
9128     /* addr_string has to be used or breakpoint_re_set will delete
9129        me.  */
9130     b->addr_string
9131       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9132   b->filter = filter;
9133 }
9134
9135 static void
9136 create_breakpoint_sal (struct gdbarch *gdbarch,
9137                        struct symtabs_and_lines sals, char *addr_string,
9138                        char *filter, char *cond_string,
9139                        char *extra_string,
9140                        enum bptype type, enum bpdisp disposition,
9141                        int thread, int task, int ignore_count,
9142                        const struct breakpoint_ops *ops, int from_tty,
9143                        int enabled, int internal, unsigned flags,
9144                        int display_canonical)
9145 {
9146   struct breakpoint *b;
9147   struct cleanup *old_chain;
9148
9149   if (is_tracepoint_type (type))
9150     {
9151       struct tracepoint *t;
9152
9153       t = XCNEW (struct tracepoint);
9154       b = &t->base;
9155     }
9156   else
9157     b = XNEW (struct breakpoint);
9158
9159   old_chain = make_cleanup (xfree, b);
9160
9161   init_breakpoint_sal (b, gdbarch,
9162                        sals, addr_string,
9163                        filter, cond_string, extra_string,
9164                        type, disposition,
9165                        thread, task, ignore_count,
9166                        ops, from_tty,
9167                        enabled, internal, flags,
9168                        display_canonical);
9169   discard_cleanups (old_chain);
9170
9171   install_breakpoint (internal, b, 0);
9172 }
9173
9174 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9175    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9176    value.  COND_STRING, if not NULL, specified the condition to be
9177    used for all breakpoints.  Essentially the only case where
9178    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9179    function.  In that case, it's still not possible to specify
9180    separate conditions for different overloaded functions, so
9181    we take just a single condition string.
9182    
9183    NOTE: If the function succeeds, the caller is expected to cleanup
9184    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9185    array contents).  If the function fails (error() is called), the
9186    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9187    COND and SALS arrays and each of those arrays contents.  */
9188
9189 static void
9190 create_breakpoints_sal (struct gdbarch *gdbarch,
9191                         struct linespec_result *canonical,
9192                         char *cond_string, char *extra_string,
9193                         enum bptype type, enum bpdisp disposition,
9194                         int thread, int task, int ignore_count,
9195                         const struct breakpoint_ops *ops, int from_tty,
9196                         int enabled, int internal, unsigned flags)
9197 {
9198   int i;
9199   struct linespec_sals *lsal;
9200
9201   if (canonical->pre_expanded)
9202     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9203
9204   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9205     {
9206       /* Note that 'addr_string' can be NULL in the case of a plain
9207          'break', without arguments.  */
9208       char *addr_string = (canonical->addr_string
9209                            ? xstrdup (canonical->addr_string)
9210                            : NULL);
9211       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9212       struct cleanup *inner = make_cleanup (xfree, addr_string);
9213
9214       make_cleanup (xfree, filter_string);
9215       create_breakpoint_sal (gdbarch, lsal->sals,
9216                              addr_string,
9217                              filter_string,
9218                              cond_string, extra_string,
9219                              type, disposition,
9220                              thread, task, ignore_count, ops,
9221                              from_tty, enabled, internal, flags,
9222                              canonical->special_display);
9223       discard_cleanups (inner);
9224     }
9225 }
9226
9227 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9228    followed by conditionals.  On return, SALS contains an array of SAL
9229    addresses found.  ADDR_STRING contains a vector of (canonical)
9230    address strings.  ADDRESS points to the end of the SAL.
9231
9232    The array and the line spec strings are allocated on the heap, it is
9233    the caller's responsibility to free them.  */
9234
9235 static void
9236 parse_breakpoint_sals (char **address,
9237                        struct linespec_result *canonical)
9238 {
9239   /* If no arg given, or if first arg is 'if ', use the default
9240      breakpoint.  */
9241   if ((*address) == NULL
9242       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9243     {
9244       /* The last displayed codepoint, if it's valid, is our default breakpoint
9245          address.  */
9246       if (last_displayed_sal_is_valid ())
9247         {
9248           struct linespec_sals lsal;
9249           struct symtab_and_line sal;
9250           CORE_ADDR pc;
9251
9252           init_sal (&sal);              /* Initialize to zeroes.  */
9253           lsal.sals.sals = (struct symtab_and_line *)
9254             xmalloc (sizeof (struct symtab_and_line));
9255
9256           /* Set sal's pspace, pc, symtab, and line to the values
9257              corresponding to the last call to print_frame_info.
9258              Be sure to reinitialize LINE with NOTCURRENT == 0
9259              as the breakpoint line number is inappropriate otherwise.
9260              find_pc_line would adjust PC, re-set it back.  */
9261           get_last_displayed_sal (&sal);
9262           pc = sal.pc;
9263           sal = find_pc_line (pc, 0);
9264
9265           /* "break" without arguments is equivalent to "break *PC"
9266              where PC is the last displayed codepoint's address.  So
9267              make sure to set sal.explicit_pc to prevent GDB from
9268              trying to expand the list of sals to include all other
9269              instances with the same symtab and line.  */
9270           sal.pc = pc;
9271           sal.explicit_pc = 1;
9272
9273           lsal.sals.sals[0] = sal;
9274           lsal.sals.nelts = 1;
9275           lsal.canonical = NULL;
9276
9277           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9278         }
9279       else
9280         error (_("No default breakpoint address now."));
9281     }
9282   else
9283     {
9284       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9285
9286       /* Force almost all breakpoints to be in terms of the
9287          current_source_symtab (which is decode_line_1's default).
9288          This should produce the results we want almost all of the
9289          time while leaving default_breakpoint_* alone.
9290
9291          ObjC: However, don't match an Objective-C method name which
9292          may have a '+' or '-' succeeded by a '['.  */
9293       if (last_displayed_sal_is_valid ()
9294           && (!cursal.symtab
9295               || ((strchr ("+-", (*address)[0]) != NULL)
9296                   && ((*address)[1] != '['))))
9297         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9298                           get_last_displayed_symtab (),
9299                           get_last_displayed_line (),
9300                           canonical, NULL, NULL);
9301       else
9302         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9303                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9304     }
9305 }
9306
9307
9308 /* Convert each SAL into a real PC.  Verify that the PC can be
9309    inserted as a breakpoint.  If it can't throw an error.  */
9310
9311 static void
9312 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9313 {    
9314   int i;
9315
9316   for (i = 0; i < sals->nelts; i++)
9317     resolve_sal_pc (&sals->sals[i]);
9318 }
9319
9320 /* Fast tracepoints may have restrictions on valid locations.  For
9321    instance, a fast tracepoint using a jump instead of a trap will
9322    likely have to overwrite more bytes than a trap would, and so can
9323    only be placed where the instruction is longer than the jump, or a
9324    multi-instruction sequence does not have a jump into the middle of
9325    it, etc.  */
9326
9327 static void
9328 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9329                             struct symtabs_and_lines *sals)
9330 {
9331   int i, rslt;
9332   struct symtab_and_line *sal;
9333   char *msg;
9334   struct cleanup *old_chain;
9335
9336   for (i = 0; i < sals->nelts; i++)
9337     {
9338       struct gdbarch *sarch;
9339
9340       sal = &sals->sals[i];
9341
9342       sarch = get_sal_arch (*sal);
9343       /* We fall back to GDBARCH if there is no architecture
9344          associated with SAL.  */
9345       if (sarch == NULL)
9346         sarch = gdbarch;
9347       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9348                                                NULL, &msg);
9349       old_chain = make_cleanup (xfree, msg);
9350
9351       if (!rslt)
9352         error (_("May not have a fast tracepoint at 0x%s%s"),
9353                paddress (sarch, sal->pc), (msg ? msg : ""));
9354
9355       do_cleanups (old_chain);
9356     }
9357 }
9358
9359 /* Issue an invalid thread ID error.  */
9360
9361 static void ATTRIBUTE_NORETURN
9362 invalid_thread_id_error (int id)
9363 {
9364   error (_("Unknown thread %d."), id);
9365 }
9366
9367 /* Given TOK, a string specification of condition and thread, as
9368    accepted by the 'break' command, extract the condition
9369    string and thread number and set *COND_STRING and *THREAD.
9370    PC identifies the context at which the condition should be parsed.
9371    If no condition is found, *COND_STRING is set to NULL.
9372    If no thread is found, *THREAD is set to -1.  */
9373
9374 static void
9375 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9376                            char **cond_string, int *thread, int *task,
9377                            char **rest)
9378 {
9379   *cond_string = NULL;
9380   *thread = -1;
9381   *task = 0;
9382   *rest = NULL;
9383
9384   while (tok && *tok)
9385     {
9386       const char *end_tok;
9387       int toklen;
9388       const char *cond_start = NULL;
9389       const char *cond_end = NULL;
9390
9391       tok = skip_spaces_const (tok);
9392
9393       if ((*tok == '"' || *tok == ',') && rest)
9394         {
9395           *rest = savestring (tok, strlen (tok));
9396           return;
9397         }
9398
9399       end_tok = skip_to_space_const (tok);
9400
9401       toklen = end_tok - tok;
9402
9403       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9404         {
9405           struct expression *expr;
9406
9407           tok = cond_start = end_tok + 1;
9408           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9409           xfree (expr);
9410           cond_end = tok;
9411           *cond_string = savestring (cond_start, cond_end - cond_start);
9412         }
9413       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9414         {
9415           char *tmptok;
9416
9417           tok = end_tok + 1;
9418           *thread = strtol (tok, &tmptok, 0);
9419           if (tok == tmptok)
9420             error (_("Junk after thread keyword."));
9421           if (!valid_thread_id (*thread))
9422             invalid_thread_id_error (*thread);
9423           tok = tmptok;
9424         }
9425       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9426         {
9427           char *tmptok;
9428
9429           tok = end_tok + 1;
9430           *task = strtol (tok, &tmptok, 0);
9431           if (tok == tmptok)
9432             error (_("Junk after task keyword."));
9433           if (!valid_task_id (*task))
9434             error (_("Unknown task %d."), *task);
9435           tok = tmptok;
9436         }
9437       else if (rest)
9438         {
9439           *rest = savestring (tok, strlen (tok));
9440           return;
9441         }
9442       else
9443         error (_("Junk at end of arguments."));
9444     }
9445 }
9446
9447 /* Decode a static tracepoint marker spec.  */
9448
9449 static struct symtabs_and_lines
9450 decode_static_tracepoint_spec (char **arg_p)
9451 {
9452   VEC(static_tracepoint_marker_p) *markers = NULL;
9453   struct symtabs_and_lines sals;
9454   struct cleanup *old_chain;
9455   char *p = &(*arg_p)[3];
9456   char *endp;
9457   char *marker_str;
9458   int i;
9459
9460   p = skip_spaces (p);
9461
9462   endp = skip_to_space (p);
9463
9464   marker_str = savestring (p, endp - p);
9465   old_chain = make_cleanup (xfree, marker_str);
9466
9467   markers = target_static_tracepoint_markers_by_strid (marker_str);
9468   if (VEC_empty(static_tracepoint_marker_p, markers))
9469     error (_("No known static tracepoint marker named %s"), marker_str);
9470
9471   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9472   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9473
9474   for (i = 0; i < sals.nelts; i++)
9475     {
9476       struct static_tracepoint_marker *marker;
9477
9478       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9479
9480       init_sal (&sals.sals[i]);
9481
9482       sals.sals[i] = find_pc_line (marker->address, 0);
9483       sals.sals[i].pc = marker->address;
9484
9485       release_static_tracepoint_marker (marker);
9486     }
9487
9488   do_cleanups (old_chain);
9489
9490   *arg_p = endp;
9491   return sals;
9492 }
9493
9494 /* Set a breakpoint.  This function is shared between CLI and MI
9495    functions for setting a breakpoint.  This function has two major
9496    modes of operations, selected by the PARSE_ARG parameter.  If
9497    non-zero, the function will parse ARG, extracting location,
9498    condition, thread and extra string.  Otherwise, ARG is just the
9499    breakpoint's location, with condition, thread, and extra string
9500    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9501    If INTERNAL is non-zero, the breakpoint number will be allocated
9502    from the internal breakpoint count.  Returns true if any breakpoint
9503    was created; false otherwise.  */
9504
9505 int
9506 create_breakpoint (struct gdbarch *gdbarch,
9507                    char *arg, char *cond_string,
9508                    int thread, char *extra_string,
9509                    int parse_arg,
9510                    int tempflag, enum bptype type_wanted,
9511                    int ignore_count,
9512                    enum auto_boolean pending_break_support,
9513                    const struct breakpoint_ops *ops,
9514                    int from_tty, int enabled, int internal,
9515                    unsigned flags)
9516 {
9517   volatile struct gdb_exception e;
9518   char *copy_arg = NULL;
9519   char *addr_start = arg;
9520   struct linespec_result canonical;
9521   struct cleanup *old_chain;
9522   struct cleanup *bkpt_chain = NULL;
9523   int pending = 0;
9524   int task = 0;
9525   int prev_bkpt_count = breakpoint_count;
9526
9527   gdb_assert (ops != NULL);
9528
9529   init_linespec_result (&canonical);
9530
9531   TRY_CATCH (e, RETURN_MASK_ALL)
9532     {
9533       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9534                                      addr_start, &copy_arg);
9535     }
9536
9537   /* If caller is interested in rc value from parse, set value.  */
9538   switch (e.reason)
9539     {
9540     case GDB_NO_ERROR:
9541       if (VEC_empty (linespec_sals, canonical.sals))
9542         return 0;
9543       break;
9544     case RETURN_ERROR:
9545       switch (e.error)
9546         {
9547         case NOT_FOUND_ERROR:
9548
9549           /* If pending breakpoint support is turned off, throw
9550              error.  */
9551
9552           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9553             throw_exception (e);
9554
9555           exception_print (gdb_stderr, e);
9556
9557           /* If pending breakpoint support is auto query and the user
9558              selects no, then simply return the error code.  */
9559           if (pending_break_support == AUTO_BOOLEAN_AUTO
9560               && !nquery (_("Make %s pending on future shared library load? "),
9561                           bptype_string (type_wanted)))
9562             return 0;
9563
9564           /* At this point, either the user was queried about setting
9565              a pending breakpoint and selected yes, or pending
9566              breakpoint behavior is on and thus a pending breakpoint
9567              is defaulted on behalf of the user.  */
9568           {
9569             struct linespec_sals lsal;
9570
9571             copy_arg = xstrdup (addr_start);
9572             lsal.canonical = xstrdup (copy_arg);
9573             lsal.sals.nelts = 1;
9574             lsal.sals.sals = XNEW (struct symtab_and_line);
9575             init_sal (&lsal.sals.sals[0]);
9576             pending = 1;
9577             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9578           }
9579           break;
9580         default:
9581           throw_exception (e);
9582         }
9583       break;
9584     default:
9585       throw_exception (e);
9586     }
9587
9588   /* Create a chain of things that always need to be cleaned up.  */
9589   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9590
9591   /* ----------------------------- SNIP -----------------------------
9592      Anything added to the cleanup chain beyond this point is assumed
9593      to be part of a breakpoint.  If the breakpoint create succeeds
9594      then the memory is not reclaimed.  */
9595   bkpt_chain = make_cleanup (null_cleanup, 0);
9596
9597   /* Resolve all line numbers to PC's and verify that the addresses
9598      are ok for the target.  */
9599   if (!pending)
9600     {
9601       int ix;
9602       struct linespec_sals *iter;
9603
9604       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9605         breakpoint_sals_to_pc (&iter->sals);
9606     }
9607
9608   /* Fast tracepoints may have additional restrictions on location.  */
9609   if (!pending && type_wanted == bp_fast_tracepoint)
9610     {
9611       int ix;
9612       struct linespec_sals *iter;
9613
9614       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9615         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9616     }
9617
9618   /* Verify that condition can be parsed, before setting any
9619      breakpoints.  Allocate a separate condition expression for each
9620      breakpoint.  */
9621   if (!pending)
9622     {
9623       struct linespec_sals *lsal;
9624
9625       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9626
9627       if (parse_arg)
9628         {
9629             char *rest;
9630             /* Here we only parse 'arg' to separate condition
9631                from thread number, so parsing in context of first
9632                sal is OK.  When setting the breakpoint we'll 
9633                re-parse it in context of each sal.  */
9634
9635             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9636                                        &thread, &task, &rest);
9637             if (cond_string)
9638                 make_cleanup (xfree, cond_string);
9639             if (rest)
9640               make_cleanup (xfree, rest);
9641             if (rest)
9642               extra_string = rest;
9643         }
9644       else
9645         {
9646             if (*arg != '\0')
9647               error (_("Garbage '%s' at end of location"), arg);
9648
9649             /* Create a private copy of condition string.  */
9650             if (cond_string)
9651             {
9652                 cond_string = xstrdup (cond_string);
9653                 make_cleanup (xfree, cond_string);
9654             }
9655             /* Create a private copy of any extra string.  */
9656             if (extra_string)
9657               {
9658                 extra_string = xstrdup (extra_string);
9659                 make_cleanup (xfree, extra_string);
9660               }
9661         }
9662
9663       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9664                                    cond_string, extra_string, type_wanted,
9665                                    tempflag ? disp_del : disp_donttouch,
9666                                    thread, task, ignore_count, ops,
9667                                    from_tty, enabled, internal, flags);
9668     }
9669   else
9670     {
9671       struct breakpoint *b;
9672
9673       make_cleanup (xfree, copy_arg);
9674
9675       if (is_tracepoint_type (type_wanted))
9676         {
9677           struct tracepoint *t;
9678
9679           t = XCNEW (struct tracepoint);
9680           b = &t->base;
9681         }
9682       else
9683         b = XNEW (struct breakpoint);
9684
9685       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9686
9687       b->addr_string = copy_arg;
9688       if (parse_arg)
9689         b->cond_string = NULL;
9690       else
9691         {
9692           /* Create a private copy of condition string.  */
9693           if (cond_string)
9694             {
9695               cond_string = xstrdup (cond_string);
9696               make_cleanup (xfree, cond_string);
9697             }
9698           b->cond_string = cond_string;
9699         }
9700       b->extra_string = NULL;
9701       b->ignore_count = ignore_count;
9702       b->disposition = tempflag ? disp_del : disp_donttouch;
9703       b->condition_not_parsed = 1;
9704       b->enable_state = enabled ? bp_enabled : bp_disabled;
9705       if ((type_wanted != bp_breakpoint
9706            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9707         b->pspace = current_program_space;
9708
9709       install_breakpoint (internal, b, 0);
9710     }
9711   
9712   if (VEC_length (linespec_sals, canonical.sals) > 1)
9713     {
9714       warning (_("Multiple breakpoints were set.\nUse the "
9715                  "\"delete\" command to delete unwanted breakpoints."));
9716       prev_breakpoint_count = prev_bkpt_count;
9717     }
9718
9719   /* That's it.  Discard the cleanups for data inserted into the
9720      breakpoint.  */
9721   discard_cleanups (bkpt_chain);
9722   /* But cleanup everything else.  */
9723   do_cleanups (old_chain);
9724
9725   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9726   update_global_location_list (1);
9727
9728   return 1;
9729 }
9730
9731 /* Set a breakpoint.
9732    ARG is a string describing breakpoint address,
9733    condition, and thread.
9734    FLAG specifies if a breakpoint is hardware on,
9735    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9736    and BP_TEMPFLAG.  */
9737
9738 static void
9739 break_command_1 (char *arg, int flag, int from_tty)
9740 {
9741   int tempflag = flag & BP_TEMPFLAG;
9742   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9743                              ? bp_hardware_breakpoint
9744                              : bp_breakpoint);
9745   struct breakpoint_ops *ops;
9746   const char *arg_cp = arg;
9747
9748   /* Matching breakpoints on probes.  */
9749   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9750     ops = &bkpt_probe_breakpoint_ops;
9751   else
9752     ops = &bkpt_breakpoint_ops;
9753
9754   create_breakpoint (get_current_arch (),
9755                      arg,
9756                      NULL, 0, NULL, 1 /* parse arg */,
9757                      tempflag, type_wanted,
9758                      0 /* Ignore count */,
9759                      pending_break_support,
9760                      ops,
9761                      from_tty,
9762                      1 /* enabled */,
9763                      0 /* internal */,
9764                      0);
9765 }
9766
9767 /* Helper function for break_command_1 and disassemble_command.  */
9768
9769 void
9770 resolve_sal_pc (struct symtab_and_line *sal)
9771 {
9772   CORE_ADDR pc;
9773
9774   if (sal->pc == 0 && sal->symtab != NULL)
9775     {
9776       if (!find_line_pc (sal->symtab, sal->line, &pc))
9777         error (_("No line %d in file \"%s\"."),
9778                sal->line, symtab_to_filename_for_display (sal->symtab));
9779       sal->pc = pc;
9780
9781       /* If this SAL corresponds to a breakpoint inserted using a line
9782          number, then skip the function prologue if necessary.  */
9783       if (sal->explicit_line)
9784         skip_prologue_sal (sal);
9785     }
9786
9787   if (sal->section == 0 && sal->symtab != NULL)
9788     {
9789       struct blockvector *bv;
9790       struct block *b;
9791       struct symbol *sym;
9792
9793       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9794       if (bv != NULL)
9795         {
9796           sym = block_linkage_function (b);
9797           if (sym != NULL)
9798             {
9799               fixup_symbol_section (sym, sal->symtab->objfile);
9800               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
9801             }
9802           else
9803             {
9804               /* It really is worthwhile to have the section, so we'll
9805                  just have to look harder. This case can be executed
9806                  if we have line numbers but no functions (as can
9807                  happen in assembly source).  */
9808
9809               struct bound_minimal_symbol msym;
9810               struct cleanup *old_chain = save_current_space_and_thread ();
9811
9812               switch_to_program_space_and_thread (sal->pspace);
9813
9814               msym = lookup_minimal_symbol_by_pc (sal->pc);
9815               if (msym.minsym)
9816                 sal->section = SYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9817
9818               do_cleanups (old_chain);
9819             }
9820         }
9821     }
9822 }
9823
9824 void
9825 break_command (char *arg, int from_tty)
9826 {
9827   break_command_1 (arg, 0, from_tty);
9828 }
9829
9830 void
9831 tbreak_command (char *arg, int from_tty)
9832 {
9833   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9834 }
9835
9836 static void
9837 hbreak_command (char *arg, int from_tty)
9838 {
9839   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9840 }
9841
9842 static void
9843 thbreak_command (char *arg, int from_tty)
9844 {
9845   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9846 }
9847
9848 static void
9849 stop_command (char *arg, int from_tty)
9850 {
9851   printf_filtered (_("Specify the type of breakpoint to set.\n\
9852 Usage: stop in <function | address>\n\
9853        stop at <line>\n"));
9854 }
9855
9856 static void
9857 stopin_command (char *arg, int from_tty)
9858 {
9859   int badInput = 0;
9860
9861   if (arg == (char *) NULL)
9862     badInput = 1;
9863   else if (*arg != '*')
9864     {
9865       char *argptr = arg;
9866       int hasColon = 0;
9867
9868       /* Look for a ':'.  If this is a line number specification, then
9869          say it is bad, otherwise, it should be an address or
9870          function/method name.  */
9871       while (*argptr && !hasColon)
9872         {
9873           hasColon = (*argptr == ':');
9874           argptr++;
9875         }
9876
9877       if (hasColon)
9878         badInput = (*argptr != ':');    /* Not a class::method */
9879       else
9880         badInput = isdigit (*arg);      /* a simple line number */
9881     }
9882
9883   if (badInput)
9884     printf_filtered (_("Usage: stop in <function | address>\n"));
9885   else
9886     break_command_1 (arg, 0, from_tty);
9887 }
9888
9889 static void
9890 stopat_command (char *arg, int from_tty)
9891 {
9892   int badInput = 0;
9893
9894   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9895     badInput = 1;
9896   else
9897     {
9898       char *argptr = arg;
9899       int hasColon = 0;
9900
9901       /* Look for a ':'.  If there is a '::' then get out, otherwise
9902          it is probably a line number.  */
9903       while (*argptr && !hasColon)
9904         {
9905           hasColon = (*argptr == ':');
9906           argptr++;
9907         }
9908
9909       if (hasColon)
9910         badInput = (*argptr == ':');    /* we have class::method */
9911       else
9912         badInput = !isdigit (*arg);     /* not a line number */
9913     }
9914
9915   if (badInput)
9916     printf_filtered (_("Usage: stop at <line>\n"));
9917   else
9918     break_command_1 (arg, 0, from_tty);
9919 }
9920
9921 /* The dynamic printf command is mostly like a regular breakpoint, but
9922    with a prewired command list consisting of a single output command,
9923    built from extra arguments supplied on the dprintf command
9924    line.  */
9925
9926 static void
9927 dprintf_command (char *arg, int from_tty)
9928 {
9929   create_breakpoint (get_current_arch (),
9930                      arg,
9931                      NULL, 0, NULL, 1 /* parse arg */,
9932                      0, bp_dprintf,
9933                      0 /* Ignore count */,
9934                      pending_break_support,
9935                      &dprintf_breakpoint_ops,
9936                      from_tty,
9937                      1 /* enabled */,
9938                      0 /* internal */,
9939                      0);
9940 }
9941
9942 static void
9943 agent_printf_command (char *arg, int from_tty)
9944 {
9945   error (_("May only run agent-printf on the target"));
9946 }
9947
9948 /* Implement the "breakpoint_hit" breakpoint_ops method for
9949    ranged breakpoints.  */
9950
9951 static int
9952 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9953                                   struct address_space *aspace,
9954                                   CORE_ADDR bp_addr,
9955                                   const struct target_waitstatus *ws)
9956 {
9957   if (ws->kind != TARGET_WAITKIND_STOPPED
9958       || ws->value.sig != GDB_SIGNAL_TRAP)
9959     return 0;
9960
9961   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9962                                          bl->length, aspace, bp_addr);
9963 }
9964
9965 /* Implement the "resources_needed" breakpoint_ops method for
9966    ranged breakpoints.  */
9967
9968 static int
9969 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9970 {
9971   return target_ranged_break_num_registers ();
9972 }
9973
9974 /* Implement the "print_it" breakpoint_ops method for
9975    ranged breakpoints.  */
9976
9977 static enum print_stop_action
9978 print_it_ranged_breakpoint (bpstat bs)
9979 {
9980   struct breakpoint *b = bs->breakpoint_at;
9981   struct bp_location *bl = b->loc;
9982   struct ui_out *uiout = current_uiout;
9983
9984   gdb_assert (b->type == bp_hardware_breakpoint);
9985
9986   /* Ranged breakpoints have only one location.  */
9987   gdb_assert (bl && bl->next == NULL);
9988
9989   annotate_breakpoint (b->number);
9990   if (b->disposition == disp_del)
9991     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9992   else
9993     ui_out_text (uiout, "\nRanged breakpoint ");
9994   if (ui_out_is_mi_like_p (uiout))
9995     {
9996       ui_out_field_string (uiout, "reason",
9997                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9998       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9999     }
10000   ui_out_field_int (uiout, "bkptno", b->number);
10001   ui_out_text (uiout, ", ");
10002
10003   return PRINT_SRC_AND_LOC;
10004 }
10005
10006 /* Implement the "print_one" breakpoint_ops method for
10007    ranged breakpoints.  */
10008
10009 static void
10010 print_one_ranged_breakpoint (struct breakpoint *b,
10011                              struct bp_location **last_loc)
10012 {
10013   struct bp_location *bl = b->loc;
10014   struct value_print_options opts;
10015   struct ui_out *uiout = current_uiout;
10016
10017   /* Ranged breakpoints have only one location.  */
10018   gdb_assert (bl && bl->next == NULL);
10019
10020   get_user_print_options (&opts);
10021
10022   if (opts.addressprint)
10023     /* We don't print the address range here, it will be printed later
10024        by print_one_detail_ranged_breakpoint.  */
10025     ui_out_field_skip (uiout, "addr");
10026   annotate_field (5);
10027   print_breakpoint_location (b, bl);
10028   *last_loc = bl;
10029 }
10030
10031 /* Implement the "print_one_detail" breakpoint_ops method for
10032    ranged breakpoints.  */
10033
10034 static void
10035 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10036                                     struct ui_out *uiout)
10037 {
10038   CORE_ADDR address_start, address_end;
10039   struct bp_location *bl = b->loc;
10040   struct ui_file *stb = mem_fileopen ();
10041   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10042
10043   gdb_assert (bl);
10044
10045   address_start = bl->address;
10046   address_end = address_start + bl->length - 1;
10047
10048   ui_out_text (uiout, "\taddress range: ");
10049   fprintf_unfiltered (stb, "[%s, %s]",
10050                       print_core_address (bl->gdbarch, address_start),
10051                       print_core_address (bl->gdbarch, address_end));
10052   ui_out_field_stream (uiout, "addr", stb);
10053   ui_out_text (uiout, "\n");
10054
10055   do_cleanups (cleanup);
10056 }
10057
10058 /* Implement the "print_mention" breakpoint_ops method for
10059    ranged breakpoints.  */
10060
10061 static void
10062 print_mention_ranged_breakpoint (struct breakpoint *b)
10063 {
10064   struct bp_location *bl = b->loc;
10065   struct ui_out *uiout = current_uiout;
10066
10067   gdb_assert (bl);
10068   gdb_assert (b->type == bp_hardware_breakpoint);
10069
10070   if (ui_out_is_mi_like_p (uiout))
10071     return;
10072
10073   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10074                    b->number, paddress (bl->gdbarch, bl->address),
10075                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10076 }
10077
10078 /* Implement the "print_recreate" breakpoint_ops method for
10079    ranged breakpoints.  */
10080
10081 static void
10082 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10083 {
10084   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10085                       b->addr_string_range_end);
10086   print_recreate_thread (b, fp);
10087 }
10088
10089 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10090
10091 static struct breakpoint_ops ranged_breakpoint_ops;
10092
10093 /* Find the address where the end of the breakpoint range should be
10094    placed, given the SAL of the end of the range.  This is so that if
10095    the user provides a line number, the end of the range is set to the
10096    last instruction of the given line.  */
10097
10098 static CORE_ADDR
10099 find_breakpoint_range_end (struct symtab_and_line sal)
10100 {
10101   CORE_ADDR end;
10102
10103   /* If the user provided a PC value, use it.  Otherwise,
10104      find the address of the end of the given location.  */
10105   if (sal.explicit_pc)
10106     end = sal.pc;
10107   else
10108     {
10109       int ret;
10110       CORE_ADDR start;
10111
10112       ret = find_line_pc_range (sal, &start, &end);
10113       if (!ret)
10114         error (_("Could not find location of the end of the range."));
10115
10116       /* find_line_pc_range returns the start of the next line.  */
10117       end--;
10118     }
10119
10120   return end;
10121 }
10122
10123 /* Implement the "break-range" CLI command.  */
10124
10125 static void
10126 break_range_command (char *arg, int from_tty)
10127 {
10128   char *arg_start, *addr_string_start, *addr_string_end;
10129   struct linespec_result canonical_start, canonical_end;
10130   int bp_count, can_use_bp, length;
10131   CORE_ADDR end;
10132   struct breakpoint *b;
10133   struct symtab_and_line sal_start, sal_end;
10134   struct cleanup *cleanup_bkpt;
10135   struct linespec_sals *lsal_start, *lsal_end;
10136
10137   /* We don't support software ranged breakpoints.  */
10138   if (target_ranged_break_num_registers () < 0)
10139     error (_("This target does not support hardware ranged breakpoints."));
10140
10141   bp_count = hw_breakpoint_used_count ();
10142   bp_count += target_ranged_break_num_registers ();
10143   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10144                                                    bp_count, 0);
10145   if (can_use_bp < 0)
10146     error (_("Hardware breakpoints used exceeds limit."));
10147
10148   arg = skip_spaces (arg);
10149   if (arg == NULL || arg[0] == '\0')
10150     error(_("No address range specified."));
10151
10152   init_linespec_result (&canonical_start);
10153
10154   arg_start = arg;
10155   parse_breakpoint_sals (&arg, &canonical_start);
10156
10157   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10158
10159   if (arg[0] != ',')
10160     error (_("Too few arguments."));
10161   else if (VEC_empty (linespec_sals, canonical_start.sals))
10162     error (_("Could not find location of the beginning of the range."));
10163
10164   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10165
10166   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10167       || lsal_start->sals.nelts != 1)
10168     error (_("Cannot create a ranged breakpoint with multiple locations."));
10169
10170   sal_start = lsal_start->sals.sals[0];
10171   addr_string_start = savestring (arg_start, arg - arg_start);
10172   make_cleanup (xfree, addr_string_start);
10173
10174   arg++;        /* Skip the comma.  */
10175   arg = skip_spaces (arg);
10176
10177   /* Parse the end location.  */
10178
10179   init_linespec_result (&canonical_end);
10180   arg_start = arg;
10181
10182   /* We call decode_line_full directly here instead of using
10183      parse_breakpoint_sals because we need to specify the start location's
10184      symtab and line as the default symtab and line for the end of the
10185      range.  This makes it possible to have ranges like "foo.c:27, +14",
10186      where +14 means 14 lines from the start location.  */
10187   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10188                     sal_start.symtab, sal_start.line,
10189                     &canonical_end, NULL, NULL);
10190
10191   make_cleanup_destroy_linespec_result (&canonical_end);
10192
10193   if (VEC_empty (linespec_sals, canonical_end.sals))
10194     error (_("Could not find location of the end of the range."));
10195
10196   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10197   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10198       || lsal_end->sals.nelts != 1)
10199     error (_("Cannot create a ranged breakpoint with multiple locations."));
10200
10201   sal_end = lsal_end->sals.sals[0];
10202   addr_string_end = savestring (arg_start, arg - arg_start);
10203   make_cleanup (xfree, addr_string_end);
10204
10205   end = find_breakpoint_range_end (sal_end);
10206   if (sal_start.pc > end)
10207     error (_("Invalid address range, end precedes start."));
10208
10209   length = end - sal_start.pc + 1;
10210   if (length < 0)
10211     /* Length overflowed.  */
10212     error (_("Address range too large."));
10213   else if (length == 1)
10214     {
10215       /* This range is simple enough to be handled by
10216          the `hbreak' command.  */
10217       hbreak_command (addr_string_start, 1);
10218
10219       do_cleanups (cleanup_bkpt);
10220
10221       return;
10222     }
10223
10224   /* Now set up the breakpoint.  */
10225   b = set_raw_breakpoint (get_current_arch (), sal_start,
10226                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10227   set_breakpoint_count (breakpoint_count + 1);
10228   b->number = breakpoint_count;
10229   b->disposition = disp_donttouch;
10230   b->addr_string = xstrdup (addr_string_start);
10231   b->addr_string_range_end = xstrdup (addr_string_end);
10232   b->loc->length = length;
10233
10234   do_cleanups (cleanup_bkpt);
10235
10236   mention (b);
10237   observer_notify_breakpoint_created (b);
10238   update_global_location_list (1);
10239 }
10240
10241 /*  Return non-zero if EXP is verified as constant.  Returned zero
10242     means EXP is variable.  Also the constant detection may fail for
10243     some constant expressions and in such case still falsely return
10244     zero.  */
10245
10246 static int
10247 watchpoint_exp_is_const (const struct expression *exp)
10248 {
10249   int i = exp->nelts;
10250
10251   while (i > 0)
10252     {
10253       int oplenp, argsp;
10254
10255       /* We are only interested in the descriptor of each element.  */
10256       operator_length (exp, i, &oplenp, &argsp);
10257       i -= oplenp;
10258
10259       switch (exp->elts[i].opcode)
10260         {
10261         case BINOP_ADD:
10262         case BINOP_SUB:
10263         case BINOP_MUL:
10264         case BINOP_DIV:
10265         case BINOP_REM:
10266         case BINOP_MOD:
10267         case BINOP_LSH:
10268         case BINOP_RSH:
10269         case BINOP_LOGICAL_AND:
10270         case BINOP_LOGICAL_OR:
10271         case BINOP_BITWISE_AND:
10272         case BINOP_BITWISE_IOR:
10273         case BINOP_BITWISE_XOR:
10274         case BINOP_EQUAL:
10275         case BINOP_NOTEQUAL:
10276         case BINOP_LESS:
10277         case BINOP_GTR:
10278         case BINOP_LEQ:
10279         case BINOP_GEQ:
10280         case BINOP_REPEAT:
10281         case BINOP_COMMA:
10282         case BINOP_EXP:
10283         case BINOP_MIN:
10284         case BINOP_MAX:
10285         case BINOP_INTDIV:
10286         case BINOP_CONCAT:
10287         case BINOP_IN:
10288         case BINOP_RANGE:
10289         case TERNOP_COND:
10290         case TERNOP_SLICE:
10291
10292         case OP_LONG:
10293         case OP_DOUBLE:
10294         case OP_DECFLOAT:
10295         case OP_LAST:
10296         case OP_COMPLEX:
10297         case OP_STRING:
10298         case OP_ARRAY:
10299         case OP_TYPE:
10300         case OP_TYPEOF:
10301         case OP_DECLTYPE:
10302         case OP_TYPEID:
10303         case OP_NAME:
10304         case OP_OBJC_NSSTRING:
10305
10306         case UNOP_NEG:
10307         case UNOP_LOGICAL_NOT:
10308         case UNOP_COMPLEMENT:
10309         case UNOP_ADDR:
10310         case UNOP_HIGH:
10311         case UNOP_CAST:
10312
10313         case UNOP_CAST_TYPE:
10314         case UNOP_REINTERPRET_CAST:
10315         case UNOP_DYNAMIC_CAST:
10316           /* Unary, binary and ternary operators: We have to check
10317              their operands.  If they are constant, then so is the
10318              result of that operation.  For instance, if A and B are
10319              determined to be constants, then so is "A + B".
10320
10321              UNOP_IND is one exception to the rule above, because the
10322              value of *ADDR is not necessarily a constant, even when
10323              ADDR is.  */
10324           break;
10325
10326         case OP_VAR_VALUE:
10327           /* Check whether the associated symbol is a constant.
10328
10329              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10330              possible that a buggy compiler could mark a variable as
10331              constant even when it is not, and TYPE_CONST would return
10332              true in this case, while SYMBOL_CLASS wouldn't.
10333
10334              We also have to check for function symbols because they
10335              are always constant.  */
10336           {
10337             struct symbol *s = exp->elts[i + 2].symbol;
10338
10339             if (SYMBOL_CLASS (s) != LOC_BLOCK
10340                 && SYMBOL_CLASS (s) != LOC_CONST
10341                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10342               return 0;
10343             break;
10344           }
10345
10346         /* The default action is to return 0 because we are using
10347            the optimistic approach here: If we don't know something,
10348            then it is not a constant.  */
10349         default:
10350           return 0;
10351         }
10352     }
10353
10354   return 1;
10355 }
10356
10357 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10358
10359 static void
10360 dtor_watchpoint (struct breakpoint *self)
10361 {
10362   struct watchpoint *w = (struct watchpoint *) self;
10363
10364   xfree (w->cond_exp);
10365   xfree (w->exp);
10366   xfree (w->exp_string);
10367   xfree (w->exp_string_reparse);
10368   value_free (w->val);
10369
10370   base_breakpoint_ops.dtor (self);
10371 }
10372
10373 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10374
10375 static void
10376 re_set_watchpoint (struct breakpoint *b)
10377 {
10378   struct watchpoint *w = (struct watchpoint *) b;
10379
10380   /* Watchpoint can be either on expression using entirely global
10381      variables, or it can be on local variables.
10382
10383      Watchpoints of the first kind are never auto-deleted, and even
10384      persist across program restarts.  Since they can use variables
10385      from shared libraries, we need to reparse expression as libraries
10386      are loaded and unloaded.
10387
10388      Watchpoints on local variables can also change meaning as result
10389      of solib event.  For example, if a watchpoint uses both a local
10390      and a global variables in expression, it's a local watchpoint,
10391      but unloading of a shared library will make the expression
10392      invalid.  This is not a very common use case, but we still
10393      re-evaluate expression, to avoid surprises to the user.
10394
10395      Note that for local watchpoints, we re-evaluate it only if
10396      watchpoints frame id is still valid.  If it's not, it means the
10397      watchpoint is out of scope and will be deleted soon.  In fact,
10398      I'm not sure we'll ever be called in this case.
10399
10400      If a local watchpoint's frame id is still valid, then
10401      w->exp_valid_block is likewise valid, and we can safely use it.
10402
10403      Don't do anything about disabled watchpoints, since they will be
10404      reevaluated again when enabled.  */
10405   update_watchpoint (w, 1 /* reparse */);
10406 }
10407
10408 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10409
10410 static int
10411 insert_watchpoint (struct bp_location *bl)
10412 {
10413   struct watchpoint *w = (struct watchpoint *) bl->owner;
10414   int length = w->exact ? 1 : bl->length;
10415
10416   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10417                                    w->cond_exp);
10418 }
10419
10420 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10421
10422 static int
10423 remove_watchpoint (struct bp_location *bl)
10424 {
10425   struct watchpoint *w = (struct watchpoint *) bl->owner;
10426   int length = w->exact ? 1 : bl->length;
10427
10428   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10429                                    w->cond_exp);
10430 }
10431
10432 static int
10433 breakpoint_hit_watchpoint (const struct bp_location *bl,
10434                            struct address_space *aspace, CORE_ADDR bp_addr,
10435                            const struct target_waitstatus *ws)
10436 {
10437   struct breakpoint *b = bl->owner;
10438   struct watchpoint *w = (struct watchpoint *) b;
10439
10440   /* Continuable hardware watchpoints are treated as non-existent if the
10441      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10442      some data address).  Otherwise gdb won't stop on a break instruction
10443      in the code (not from a breakpoint) when a hardware watchpoint has
10444      been defined.  Also skip watchpoints which we know did not trigger
10445      (did not match the data address).  */
10446   if (is_hardware_watchpoint (b)
10447       && w->watchpoint_triggered == watch_triggered_no)
10448     return 0;
10449
10450   return 1;
10451 }
10452
10453 static void
10454 check_status_watchpoint (bpstat bs)
10455 {
10456   gdb_assert (is_watchpoint (bs->breakpoint_at));
10457
10458   bpstat_check_watchpoint (bs);
10459 }
10460
10461 /* Implement the "resources_needed" breakpoint_ops method for
10462    hardware watchpoints.  */
10463
10464 static int
10465 resources_needed_watchpoint (const struct bp_location *bl)
10466 {
10467   struct watchpoint *w = (struct watchpoint *) bl->owner;
10468   int length = w->exact? 1 : bl->length;
10469
10470   return target_region_ok_for_hw_watchpoint (bl->address, length);
10471 }
10472
10473 /* Implement the "works_in_software_mode" breakpoint_ops method for
10474    hardware watchpoints.  */
10475
10476 static int
10477 works_in_software_mode_watchpoint (const struct breakpoint *b)
10478 {
10479   /* Read and access watchpoints only work with hardware support.  */
10480   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10481 }
10482
10483 static enum print_stop_action
10484 print_it_watchpoint (bpstat bs)
10485 {
10486   struct cleanup *old_chain;
10487   struct breakpoint *b;
10488   struct ui_file *stb;
10489   enum print_stop_action result;
10490   struct watchpoint *w;
10491   struct ui_out *uiout = current_uiout;
10492
10493   gdb_assert (bs->bp_location_at != NULL);
10494
10495   b = bs->breakpoint_at;
10496   w = (struct watchpoint *) b;
10497
10498   stb = mem_fileopen ();
10499   old_chain = make_cleanup_ui_file_delete (stb);
10500
10501   switch (b->type)
10502     {
10503     case bp_watchpoint:
10504     case bp_hardware_watchpoint:
10505       annotate_watchpoint (b->number);
10506       if (ui_out_is_mi_like_p (uiout))
10507         ui_out_field_string
10508           (uiout, "reason",
10509            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10510       mention (b);
10511       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10512       ui_out_text (uiout, "\nOld value = ");
10513       watchpoint_value_print (bs->old_val, stb);
10514       ui_out_field_stream (uiout, "old", stb);
10515       ui_out_text (uiout, "\nNew value = ");
10516       watchpoint_value_print (w->val, stb);
10517       ui_out_field_stream (uiout, "new", stb);
10518       ui_out_text (uiout, "\n");
10519       /* More than one watchpoint may have been triggered.  */
10520       result = PRINT_UNKNOWN;
10521       break;
10522
10523     case bp_read_watchpoint:
10524       if (ui_out_is_mi_like_p (uiout))
10525         ui_out_field_string
10526           (uiout, "reason",
10527            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10528       mention (b);
10529       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10530       ui_out_text (uiout, "\nValue = ");
10531       watchpoint_value_print (w->val, stb);
10532       ui_out_field_stream (uiout, "value", stb);
10533       ui_out_text (uiout, "\n");
10534       result = PRINT_UNKNOWN;
10535       break;
10536
10537     case bp_access_watchpoint:
10538       if (bs->old_val != NULL)
10539         {
10540           annotate_watchpoint (b->number);
10541           if (ui_out_is_mi_like_p (uiout))
10542             ui_out_field_string
10543               (uiout, "reason",
10544                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10545           mention (b);
10546           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10547           ui_out_text (uiout, "\nOld value = ");
10548           watchpoint_value_print (bs->old_val, stb);
10549           ui_out_field_stream (uiout, "old", stb);
10550           ui_out_text (uiout, "\nNew value = ");
10551         }
10552       else
10553         {
10554           mention (b);
10555           if (ui_out_is_mi_like_p (uiout))
10556             ui_out_field_string
10557               (uiout, "reason",
10558                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10559           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10560           ui_out_text (uiout, "\nValue = ");
10561         }
10562       watchpoint_value_print (w->val, stb);
10563       ui_out_field_stream (uiout, "new", stb);
10564       ui_out_text (uiout, "\n");
10565       result = PRINT_UNKNOWN;
10566       break;
10567     default:
10568       result = PRINT_UNKNOWN;
10569     }
10570
10571   do_cleanups (old_chain);
10572   return result;
10573 }
10574
10575 /* Implement the "print_mention" breakpoint_ops method for hardware
10576    watchpoints.  */
10577
10578 static void
10579 print_mention_watchpoint (struct breakpoint *b)
10580 {
10581   struct cleanup *ui_out_chain;
10582   struct watchpoint *w = (struct watchpoint *) b;
10583   struct ui_out *uiout = current_uiout;
10584
10585   switch (b->type)
10586     {
10587     case bp_watchpoint:
10588       ui_out_text (uiout, "Watchpoint ");
10589       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10590       break;
10591     case bp_hardware_watchpoint:
10592       ui_out_text (uiout, "Hardware watchpoint ");
10593       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10594       break;
10595     case bp_read_watchpoint:
10596       ui_out_text (uiout, "Hardware read watchpoint ");
10597       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10598       break;
10599     case bp_access_watchpoint:
10600       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10601       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10602       break;
10603     default:
10604       internal_error (__FILE__, __LINE__,
10605                       _("Invalid hardware watchpoint type."));
10606     }
10607
10608   ui_out_field_int (uiout, "number", b->number);
10609   ui_out_text (uiout, ": ");
10610   ui_out_field_string (uiout, "exp", w->exp_string);
10611   do_cleanups (ui_out_chain);
10612 }
10613
10614 /* Implement the "print_recreate" breakpoint_ops method for
10615    watchpoints.  */
10616
10617 static void
10618 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10619 {
10620   struct watchpoint *w = (struct watchpoint *) b;
10621
10622   switch (b->type)
10623     {
10624     case bp_watchpoint:
10625     case bp_hardware_watchpoint:
10626       fprintf_unfiltered (fp, "watch");
10627       break;
10628     case bp_read_watchpoint:
10629       fprintf_unfiltered (fp, "rwatch");
10630       break;
10631     case bp_access_watchpoint:
10632       fprintf_unfiltered (fp, "awatch");
10633       break;
10634     default:
10635       internal_error (__FILE__, __LINE__,
10636                       _("Invalid watchpoint type."));
10637     }
10638
10639   fprintf_unfiltered (fp, " %s", w->exp_string);
10640   print_recreate_thread (b, fp);
10641 }
10642
10643 /* Implement the "explains_signal" breakpoint_ops method for
10644    watchpoints.  */
10645
10646 static enum bpstat_signal_value
10647 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10648 {
10649   /* A software watchpoint cannot cause a signal other than
10650      GDB_SIGNAL_TRAP.  */
10651   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10652     return BPSTAT_SIGNAL_NO;
10653
10654   return BPSTAT_SIGNAL_HIDE;
10655 }
10656
10657 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10658
10659 static struct breakpoint_ops watchpoint_breakpoint_ops;
10660
10661 /* Implement the "insert" breakpoint_ops method for
10662    masked hardware watchpoints.  */
10663
10664 static int
10665 insert_masked_watchpoint (struct bp_location *bl)
10666 {
10667   struct watchpoint *w = (struct watchpoint *) bl->owner;
10668
10669   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10670                                         bl->watchpoint_type);
10671 }
10672
10673 /* Implement the "remove" breakpoint_ops method for
10674    masked hardware watchpoints.  */
10675
10676 static int
10677 remove_masked_watchpoint (struct bp_location *bl)
10678 {
10679   struct watchpoint *w = (struct watchpoint *) bl->owner;
10680
10681   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10682                                         bl->watchpoint_type);
10683 }
10684
10685 /* Implement the "resources_needed" breakpoint_ops method for
10686    masked hardware watchpoints.  */
10687
10688 static int
10689 resources_needed_masked_watchpoint (const struct bp_location *bl)
10690 {
10691   struct watchpoint *w = (struct watchpoint *) bl->owner;
10692
10693   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10694 }
10695
10696 /* Implement the "works_in_software_mode" breakpoint_ops method for
10697    masked hardware watchpoints.  */
10698
10699 static int
10700 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10701 {
10702   return 0;
10703 }
10704
10705 /* Implement the "print_it" breakpoint_ops method for
10706    masked hardware watchpoints.  */
10707
10708 static enum print_stop_action
10709 print_it_masked_watchpoint (bpstat bs)
10710 {
10711   struct breakpoint *b = bs->breakpoint_at;
10712   struct ui_out *uiout = current_uiout;
10713
10714   /* Masked watchpoints have only one location.  */
10715   gdb_assert (b->loc && b->loc->next == NULL);
10716
10717   switch (b->type)
10718     {
10719     case bp_hardware_watchpoint:
10720       annotate_watchpoint (b->number);
10721       if (ui_out_is_mi_like_p (uiout))
10722         ui_out_field_string
10723           (uiout, "reason",
10724            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10725       break;
10726
10727     case bp_read_watchpoint:
10728       if (ui_out_is_mi_like_p (uiout))
10729         ui_out_field_string
10730           (uiout, "reason",
10731            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10732       break;
10733
10734     case bp_access_watchpoint:
10735       if (ui_out_is_mi_like_p (uiout))
10736         ui_out_field_string
10737           (uiout, "reason",
10738            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10739       break;
10740     default:
10741       internal_error (__FILE__, __LINE__,
10742                       _("Invalid hardware watchpoint type."));
10743     }
10744
10745   mention (b);
10746   ui_out_text (uiout, _("\n\
10747 Check the underlying instruction at PC for the memory\n\
10748 address and value which triggered this watchpoint.\n"));
10749   ui_out_text (uiout, "\n");
10750
10751   /* More than one watchpoint may have been triggered.  */
10752   return PRINT_UNKNOWN;
10753 }
10754
10755 /* Implement the "print_one_detail" breakpoint_ops method for
10756    masked hardware watchpoints.  */
10757
10758 static void
10759 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10760                                     struct ui_out *uiout)
10761 {
10762   struct watchpoint *w = (struct watchpoint *) b;
10763
10764   /* Masked watchpoints have only one location.  */
10765   gdb_assert (b->loc && b->loc->next == NULL);
10766
10767   ui_out_text (uiout, "\tmask ");
10768   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10769   ui_out_text (uiout, "\n");
10770 }
10771
10772 /* Implement the "print_mention" breakpoint_ops method for
10773    masked hardware watchpoints.  */
10774
10775 static void
10776 print_mention_masked_watchpoint (struct breakpoint *b)
10777 {
10778   struct watchpoint *w = (struct watchpoint *) b;
10779   struct ui_out *uiout = current_uiout;
10780   struct cleanup *ui_out_chain;
10781
10782   switch (b->type)
10783     {
10784     case bp_hardware_watchpoint:
10785       ui_out_text (uiout, "Masked hardware watchpoint ");
10786       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10787       break;
10788     case bp_read_watchpoint:
10789       ui_out_text (uiout, "Masked hardware read watchpoint ");
10790       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10791       break;
10792     case bp_access_watchpoint:
10793       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10794       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10795       break;
10796     default:
10797       internal_error (__FILE__, __LINE__,
10798                       _("Invalid hardware watchpoint type."));
10799     }
10800
10801   ui_out_field_int (uiout, "number", b->number);
10802   ui_out_text (uiout, ": ");
10803   ui_out_field_string (uiout, "exp", w->exp_string);
10804   do_cleanups (ui_out_chain);
10805 }
10806
10807 /* Implement the "print_recreate" breakpoint_ops method for
10808    masked hardware watchpoints.  */
10809
10810 static void
10811 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10812 {
10813   struct watchpoint *w = (struct watchpoint *) b;
10814   char tmp[40];
10815
10816   switch (b->type)
10817     {
10818     case bp_hardware_watchpoint:
10819       fprintf_unfiltered (fp, "watch");
10820       break;
10821     case bp_read_watchpoint:
10822       fprintf_unfiltered (fp, "rwatch");
10823       break;
10824     case bp_access_watchpoint:
10825       fprintf_unfiltered (fp, "awatch");
10826       break;
10827     default:
10828       internal_error (__FILE__, __LINE__,
10829                       _("Invalid hardware watchpoint type."));
10830     }
10831
10832   sprintf_vma (tmp, w->hw_wp_mask);
10833   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10834   print_recreate_thread (b, fp);
10835 }
10836
10837 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10838
10839 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10840
10841 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10842
10843 static int
10844 is_masked_watchpoint (const struct breakpoint *b)
10845 {
10846   return b->ops == &masked_watchpoint_breakpoint_ops;
10847 }
10848
10849 /* accessflag:  hw_write:  watch write, 
10850                 hw_read:   watch read, 
10851                 hw_access: watch access (read or write) */
10852 static void
10853 watch_command_1 (const char *arg, int accessflag, int from_tty,
10854                  int just_location, int internal)
10855 {
10856   volatile struct gdb_exception e;
10857   struct breakpoint *b, *scope_breakpoint = NULL;
10858   struct expression *exp;
10859   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10860   struct value *val, *mark, *result;
10861   struct frame_info *frame;
10862   const char *exp_start = NULL;
10863   const char *exp_end = NULL;
10864   const char *tok, *end_tok;
10865   int toklen = -1;
10866   const char *cond_start = NULL;
10867   const char *cond_end = NULL;
10868   enum bptype bp_type;
10869   int thread = -1;
10870   int pc = 0;
10871   /* Flag to indicate whether we are going to use masks for
10872      the hardware watchpoint.  */
10873   int use_mask = 0;
10874   CORE_ADDR mask = 0;
10875   struct watchpoint *w;
10876   char *expression;
10877   struct cleanup *back_to;
10878
10879   /* Make sure that we actually have parameters to parse.  */
10880   if (arg != NULL && arg[0] != '\0')
10881     {
10882       const char *value_start;
10883
10884       exp_end = arg + strlen (arg);
10885
10886       /* Look for "parameter value" pairs at the end
10887          of the arguments string.  */
10888       for (tok = exp_end - 1; tok > arg; tok--)
10889         {
10890           /* Skip whitespace at the end of the argument list.  */
10891           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10892             tok--;
10893
10894           /* Find the beginning of the last token.
10895              This is the value of the parameter.  */
10896           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10897             tok--;
10898           value_start = tok + 1;
10899
10900           /* Skip whitespace.  */
10901           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10902             tok--;
10903
10904           end_tok = tok;
10905
10906           /* Find the beginning of the second to last token.
10907              This is the parameter itself.  */
10908           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10909             tok--;
10910           tok++;
10911           toklen = end_tok - tok + 1;
10912
10913           if (toklen == 6 && !strncmp (tok, "thread", 6))
10914             {
10915               /* At this point we've found a "thread" token, which means
10916                  the user is trying to set a watchpoint that triggers
10917                  only in a specific thread.  */
10918               char *endp;
10919
10920               if (thread != -1)
10921                 error(_("You can specify only one thread."));
10922
10923               /* Extract the thread ID from the next token.  */
10924               thread = strtol (value_start, &endp, 0);
10925
10926               /* Check if the user provided a valid numeric value for the
10927                  thread ID.  */
10928               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10929                 error (_("Invalid thread ID specification %s."), value_start);
10930
10931               /* Check if the thread actually exists.  */
10932               if (!valid_thread_id (thread))
10933                 invalid_thread_id_error (thread);
10934             }
10935           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10936             {
10937               /* We've found a "mask" token, which means the user wants to
10938                  create a hardware watchpoint that is going to have the mask
10939                  facility.  */
10940               struct value *mask_value, *mark;
10941
10942               if (use_mask)
10943                 error(_("You can specify only one mask."));
10944
10945               use_mask = just_location = 1;
10946
10947               mark = value_mark ();
10948               mask_value = parse_to_comma_and_eval (&value_start);
10949               mask = value_as_address (mask_value);
10950               value_free_to_mark (mark);
10951             }
10952           else
10953             /* We didn't recognize what we found.  We should stop here.  */
10954             break;
10955
10956           /* Truncate the string and get rid of the "parameter value" pair before
10957              the arguments string is parsed by the parse_exp_1 function.  */
10958           exp_end = tok;
10959         }
10960     }
10961   else
10962     exp_end = arg;
10963
10964   /* Parse the rest of the arguments.  From here on out, everything
10965      is in terms of a newly allocated string instead of the original
10966      ARG.  */
10967   innermost_block = NULL;
10968   expression = savestring (arg, exp_end - arg);
10969   back_to = make_cleanup (xfree, expression);
10970   exp_start = arg = expression;
10971   exp = parse_exp_1 (&arg, 0, 0, 0);
10972   exp_end = arg;
10973   /* Remove trailing whitespace from the expression before saving it.
10974      This makes the eventual display of the expression string a bit
10975      prettier.  */
10976   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10977     --exp_end;
10978
10979   /* Checking if the expression is not constant.  */
10980   if (watchpoint_exp_is_const (exp))
10981     {
10982       int len;
10983
10984       len = exp_end - exp_start;
10985       while (len > 0 && isspace (exp_start[len - 1]))
10986         len--;
10987       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10988     }
10989
10990   exp_valid_block = innermost_block;
10991   mark = value_mark ();
10992   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10993
10994   if (just_location)
10995     {
10996       int ret;
10997
10998       exp_valid_block = NULL;
10999       val = value_addr (result);
11000       release_value (val);
11001       value_free_to_mark (mark);
11002
11003       if (use_mask)
11004         {
11005           ret = target_masked_watch_num_registers (value_as_address (val),
11006                                                    mask);
11007           if (ret == -1)
11008             error (_("This target does not support masked watchpoints."));
11009           else if (ret == -2)
11010             error (_("Invalid mask or memory region."));
11011         }
11012     }
11013   else if (val != NULL)
11014     release_value (val);
11015
11016   tok = skip_spaces_const (arg);
11017   end_tok = skip_to_space_const (tok);
11018
11019   toklen = end_tok - tok;
11020   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11021     {
11022       struct expression *cond;
11023
11024       innermost_block = NULL;
11025       tok = cond_start = end_tok + 1;
11026       cond = parse_exp_1 (&tok, 0, 0, 0);
11027
11028       /* The watchpoint expression may not be local, but the condition
11029          may still be.  E.g.: `watch global if local > 0'.  */
11030       cond_exp_valid_block = innermost_block;
11031
11032       xfree (cond);
11033       cond_end = tok;
11034     }
11035   if (*tok)
11036     error (_("Junk at end of command."));
11037
11038   if (accessflag == hw_read)
11039     bp_type = bp_read_watchpoint;
11040   else if (accessflag == hw_access)
11041     bp_type = bp_access_watchpoint;
11042   else
11043     bp_type = bp_hardware_watchpoint;
11044
11045   frame = block_innermost_frame (exp_valid_block);
11046
11047   /* If the expression is "local", then set up a "watchpoint scope"
11048      breakpoint at the point where we've left the scope of the watchpoint
11049      expression.  Create the scope breakpoint before the watchpoint, so
11050      that we will encounter it first in bpstat_stop_status.  */
11051   if (exp_valid_block && frame)
11052     {
11053       if (frame_id_p (frame_unwind_caller_id (frame)))
11054         {
11055           scope_breakpoint
11056             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11057                                           frame_unwind_caller_pc (frame),
11058                                           bp_watchpoint_scope,
11059                                           &momentary_breakpoint_ops);
11060
11061           scope_breakpoint->enable_state = bp_enabled;
11062
11063           /* Automatically delete the breakpoint when it hits.  */
11064           scope_breakpoint->disposition = disp_del;
11065
11066           /* Only break in the proper frame (help with recursion).  */
11067           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11068
11069           /* Set the address at which we will stop.  */
11070           scope_breakpoint->loc->gdbarch
11071             = frame_unwind_caller_arch (frame);
11072           scope_breakpoint->loc->requested_address
11073             = frame_unwind_caller_pc (frame);
11074           scope_breakpoint->loc->address
11075             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11076                                          scope_breakpoint->loc->requested_address,
11077                                          scope_breakpoint->type);
11078         }
11079     }
11080
11081   /* Now set up the breakpoint.  */
11082
11083   w = XCNEW (struct watchpoint);
11084   b = &w->base;
11085   if (use_mask)
11086     init_raw_breakpoint_without_location (b, NULL, bp_type,
11087                                           &masked_watchpoint_breakpoint_ops);
11088   else
11089     init_raw_breakpoint_without_location (b, NULL, bp_type,
11090                                           &watchpoint_breakpoint_ops);
11091   b->thread = thread;
11092   b->disposition = disp_donttouch;
11093   b->pspace = current_program_space;
11094   w->exp = exp;
11095   w->exp_valid_block = exp_valid_block;
11096   w->cond_exp_valid_block = cond_exp_valid_block;
11097   if (just_location)
11098     {
11099       struct type *t = value_type (val);
11100       CORE_ADDR addr = value_as_address (val);
11101       char *name;
11102
11103       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11104       name = type_to_string (t);
11105
11106       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11107                                           core_addr_to_string (addr));
11108       xfree (name);
11109
11110       w->exp_string = xstrprintf ("-location %.*s",
11111                                   (int) (exp_end - exp_start), exp_start);
11112
11113       /* The above expression is in C.  */
11114       b->language = language_c;
11115     }
11116   else
11117     w->exp_string = savestring (exp_start, exp_end - exp_start);
11118
11119   if (use_mask)
11120     {
11121       w->hw_wp_mask = mask;
11122     }
11123   else
11124     {
11125       w->val = val;
11126       w->val_valid = 1;
11127     }
11128
11129   if (cond_start)
11130     b->cond_string = savestring (cond_start, cond_end - cond_start);
11131   else
11132     b->cond_string = 0;
11133
11134   if (frame)
11135     {
11136       w->watchpoint_frame = get_frame_id (frame);
11137       w->watchpoint_thread = inferior_ptid;
11138     }
11139   else
11140     {
11141       w->watchpoint_frame = null_frame_id;
11142       w->watchpoint_thread = null_ptid;
11143     }
11144
11145   if (scope_breakpoint != NULL)
11146     {
11147       /* The scope breakpoint is related to the watchpoint.  We will
11148          need to act on them together.  */
11149       b->related_breakpoint = scope_breakpoint;
11150       scope_breakpoint->related_breakpoint = b;
11151     }
11152
11153   if (!just_location)
11154     value_free_to_mark (mark);
11155
11156   TRY_CATCH (e, RETURN_MASK_ALL)
11157     {
11158       /* Finally update the new watchpoint.  This creates the locations
11159          that should be inserted.  */
11160       update_watchpoint (w, 1);
11161     }
11162   if (e.reason < 0)
11163     {
11164       delete_breakpoint (b);
11165       throw_exception (e);
11166     }
11167
11168   install_breakpoint (internal, b, 1);
11169   do_cleanups (back_to);
11170 }
11171
11172 /* Return count of debug registers needed to watch the given expression.
11173    If the watchpoint cannot be handled in hardware return zero.  */
11174
11175 static int
11176 can_use_hardware_watchpoint (struct value *v)
11177 {
11178   int found_memory_cnt = 0;
11179   struct value *head = v;
11180
11181   /* Did the user specifically forbid us to use hardware watchpoints? */
11182   if (!can_use_hw_watchpoints)
11183     return 0;
11184
11185   /* Make sure that the value of the expression depends only upon
11186      memory contents, and values computed from them within GDB.  If we
11187      find any register references or function calls, we can't use a
11188      hardware watchpoint.
11189
11190      The idea here is that evaluating an expression generates a series
11191      of values, one holding the value of every subexpression.  (The
11192      expression a*b+c has five subexpressions: a, b, a*b, c, and
11193      a*b+c.)  GDB's values hold almost enough information to establish
11194      the criteria given above --- they identify memory lvalues,
11195      register lvalues, computed values, etcetera.  So we can evaluate
11196      the expression, and then scan the chain of values that leaves
11197      behind to decide whether we can detect any possible change to the
11198      expression's final value using only hardware watchpoints.
11199
11200      However, I don't think that the values returned by inferior
11201      function calls are special in any way.  So this function may not
11202      notice that an expression involving an inferior function call
11203      can't be watched with hardware watchpoints.  FIXME.  */
11204   for (; v; v = value_next (v))
11205     {
11206       if (VALUE_LVAL (v) == lval_memory)
11207         {
11208           if (v != head && value_lazy (v))
11209             /* A lazy memory lvalue in the chain is one that GDB never
11210                needed to fetch; we either just used its address (e.g.,
11211                `a' in `a.b') or we never needed it at all (e.g., `a'
11212                in `a,b').  This doesn't apply to HEAD; if that is
11213                lazy then it was not readable, but watch it anyway.  */
11214             ;
11215           else
11216             {
11217               /* Ahh, memory we actually used!  Check if we can cover
11218                  it with hardware watchpoints.  */
11219               struct type *vtype = check_typedef (value_type (v));
11220
11221               /* We only watch structs and arrays if user asked for it
11222                  explicitly, never if they just happen to appear in a
11223                  middle of some value chain.  */
11224               if (v == head
11225                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11226                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11227                 {
11228                   CORE_ADDR vaddr = value_address (v);
11229                   int len;
11230                   int num_regs;
11231
11232                   len = (target_exact_watchpoints
11233                          && is_scalar_type_recursive (vtype))?
11234                     1 : TYPE_LENGTH (value_type (v));
11235
11236                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11237                   if (!num_regs)
11238                     return 0;
11239                   else
11240                     found_memory_cnt += num_regs;
11241                 }
11242             }
11243         }
11244       else if (VALUE_LVAL (v) != not_lval
11245                && deprecated_value_modifiable (v) == 0)
11246         return 0;       /* These are values from the history (e.g., $1).  */
11247       else if (VALUE_LVAL (v) == lval_register)
11248         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11249     }
11250
11251   /* The expression itself looks suitable for using a hardware
11252      watchpoint, but give the target machine a chance to reject it.  */
11253   return found_memory_cnt;
11254 }
11255
11256 void
11257 watch_command_wrapper (char *arg, int from_tty, int internal)
11258 {
11259   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11260 }
11261
11262 /* A helper function that looks for the "-location" argument and then
11263    calls watch_command_1.  */
11264
11265 static void
11266 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11267 {
11268   int just_location = 0;
11269
11270   if (arg
11271       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11272           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11273     {
11274       arg = skip_spaces (arg);
11275       just_location = 1;
11276     }
11277
11278   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11279 }
11280
11281 static void
11282 watch_command (char *arg, int from_tty)
11283 {
11284   watch_maybe_just_location (arg, hw_write, from_tty);
11285 }
11286
11287 void
11288 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11289 {
11290   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11291 }
11292
11293 static void
11294 rwatch_command (char *arg, int from_tty)
11295 {
11296   watch_maybe_just_location (arg, hw_read, from_tty);
11297 }
11298
11299 void
11300 awatch_command_wrapper (char *arg, int from_tty, int internal)
11301 {
11302   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11303 }
11304
11305 static void
11306 awatch_command (char *arg, int from_tty)
11307 {
11308   watch_maybe_just_location (arg, hw_access, from_tty);
11309 }
11310 \f
11311
11312 /* Helper routines for the until_command routine in infcmd.c.  Here
11313    because it uses the mechanisms of breakpoints.  */
11314
11315 struct until_break_command_continuation_args
11316 {
11317   struct breakpoint *breakpoint;
11318   struct breakpoint *breakpoint2;
11319   int thread_num;
11320 };
11321
11322 /* This function is called by fetch_inferior_event via the
11323    cmd_continuation pointer, to complete the until command.  It takes
11324    care of cleaning up the temporary breakpoints set up by the until
11325    command.  */
11326 static void
11327 until_break_command_continuation (void *arg, int err)
11328 {
11329   struct until_break_command_continuation_args *a = arg;
11330
11331   delete_breakpoint (a->breakpoint);
11332   if (a->breakpoint2)
11333     delete_breakpoint (a->breakpoint2);
11334   delete_longjmp_breakpoint (a->thread_num);
11335 }
11336
11337 void
11338 until_break_command (char *arg, int from_tty, int anywhere)
11339 {
11340   struct symtabs_and_lines sals;
11341   struct symtab_and_line sal;
11342   struct frame_info *frame;
11343   struct gdbarch *frame_gdbarch;
11344   struct frame_id stack_frame_id;
11345   struct frame_id caller_frame_id;
11346   struct breakpoint *breakpoint;
11347   struct breakpoint *breakpoint2 = NULL;
11348   struct cleanup *old_chain;
11349   int thread;
11350   struct thread_info *tp;
11351
11352   clear_proceed_status ();
11353
11354   /* Set a breakpoint where the user wants it and at return from
11355      this function.  */
11356
11357   if (last_displayed_sal_is_valid ())
11358     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11359                           get_last_displayed_symtab (),
11360                           get_last_displayed_line ());
11361   else
11362     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11363                           (struct symtab *) NULL, 0);
11364
11365   if (sals.nelts != 1)
11366     error (_("Couldn't get information on specified line."));
11367
11368   sal = sals.sals[0];
11369   xfree (sals.sals);    /* malloc'd, so freed.  */
11370
11371   if (*arg)
11372     error (_("Junk at end of arguments."));
11373
11374   resolve_sal_pc (&sal);
11375
11376   tp = inferior_thread ();
11377   thread = tp->num;
11378
11379   old_chain = make_cleanup (null_cleanup, NULL);
11380
11381   /* Note linespec handling above invalidates the frame chain.
11382      Installing a breakpoint also invalidates the frame chain (as it
11383      may need to switch threads), so do any frame handling before
11384      that.  */
11385
11386   frame = get_selected_frame (NULL);
11387   frame_gdbarch = get_frame_arch (frame);
11388   stack_frame_id = get_stack_frame_id (frame);
11389   caller_frame_id = frame_unwind_caller_id (frame);
11390
11391   /* Keep within the current frame, or in frames called by the current
11392      one.  */
11393
11394   if (frame_id_p (caller_frame_id))
11395     {
11396       struct symtab_and_line sal2;
11397
11398       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11399       sal2.pc = frame_unwind_caller_pc (frame);
11400       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11401                                               sal2,
11402                                               caller_frame_id,
11403                                               bp_until);
11404       make_cleanup_delete_breakpoint (breakpoint2);
11405
11406       set_longjmp_breakpoint (tp, caller_frame_id);
11407       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11408     }
11409
11410   /* set_momentary_breakpoint could invalidate FRAME.  */
11411   frame = NULL;
11412
11413   if (anywhere)
11414     /* If the user told us to continue until a specified location,
11415        we don't specify a frame at which we need to stop.  */
11416     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11417                                            null_frame_id, bp_until);
11418   else
11419     /* Otherwise, specify the selected frame, because we want to stop
11420        only at the very same frame.  */
11421     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11422                                            stack_frame_id, bp_until);
11423   make_cleanup_delete_breakpoint (breakpoint);
11424
11425   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11426
11427   /* If we are running asynchronously, and proceed call above has
11428      actually managed to start the target, arrange for breakpoints to
11429      be deleted when the target stops.  Otherwise, we're already
11430      stopped and delete breakpoints via cleanup chain.  */
11431
11432   if (target_can_async_p () && is_running (inferior_ptid))
11433     {
11434       struct until_break_command_continuation_args *args;
11435       args = xmalloc (sizeof (*args));
11436
11437       args->breakpoint = breakpoint;
11438       args->breakpoint2 = breakpoint2;
11439       args->thread_num = thread;
11440
11441       discard_cleanups (old_chain);
11442       add_continuation (inferior_thread (),
11443                         until_break_command_continuation, args,
11444                         xfree);
11445     }
11446   else
11447     do_cleanups (old_chain);
11448 }
11449
11450 /* This function attempts to parse an optional "if <cond>" clause
11451    from the arg string.  If one is not found, it returns NULL.
11452
11453    Else, it returns a pointer to the condition string.  (It does not
11454    attempt to evaluate the string against a particular block.)  And,
11455    it updates arg to point to the first character following the parsed
11456    if clause in the arg string.  */
11457
11458 char *
11459 ep_parse_optional_if_clause (char **arg)
11460 {
11461   char *cond_string;
11462
11463   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11464     return NULL;
11465
11466   /* Skip the "if" keyword.  */
11467   (*arg) += 2;
11468
11469   /* Skip any extra leading whitespace, and record the start of the
11470      condition string.  */
11471   *arg = skip_spaces (*arg);
11472   cond_string = *arg;
11473
11474   /* Assume that the condition occupies the remainder of the arg
11475      string.  */
11476   (*arg) += strlen (cond_string);
11477
11478   return cond_string;
11479 }
11480
11481 /* Commands to deal with catching events, such as signals, exceptions,
11482    process start/exit, etc.  */
11483
11484 typedef enum
11485 {
11486   catch_fork_temporary, catch_vfork_temporary,
11487   catch_fork_permanent, catch_vfork_permanent
11488 }
11489 catch_fork_kind;
11490
11491 static void
11492 catch_fork_command_1 (char *arg, int from_tty, 
11493                       struct cmd_list_element *command)
11494 {
11495   struct gdbarch *gdbarch = get_current_arch ();
11496   char *cond_string = NULL;
11497   catch_fork_kind fork_kind;
11498   int tempflag;
11499
11500   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11501   tempflag = (fork_kind == catch_fork_temporary
11502               || fork_kind == catch_vfork_temporary);
11503
11504   if (!arg)
11505     arg = "";
11506   arg = skip_spaces (arg);
11507
11508   /* The allowed syntax is:
11509      catch [v]fork
11510      catch [v]fork if <cond>
11511
11512      First, check if there's an if clause.  */
11513   cond_string = ep_parse_optional_if_clause (&arg);
11514
11515   if ((*arg != '\0') && !isspace (*arg))
11516     error (_("Junk at end of arguments."));
11517
11518   /* If this target supports it, create a fork or vfork catchpoint
11519      and enable reporting of such events.  */
11520   switch (fork_kind)
11521     {
11522     case catch_fork_temporary:
11523     case catch_fork_permanent:
11524       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11525                                           &catch_fork_breakpoint_ops);
11526       break;
11527     case catch_vfork_temporary:
11528     case catch_vfork_permanent:
11529       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11530                                           &catch_vfork_breakpoint_ops);
11531       break;
11532     default:
11533       error (_("unsupported or unknown fork kind; cannot catch it"));
11534       break;
11535     }
11536 }
11537
11538 static void
11539 catch_exec_command_1 (char *arg, int from_tty, 
11540                       struct cmd_list_element *command)
11541 {
11542   struct exec_catchpoint *c;
11543   struct gdbarch *gdbarch = get_current_arch ();
11544   int tempflag;
11545   char *cond_string = NULL;
11546
11547   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11548
11549   if (!arg)
11550     arg = "";
11551   arg = skip_spaces (arg);
11552
11553   /* The allowed syntax is:
11554      catch exec
11555      catch exec if <cond>
11556
11557      First, check if there's an if clause.  */
11558   cond_string = ep_parse_optional_if_clause (&arg);
11559
11560   if ((*arg != '\0') && !isspace (*arg))
11561     error (_("Junk at end of arguments."));
11562
11563   c = XNEW (struct exec_catchpoint);
11564   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11565                    &catch_exec_breakpoint_ops);
11566   c->exec_pathname = NULL;
11567
11568   install_breakpoint (0, &c->base, 1);
11569 }
11570
11571 void
11572 init_ada_exception_breakpoint (struct breakpoint *b,
11573                                struct gdbarch *gdbarch,
11574                                struct symtab_and_line sal,
11575                                char *addr_string,
11576                                const struct breakpoint_ops *ops,
11577                                int tempflag,
11578                                int from_tty)
11579 {
11580   if (from_tty)
11581     {
11582       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11583       if (!loc_gdbarch)
11584         loc_gdbarch = gdbarch;
11585
11586       describe_other_breakpoints (loc_gdbarch,
11587                                   sal.pspace, sal.pc, sal.section, -1);
11588       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11589          version for exception catchpoints, because two catchpoints
11590          used for different exception names will use the same address.
11591          In this case, a "breakpoint ... also set at..." warning is
11592          unproductive.  Besides, the warning phrasing is also a bit
11593          inappropriate, we should use the word catchpoint, and tell
11594          the user what type of catchpoint it is.  The above is good
11595          enough for now, though.  */
11596     }
11597
11598   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11599
11600   b->enable_state = bp_enabled;
11601   b->disposition = tempflag ? disp_del : disp_donttouch;
11602   b->addr_string = addr_string;
11603   b->language = language_ada;
11604 }
11605
11606 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11607    filter list, or NULL if no filtering is required.  */
11608 static VEC(int) *
11609 catch_syscall_split_args (char *arg)
11610 {
11611   VEC(int) *result = NULL;
11612   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11613
11614   while (*arg != '\0')
11615     {
11616       int i, syscall_number;
11617       char *endptr;
11618       char cur_name[128];
11619       struct syscall s;
11620
11621       /* Skip whitespace.  */
11622       arg = skip_spaces (arg);
11623
11624       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11625         cur_name[i] = arg[i];
11626       cur_name[i] = '\0';
11627       arg += i;
11628
11629       /* Check if the user provided a syscall name or a number.  */
11630       syscall_number = (int) strtol (cur_name, &endptr, 0);
11631       if (*endptr == '\0')
11632         get_syscall_by_number (syscall_number, &s);
11633       else
11634         {
11635           /* We have a name.  Let's check if it's valid and convert it
11636              to a number.  */
11637           get_syscall_by_name (cur_name, &s);
11638
11639           if (s.number == UNKNOWN_SYSCALL)
11640             /* Here we have to issue an error instead of a warning,
11641                because GDB cannot do anything useful if there's no
11642                syscall number to be caught.  */
11643             error (_("Unknown syscall name '%s'."), cur_name);
11644         }
11645
11646       /* Ok, it's valid.  */
11647       VEC_safe_push (int, result, s.number);
11648     }
11649
11650   discard_cleanups (cleanup);
11651   return result;
11652 }
11653
11654 /* Implement the "catch syscall" command.  */
11655
11656 static void
11657 catch_syscall_command_1 (char *arg, int from_tty, 
11658                          struct cmd_list_element *command)
11659 {
11660   int tempflag;
11661   VEC(int) *filter;
11662   struct syscall s;
11663   struct gdbarch *gdbarch = get_current_arch ();
11664
11665   /* Checking if the feature if supported.  */
11666   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11667     error (_("The feature 'catch syscall' is not supported on \
11668 this architecture yet."));
11669
11670   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11671
11672   arg = skip_spaces (arg);
11673
11674   /* We need to do this first "dummy" translation in order
11675      to get the syscall XML file loaded or, most important,
11676      to display a warning to the user if there's no XML file
11677      for his/her architecture.  */
11678   get_syscall_by_number (0, &s);
11679
11680   /* The allowed syntax is:
11681      catch syscall
11682      catch syscall <name | number> [<name | number> ... <name | number>]
11683
11684      Let's check if there's a syscall name.  */
11685
11686   if (arg != NULL)
11687     filter = catch_syscall_split_args (arg);
11688   else
11689     filter = NULL;
11690
11691   create_syscall_event_catchpoint (tempflag, filter,
11692                                    &catch_syscall_breakpoint_ops);
11693 }
11694
11695 static void
11696 catch_command (char *arg, int from_tty)
11697 {
11698   error (_("Catch requires an event name."));
11699 }
11700 \f
11701
11702 static void
11703 tcatch_command (char *arg, int from_tty)
11704 {
11705   error (_("Catch requires an event name."));
11706 }
11707
11708 /* A qsort comparison function that sorts breakpoints in order.  */
11709
11710 static int
11711 compare_breakpoints (const void *a, const void *b)
11712 {
11713   const breakpoint_p *ba = a;
11714   uintptr_t ua = (uintptr_t) *ba;
11715   const breakpoint_p *bb = b;
11716   uintptr_t ub = (uintptr_t) *bb;
11717
11718   if ((*ba)->number < (*bb)->number)
11719     return -1;
11720   else if ((*ba)->number > (*bb)->number)
11721     return 1;
11722
11723   /* Now sort by address, in case we see, e..g, two breakpoints with
11724      the number 0.  */
11725   if (ua < ub)
11726     return -1;
11727   return ua > ub ? 1 : 0;
11728 }
11729
11730 /* Delete breakpoints by address or line.  */
11731
11732 static void
11733 clear_command (char *arg, int from_tty)
11734 {
11735   struct breakpoint *b, *prev;
11736   VEC(breakpoint_p) *found = 0;
11737   int ix;
11738   int default_match;
11739   struct symtabs_and_lines sals;
11740   struct symtab_and_line sal;
11741   int i;
11742   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11743
11744   if (arg)
11745     {
11746       sals = decode_line_with_current_source (arg,
11747                                               (DECODE_LINE_FUNFIRSTLINE
11748                                                | DECODE_LINE_LIST_MODE));
11749       make_cleanup (xfree, sals.sals);
11750       default_match = 0;
11751     }
11752   else
11753     {
11754       sals.sals = (struct symtab_and_line *)
11755         xmalloc (sizeof (struct symtab_and_line));
11756       make_cleanup (xfree, sals.sals);
11757       init_sal (&sal);          /* Initialize to zeroes.  */
11758
11759       /* Set sal's line, symtab, pc, and pspace to the values
11760          corresponding to the last call to print_frame_info.  If the
11761          codepoint is not valid, this will set all the fields to 0.  */
11762       get_last_displayed_sal (&sal);
11763       if (sal.symtab == 0)
11764         error (_("No source file specified."));
11765
11766       sals.sals[0] = sal;
11767       sals.nelts = 1;
11768
11769       default_match = 1;
11770     }
11771
11772   /* We don't call resolve_sal_pc here.  That's not as bad as it
11773      seems, because all existing breakpoints typically have both
11774      file/line and pc set.  So, if clear is given file/line, we can
11775      match this to existing breakpoint without obtaining pc at all.
11776
11777      We only support clearing given the address explicitly 
11778      present in breakpoint table.  Say, we've set breakpoint 
11779      at file:line.  There were several PC values for that file:line,
11780      due to optimization, all in one block.
11781
11782      We've picked one PC value.  If "clear" is issued with another
11783      PC corresponding to the same file:line, the breakpoint won't
11784      be cleared.  We probably can still clear the breakpoint, but 
11785      since the other PC value is never presented to user, user
11786      can only find it by guessing, and it does not seem important
11787      to support that.  */
11788
11789   /* For each line spec given, delete bps which correspond to it.  Do
11790      it in two passes, solely to preserve the current behavior that
11791      from_tty is forced true if we delete more than one
11792      breakpoint.  */
11793
11794   found = NULL;
11795   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11796   for (i = 0; i < sals.nelts; i++)
11797     {
11798       const char *sal_fullname;
11799
11800       /* If exact pc given, clear bpts at that pc.
11801          If line given (pc == 0), clear all bpts on specified line.
11802          If defaulting, clear all bpts on default line
11803          or at default pc.
11804
11805          defaulting    sal.pc != 0    tests to do
11806
11807          0              1             pc
11808          1              1             pc _and_ line
11809          0              0             line
11810          1              0             <can't happen> */
11811
11812       sal = sals.sals[i];
11813       sal_fullname = (sal.symtab == NULL
11814                       ? NULL : symtab_to_fullname (sal.symtab));
11815
11816       /* Find all matching breakpoints and add them to 'found'.  */
11817       ALL_BREAKPOINTS (b)
11818         {
11819           int match = 0;
11820           /* Are we going to delete b?  */
11821           if (b->type != bp_none && !is_watchpoint (b))
11822             {
11823               struct bp_location *loc = b->loc;
11824               for (; loc; loc = loc->next)
11825                 {
11826                   /* If the user specified file:line, don't allow a PC
11827                      match.  This matches historical gdb behavior.  */
11828                   int pc_match = (!sal.explicit_line
11829                                   && sal.pc
11830                                   && (loc->pspace == sal.pspace)
11831                                   && (loc->address == sal.pc)
11832                                   && (!section_is_overlay (loc->section)
11833                                       || loc->section == sal.section));
11834                   int line_match = 0;
11835
11836                   if ((default_match || sal.explicit_line)
11837                       && loc->symtab != NULL
11838                       && sal_fullname != NULL
11839                       && sal.pspace == loc->pspace
11840                       && loc->line_number == sal.line
11841                       && filename_cmp (symtab_to_fullname (loc->symtab),
11842                                        sal_fullname) == 0)
11843                     line_match = 1;
11844
11845                   if (pc_match || line_match)
11846                     {
11847                       match = 1;
11848                       break;
11849                     }
11850                 }
11851             }
11852
11853           if (match)
11854             VEC_safe_push(breakpoint_p, found, b);
11855         }
11856     }
11857
11858   /* Now go thru the 'found' chain and delete them.  */
11859   if (VEC_empty(breakpoint_p, found))
11860     {
11861       if (arg)
11862         error (_("No breakpoint at %s."), arg);
11863       else
11864         error (_("No breakpoint at this line."));
11865     }
11866
11867   /* Remove duplicates from the vec.  */
11868   qsort (VEC_address (breakpoint_p, found),
11869          VEC_length (breakpoint_p, found),
11870          sizeof (breakpoint_p),
11871          compare_breakpoints);
11872   prev = VEC_index (breakpoint_p, found, 0);
11873   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11874     {
11875       if (b == prev)
11876         {
11877           VEC_ordered_remove (breakpoint_p, found, ix);
11878           --ix;
11879         }
11880     }
11881
11882   if (VEC_length(breakpoint_p, found) > 1)
11883     from_tty = 1;       /* Always report if deleted more than one.  */
11884   if (from_tty)
11885     {
11886       if (VEC_length(breakpoint_p, found) == 1)
11887         printf_unfiltered (_("Deleted breakpoint "));
11888       else
11889         printf_unfiltered (_("Deleted breakpoints "));
11890     }
11891
11892   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11893     {
11894       if (from_tty)
11895         printf_unfiltered ("%d ", b->number);
11896       delete_breakpoint (b);
11897     }
11898   if (from_tty)
11899     putchar_unfiltered ('\n');
11900
11901   do_cleanups (cleanups);
11902 }
11903 \f
11904 /* Delete breakpoint in BS if they are `delete' breakpoints and
11905    all breakpoints that are marked for deletion, whether hit or not.
11906    This is called after any breakpoint is hit, or after errors.  */
11907
11908 void
11909 breakpoint_auto_delete (bpstat bs)
11910 {
11911   struct breakpoint *b, *b_tmp;
11912
11913   for (; bs; bs = bs->next)
11914     if (bs->breakpoint_at
11915         && bs->breakpoint_at->disposition == disp_del
11916         && bs->stop)
11917       delete_breakpoint (bs->breakpoint_at);
11918
11919   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11920   {
11921     if (b->disposition == disp_del_at_next_stop)
11922       delete_breakpoint (b);
11923   }
11924 }
11925
11926 /* A comparison function for bp_location AP and BP being interfaced to
11927    qsort.  Sort elements primarily by their ADDRESS (no matter what
11928    does breakpoint_address_is_meaningful say for its OWNER),
11929    secondarily by ordering first bp_permanent OWNERed elements and
11930    terciarily just ensuring the array is sorted stable way despite
11931    qsort being an unstable algorithm.  */
11932
11933 static int
11934 bp_location_compare (const void *ap, const void *bp)
11935 {
11936   struct bp_location *a = *(void **) ap;
11937   struct bp_location *b = *(void **) bp;
11938   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11939   int a_perm = a->owner->enable_state == bp_permanent;
11940   int b_perm = b->owner->enable_state == bp_permanent;
11941
11942   if (a->address != b->address)
11943     return (a->address > b->address) - (a->address < b->address);
11944
11945   /* Sort locations at the same address by their pspace number, keeping
11946      locations of the same inferior (in a multi-inferior environment)
11947      grouped.  */
11948
11949   if (a->pspace->num != b->pspace->num)
11950     return ((a->pspace->num > b->pspace->num)
11951             - (a->pspace->num < b->pspace->num));
11952
11953   /* Sort permanent breakpoints first.  */
11954   if (a_perm != b_perm)
11955     return (a_perm < b_perm) - (a_perm > b_perm);
11956
11957   /* Make the internal GDB representation stable across GDB runs
11958      where A and B memory inside GDB can differ.  Breakpoint locations of
11959      the same type at the same address can be sorted in arbitrary order.  */
11960
11961   if (a->owner->number != b->owner->number)
11962     return ((a->owner->number > b->owner->number)
11963             - (a->owner->number < b->owner->number));
11964
11965   return (a > b) - (a < b);
11966 }
11967
11968 /* Set bp_location_placed_address_before_address_max and
11969    bp_location_shadow_len_after_address_max according to the current
11970    content of the bp_location array.  */
11971
11972 static void
11973 bp_location_target_extensions_update (void)
11974 {
11975   struct bp_location *bl, **blp_tmp;
11976
11977   bp_location_placed_address_before_address_max = 0;
11978   bp_location_shadow_len_after_address_max = 0;
11979
11980   ALL_BP_LOCATIONS (bl, blp_tmp)
11981     {
11982       CORE_ADDR start, end, addr;
11983
11984       if (!bp_location_has_shadow (bl))
11985         continue;
11986
11987       start = bl->target_info.placed_address;
11988       end = start + bl->target_info.shadow_len;
11989
11990       gdb_assert (bl->address >= start);
11991       addr = bl->address - start;
11992       if (addr > bp_location_placed_address_before_address_max)
11993         bp_location_placed_address_before_address_max = addr;
11994
11995       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11996
11997       gdb_assert (bl->address < end);
11998       addr = end - bl->address;
11999       if (addr > bp_location_shadow_len_after_address_max)
12000         bp_location_shadow_len_after_address_max = addr;
12001     }
12002 }
12003
12004 /* Download tracepoint locations if they haven't been.  */
12005
12006 static void
12007 download_tracepoint_locations (void)
12008 {
12009   struct breakpoint *b;
12010   struct cleanup *old_chain;
12011
12012   if (!target_can_download_tracepoint ())
12013     return;
12014
12015   old_chain = save_current_space_and_thread ();
12016
12017   ALL_TRACEPOINTS (b)
12018     {
12019       struct bp_location *bl;
12020       struct tracepoint *t;
12021       int bp_location_downloaded = 0;
12022
12023       if ((b->type == bp_fast_tracepoint
12024            ? !may_insert_fast_tracepoints
12025            : !may_insert_tracepoints))
12026         continue;
12027
12028       for (bl = b->loc; bl; bl = bl->next)
12029         {
12030           /* In tracepoint, locations are _never_ duplicated, so
12031              should_be_inserted is equivalent to
12032              unduplicated_should_be_inserted.  */
12033           if (!should_be_inserted (bl) || bl->inserted)
12034             continue;
12035
12036           switch_to_program_space_and_thread (bl->pspace);
12037
12038           target_download_tracepoint (bl);
12039
12040           bl->inserted = 1;
12041           bp_location_downloaded = 1;
12042         }
12043       t = (struct tracepoint *) b;
12044       t->number_on_target = b->number;
12045       if (bp_location_downloaded)
12046         observer_notify_breakpoint_modified (b);
12047     }
12048
12049   do_cleanups (old_chain);
12050 }
12051
12052 /* Swap the insertion/duplication state between two locations.  */
12053
12054 static void
12055 swap_insertion (struct bp_location *left, struct bp_location *right)
12056 {
12057   const int left_inserted = left->inserted;
12058   const int left_duplicate = left->duplicate;
12059   const int left_needs_update = left->needs_update;
12060   const struct bp_target_info left_target_info = left->target_info;
12061
12062   /* Locations of tracepoints can never be duplicated.  */
12063   if (is_tracepoint (left->owner))
12064     gdb_assert (!left->duplicate);
12065   if (is_tracepoint (right->owner))
12066     gdb_assert (!right->duplicate);
12067
12068   left->inserted = right->inserted;
12069   left->duplicate = right->duplicate;
12070   left->needs_update = right->needs_update;
12071   left->target_info = right->target_info;
12072   right->inserted = left_inserted;
12073   right->duplicate = left_duplicate;
12074   right->needs_update = left_needs_update;
12075   right->target_info = left_target_info;
12076 }
12077
12078 /* Force the re-insertion of the locations at ADDRESS.  This is called
12079    once a new/deleted/modified duplicate location is found and we are evaluating
12080    conditions on the target's side.  Such conditions need to be updated on
12081    the target.  */
12082
12083 static void
12084 force_breakpoint_reinsertion (struct bp_location *bl)
12085 {
12086   struct bp_location **locp = NULL, **loc2p;
12087   struct bp_location *loc;
12088   CORE_ADDR address = 0;
12089   int pspace_num;
12090
12091   address = bl->address;
12092   pspace_num = bl->pspace->num;
12093
12094   /* This is only meaningful if the target is
12095      evaluating conditions and if the user has
12096      opted for condition evaluation on the target's
12097      side.  */
12098   if (gdb_evaluates_breakpoint_condition_p ()
12099       || !target_supports_evaluation_of_breakpoint_conditions ())
12100     return;
12101
12102   /* Flag all breakpoint locations with this address and
12103      the same program space as the location
12104      as "its condition has changed".  We need to
12105      update the conditions on the target's side.  */
12106   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12107     {
12108       loc = *loc2p;
12109
12110       if (!is_breakpoint (loc->owner)
12111           || pspace_num != loc->pspace->num)
12112         continue;
12113
12114       /* Flag the location appropriately.  We use a different state to
12115          let everyone know that we already updated the set of locations
12116          with addr bl->address and program space bl->pspace.  This is so
12117          we don't have to keep calling these functions just to mark locations
12118          that have already been marked.  */
12119       loc->condition_changed = condition_updated;
12120
12121       /* Free the agent expression bytecode as well.  We will compute
12122          it later on.  */
12123       if (loc->cond_bytecode)
12124         {
12125           free_agent_expr (loc->cond_bytecode);
12126           loc->cond_bytecode = NULL;
12127         }
12128     }
12129 }
12130
12131 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12132    into the inferior, only remove already-inserted locations that no
12133    longer should be inserted.  Functions that delete a breakpoint or
12134    breakpoints should pass false, so that deleting a breakpoint
12135    doesn't have the side effect of inserting the locations of other
12136    breakpoints that are marked not-inserted, but should_be_inserted
12137    returns true on them.
12138
12139    This behaviour is useful is situations close to tear-down -- e.g.,
12140    after an exec, while the target still has execution, but breakpoint
12141    shadows of the previous executable image should *NOT* be restored
12142    to the new image; or before detaching, where the target still has
12143    execution and wants to delete breakpoints from GDB's lists, and all
12144    breakpoints had already been removed from the inferior.  */
12145
12146 static void
12147 update_global_location_list (int should_insert)
12148 {
12149   struct breakpoint *b;
12150   struct bp_location **locp, *loc;
12151   struct cleanup *cleanups;
12152   /* Last breakpoint location address that was marked for update.  */
12153   CORE_ADDR last_addr = 0;
12154   /* Last breakpoint location program space that was marked for update.  */
12155   int last_pspace_num = -1;
12156
12157   /* Used in the duplicates detection below.  When iterating over all
12158      bp_locations, points to the first bp_location of a given address.
12159      Breakpoints and watchpoints of different types are never
12160      duplicates of each other.  Keep one pointer for each type of
12161      breakpoint/watchpoint, so we only need to loop over all locations
12162      once.  */
12163   struct bp_location *bp_loc_first;  /* breakpoint */
12164   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12165   struct bp_location *awp_loc_first; /* access watchpoint */
12166   struct bp_location *rwp_loc_first; /* read watchpoint */
12167
12168   /* Saved former bp_location array which we compare against the newly
12169      built bp_location from the current state of ALL_BREAKPOINTS.  */
12170   struct bp_location **old_location, **old_locp;
12171   unsigned old_location_count;
12172
12173   old_location = bp_location;
12174   old_location_count = bp_location_count;
12175   bp_location = NULL;
12176   bp_location_count = 0;
12177   cleanups = make_cleanup (xfree, old_location);
12178
12179   ALL_BREAKPOINTS (b)
12180     for (loc = b->loc; loc; loc = loc->next)
12181       bp_location_count++;
12182
12183   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12184   locp = bp_location;
12185   ALL_BREAKPOINTS (b)
12186     for (loc = b->loc; loc; loc = loc->next)
12187       *locp++ = loc;
12188   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12189          bp_location_compare);
12190
12191   bp_location_target_extensions_update ();
12192
12193   /* Identify bp_location instances that are no longer present in the
12194      new list, and therefore should be freed.  Note that it's not
12195      necessary that those locations should be removed from inferior --
12196      if there's another location at the same address (previously
12197      marked as duplicate), we don't need to remove/insert the
12198      location.
12199      
12200      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12201      and former bp_location array state respectively.  */
12202
12203   locp = bp_location;
12204   for (old_locp = old_location; old_locp < old_location + old_location_count;
12205        old_locp++)
12206     {
12207       struct bp_location *old_loc = *old_locp;
12208       struct bp_location **loc2p;
12209
12210       /* Tells if 'old_loc' is found among the new locations.  If
12211          not, we have to free it.  */
12212       int found_object = 0;
12213       /* Tells if the location should remain inserted in the target.  */
12214       int keep_in_target = 0;
12215       int removed = 0;
12216
12217       /* Skip LOCP entries which will definitely never be needed.
12218          Stop either at or being the one matching OLD_LOC.  */
12219       while (locp < bp_location + bp_location_count
12220              && (*locp)->address < old_loc->address)
12221         locp++;
12222
12223       for (loc2p = locp;
12224            (loc2p < bp_location + bp_location_count
12225             && (*loc2p)->address == old_loc->address);
12226            loc2p++)
12227         {
12228           /* Check if this is a new/duplicated location or a duplicated
12229              location that had its condition modified.  If so, we want to send
12230              its condition to the target if evaluation of conditions is taking
12231              place there.  */
12232           if ((*loc2p)->condition_changed == condition_modified
12233               && (last_addr != old_loc->address
12234                   || last_pspace_num != old_loc->pspace->num))
12235             {
12236               force_breakpoint_reinsertion (*loc2p);
12237               last_pspace_num = old_loc->pspace->num;
12238             }
12239
12240           if (*loc2p == old_loc)
12241             found_object = 1;
12242         }
12243
12244       /* We have already handled this address, update it so that we don't
12245          have to go through updates again.  */
12246       last_addr = old_loc->address;
12247
12248       /* Target-side condition evaluation: Handle deleted locations.  */
12249       if (!found_object)
12250         force_breakpoint_reinsertion (old_loc);
12251
12252       /* If this location is no longer present, and inserted, look if
12253          there's maybe a new location at the same address.  If so,
12254          mark that one inserted, and don't remove this one.  This is
12255          needed so that we don't have a time window where a breakpoint
12256          at certain location is not inserted.  */
12257
12258       if (old_loc->inserted)
12259         {
12260           /* If the location is inserted now, we might have to remove
12261              it.  */
12262
12263           if (found_object && should_be_inserted (old_loc))
12264             {
12265               /* The location is still present in the location list,
12266                  and still should be inserted.  Don't do anything.  */
12267               keep_in_target = 1;
12268             }
12269           else
12270             {
12271               /* This location still exists, but it won't be kept in the
12272                  target since it may have been disabled.  We proceed to
12273                  remove its target-side condition.  */
12274
12275               /* The location is either no longer present, or got
12276                  disabled.  See if there's another location at the
12277                  same address, in which case we don't need to remove
12278                  this one from the target.  */
12279
12280               /* OLD_LOC comes from existing struct breakpoint.  */
12281               if (breakpoint_address_is_meaningful (old_loc->owner))
12282                 {
12283                   for (loc2p = locp;
12284                        (loc2p < bp_location + bp_location_count
12285                         && (*loc2p)->address == old_loc->address);
12286                        loc2p++)
12287                     {
12288                       struct bp_location *loc2 = *loc2p;
12289
12290                       if (breakpoint_locations_match (loc2, old_loc))
12291                         {
12292                           /* Read watchpoint locations are switched to
12293                              access watchpoints, if the former are not
12294                              supported, but the latter are.  */
12295                           if (is_hardware_watchpoint (old_loc->owner))
12296                             {
12297                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12298                               loc2->watchpoint_type = old_loc->watchpoint_type;
12299                             }
12300
12301                           /* loc2 is a duplicated location. We need to check
12302                              if it should be inserted in case it will be
12303                              unduplicated.  */
12304                           if (loc2 != old_loc
12305                               && unduplicated_should_be_inserted (loc2))
12306                             {
12307                               swap_insertion (old_loc, loc2);
12308                               keep_in_target = 1;
12309                               break;
12310                             }
12311                         }
12312                     }
12313                 }
12314             }
12315
12316           if (!keep_in_target)
12317             {
12318               if (remove_breakpoint (old_loc, mark_uninserted))
12319                 {
12320                   /* This is just about all we can do.  We could keep
12321                      this location on the global list, and try to
12322                      remove it next time, but there's no particular
12323                      reason why we will succeed next time.
12324                      
12325                      Note that at this point, old_loc->owner is still
12326                      valid, as delete_breakpoint frees the breakpoint
12327                      only after calling us.  */
12328                   printf_filtered (_("warning: Error removing "
12329                                      "breakpoint %d\n"), 
12330                                    old_loc->owner->number);
12331                 }
12332               removed = 1;
12333             }
12334         }
12335
12336       if (!found_object)
12337         {
12338           if (removed && non_stop
12339               && breakpoint_address_is_meaningful (old_loc->owner)
12340               && !is_hardware_watchpoint (old_loc->owner))
12341             {
12342               /* This location was removed from the target.  In
12343                  non-stop mode, a race condition is possible where
12344                  we've removed a breakpoint, but stop events for that
12345                  breakpoint are already queued and will arrive later.
12346                  We apply an heuristic to be able to distinguish such
12347                  SIGTRAPs from other random SIGTRAPs: we keep this
12348                  breakpoint location for a bit, and will retire it
12349                  after we see some number of events.  The theory here
12350                  is that reporting of events should, "on the average",
12351                  be fair, so after a while we'll see events from all
12352                  threads that have anything of interest, and no longer
12353                  need to keep this breakpoint location around.  We
12354                  don't hold locations forever so to reduce chances of
12355                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12356                  SIGTRAP.
12357
12358                  The heuristic failing can be disastrous on
12359                  decr_pc_after_break targets.
12360
12361                  On decr_pc_after_break targets, like e.g., x86-linux,
12362                  if we fail to recognize a late breakpoint SIGTRAP,
12363                  because events_till_retirement has reached 0 too
12364                  soon, we'll fail to do the PC adjustment, and report
12365                  a random SIGTRAP to the user.  When the user resumes
12366                  the inferior, it will most likely immediately crash
12367                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12368                  corrupted, because of being resumed e.g., in the
12369                  middle of a multi-byte instruction, or skipped a
12370                  one-byte instruction.  This was actually seen happen
12371                  on native x86-linux, and should be less rare on
12372                  targets that do not support new thread events, like
12373                  remote, due to the heuristic depending on
12374                  thread_count.
12375
12376                  Mistaking a random SIGTRAP for a breakpoint trap
12377                  causes similar symptoms (PC adjustment applied when
12378                  it shouldn't), but then again, playing with SIGTRAPs
12379                  behind the debugger's back is asking for trouble.
12380
12381                  Since hardware watchpoint traps are always
12382                  distinguishable from other traps, so we don't need to
12383                  apply keep hardware watchpoint moribund locations
12384                  around.  We simply always ignore hardware watchpoint
12385                  traps we can no longer explain.  */
12386
12387               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12388               old_loc->owner = NULL;
12389
12390               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12391             }
12392           else
12393             {
12394               old_loc->owner = NULL;
12395               decref_bp_location (&old_loc);
12396             }
12397         }
12398     }
12399
12400   /* Rescan breakpoints at the same address and section, marking the
12401      first one as "first" and any others as "duplicates".  This is so
12402      that the bpt instruction is only inserted once.  If we have a
12403      permanent breakpoint at the same place as BPT, make that one the
12404      official one, and the rest as duplicates.  Permanent breakpoints
12405      are sorted first for the same address.
12406
12407      Do the same for hardware watchpoints, but also considering the
12408      watchpoint's type (regular/access/read) and length.  */
12409
12410   bp_loc_first = NULL;
12411   wp_loc_first = NULL;
12412   awp_loc_first = NULL;
12413   rwp_loc_first = NULL;
12414   ALL_BP_LOCATIONS (loc, locp)
12415     {
12416       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12417          non-NULL.  */
12418       struct bp_location **loc_first_p;
12419       b = loc->owner;
12420
12421       if (!unduplicated_should_be_inserted (loc)
12422           || !breakpoint_address_is_meaningful (b)
12423           /* Don't detect duplicate for tracepoint locations because they are
12424            never duplicated.  See the comments in field `duplicate' of
12425            `struct bp_location'.  */
12426           || is_tracepoint (b))
12427         {
12428           /* Clear the condition modification flag.  */
12429           loc->condition_changed = condition_unchanged;
12430           continue;
12431         }
12432
12433       /* Permanent breakpoint should always be inserted.  */
12434       if (b->enable_state == bp_permanent && ! loc->inserted)
12435         internal_error (__FILE__, __LINE__,
12436                         _("allegedly permanent breakpoint is not "
12437                         "actually inserted"));
12438
12439       if (b->type == bp_hardware_watchpoint)
12440         loc_first_p = &wp_loc_first;
12441       else if (b->type == bp_read_watchpoint)
12442         loc_first_p = &rwp_loc_first;
12443       else if (b->type == bp_access_watchpoint)
12444         loc_first_p = &awp_loc_first;
12445       else
12446         loc_first_p = &bp_loc_first;
12447
12448       if (*loc_first_p == NULL
12449           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12450           || !breakpoint_locations_match (loc, *loc_first_p))
12451         {
12452           *loc_first_p = loc;
12453           loc->duplicate = 0;
12454
12455           if (is_breakpoint (loc->owner) && loc->condition_changed)
12456             {
12457               loc->needs_update = 1;
12458               /* Clear the condition modification flag.  */
12459               loc->condition_changed = condition_unchanged;
12460             }
12461           continue;
12462         }
12463
12464
12465       /* This and the above ensure the invariant that the first location
12466          is not duplicated, and is the inserted one.
12467          All following are marked as duplicated, and are not inserted.  */
12468       if (loc->inserted)
12469         swap_insertion (loc, *loc_first_p);
12470       loc->duplicate = 1;
12471
12472       /* Clear the condition modification flag.  */
12473       loc->condition_changed = condition_unchanged;
12474
12475       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12476           && b->enable_state != bp_permanent)
12477         internal_error (__FILE__, __LINE__,
12478                         _("another breakpoint was inserted on top of "
12479                         "a permanent breakpoint"));
12480     }
12481
12482   if (breakpoints_always_inserted_mode ()
12483       && (have_live_inferiors ()
12484           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12485     {
12486       if (should_insert)
12487         insert_breakpoint_locations ();
12488       else
12489         {
12490           /* Though should_insert is false, we may need to update conditions
12491              on the target's side if it is evaluating such conditions.  We
12492              only update conditions for locations that are marked
12493              "needs_update".  */
12494           update_inserted_breakpoint_locations ();
12495         }
12496     }
12497
12498   if (should_insert)
12499     download_tracepoint_locations ();
12500
12501   do_cleanups (cleanups);
12502 }
12503
12504 void
12505 breakpoint_retire_moribund (void)
12506 {
12507   struct bp_location *loc;
12508   int ix;
12509
12510   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12511     if (--(loc->events_till_retirement) == 0)
12512       {
12513         decref_bp_location (&loc);
12514         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12515         --ix;
12516       }
12517 }
12518
12519 static void
12520 update_global_location_list_nothrow (int inserting)
12521 {
12522   volatile struct gdb_exception e;
12523
12524   TRY_CATCH (e, RETURN_MASK_ERROR)
12525     update_global_location_list (inserting);
12526 }
12527
12528 /* Clear BKP from a BPS.  */
12529
12530 static void
12531 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12532 {
12533   bpstat bs;
12534
12535   for (bs = bps; bs; bs = bs->next)
12536     if (bs->breakpoint_at == bpt)
12537       {
12538         bs->breakpoint_at = NULL;
12539         bs->old_val = NULL;
12540         /* bs->commands will be freed later.  */
12541       }
12542 }
12543
12544 /* Callback for iterate_over_threads.  */
12545 static int
12546 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12547 {
12548   struct breakpoint *bpt = data;
12549
12550   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12551   return 0;
12552 }
12553
12554 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12555    callbacks.  */
12556
12557 static void
12558 say_where (struct breakpoint *b)
12559 {
12560   struct value_print_options opts;
12561
12562   get_user_print_options (&opts);
12563
12564   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12565      single string.  */
12566   if (b->loc == NULL)
12567     {
12568       printf_filtered (_(" (%s) pending."), b->addr_string);
12569     }
12570   else
12571     {
12572       if (opts.addressprint || b->loc->symtab == NULL)
12573         {
12574           printf_filtered (" at ");
12575           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12576                           gdb_stdout);
12577         }
12578       if (b->loc->symtab != NULL)
12579         {
12580           /* If there is a single location, we can print the location
12581              more nicely.  */
12582           if (b->loc->next == NULL)
12583             printf_filtered (": file %s, line %d.",
12584                              symtab_to_filename_for_display (b->loc->symtab),
12585                              b->loc->line_number);
12586           else
12587             /* This is not ideal, but each location may have a
12588                different file name, and this at least reflects the
12589                real situation somewhat.  */
12590             printf_filtered (": %s.", b->addr_string);
12591         }
12592
12593       if (b->loc->next)
12594         {
12595           struct bp_location *loc = b->loc;
12596           int n = 0;
12597           for (; loc; loc = loc->next)
12598             ++n;
12599           printf_filtered (" (%d locations)", n);
12600         }
12601     }
12602 }
12603
12604 /* Default bp_location_ops methods.  */
12605
12606 static void
12607 bp_location_dtor (struct bp_location *self)
12608 {
12609   xfree (self->cond);
12610   if (self->cond_bytecode)
12611     free_agent_expr (self->cond_bytecode);
12612   xfree (self->function_name);
12613 }
12614
12615 static const struct bp_location_ops bp_location_ops =
12616 {
12617   bp_location_dtor
12618 };
12619
12620 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12621    inherit from.  */
12622
12623 static void
12624 base_breakpoint_dtor (struct breakpoint *self)
12625 {
12626   decref_counted_command_line (&self->commands);
12627   xfree (self->cond_string);
12628   xfree (self->extra_string);
12629   xfree (self->addr_string);
12630   xfree (self->filter);
12631   xfree (self->addr_string_range_end);
12632 }
12633
12634 static struct bp_location *
12635 base_breakpoint_allocate_location (struct breakpoint *self)
12636 {
12637   struct bp_location *loc;
12638
12639   loc = XNEW (struct bp_location);
12640   init_bp_location (loc, &bp_location_ops, self);
12641   return loc;
12642 }
12643
12644 static void
12645 base_breakpoint_re_set (struct breakpoint *b)
12646 {
12647   /* Nothing to re-set. */
12648 }
12649
12650 #define internal_error_pure_virtual_called() \
12651   gdb_assert_not_reached ("pure virtual function called")
12652
12653 static int
12654 base_breakpoint_insert_location (struct bp_location *bl)
12655 {
12656   internal_error_pure_virtual_called ();
12657 }
12658
12659 static int
12660 base_breakpoint_remove_location (struct bp_location *bl)
12661 {
12662   internal_error_pure_virtual_called ();
12663 }
12664
12665 static int
12666 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12667                                 struct address_space *aspace,
12668                                 CORE_ADDR bp_addr,
12669                                 const struct target_waitstatus *ws)
12670 {
12671   internal_error_pure_virtual_called ();
12672 }
12673
12674 static void
12675 base_breakpoint_check_status (bpstat bs)
12676 {
12677   /* Always stop.   */
12678 }
12679
12680 /* A "works_in_software_mode" breakpoint_ops method that just internal
12681    errors.  */
12682
12683 static int
12684 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12685 {
12686   internal_error_pure_virtual_called ();
12687 }
12688
12689 /* A "resources_needed" breakpoint_ops method that just internal
12690    errors.  */
12691
12692 static int
12693 base_breakpoint_resources_needed (const struct bp_location *bl)
12694 {
12695   internal_error_pure_virtual_called ();
12696 }
12697
12698 static enum print_stop_action
12699 base_breakpoint_print_it (bpstat bs)
12700 {
12701   internal_error_pure_virtual_called ();
12702 }
12703
12704 static void
12705 base_breakpoint_print_one_detail (const struct breakpoint *self,
12706                                   struct ui_out *uiout)
12707 {
12708   /* nothing */
12709 }
12710
12711 static void
12712 base_breakpoint_print_mention (struct breakpoint *b)
12713 {
12714   internal_error_pure_virtual_called ();
12715 }
12716
12717 static void
12718 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12719 {
12720   internal_error_pure_virtual_called ();
12721 }
12722
12723 static void
12724 base_breakpoint_create_sals_from_address (char **arg,
12725                                           struct linespec_result *canonical,
12726                                           enum bptype type_wanted,
12727                                           char *addr_start,
12728                                           char **copy_arg)
12729 {
12730   internal_error_pure_virtual_called ();
12731 }
12732
12733 static void
12734 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12735                                         struct linespec_result *c,
12736                                         struct linespec_sals *lsal,
12737                                         char *cond_string,
12738                                         char *extra_string,
12739                                         enum bptype type_wanted,
12740                                         enum bpdisp disposition,
12741                                         int thread,
12742                                         int task, int ignore_count,
12743                                         const struct breakpoint_ops *o,
12744                                         int from_tty, int enabled,
12745                                         int internal, unsigned flags)
12746 {
12747   internal_error_pure_virtual_called ();
12748 }
12749
12750 static void
12751 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12752                                  struct symtabs_and_lines *sals)
12753 {
12754   internal_error_pure_virtual_called ();
12755 }
12756
12757 /* The default 'explains_signal' method.  */
12758
12759 static enum bpstat_signal_value
12760 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12761 {
12762   return BPSTAT_SIGNAL_HIDE;
12763 }
12764
12765 struct breakpoint_ops base_breakpoint_ops =
12766 {
12767   base_breakpoint_dtor,
12768   base_breakpoint_allocate_location,
12769   base_breakpoint_re_set,
12770   base_breakpoint_insert_location,
12771   base_breakpoint_remove_location,
12772   base_breakpoint_breakpoint_hit,
12773   base_breakpoint_check_status,
12774   base_breakpoint_resources_needed,
12775   base_breakpoint_works_in_software_mode,
12776   base_breakpoint_print_it,
12777   NULL,
12778   base_breakpoint_print_one_detail,
12779   base_breakpoint_print_mention,
12780   base_breakpoint_print_recreate,
12781   base_breakpoint_create_sals_from_address,
12782   base_breakpoint_create_breakpoints_sal,
12783   base_breakpoint_decode_linespec,
12784   base_breakpoint_explains_signal
12785 };
12786
12787 /* Default breakpoint_ops methods.  */
12788
12789 static void
12790 bkpt_re_set (struct breakpoint *b)
12791 {
12792   /* FIXME: is this still reachable?  */
12793   if (b->addr_string == NULL)
12794     {
12795       /* Anything without a string can't be re-set.  */
12796       delete_breakpoint (b);
12797       return;
12798     }
12799
12800   breakpoint_re_set_default (b);
12801 }
12802
12803 static int
12804 bkpt_insert_location (struct bp_location *bl)
12805 {
12806   if (bl->loc_type == bp_loc_hardware_breakpoint)
12807     return target_insert_hw_breakpoint (bl->gdbarch,
12808                                         &bl->target_info);
12809   else
12810     return target_insert_breakpoint (bl->gdbarch,
12811                                      &bl->target_info);
12812 }
12813
12814 static int
12815 bkpt_remove_location (struct bp_location *bl)
12816 {
12817   if (bl->loc_type == bp_loc_hardware_breakpoint)
12818     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12819   else
12820     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12821 }
12822
12823 static int
12824 bkpt_breakpoint_hit (const struct bp_location *bl,
12825                      struct address_space *aspace, CORE_ADDR bp_addr,
12826                      const struct target_waitstatus *ws)
12827 {
12828   if (ws->kind != TARGET_WAITKIND_STOPPED
12829       || ws->value.sig != GDB_SIGNAL_TRAP)
12830     return 0;
12831
12832   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12833                                  aspace, bp_addr))
12834     return 0;
12835
12836   if (overlay_debugging         /* unmapped overlay section */
12837       && section_is_overlay (bl->section)
12838       && !section_is_mapped (bl->section))
12839     return 0;
12840
12841   return 1;
12842 }
12843
12844 static int
12845 bkpt_resources_needed (const struct bp_location *bl)
12846 {
12847   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12848
12849   return 1;
12850 }
12851
12852 static enum print_stop_action
12853 bkpt_print_it (bpstat bs)
12854 {
12855   struct breakpoint *b;
12856   const struct bp_location *bl;
12857   int bp_temp;
12858   struct ui_out *uiout = current_uiout;
12859
12860   gdb_assert (bs->bp_location_at != NULL);
12861
12862   bl = bs->bp_location_at;
12863   b = bs->breakpoint_at;
12864
12865   bp_temp = b->disposition == disp_del;
12866   if (bl->address != bl->requested_address)
12867     breakpoint_adjustment_warning (bl->requested_address,
12868                                    bl->address,
12869                                    b->number, 1);
12870   annotate_breakpoint (b->number);
12871   if (bp_temp)
12872     ui_out_text (uiout, "\nTemporary breakpoint ");
12873   else
12874     ui_out_text (uiout, "\nBreakpoint ");
12875   if (ui_out_is_mi_like_p (uiout))
12876     {
12877       ui_out_field_string (uiout, "reason",
12878                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12879       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12880     }
12881   ui_out_field_int (uiout, "bkptno", b->number);
12882   ui_out_text (uiout, ", ");
12883
12884   return PRINT_SRC_AND_LOC;
12885 }
12886
12887 static void
12888 bkpt_print_mention (struct breakpoint *b)
12889 {
12890   if (ui_out_is_mi_like_p (current_uiout))
12891     return;
12892
12893   switch (b->type)
12894     {
12895     case bp_breakpoint:
12896     case bp_gnu_ifunc_resolver:
12897       if (b->disposition == disp_del)
12898         printf_filtered (_("Temporary breakpoint"));
12899       else
12900         printf_filtered (_("Breakpoint"));
12901       printf_filtered (_(" %d"), b->number);
12902       if (b->type == bp_gnu_ifunc_resolver)
12903         printf_filtered (_(" at gnu-indirect-function resolver"));
12904       break;
12905     case bp_hardware_breakpoint:
12906       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12907       break;
12908     case bp_dprintf:
12909       printf_filtered (_("Dprintf %d"), b->number);
12910       break;
12911     }
12912
12913   say_where (b);
12914 }
12915
12916 static void
12917 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12918 {
12919   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12920     fprintf_unfiltered (fp, "tbreak");
12921   else if (tp->type == bp_breakpoint)
12922     fprintf_unfiltered (fp, "break");
12923   else if (tp->type == bp_hardware_breakpoint
12924            && tp->disposition == disp_del)
12925     fprintf_unfiltered (fp, "thbreak");
12926   else if (tp->type == bp_hardware_breakpoint)
12927     fprintf_unfiltered (fp, "hbreak");
12928   else
12929     internal_error (__FILE__, __LINE__,
12930                     _("unhandled breakpoint type %d"), (int) tp->type);
12931
12932   fprintf_unfiltered (fp, " %s", tp->addr_string);
12933   print_recreate_thread (tp, fp);
12934 }
12935
12936 static void
12937 bkpt_create_sals_from_address (char **arg,
12938                                struct linespec_result *canonical,
12939                                enum bptype type_wanted,
12940                                char *addr_start, char **copy_arg)
12941 {
12942   create_sals_from_address_default (arg, canonical, type_wanted,
12943                                     addr_start, copy_arg);
12944 }
12945
12946 static void
12947 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12948                              struct linespec_result *canonical,
12949                              struct linespec_sals *lsal,
12950                              char *cond_string,
12951                              char *extra_string,
12952                              enum bptype type_wanted,
12953                              enum bpdisp disposition,
12954                              int thread,
12955                              int task, int ignore_count,
12956                              const struct breakpoint_ops *ops,
12957                              int from_tty, int enabled,
12958                              int internal, unsigned flags)
12959 {
12960   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12961                                   cond_string, extra_string,
12962                                   type_wanted,
12963                                   disposition, thread, task,
12964                                   ignore_count, ops, from_tty,
12965                                   enabled, internal, flags);
12966 }
12967
12968 static void
12969 bkpt_decode_linespec (struct breakpoint *b, char **s,
12970                       struct symtabs_and_lines *sals)
12971 {
12972   decode_linespec_default (b, s, sals);
12973 }
12974
12975 /* Virtual table for internal breakpoints.  */
12976
12977 static void
12978 internal_bkpt_re_set (struct breakpoint *b)
12979 {
12980   switch (b->type)
12981     {
12982       /* Delete overlay event and longjmp master breakpoints; they
12983          will be reset later by breakpoint_re_set.  */
12984     case bp_overlay_event:
12985     case bp_longjmp_master:
12986     case bp_std_terminate_master:
12987     case bp_exception_master:
12988       delete_breakpoint (b);
12989       break;
12990
12991       /* This breakpoint is special, it's set up when the inferior
12992          starts and we really don't want to touch it.  */
12993     case bp_shlib_event:
12994
12995       /* Like bp_shlib_event, this breakpoint type is special.  Once
12996          it is set up, we do not want to touch it.  */
12997     case bp_thread_event:
12998       break;
12999     }
13000 }
13001
13002 static void
13003 internal_bkpt_check_status (bpstat bs)
13004 {
13005   if (bs->breakpoint_at->type == bp_shlib_event)
13006     {
13007       /* If requested, stop when the dynamic linker notifies GDB of
13008          events.  This allows the user to get control and place
13009          breakpoints in initializer routines for dynamically loaded
13010          objects (among other things).  */
13011       bs->stop = stop_on_solib_events;
13012       bs->print = stop_on_solib_events;
13013     }
13014   else
13015     bs->stop = 0;
13016 }
13017
13018 static enum print_stop_action
13019 internal_bkpt_print_it (bpstat bs)
13020 {
13021   struct breakpoint *b;
13022
13023   b = bs->breakpoint_at;
13024
13025   switch (b->type)
13026     {
13027     case bp_shlib_event:
13028       /* Did we stop because the user set the stop_on_solib_events
13029          variable?  (If so, we report this as a generic, "Stopped due
13030          to shlib event" message.) */
13031       print_solib_event (0);
13032       break;
13033
13034     case bp_thread_event:
13035       /* Not sure how we will get here.
13036          GDB should not stop for these breakpoints.  */
13037       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13038       break;
13039
13040     case bp_overlay_event:
13041       /* By analogy with the thread event, GDB should not stop for these.  */
13042       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13043       break;
13044
13045     case bp_longjmp_master:
13046       /* These should never be enabled.  */
13047       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13048       break;
13049
13050     case bp_std_terminate_master:
13051       /* These should never be enabled.  */
13052       printf_filtered (_("std::terminate Master Breakpoint: "
13053                          "gdb should not stop!\n"));
13054       break;
13055
13056     case bp_exception_master:
13057       /* These should never be enabled.  */
13058       printf_filtered (_("Exception Master Breakpoint: "
13059                          "gdb should not stop!\n"));
13060       break;
13061     }
13062
13063   return PRINT_NOTHING;
13064 }
13065
13066 static void
13067 internal_bkpt_print_mention (struct breakpoint *b)
13068 {
13069   /* Nothing to mention.  These breakpoints are internal.  */
13070 }
13071
13072 /* Virtual table for momentary breakpoints  */
13073
13074 static void
13075 momentary_bkpt_re_set (struct breakpoint *b)
13076 {
13077   /* Keep temporary breakpoints, which can be encountered when we step
13078      over a dlopen call and solib_add is resetting the breakpoints.
13079      Otherwise these should have been blown away via the cleanup chain
13080      or by breakpoint_init_inferior when we rerun the executable.  */
13081 }
13082
13083 static void
13084 momentary_bkpt_check_status (bpstat bs)
13085 {
13086   /* Nothing.  The point of these breakpoints is causing a stop.  */
13087 }
13088
13089 static enum print_stop_action
13090 momentary_bkpt_print_it (bpstat bs)
13091 {
13092   struct ui_out *uiout = current_uiout;
13093
13094   if (ui_out_is_mi_like_p (uiout))
13095     {
13096       struct breakpoint *b = bs->breakpoint_at;
13097
13098       switch (b->type)
13099         {
13100         case bp_finish:
13101           ui_out_field_string
13102             (uiout, "reason",
13103              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13104           break;
13105
13106         case bp_until:
13107           ui_out_field_string
13108             (uiout, "reason",
13109              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13110           break;
13111         }
13112     }
13113
13114   return PRINT_UNKNOWN;
13115 }
13116
13117 static void
13118 momentary_bkpt_print_mention (struct breakpoint *b)
13119 {
13120   /* Nothing to mention.  These breakpoints are internal.  */
13121 }
13122
13123 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13124
13125    It gets cleared already on the removal of the first one of such placed
13126    breakpoints.  This is OK as they get all removed altogether.  */
13127
13128 static void
13129 longjmp_bkpt_dtor (struct breakpoint *self)
13130 {
13131   struct thread_info *tp = find_thread_id (self->thread);
13132
13133   if (tp)
13134     tp->initiating_frame = null_frame_id;
13135
13136   momentary_breakpoint_ops.dtor (self);
13137 }
13138
13139 /* Specific methods for probe breakpoints.  */
13140
13141 static int
13142 bkpt_probe_insert_location (struct bp_location *bl)
13143 {
13144   int v = bkpt_insert_location (bl);
13145
13146   if (v == 0)
13147     {
13148       /* The insertion was successful, now let's set the probe's semaphore
13149          if needed.  */
13150       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13151     }
13152
13153   return v;
13154 }
13155
13156 static int
13157 bkpt_probe_remove_location (struct bp_location *bl)
13158 {
13159   /* Let's clear the semaphore before removing the location.  */
13160   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13161
13162   return bkpt_remove_location (bl);
13163 }
13164
13165 static void
13166 bkpt_probe_create_sals_from_address (char **arg,
13167                                      struct linespec_result *canonical,
13168                                      enum bptype type_wanted,
13169                                      char *addr_start, char **copy_arg)
13170 {
13171   struct linespec_sals lsal;
13172
13173   lsal.sals = parse_probes (arg, canonical);
13174
13175   *copy_arg = xstrdup (canonical->addr_string);
13176   lsal.canonical = xstrdup (*copy_arg);
13177
13178   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13179 }
13180
13181 static void
13182 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13183                             struct symtabs_and_lines *sals)
13184 {
13185   *sals = parse_probes (s, NULL);
13186   if (!sals->sals)
13187     error (_("probe not found"));
13188 }
13189
13190 /* The breakpoint_ops structure to be used in tracepoints.  */
13191
13192 static void
13193 tracepoint_re_set (struct breakpoint *b)
13194 {
13195   breakpoint_re_set_default (b);
13196 }
13197
13198 static int
13199 tracepoint_breakpoint_hit (const struct bp_location *bl,
13200                            struct address_space *aspace, CORE_ADDR bp_addr,
13201                            const struct target_waitstatus *ws)
13202 {
13203   /* By definition, the inferior does not report stops at
13204      tracepoints.  */
13205   return 0;
13206 }
13207
13208 static void
13209 tracepoint_print_one_detail (const struct breakpoint *self,
13210                              struct ui_out *uiout)
13211 {
13212   struct tracepoint *tp = (struct tracepoint *) self;
13213   if (tp->static_trace_marker_id)
13214     {
13215       gdb_assert (self->type == bp_static_tracepoint);
13216
13217       ui_out_text (uiout, "\tmarker id is ");
13218       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13219                            tp->static_trace_marker_id);
13220       ui_out_text (uiout, "\n");
13221     }
13222 }
13223
13224 static void
13225 tracepoint_print_mention (struct breakpoint *b)
13226 {
13227   if (ui_out_is_mi_like_p (current_uiout))
13228     return;
13229
13230   switch (b->type)
13231     {
13232     case bp_tracepoint:
13233       printf_filtered (_("Tracepoint"));
13234       printf_filtered (_(" %d"), b->number);
13235       break;
13236     case bp_fast_tracepoint:
13237       printf_filtered (_("Fast tracepoint"));
13238       printf_filtered (_(" %d"), b->number);
13239       break;
13240     case bp_static_tracepoint:
13241       printf_filtered (_("Static tracepoint"));
13242       printf_filtered (_(" %d"), b->number);
13243       break;
13244     default:
13245       internal_error (__FILE__, __LINE__,
13246                       _("unhandled tracepoint type %d"), (int) b->type);
13247     }
13248
13249   say_where (b);
13250 }
13251
13252 static void
13253 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13254 {
13255   struct tracepoint *tp = (struct tracepoint *) self;
13256
13257   if (self->type == bp_fast_tracepoint)
13258     fprintf_unfiltered (fp, "ftrace");
13259   if (self->type == bp_static_tracepoint)
13260     fprintf_unfiltered (fp, "strace");
13261   else if (self->type == bp_tracepoint)
13262     fprintf_unfiltered (fp, "trace");
13263   else
13264     internal_error (__FILE__, __LINE__,
13265                     _("unhandled tracepoint type %d"), (int) self->type);
13266
13267   fprintf_unfiltered (fp, " %s", self->addr_string);
13268   print_recreate_thread (self, fp);
13269
13270   if (tp->pass_count)
13271     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13272 }
13273
13274 static void
13275 tracepoint_create_sals_from_address (char **arg,
13276                                      struct linespec_result *canonical,
13277                                      enum bptype type_wanted,
13278                                      char *addr_start, char **copy_arg)
13279 {
13280   create_sals_from_address_default (arg, canonical, type_wanted,
13281                                     addr_start, copy_arg);
13282 }
13283
13284 static void
13285 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13286                                    struct linespec_result *canonical,
13287                                    struct linespec_sals *lsal,
13288                                    char *cond_string,
13289                                    char *extra_string,
13290                                    enum bptype type_wanted,
13291                                    enum bpdisp disposition,
13292                                    int thread,
13293                                    int task, int ignore_count,
13294                                    const struct breakpoint_ops *ops,
13295                                    int from_tty, int enabled,
13296                                    int internal, unsigned flags)
13297 {
13298   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13299                                   cond_string, extra_string,
13300                                   type_wanted,
13301                                   disposition, thread, task,
13302                                   ignore_count, ops, from_tty,
13303                                   enabled, internal, flags);
13304 }
13305
13306 static void
13307 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13308                             struct symtabs_and_lines *sals)
13309 {
13310   decode_linespec_default (b, s, sals);
13311 }
13312
13313 struct breakpoint_ops tracepoint_breakpoint_ops;
13314
13315 /* The breakpoint_ops structure to be use on tracepoints placed in a
13316    static probe.  */
13317
13318 static void
13319 tracepoint_probe_create_sals_from_address (char **arg,
13320                                            struct linespec_result *canonical,
13321                                            enum bptype type_wanted,
13322                                            char *addr_start, char **copy_arg)
13323 {
13324   /* We use the same method for breakpoint on probes.  */
13325   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13326                                        addr_start, copy_arg);
13327 }
13328
13329 static void
13330 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13331                                   struct symtabs_and_lines *sals)
13332 {
13333   /* We use the same method for breakpoint on probes.  */
13334   bkpt_probe_decode_linespec (b, s, sals);
13335 }
13336
13337 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13338
13339 /* Dprintf breakpoint_ops methods.  */
13340
13341 static void
13342 dprintf_re_set (struct breakpoint *b)
13343 {
13344   breakpoint_re_set_default (b);
13345
13346   /* This breakpoint could have been pending, and be resolved now, and
13347      if so, we should now have the extra string.  If we don't, the
13348      dprintf was malformed when created, but we couldn't tell because
13349      we can't extract the extra string until the location is
13350      resolved.  */
13351   if (b->loc != NULL && b->extra_string == NULL)
13352     error (_("Format string required"));
13353
13354   /* 1 - connect to target 1, that can run breakpoint commands.
13355      2 - create a dprintf, which resolves fine.
13356      3 - disconnect from target 1
13357      4 - connect to target 2, that can NOT run breakpoint commands.
13358
13359      After steps #3/#4, you'll want the dprintf command list to
13360      be updated, because target 1 and 2 may well return different
13361      answers for target_can_run_breakpoint_commands().
13362      Given absence of finer grained resetting, we get to do
13363      it all the time.  */
13364   if (b->extra_string != NULL)
13365     update_dprintf_command_list (b);
13366 }
13367
13368 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13369
13370 static void
13371 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13372 {
13373   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13374                       tp->extra_string);
13375   print_recreate_thread (tp, fp);
13376 }
13377
13378 /* The breakpoint_ops structure to be used on static tracepoints with
13379    markers (`-m').  */
13380
13381 static void
13382 strace_marker_create_sals_from_address (char **arg,
13383                                         struct linespec_result *canonical,
13384                                         enum bptype type_wanted,
13385                                         char *addr_start, char **copy_arg)
13386 {
13387   struct linespec_sals lsal;
13388
13389   lsal.sals = decode_static_tracepoint_spec (arg);
13390
13391   *copy_arg = savestring (addr_start, *arg - addr_start);
13392
13393   canonical->addr_string = xstrdup (*copy_arg);
13394   lsal.canonical = xstrdup (*copy_arg);
13395   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13396 }
13397
13398 static void
13399 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13400                                       struct linespec_result *canonical,
13401                                       struct linespec_sals *lsal,
13402                                       char *cond_string,
13403                                       char *extra_string,
13404                                       enum bptype type_wanted,
13405                                       enum bpdisp disposition,
13406                                       int thread,
13407                                       int task, int ignore_count,
13408                                       const struct breakpoint_ops *ops,
13409                                       int from_tty, int enabled,
13410                                       int internal, unsigned flags)
13411 {
13412   int i;
13413
13414   /* If the user is creating a static tracepoint by marker id
13415      (strace -m MARKER_ID), then store the sals index, so that
13416      breakpoint_re_set can try to match up which of the newly
13417      found markers corresponds to this one, and, don't try to
13418      expand multiple locations for each sal, given than SALS
13419      already should contain all sals for MARKER_ID.  */
13420
13421   for (i = 0; i < lsal->sals.nelts; ++i)
13422     {
13423       struct symtabs_and_lines expanded;
13424       struct tracepoint *tp;
13425       struct cleanup *old_chain;
13426       char *addr_string;
13427
13428       expanded.nelts = 1;
13429       expanded.sals = &lsal->sals.sals[i];
13430
13431       addr_string = xstrdup (canonical->addr_string);
13432       old_chain = make_cleanup (xfree, addr_string);
13433
13434       tp = XCNEW (struct tracepoint);
13435       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13436                            addr_string, NULL,
13437                            cond_string, extra_string,
13438                            type_wanted, disposition,
13439                            thread, task, ignore_count, ops,
13440                            from_tty, enabled, internal, flags,
13441                            canonical->special_display);
13442       /* Given that its possible to have multiple markers with
13443          the same string id, if the user is creating a static
13444          tracepoint by marker id ("strace -m MARKER_ID"), then
13445          store the sals index, so that breakpoint_re_set can
13446          try to match up which of the newly found markers
13447          corresponds to this one  */
13448       tp->static_trace_marker_id_idx = i;
13449
13450       install_breakpoint (internal, &tp->base, 0);
13451
13452       discard_cleanups (old_chain);
13453     }
13454 }
13455
13456 static void
13457 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13458                                struct symtabs_and_lines *sals)
13459 {
13460   struct tracepoint *tp = (struct tracepoint *) b;
13461
13462   *sals = decode_static_tracepoint_spec (s);
13463   if (sals->nelts > tp->static_trace_marker_id_idx)
13464     {
13465       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13466       sals->nelts = 1;
13467     }
13468   else
13469     error (_("marker %s not found"), tp->static_trace_marker_id);
13470 }
13471
13472 static struct breakpoint_ops strace_marker_breakpoint_ops;
13473
13474 static int
13475 strace_marker_p (struct breakpoint *b)
13476 {
13477   return b->ops == &strace_marker_breakpoint_ops;
13478 }
13479
13480 /* Delete a breakpoint and clean up all traces of it in the data
13481    structures.  */
13482
13483 void
13484 delete_breakpoint (struct breakpoint *bpt)
13485 {
13486   struct breakpoint *b;
13487
13488   gdb_assert (bpt != NULL);
13489
13490   /* Has this bp already been deleted?  This can happen because
13491      multiple lists can hold pointers to bp's.  bpstat lists are
13492      especial culprits.
13493
13494      One example of this happening is a watchpoint's scope bp.  When
13495      the scope bp triggers, we notice that the watchpoint is out of
13496      scope, and delete it.  We also delete its scope bp.  But the
13497      scope bp is marked "auto-deleting", and is already on a bpstat.
13498      That bpstat is then checked for auto-deleting bp's, which are
13499      deleted.
13500
13501      A real solution to this problem might involve reference counts in
13502      bp's, and/or giving them pointers back to their referencing
13503      bpstat's, and teaching delete_breakpoint to only free a bp's
13504      storage when no more references were extent.  A cheaper bandaid
13505      was chosen.  */
13506   if (bpt->type == bp_none)
13507     return;
13508
13509   /* At least avoid this stale reference until the reference counting
13510      of breakpoints gets resolved.  */
13511   if (bpt->related_breakpoint != bpt)
13512     {
13513       struct breakpoint *related;
13514       struct watchpoint *w;
13515
13516       if (bpt->type == bp_watchpoint_scope)
13517         w = (struct watchpoint *) bpt->related_breakpoint;
13518       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13519         w = (struct watchpoint *) bpt;
13520       else
13521         w = NULL;
13522       if (w != NULL)
13523         watchpoint_del_at_next_stop (w);
13524
13525       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13526       for (related = bpt; related->related_breakpoint != bpt;
13527            related = related->related_breakpoint);
13528       related->related_breakpoint = bpt->related_breakpoint;
13529       bpt->related_breakpoint = bpt;
13530     }
13531
13532   /* watch_command_1 creates a watchpoint but only sets its number if
13533      update_watchpoint succeeds in creating its bp_locations.  If there's
13534      a problem in that process, we'll be asked to delete the half-created
13535      watchpoint.  In that case, don't announce the deletion.  */
13536   if (bpt->number)
13537     observer_notify_breakpoint_deleted (bpt);
13538
13539   if (breakpoint_chain == bpt)
13540     breakpoint_chain = bpt->next;
13541
13542   ALL_BREAKPOINTS (b)
13543     if (b->next == bpt)
13544     {
13545       b->next = bpt->next;
13546       break;
13547     }
13548
13549   /* Be sure no bpstat's are pointing at the breakpoint after it's
13550      been freed.  */
13551   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13552      in all threads for now.  Note that we cannot just remove bpstats
13553      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13554      commands are associated with the bpstat; if we remove it here,
13555      then the later call to bpstat_do_actions (&stop_bpstat); in
13556      event-top.c won't do anything, and temporary breakpoints with
13557      commands won't work.  */
13558
13559   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13560
13561   /* Now that breakpoint is removed from breakpoint list, update the
13562      global location list.  This will remove locations that used to
13563      belong to this breakpoint.  Do this before freeing the breakpoint
13564      itself, since remove_breakpoint looks at location's owner.  It
13565      might be better design to have location completely
13566      self-contained, but it's not the case now.  */
13567   update_global_location_list (0);
13568
13569   bpt->ops->dtor (bpt);
13570   /* On the chance that someone will soon try again to delete this
13571      same bp, we mark it as deleted before freeing its storage.  */
13572   bpt->type = bp_none;
13573   xfree (bpt);
13574 }
13575
13576 static void
13577 do_delete_breakpoint_cleanup (void *b)
13578 {
13579   delete_breakpoint (b);
13580 }
13581
13582 struct cleanup *
13583 make_cleanup_delete_breakpoint (struct breakpoint *b)
13584 {
13585   return make_cleanup (do_delete_breakpoint_cleanup, b);
13586 }
13587
13588 /* Iterator function to call a user-provided callback function once
13589    for each of B and its related breakpoints.  */
13590
13591 static void
13592 iterate_over_related_breakpoints (struct breakpoint *b,
13593                                   void (*function) (struct breakpoint *,
13594                                                     void *),
13595                                   void *data)
13596 {
13597   struct breakpoint *related;
13598
13599   related = b;
13600   do
13601     {
13602       struct breakpoint *next;
13603
13604       /* FUNCTION may delete RELATED.  */
13605       next = related->related_breakpoint;
13606
13607       if (next == related)
13608         {
13609           /* RELATED is the last ring entry.  */
13610           function (related, data);
13611
13612           /* FUNCTION may have deleted it, so we'd never reach back to
13613              B.  There's nothing left to do anyway, so just break
13614              out.  */
13615           break;
13616         }
13617       else
13618         function (related, data);
13619
13620       related = next;
13621     }
13622   while (related != b);
13623 }
13624
13625 static void
13626 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13627 {
13628   delete_breakpoint (b);
13629 }
13630
13631 /* A callback for map_breakpoint_numbers that calls
13632    delete_breakpoint.  */
13633
13634 static void
13635 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13636 {
13637   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13638 }
13639
13640 void
13641 delete_command (char *arg, int from_tty)
13642 {
13643   struct breakpoint *b, *b_tmp;
13644
13645   dont_repeat ();
13646
13647   if (arg == 0)
13648     {
13649       int breaks_to_delete = 0;
13650
13651       /* Delete all breakpoints if no argument.  Do not delete
13652          internal breakpoints, these have to be deleted with an
13653          explicit breakpoint number argument.  */
13654       ALL_BREAKPOINTS (b)
13655         if (user_breakpoint_p (b))
13656           {
13657             breaks_to_delete = 1;
13658             break;
13659           }
13660
13661       /* Ask user only if there are some breakpoints to delete.  */
13662       if (!from_tty
13663           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13664         {
13665           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13666             if (user_breakpoint_p (b))
13667               delete_breakpoint (b);
13668         }
13669     }
13670   else
13671     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13672 }
13673
13674 static int
13675 all_locations_are_pending (struct bp_location *loc)
13676 {
13677   for (; loc; loc = loc->next)
13678     if (!loc->shlib_disabled
13679         && !loc->pspace->executing_startup)
13680       return 0;
13681   return 1;
13682 }
13683
13684 /* Subroutine of update_breakpoint_locations to simplify it.
13685    Return non-zero if multiple fns in list LOC have the same name.
13686    Null names are ignored.  */
13687
13688 static int
13689 ambiguous_names_p (struct bp_location *loc)
13690 {
13691   struct bp_location *l;
13692   htab_t htab = htab_create_alloc (13, htab_hash_string,
13693                                    (int (*) (const void *, 
13694                                              const void *)) streq,
13695                                    NULL, xcalloc, xfree);
13696
13697   for (l = loc; l != NULL; l = l->next)
13698     {
13699       const char **slot;
13700       const char *name = l->function_name;
13701
13702       /* Allow for some names to be NULL, ignore them.  */
13703       if (name == NULL)
13704         continue;
13705
13706       slot = (const char **) htab_find_slot (htab, (const void *) name,
13707                                              INSERT);
13708       /* NOTE: We can assume slot != NULL here because xcalloc never
13709          returns NULL.  */
13710       if (*slot != NULL)
13711         {
13712           htab_delete (htab);
13713           return 1;
13714         }
13715       *slot = name;
13716     }
13717
13718   htab_delete (htab);
13719   return 0;
13720 }
13721
13722 /* When symbols change, it probably means the sources changed as well,
13723    and it might mean the static tracepoint markers are no longer at
13724    the same address or line numbers they used to be at last we
13725    checked.  Losing your static tracepoints whenever you rebuild is
13726    undesirable.  This function tries to resync/rematch gdb static
13727    tracepoints with the markers on the target, for static tracepoints
13728    that have not been set by marker id.  Static tracepoint that have
13729    been set by marker id are reset by marker id in breakpoint_re_set.
13730    The heuristic is:
13731
13732    1) For a tracepoint set at a specific address, look for a marker at
13733    the old PC.  If one is found there, assume to be the same marker.
13734    If the name / string id of the marker found is different from the
13735    previous known name, assume that means the user renamed the marker
13736    in the sources, and output a warning.
13737
13738    2) For a tracepoint set at a given line number, look for a marker
13739    at the new address of the old line number.  If one is found there,
13740    assume to be the same marker.  If the name / string id of the
13741    marker found is different from the previous known name, assume that
13742    means the user renamed the marker in the sources, and output a
13743    warning.
13744
13745    3) If a marker is no longer found at the same address or line, it
13746    may mean the marker no longer exists.  But it may also just mean
13747    the code changed a bit.  Maybe the user added a few lines of code
13748    that made the marker move up or down (in line number terms).  Ask
13749    the target for info about the marker with the string id as we knew
13750    it.  If found, update line number and address in the matching
13751    static tracepoint.  This will get confused if there's more than one
13752    marker with the same ID (possible in UST, although unadvised
13753    precisely because it confuses tools).  */
13754
13755 static struct symtab_and_line
13756 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13757 {
13758   struct tracepoint *tp = (struct tracepoint *) b;
13759   struct static_tracepoint_marker marker;
13760   CORE_ADDR pc;
13761
13762   pc = sal.pc;
13763   if (sal.line)
13764     find_line_pc (sal.symtab, sal.line, &pc);
13765
13766   if (target_static_tracepoint_marker_at (pc, &marker))
13767     {
13768       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13769         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13770                  b->number,
13771                  tp->static_trace_marker_id, marker.str_id);
13772
13773       xfree (tp->static_trace_marker_id);
13774       tp->static_trace_marker_id = xstrdup (marker.str_id);
13775       release_static_tracepoint_marker (&marker);
13776
13777       return sal;
13778     }
13779
13780   /* Old marker wasn't found on target at lineno.  Try looking it up
13781      by string ID.  */
13782   if (!sal.explicit_pc
13783       && sal.line != 0
13784       && sal.symtab != NULL
13785       && tp->static_trace_marker_id != NULL)
13786     {
13787       VEC(static_tracepoint_marker_p) *markers;
13788
13789       markers
13790         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13791
13792       if (!VEC_empty(static_tracepoint_marker_p, markers))
13793         {
13794           struct symtab_and_line sal2;
13795           struct symbol *sym;
13796           struct static_tracepoint_marker *tpmarker;
13797           struct ui_out *uiout = current_uiout;
13798
13799           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13800
13801           xfree (tp->static_trace_marker_id);
13802           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13803
13804           warning (_("marker for static tracepoint %d (%s) not "
13805                      "found at previous line number"),
13806                    b->number, tp->static_trace_marker_id);
13807
13808           init_sal (&sal2);
13809
13810           sal2.pc = tpmarker->address;
13811
13812           sal2 = find_pc_line (tpmarker->address, 0);
13813           sym = find_pc_sect_function (tpmarker->address, NULL);
13814           ui_out_text (uiout, "Now in ");
13815           if (sym)
13816             {
13817               ui_out_field_string (uiout, "func",
13818                                    SYMBOL_PRINT_NAME (sym));
13819               ui_out_text (uiout, " at ");
13820             }
13821           ui_out_field_string (uiout, "file",
13822                                symtab_to_filename_for_display (sal2.symtab));
13823           ui_out_text (uiout, ":");
13824
13825           if (ui_out_is_mi_like_p (uiout))
13826             {
13827               const char *fullname = symtab_to_fullname (sal2.symtab);
13828
13829               ui_out_field_string (uiout, "fullname", fullname);
13830             }
13831
13832           ui_out_field_int (uiout, "line", sal2.line);
13833           ui_out_text (uiout, "\n");
13834
13835           b->loc->line_number = sal2.line;
13836           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13837
13838           xfree (b->addr_string);
13839           b->addr_string = xstrprintf ("%s:%d",
13840                                    symtab_to_filename_for_display (sal2.symtab),
13841                                        b->loc->line_number);
13842
13843           /* Might be nice to check if function changed, and warn if
13844              so.  */
13845
13846           release_static_tracepoint_marker (tpmarker);
13847         }
13848     }
13849   return sal;
13850 }
13851
13852 /* Returns 1 iff locations A and B are sufficiently same that
13853    we don't need to report breakpoint as changed.  */
13854
13855 static int
13856 locations_are_equal (struct bp_location *a, struct bp_location *b)
13857 {
13858   while (a && b)
13859     {
13860       if (a->address != b->address)
13861         return 0;
13862
13863       if (a->shlib_disabled != b->shlib_disabled)
13864         return 0;
13865
13866       if (a->enabled != b->enabled)
13867         return 0;
13868
13869       a = a->next;
13870       b = b->next;
13871     }
13872
13873   if ((a == NULL) != (b == NULL))
13874     return 0;
13875
13876   return 1;
13877 }
13878
13879 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13880    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13881    a ranged breakpoint.  */
13882
13883 void
13884 update_breakpoint_locations (struct breakpoint *b,
13885                              struct symtabs_and_lines sals,
13886                              struct symtabs_and_lines sals_end)
13887 {
13888   int i;
13889   struct bp_location *existing_locations = b->loc;
13890
13891   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13892     {
13893       /* Ranged breakpoints have only one start location and one end
13894          location.  */
13895       b->enable_state = bp_disabled;
13896       update_global_location_list (1);
13897       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13898                            "multiple locations found\n"),
13899                          b->number);
13900       return;
13901     }
13902
13903   /* If there's no new locations, and all existing locations are
13904      pending, don't do anything.  This optimizes the common case where
13905      all locations are in the same shared library, that was unloaded.
13906      We'd like to retain the location, so that when the library is
13907      loaded again, we don't loose the enabled/disabled status of the
13908      individual locations.  */
13909   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13910     return;
13911
13912   b->loc = NULL;
13913
13914   for (i = 0; i < sals.nelts; ++i)
13915     {
13916       struct bp_location *new_loc;
13917
13918       switch_to_program_space_and_thread (sals.sals[i].pspace);
13919
13920       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13921
13922       /* Reparse conditions, they might contain references to the
13923          old symtab.  */
13924       if (b->cond_string != NULL)
13925         {
13926           const char *s;
13927           volatile struct gdb_exception e;
13928
13929           s = b->cond_string;
13930           TRY_CATCH (e, RETURN_MASK_ERROR)
13931             {
13932               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13933                                            block_for_pc (sals.sals[i].pc), 
13934                                            0);
13935             }
13936           if (e.reason < 0)
13937             {
13938               warning (_("failed to reevaluate condition "
13939                          "for breakpoint %d: %s"), 
13940                        b->number, e.message);
13941               new_loc->enabled = 0;
13942             }
13943         }
13944
13945       if (sals_end.nelts)
13946         {
13947           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13948
13949           new_loc->length = end - sals.sals[0].pc + 1;
13950         }
13951     }
13952
13953   /* Update locations of permanent breakpoints.  */
13954   if (b->enable_state == bp_permanent)
13955     make_breakpoint_permanent (b);
13956
13957   /* If possible, carry over 'disable' status from existing
13958      breakpoints.  */
13959   {
13960     struct bp_location *e = existing_locations;
13961     /* If there are multiple breakpoints with the same function name,
13962        e.g. for inline functions, comparing function names won't work.
13963        Instead compare pc addresses; this is just a heuristic as things
13964        may have moved, but in practice it gives the correct answer
13965        often enough until a better solution is found.  */
13966     int have_ambiguous_names = ambiguous_names_p (b->loc);
13967
13968     for (; e; e = e->next)
13969       {
13970         if (!e->enabled && e->function_name)
13971           {
13972             struct bp_location *l = b->loc;
13973             if (have_ambiguous_names)
13974               {
13975                 for (; l; l = l->next)
13976                   if (breakpoint_locations_match (e, l))
13977                     {
13978                       l->enabled = 0;
13979                       break;
13980                     }
13981               }
13982             else
13983               {
13984                 for (; l; l = l->next)
13985                   if (l->function_name
13986                       && strcmp (e->function_name, l->function_name) == 0)
13987                     {
13988                       l->enabled = 0;
13989                       break;
13990                     }
13991               }
13992           }
13993       }
13994   }
13995
13996   if (!locations_are_equal (existing_locations, b->loc))
13997     observer_notify_breakpoint_modified (b);
13998
13999   update_global_location_list (1);
14000 }
14001
14002 /* Find the SaL locations corresponding to the given ADDR_STRING.
14003    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14004
14005 static struct symtabs_and_lines
14006 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14007 {
14008   char *s;
14009   struct symtabs_and_lines sals = {0};
14010   volatile struct gdb_exception e;
14011
14012   gdb_assert (b->ops != NULL);
14013   s = addr_string;
14014
14015   TRY_CATCH (e, RETURN_MASK_ERROR)
14016     {
14017       b->ops->decode_linespec (b, &s, &sals);
14018     }
14019   if (e.reason < 0)
14020     {
14021       int not_found_and_ok = 0;
14022       /* For pending breakpoints, it's expected that parsing will
14023          fail until the right shared library is loaded.  User has
14024          already told to create pending breakpoints and don't need
14025          extra messages.  If breakpoint is in bp_shlib_disabled
14026          state, then user already saw the message about that
14027          breakpoint being disabled, and don't want to see more
14028          errors.  */
14029       if (e.error == NOT_FOUND_ERROR
14030           && (b->condition_not_parsed 
14031               || (b->loc && b->loc->shlib_disabled)
14032               || (b->loc && b->loc->pspace->executing_startup)
14033               || b->enable_state == bp_disabled))
14034         not_found_and_ok = 1;
14035
14036       if (!not_found_and_ok)
14037         {
14038           /* We surely don't want to warn about the same breakpoint
14039              10 times.  One solution, implemented here, is disable
14040              the breakpoint on error.  Another solution would be to
14041              have separate 'warning emitted' flag.  Since this
14042              happens only when a binary has changed, I don't know
14043              which approach is better.  */
14044           b->enable_state = bp_disabled;
14045           throw_exception (e);
14046         }
14047     }
14048
14049   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14050     {
14051       int i;
14052
14053       for (i = 0; i < sals.nelts; ++i)
14054         resolve_sal_pc (&sals.sals[i]);
14055       if (b->condition_not_parsed && s && s[0])
14056         {
14057           char *cond_string, *extra_string;
14058           int thread, task;
14059
14060           find_condition_and_thread (s, sals.sals[0].pc,
14061                                      &cond_string, &thread, &task,
14062                                      &extra_string);
14063           if (cond_string)
14064             b->cond_string = cond_string;
14065           b->thread = thread;
14066           b->task = task;
14067           if (extra_string)
14068             b->extra_string = extra_string;
14069           b->condition_not_parsed = 0;
14070         }
14071
14072       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14073         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14074
14075       *found = 1;
14076     }
14077   else
14078     *found = 0;
14079
14080   return sals;
14081 }
14082
14083 /* The default re_set method, for typical hardware or software
14084    breakpoints.  Reevaluate the breakpoint and recreate its
14085    locations.  */
14086
14087 static void
14088 breakpoint_re_set_default (struct breakpoint *b)
14089 {
14090   int found;
14091   struct symtabs_and_lines sals, sals_end;
14092   struct symtabs_and_lines expanded = {0};
14093   struct symtabs_and_lines expanded_end = {0};
14094
14095   sals = addr_string_to_sals (b, b->addr_string, &found);
14096   if (found)
14097     {
14098       make_cleanup (xfree, sals.sals);
14099       expanded = sals;
14100     }
14101
14102   if (b->addr_string_range_end)
14103     {
14104       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14105       if (found)
14106         {
14107           make_cleanup (xfree, sals_end.sals);
14108           expanded_end = sals_end;
14109         }
14110     }
14111
14112   update_breakpoint_locations (b, expanded, expanded_end);
14113 }
14114
14115 /* Default method for creating SALs from an address string.  It basically
14116    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14117
14118 static void
14119 create_sals_from_address_default (char **arg,
14120                                   struct linespec_result *canonical,
14121                                   enum bptype type_wanted,
14122                                   char *addr_start, char **copy_arg)
14123 {
14124   parse_breakpoint_sals (arg, canonical);
14125 }
14126
14127 /* Call create_breakpoints_sal for the given arguments.  This is the default
14128    function for the `create_breakpoints_sal' method of
14129    breakpoint_ops.  */
14130
14131 static void
14132 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14133                                 struct linespec_result *canonical,
14134                                 struct linespec_sals *lsal,
14135                                 char *cond_string,
14136                                 char *extra_string,
14137                                 enum bptype type_wanted,
14138                                 enum bpdisp disposition,
14139                                 int thread,
14140                                 int task, int ignore_count,
14141                                 const struct breakpoint_ops *ops,
14142                                 int from_tty, int enabled,
14143                                 int internal, unsigned flags)
14144 {
14145   create_breakpoints_sal (gdbarch, canonical, cond_string,
14146                           extra_string,
14147                           type_wanted, disposition,
14148                           thread, task, ignore_count, ops, from_tty,
14149                           enabled, internal, flags);
14150 }
14151
14152 /* Decode the line represented by S by calling decode_line_full.  This is the
14153    default function for the `decode_linespec' method of breakpoint_ops.  */
14154
14155 static void
14156 decode_linespec_default (struct breakpoint *b, char **s,
14157                          struct symtabs_and_lines *sals)
14158 {
14159   struct linespec_result canonical;
14160
14161   init_linespec_result (&canonical);
14162   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14163                     (struct symtab *) NULL, 0,
14164                     &canonical, multiple_symbols_all,
14165                     b->filter);
14166
14167   /* We should get 0 or 1 resulting SALs.  */
14168   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14169
14170   if (VEC_length (linespec_sals, canonical.sals) > 0)
14171     {
14172       struct linespec_sals *lsal;
14173
14174       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14175       *sals = lsal->sals;
14176       /* Arrange it so the destructor does not free the
14177          contents.  */
14178       lsal->sals.sals = NULL;
14179     }
14180
14181   destroy_linespec_result (&canonical);
14182 }
14183
14184 /* Prepare the global context for a re-set of breakpoint B.  */
14185
14186 static struct cleanup *
14187 prepare_re_set_context (struct breakpoint *b)
14188 {
14189   struct cleanup *cleanups;
14190
14191   input_radix = b->input_radix;
14192   cleanups = save_current_space_and_thread ();
14193   if (b->pspace != NULL)
14194     switch_to_program_space_and_thread (b->pspace);
14195   set_language (b->language);
14196
14197   return cleanups;
14198 }
14199
14200 /* Reset a breakpoint given it's struct breakpoint * BINT.
14201    The value we return ends up being the return value from catch_errors.
14202    Unused in this case.  */
14203
14204 static int
14205 breakpoint_re_set_one (void *bint)
14206 {
14207   /* Get past catch_errs.  */
14208   struct breakpoint *b = (struct breakpoint *) bint;
14209   struct cleanup *cleanups;
14210
14211   cleanups = prepare_re_set_context (b);
14212   b->ops->re_set (b);
14213   do_cleanups (cleanups);
14214   return 0;
14215 }
14216
14217 /* Re-set all breakpoints after symbols have been re-loaded.  */
14218 void
14219 breakpoint_re_set (void)
14220 {
14221   struct breakpoint *b, *b_tmp;
14222   enum language save_language;
14223   int save_input_radix;
14224   struct cleanup *old_chain;
14225
14226   save_language = current_language->la_language;
14227   save_input_radix = input_radix;
14228   old_chain = save_current_program_space ();
14229
14230   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14231   {
14232     /* Format possible error msg.  */
14233     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14234                                 b->number);
14235     struct cleanup *cleanups = make_cleanup (xfree, message);
14236     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14237     do_cleanups (cleanups);
14238   }
14239   set_language (save_language);
14240   input_radix = save_input_radix;
14241
14242   jit_breakpoint_re_set ();
14243
14244   do_cleanups (old_chain);
14245
14246   create_overlay_event_breakpoint ();
14247   create_longjmp_master_breakpoint ();
14248   create_std_terminate_master_breakpoint ();
14249   create_exception_master_breakpoint ();
14250 }
14251 \f
14252 /* Reset the thread number of this breakpoint:
14253
14254    - If the breakpoint is for all threads, leave it as-is.
14255    - Else, reset it to the current thread for inferior_ptid.  */
14256 void
14257 breakpoint_re_set_thread (struct breakpoint *b)
14258 {
14259   if (b->thread != -1)
14260     {
14261       if (in_thread_list (inferior_ptid))
14262         b->thread = pid_to_thread_id (inferior_ptid);
14263
14264       /* We're being called after following a fork.  The new fork is
14265          selected as current, and unless this was a vfork will have a
14266          different program space from the original thread.  Reset that
14267          as well.  */
14268       b->loc->pspace = current_program_space;
14269     }
14270 }
14271
14272 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14273    If from_tty is nonzero, it prints a message to that effect,
14274    which ends with a period (no newline).  */
14275
14276 void
14277 set_ignore_count (int bptnum, int count, int from_tty)
14278 {
14279   struct breakpoint *b;
14280
14281   if (count < 0)
14282     count = 0;
14283
14284   ALL_BREAKPOINTS (b)
14285     if (b->number == bptnum)
14286     {
14287       if (is_tracepoint (b))
14288         {
14289           if (from_tty && count != 0)
14290             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14291                              bptnum);
14292           return;
14293         }
14294       
14295       b->ignore_count = count;
14296       if (from_tty)
14297         {
14298           if (count == 0)
14299             printf_filtered (_("Will stop next time "
14300                                "breakpoint %d is reached."),
14301                              bptnum);
14302           else if (count == 1)
14303             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14304                              bptnum);
14305           else
14306             printf_filtered (_("Will ignore next %d "
14307                                "crossings of breakpoint %d."),
14308                              count, bptnum);
14309         }
14310       observer_notify_breakpoint_modified (b);
14311       return;
14312     }
14313
14314   error (_("No breakpoint number %d."), bptnum);
14315 }
14316
14317 /* Command to set ignore-count of breakpoint N to COUNT.  */
14318
14319 static void
14320 ignore_command (char *args, int from_tty)
14321 {
14322   char *p = args;
14323   int num;
14324
14325   if (p == 0)
14326     error_no_arg (_("a breakpoint number"));
14327
14328   num = get_number (&p);
14329   if (num == 0)
14330     error (_("bad breakpoint number: '%s'"), args);
14331   if (*p == 0)
14332     error (_("Second argument (specified ignore-count) is missing."));
14333
14334   set_ignore_count (num,
14335                     longest_to_int (value_as_long (parse_and_eval (p))),
14336                     from_tty);
14337   if (from_tty)
14338     printf_filtered ("\n");
14339 }
14340 \f
14341 /* Call FUNCTION on each of the breakpoints
14342    whose numbers are given in ARGS.  */
14343
14344 static void
14345 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14346                                                       void *),
14347                         void *data)
14348 {
14349   int num;
14350   struct breakpoint *b, *tmp;
14351   int match;
14352   struct get_number_or_range_state state;
14353
14354   if (args == 0)
14355     error_no_arg (_("one or more breakpoint numbers"));
14356
14357   init_number_or_range (&state, args);
14358
14359   while (!state.finished)
14360     {
14361       char *p = state.string;
14362
14363       match = 0;
14364
14365       num = get_number_or_range (&state);
14366       if (num == 0)
14367         {
14368           warning (_("bad breakpoint number at or near '%s'"), p);
14369         }
14370       else
14371         {
14372           ALL_BREAKPOINTS_SAFE (b, tmp)
14373             if (b->number == num)
14374               {
14375                 match = 1;
14376                 function (b, data);
14377                 break;
14378               }
14379           if (match == 0)
14380             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14381         }
14382     }
14383 }
14384
14385 static struct bp_location *
14386 find_location_by_number (char *number)
14387 {
14388   char *dot = strchr (number, '.');
14389   char *p1;
14390   int bp_num;
14391   int loc_num;
14392   struct breakpoint *b;
14393   struct bp_location *loc;  
14394
14395   *dot = '\0';
14396
14397   p1 = number;
14398   bp_num = get_number (&p1);
14399   if (bp_num == 0)
14400     error (_("Bad breakpoint number '%s'"), number);
14401
14402   ALL_BREAKPOINTS (b)
14403     if (b->number == bp_num)
14404       {
14405         break;
14406       }
14407
14408   if (!b || b->number != bp_num)
14409     error (_("Bad breakpoint number '%s'"), number);
14410   
14411   p1 = dot+1;
14412   loc_num = get_number (&p1);
14413   if (loc_num == 0)
14414     error (_("Bad breakpoint location number '%s'"), number);
14415
14416   --loc_num;
14417   loc = b->loc;
14418   for (;loc_num && loc; --loc_num, loc = loc->next)
14419     ;
14420   if (!loc)
14421     error (_("Bad breakpoint location number '%s'"), dot+1);
14422     
14423   return loc;  
14424 }
14425
14426
14427 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14428    If from_tty is nonzero, it prints a message to that effect,
14429    which ends with a period (no newline).  */
14430
14431 void
14432 disable_breakpoint (struct breakpoint *bpt)
14433 {
14434   /* Never disable a watchpoint scope breakpoint; we want to
14435      hit them when we leave scope so we can delete both the
14436      watchpoint and its scope breakpoint at that time.  */
14437   if (bpt->type == bp_watchpoint_scope)
14438     return;
14439
14440   /* You can't disable permanent breakpoints.  */
14441   if (bpt->enable_state == bp_permanent)
14442     return;
14443
14444   bpt->enable_state = bp_disabled;
14445
14446   /* Mark breakpoint locations modified.  */
14447   mark_breakpoint_modified (bpt);
14448
14449   if (target_supports_enable_disable_tracepoint ()
14450       && current_trace_status ()->running && is_tracepoint (bpt))
14451     {
14452       struct bp_location *location;
14453      
14454       for (location = bpt->loc; location; location = location->next)
14455         target_disable_tracepoint (location);
14456     }
14457
14458   update_global_location_list (0);
14459
14460   observer_notify_breakpoint_modified (bpt);
14461 }
14462
14463 /* A callback for iterate_over_related_breakpoints.  */
14464
14465 static void
14466 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14467 {
14468   disable_breakpoint (b);
14469 }
14470
14471 /* A callback for map_breakpoint_numbers that calls
14472    disable_breakpoint.  */
14473
14474 static void
14475 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14476 {
14477   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14478 }
14479
14480 static void
14481 disable_command (char *args, int from_tty)
14482 {
14483   if (args == 0)
14484     {
14485       struct breakpoint *bpt;
14486
14487       ALL_BREAKPOINTS (bpt)
14488         if (user_breakpoint_p (bpt))
14489           disable_breakpoint (bpt);
14490     }
14491   else if (strchr (args, '.'))
14492     {
14493       struct bp_location *loc = find_location_by_number (args);
14494       if (loc)
14495         {
14496           if (loc->enabled)
14497             {
14498               loc->enabled = 0;
14499               mark_breakpoint_location_modified (loc);
14500             }
14501           if (target_supports_enable_disable_tracepoint ()
14502               && current_trace_status ()->running && loc->owner
14503               && is_tracepoint (loc->owner))
14504             target_disable_tracepoint (loc);
14505         }
14506       update_global_location_list (0);
14507     }
14508   else
14509     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14510 }
14511
14512 static void
14513 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14514                         int count)
14515 {
14516   int target_resources_ok;
14517
14518   if (bpt->type == bp_hardware_breakpoint)
14519     {
14520       int i;
14521       i = hw_breakpoint_used_count ();
14522       target_resources_ok = 
14523         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14524                                             i + 1, 0);
14525       if (target_resources_ok == 0)
14526         error (_("No hardware breakpoint support in the target."));
14527       else if (target_resources_ok < 0)
14528         error (_("Hardware breakpoints used exceeds limit."));
14529     }
14530
14531   if (is_watchpoint (bpt))
14532     {
14533       /* Initialize it just to avoid a GCC false warning.  */
14534       enum enable_state orig_enable_state = 0;
14535       volatile struct gdb_exception e;
14536
14537       TRY_CATCH (e, RETURN_MASK_ALL)
14538         {
14539           struct watchpoint *w = (struct watchpoint *) bpt;
14540
14541           orig_enable_state = bpt->enable_state;
14542           bpt->enable_state = bp_enabled;
14543           update_watchpoint (w, 1 /* reparse */);
14544         }
14545       if (e.reason < 0)
14546         {
14547           bpt->enable_state = orig_enable_state;
14548           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14549                              bpt->number);
14550           return;
14551         }
14552     }
14553
14554   if (bpt->enable_state != bp_permanent)
14555     bpt->enable_state = bp_enabled;
14556
14557   bpt->enable_state = bp_enabled;
14558
14559   /* Mark breakpoint locations modified.  */
14560   mark_breakpoint_modified (bpt);
14561
14562   if (target_supports_enable_disable_tracepoint ()
14563       && current_trace_status ()->running && is_tracepoint (bpt))
14564     {
14565       struct bp_location *location;
14566
14567       for (location = bpt->loc; location; location = location->next)
14568         target_enable_tracepoint (location);
14569     }
14570
14571   bpt->disposition = disposition;
14572   bpt->enable_count = count;
14573   update_global_location_list (1);
14574
14575   observer_notify_breakpoint_modified (bpt);
14576 }
14577
14578
14579 void
14580 enable_breakpoint (struct breakpoint *bpt)
14581 {
14582   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14583 }
14584
14585 static void
14586 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14587 {
14588   enable_breakpoint (bpt);
14589 }
14590
14591 /* A callback for map_breakpoint_numbers that calls
14592    enable_breakpoint.  */
14593
14594 static void
14595 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14596 {
14597   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14598 }
14599
14600 /* The enable command enables the specified breakpoints (or all defined
14601    breakpoints) so they once again become (or continue to be) effective
14602    in stopping the inferior.  */
14603
14604 static void
14605 enable_command (char *args, int from_tty)
14606 {
14607   if (args == 0)
14608     {
14609       struct breakpoint *bpt;
14610
14611       ALL_BREAKPOINTS (bpt)
14612         if (user_breakpoint_p (bpt))
14613           enable_breakpoint (bpt);
14614     }
14615   else if (strchr (args, '.'))
14616     {
14617       struct bp_location *loc = find_location_by_number (args);
14618       if (loc)
14619         {
14620           if (!loc->enabled)
14621             {
14622               loc->enabled = 1;
14623               mark_breakpoint_location_modified (loc);
14624             }
14625           if (target_supports_enable_disable_tracepoint ()
14626               && current_trace_status ()->running && loc->owner
14627               && is_tracepoint (loc->owner))
14628             target_enable_tracepoint (loc);
14629         }
14630       update_global_location_list (1);
14631     }
14632   else
14633     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14634 }
14635
14636 /* This struct packages up disposition data for application to multiple
14637    breakpoints.  */
14638
14639 struct disp_data
14640 {
14641   enum bpdisp disp;
14642   int count;
14643 };
14644
14645 static void
14646 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14647 {
14648   struct disp_data disp_data = *(struct disp_data *) arg;
14649
14650   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14651 }
14652
14653 static void
14654 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14655 {
14656   struct disp_data disp = { disp_disable, 1 };
14657
14658   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14659 }
14660
14661 static void
14662 enable_once_command (char *args, int from_tty)
14663 {
14664   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14665 }
14666
14667 static void
14668 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14669 {
14670   struct disp_data disp = { disp_disable, *(int *) countptr };
14671
14672   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14673 }
14674
14675 static void
14676 enable_count_command (char *args, int from_tty)
14677 {
14678   int count = get_number (&args);
14679
14680   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14681 }
14682
14683 static void
14684 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14685 {
14686   struct disp_data disp = { disp_del, 1 };
14687
14688   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14689 }
14690
14691 static void
14692 enable_delete_command (char *args, int from_tty)
14693 {
14694   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14695 }
14696 \f
14697 static void
14698 set_breakpoint_cmd (char *args, int from_tty)
14699 {
14700 }
14701
14702 static void
14703 show_breakpoint_cmd (char *args, int from_tty)
14704 {
14705 }
14706
14707 /* Invalidate last known value of any hardware watchpoint if
14708    the memory which that value represents has been written to by
14709    GDB itself.  */
14710
14711 static void
14712 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14713                                       CORE_ADDR addr, ssize_t len,
14714                                       const bfd_byte *data)
14715 {
14716   struct breakpoint *bp;
14717
14718   ALL_BREAKPOINTS (bp)
14719     if (bp->enable_state == bp_enabled
14720         && bp->type == bp_hardware_watchpoint)
14721       {
14722         struct watchpoint *wp = (struct watchpoint *) bp;
14723
14724         if (wp->val_valid && wp->val)
14725           {
14726             struct bp_location *loc;
14727
14728             for (loc = bp->loc; loc != NULL; loc = loc->next)
14729               if (loc->loc_type == bp_loc_hardware_watchpoint
14730                   && loc->address + loc->length > addr
14731                   && addr + len > loc->address)
14732                 {
14733                   value_free (wp->val);
14734                   wp->val = NULL;
14735                   wp->val_valid = 0;
14736                 }
14737           }
14738       }
14739 }
14740
14741 /* Create and insert a raw software breakpoint at PC.  Return an
14742    identifier, which should be used to remove the breakpoint later.
14743    In general, places which call this should be using something on the
14744    breakpoint chain instead; this function should be eliminated
14745    someday.  */
14746
14747 void *
14748 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14749                                   struct address_space *aspace, CORE_ADDR pc)
14750 {
14751   struct bp_target_info *bp_tgt;
14752
14753   bp_tgt = XZALLOC (struct bp_target_info);
14754
14755   bp_tgt->placed_address_space = aspace;
14756   bp_tgt->placed_address = pc;
14757
14758   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14759     {
14760       /* Could not insert the breakpoint.  */
14761       xfree (bp_tgt);
14762       return NULL;
14763     }
14764
14765   return bp_tgt;
14766 }
14767
14768 /* Remove a breakpoint BP inserted by
14769    deprecated_insert_raw_breakpoint.  */
14770
14771 int
14772 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14773 {
14774   struct bp_target_info *bp_tgt = bp;
14775   int ret;
14776
14777   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14778   xfree (bp_tgt);
14779
14780   return ret;
14781 }
14782
14783 /* One (or perhaps two) breakpoints used for software single
14784    stepping.  */
14785
14786 static void *single_step_breakpoints[2];
14787 static struct gdbarch *single_step_gdbarch[2];
14788
14789 /* Create and insert a breakpoint for software single step.  */
14790
14791 void
14792 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14793                                struct address_space *aspace, 
14794                                CORE_ADDR next_pc)
14795 {
14796   void **bpt_p;
14797
14798   if (single_step_breakpoints[0] == NULL)
14799     {
14800       bpt_p = &single_step_breakpoints[0];
14801       single_step_gdbarch[0] = gdbarch;
14802     }
14803   else
14804     {
14805       gdb_assert (single_step_breakpoints[1] == NULL);
14806       bpt_p = &single_step_breakpoints[1];
14807       single_step_gdbarch[1] = gdbarch;
14808     }
14809
14810   /* NOTE drow/2006-04-11: A future improvement to this function would
14811      be to only create the breakpoints once, and actually put them on
14812      the breakpoint chain.  That would let us use set_raw_breakpoint.
14813      We could adjust the addresses each time they were needed.  Doing
14814      this requires corresponding changes elsewhere where single step
14815      breakpoints are handled, however.  So, for now, we use this.  */
14816
14817   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14818   if (*bpt_p == NULL)
14819     error (_("Could not insert single-step breakpoint at %s"),
14820              paddress (gdbarch, next_pc));
14821 }
14822
14823 /* Check if the breakpoints used for software single stepping
14824    were inserted or not.  */
14825
14826 int
14827 single_step_breakpoints_inserted (void)
14828 {
14829   return (single_step_breakpoints[0] != NULL
14830           || single_step_breakpoints[1] != NULL);
14831 }
14832
14833 /* Remove and delete any breakpoints used for software single step.  */
14834
14835 void
14836 remove_single_step_breakpoints (void)
14837 {
14838   gdb_assert (single_step_breakpoints[0] != NULL);
14839
14840   /* See insert_single_step_breakpoint for more about this deprecated
14841      call.  */
14842   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14843                                     single_step_breakpoints[0]);
14844   single_step_gdbarch[0] = NULL;
14845   single_step_breakpoints[0] = NULL;
14846
14847   if (single_step_breakpoints[1] != NULL)
14848     {
14849       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14850                                         single_step_breakpoints[1]);
14851       single_step_gdbarch[1] = NULL;
14852       single_step_breakpoints[1] = NULL;
14853     }
14854 }
14855
14856 /* Delete software single step breakpoints without removing them from
14857    the inferior.  This is intended to be used if the inferior's address
14858    space where they were inserted is already gone, e.g. after exit or
14859    exec.  */
14860
14861 void
14862 cancel_single_step_breakpoints (void)
14863 {
14864   int i;
14865
14866   for (i = 0; i < 2; i++)
14867     if (single_step_breakpoints[i])
14868       {
14869         xfree (single_step_breakpoints[i]);
14870         single_step_breakpoints[i] = NULL;
14871         single_step_gdbarch[i] = NULL;
14872       }
14873 }
14874
14875 /* Detach software single-step breakpoints from INFERIOR_PTID without
14876    removing them.  */
14877
14878 static void
14879 detach_single_step_breakpoints (void)
14880 {
14881   int i;
14882
14883   for (i = 0; i < 2; i++)
14884     if (single_step_breakpoints[i])
14885       target_remove_breakpoint (single_step_gdbarch[i],
14886                                 single_step_breakpoints[i]);
14887 }
14888
14889 /* Check whether a software single-step breakpoint is inserted at
14890    PC.  */
14891
14892 static int
14893 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14894                                         CORE_ADDR pc)
14895 {
14896   int i;
14897
14898   for (i = 0; i < 2; i++)
14899     {
14900       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14901       if (bp_tgt
14902           && breakpoint_address_match (bp_tgt->placed_address_space,
14903                                        bp_tgt->placed_address,
14904                                        aspace, pc))
14905         return 1;
14906     }
14907
14908   return 0;
14909 }
14910
14911 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14912    non-zero otherwise.  */
14913 static int
14914 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14915 {
14916   if (syscall_catchpoint_p (bp)
14917       && bp->enable_state != bp_disabled
14918       && bp->enable_state != bp_call_disabled)
14919     return 1;
14920   else
14921     return 0;
14922 }
14923
14924 int
14925 catch_syscall_enabled (void)
14926 {
14927   struct catch_syscall_inferior_data *inf_data
14928     = get_catch_syscall_inferior_data (current_inferior ());
14929
14930   return inf_data->total_syscalls_count != 0;
14931 }
14932
14933 int
14934 catching_syscall_number (int syscall_number)
14935 {
14936   struct breakpoint *bp;
14937
14938   ALL_BREAKPOINTS (bp)
14939     if (is_syscall_catchpoint_enabled (bp))
14940       {
14941         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14942
14943         if (c->syscalls_to_be_caught)
14944           {
14945             int i, iter;
14946             for (i = 0;
14947                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14948                  i++)
14949               if (syscall_number == iter)
14950                 return 1;
14951           }
14952         else
14953           return 1;
14954       }
14955
14956   return 0;
14957 }
14958
14959 /* Complete syscall names.  Used by "catch syscall".  */
14960 static VEC (char_ptr) *
14961 catch_syscall_completer (struct cmd_list_element *cmd,
14962                          const char *text, const char *word)
14963 {
14964   const char **list = get_syscall_names ();
14965   VEC (char_ptr) *retlist
14966     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
14967
14968   xfree (list);
14969   return retlist;
14970 }
14971
14972 /* Tracepoint-specific operations.  */
14973
14974 /* Set tracepoint count to NUM.  */
14975 static void
14976 set_tracepoint_count (int num)
14977 {
14978   tracepoint_count = num;
14979   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14980 }
14981
14982 static void
14983 trace_command (char *arg, int from_tty)
14984 {
14985   struct breakpoint_ops *ops;
14986   const char *arg_cp = arg;
14987
14988   if (arg && probe_linespec_to_ops (&arg_cp))
14989     ops = &tracepoint_probe_breakpoint_ops;
14990   else
14991     ops = &tracepoint_breakpoint_ops;
14992
14993   create_breakpoint (get_current_arch (),
14994                      arg,
14995                      NULL, 0, NULL, 1 /* parse arg */,
14996                      0 /* tempflag */,
14997                      bp_tracepoint /* type_wanted */,
14998                      0 /* Ignore count */,
14999                      pending_break_support,
15000                      ops,
15001                      from_tty,
15002                      1 /* enabled */,
15003                      0 /* internal */, 0);
15004 }
15005
15006 static void
15007 ftrace_command (char *arg, int from_tty)
15008 {
15009   create_breakpoint (get_current_arch (),
15010                      arg,
15011                      NULL, 0, NULL, 1 /* parse arg */,
15012                      0 /* tempflag */,
15013                      bp_fast_tracepoint /* type_wanted */,
15014                      0 /* Ignore count */,
15015                      pending_break_support,
15016                      &tracepoint_breakpoint_ops,
15017                      from_tty,
15018                      1 /* enabled */,
15019                      0 /* internal */, 0);
15020 }
15021
15022 /* strace command implementation.  Creates a static tracepoint.  */
15023
15024 static void
15025 strace_command (char *arg, int from_tty)
15026 {
15027   struct breakpoint_ops *ops;
15028
15029   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15030      or with a normal static tracepoint.  */
15031   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15032     ops = &strace_marker_breakpoint_ops;
15033   else
15034     ops = &tracepoint_breakpoint_ops;
15035
15036   create_breakpoint (get_current_arch (),
15037                      arg,
15038                      NULL, 0, NULL, 1 /* parse arg */,
15039                      0 /* tempflag */,
15040                      bp_static_tracepoint /* type_wanted */,
15041                      0 /* Ignore count */,
15042                      pending_break_support,
15043                      ops,
15044                      from_tty,
15045                      1 /* enabled */,
15046                      0 /* internal */, 0);
15047 }
15048
15049 /* Set up a fake reader function that gets command lines from a linked
15050    list that was acquired during tracepoint uploading.  */
15051
15052 static struct uploaded_tp *this_utp;
15053 static int next_cmd;
15054
15055 static char *
15056 read_uploaded_action (void)
15057 {
15058   char *rslt;
15059
15060   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15061
15062   next_cmd++;
15063
15064   return rslt;
15065 }
15066
15067 /* Given information about a tracepoint as recorded on a target (which
15068    can be either a live system or a trace file), attempt to create an
15069    equivalent GDB tracepoint.  This is not a reliable process, since
15070    the target does not necessarily have all the information used when
15071    the tracepoint was originally defined.  */
15072   
15073 struct tracepoint *
15074 create_tracepoint_from_upload (struct uploaded_tp *utp)
15075 {
15076   char *addr_str, small_buf[100];
15077   struct tracepoint *tp;
15078
15079   if (utp->at_string)
15080     addr_str = utp->at_string;
15081   else
15082     {
15083       /* In the absence of a source location, fall back to raw
15084          address.  Since there is no way to confirm that the address
15085          means the same thing as when the trace was started, warn the
15086          user.  */
15087       warning (_("Uploaded tracepoint %d has no "
15088                  "source location, using raw address"),
15089                utp->number);
15090       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15091       addr_str = small_buf;
15092     }
15093
15094   /* There's not much we can do with a sequence of bytecodes.  */
15095   if (utp->cond && !utp->cond_string)
15096     warning (_("Uploaded tracepoint %d condition "
15097                "has no source form, ignoring it"),
15098              utp->number);
15099
15100   if (!create_breakpoint (get_current_arch (),
15101                           addr_str,
15102                           utp->cond_string, -1, NULL,
15103                           0 /* parse cond/thread */,
15104                           0 /* tempflag */,
15105                           utp->type /* type_wanted */,
15106                           0 /* Ignore count */,
15107                           pending_break_support,
15108                           &tracepoint_breakpoint_ops,
15109                           0 /* from_tty */,
15110                           utp->enabled /* enabled */,
15111                           0 /* internal */,
15112                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15113     return NULL;
15114
15115   /* Get the tracepoint we just created.  */
15116   tp = get_tracepoint (tracepoint_count);
15117   gdb_assert (tp != NULL);
15118
15119   if (utp->pass > 0)
15120     {
15121       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15122                  tp->base.number);
15123
15124       trace_pass_command (small_buf, 0);
15125     }
15126
15127   /* If we have uploaded versions of the original commands, set up a
15128      special-purpose "reader" function and call the usual command line
15129      reader, then pass the result to the breakpoint command-setting
15130      function.  */
15131   if (!VEC_empty (char_ptr, utp->cmd_strings))
15132     {
15133       struct command_line *cmd_list;
15134
15135       this_utp = utp;
15136       next_cmd = 0;
15137
15138       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15139
15140       breakpoint_set_commands (&tp->base, cmd_list);
15141     }
15142   else if (!VEC_empty (char_ptr, utp->actions)
15143            || !VEC_empty (char_ptr, utp->step_actions))
15144     warning (_("Uploaded tracepoint %d actions "
15145                "have no source form, ignoring them"),
15146              utp->number);
15147
15148   /* Copy any status information that might be available.  */
15149   tp->base.hit_count = utp->hit_count;
15150   tp->traceframe_usage = utp->traceframe_usage;
15151
15152   return tp;
15153 }
15154   
15155 /* Print information on tracepoint number TPNUM_EXP, or all if
15156    omitted.  */
15157
15158 static void
15159 tracepoints_info (char *args, int from_tty)
15160 {
15161   struct ui_out *uiout = current_uiout;
15162   int num_printed;
15163
15164   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15165
15166   if (num_printed == 0)
15167     {
15168       if (args == NULL || *args == '\0')
15169         ui_out_message (uiout, 0, "No tracepoints.\n");
15170       else
15171         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15172     }
15173
15174   default_collect_info ();
15175 }
15176
15177 /* The 'enable trace' command enables tracepoints.
15178    Not supported by all targets.  */
15179 static void
15180 enable_trace_command (char *args, int from_tty)
15181 {
15182   enable_command (args, from_tty);
15183 }
15184
15185 /* The 'disable trace' command disables tracepoints.
15186    Not supported by all targets.  */
15187 static void
15188 disable_trace_command (char *args, int from_tty)
15189 {
15190   disable_command (args, from_tty);
15191 }
15192
15193 /* Remove a tracepoint (or all if no argument).  */
15194 static void
15195 delete_trace_command (char *arg, int from_tty)
15196 {
15197   struct breakpoint *b, *b_tmp;
15198
15199   dont_repeat ();
15200
15201   if (arg == 0)
15202     {
15203       int breaks_to_delete = 0;
15204
15205       /* Delete all breakpoints if no argument.
15206          Do not delete internal or call-dummy breakpoints, these
15207          have to be deleted with an explicit breakpoint number 
15208          argument.  */
15209       ALL_TRACEPOINTS (b)
15210         if (is_tracepoint (b) && user_breakpoint_p (b))
15211           {
15212             breaks_to_delete = 1;
15213             break;
15214           }
15215
15216       /* Ask user only if there are some breakpoints to delete.  */
15217       if (!from_tty
15218           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15219         {
15220           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15221             if (is_tracepoint (b) && user_breakpoint_p (b))
15222               delete_breakpoint (b);
15223         }
15224     }
15225   else
15226     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15227 }
15228
15229 /* Helper function for trace_pass_command.  */
15230
15231 static void
15232 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15233 {
15234   tp->pass_count = count;
15235   observer_notify_breakpoint_modified (&tp->base);
15236   if (from_tty)
15237     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15238                      tp->base.number, count);
15239 }
15240
15241 /* Set passcount for tracepoint.
15242
15243    First command argument is passcount, second is tracepoint number.
15244    If tracepoint number omitted, apply to most recently defined.
15245    Also accepts special argument "all".  */
15246
15247 static void
15248 trace_pass_command (char *args, int from_tty)
15249 {
15250   struct tracepoint *t1;
15251   unsigned int count;
15252
15253   if (args == 0 || *args == 0)
15254     error (_("passcount command requires an "
15255              "argument (count + optional TP num)"));
15256
15257   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15258
15259   args = skip_spaces (args);
15260   if (*args && strncasecmp (args, "all", 3) == 0)
15261     {
15262       struct breakpoint *b;
15263
15264       args += 3;                        /* Skip special argument "all".  */
15265       if (*args)
15266         error (_("Junk at end of arguments."));
15267
15268       ALL_TRACEPOINTS (b)
15269       {
15270         t1 = (struct tracepoint *) b;
15271         trace_pass_set_count (t1, count, from_tty);
15272       }
15273     }
15274   else if (*args == '\0')
15275     {
15276       t1 = get_tracepoint_by_number (&args, NULL, 1);
15277       if (t1)
15278         trace_pass_set_count (t1, count, from_tty);
15279     }
15280   else
15281     {
15282       struct get_number_or_range_state state;
15283
15284       init_number_or_range (&state, args);
15285       while (!state.finished)
15286         {
15287           t1 = get_tracepoint_by_number (&args, &state, 1);
15288           if (t1)
15289             trace_pass_set_count (t1, count, from_tty);
15290         }
15291     }
15292 }
15293
15294 struct tracepoint *
15295 get_tracepoint (int num)
15296 {
15297   struct breakpoint *t;
15298
15299   ALL_TRACEPOINTS (t)
15300     if (t->number == num)
15301       return (struct tracepoint *) t;
15302
15303   return NULL;
15304 }
15305
15306 /* Find the tracepoint with the given target-side number (which may be
15307    different from the tracepoint number after disconnecting and
15308    reconnecting).  */
15309
15310 struct tracepoint *
15311 get_tracepoint_by_number_on_target (int num)
15312 {
15313   struct breakpoint *b;
15314
15315   ALL_TRACEPOINTS (b)
15316     {
15317       struct tracepoint *t = (struct tracepoint *) b;
15318
15319       if (t->number_on_target == num)
15320         return t;
15321     }
15322
15323   return NULL;
15324 }
15325
15326 /* Utility: parse a tracepoint number and look it up in the list.
15327    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15328    If OPTIONAL_P is true, then if the argument is missing, the most
15329    recent tracepoint (tracepoint_count) is returned.  */
15330 struct tracepoint *
15331 get_tracepoint_by_number (char **arg,
15332                           struct get_number_or_range_state *state,
15333                           int optional_p)
15334 {
15335   struct breakpoint *t;
15336   int tpnum;
15337   char *instring = arg == NULL ? NULL : *arg;
15338
15339   if (state)
15340     {
15341       gdb_assert (!state->finished);
15342       tpnum = get_number_or_range (state);
15343     }
15344   else if (arg == NULL || *arg == NULL || ! **arg)
15345     {
15346       if (optional_p)
15347         tpnum = tracepoint_count;
15348       else
15349         error_no_arg (_("tracepoint number"));
15350     }
15351   else
15352     tpnum = get_number (arg);
15353
15354   if (tpnum <= 0)
15355     {
15356       if (instring && *instring)
15357         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15358                          instring);
15359       else
15360         printf_filtered (_("Tracepoint argument missing "
15361                            "and no previous tracepoint\n"));
15362       return NULL;
15363     }
15364
15365   ALL_TRACEPOINTS (t)
15366     if (t->number == tpnum)
15367     {
15368       return (struct tracepoint *) t;
15369     }
15370
15371   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15372   return NULL;
15373 }
15374
15375 void
15376 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15377 {
15378   if (b->thread != -1)
15379     fprintf_unfiltered (fp, " thread %d", b->thread);
15380
15381   if (b->task != 0)
15382     fprintf_unfiltered (fp, " task %d", b->task);
15383
15384   fprintf_unfiltered (fp, "\n");
15385 }
15386
15387 /* Save information on user settable breakpoints (watchpoints, etc) to
15388    a new script file named FILENAME.  If FILTER is non-NULL, call it
15389    on each breakpoint and only include the ones for which it returns
15390    non-zero.  */
15391
15392 static void
15393 save_breakpoints (char *filename, int from_tty,
15394                   int (*filter) (const struct breakpoint *))
15395 {
15396   struct breakpoint *tp;
15397   int any = 0;
15398   char *pathname;
15399   struct cleanup *cleanup;
15400   struct ui_file *fp;
15401   int extra_trace_bits = 0;
15402
15403   if (filename == 0 || *filename == 0)
15404     error (_("Argument required (file name in which to save)"));
15405
15406   /* See if we have anything to save.  */
15407   ALL_BREAKPOINTS (tp)
15408   {
15409     /* Skip internal and momentary breakpoints.  */
15410     if (!user_breakpoint_p (tp))
15411       continue;
15412
15413     /* If we have a filter, only save the breakpoints it accepts.  */
15414     if (filter && !filter (tp))
15415       continue;
15416
15417     any = 1;
15418
15419     if (is_tracepoint (tp))
15420       {
15421         extra_trace_bits = 1;
15422
15423         /* We can stop searching.  */
15424         break;
15425       }
15426   }
15427
15428   if (!any)
15429     {
15430       warning (_("Nothing to save."));
15431       return;
15432     }
15433
15434   pathname = tilde_expand (filename);
15435   cleanup = make_cleanup (xfree, pathname);
15436   fp = gdb_fopen (pathname, "w");
15437   if (!fp)
15438     error (_("Unable to open file '%s' for saving (%s)"),
15439            filename, safe_strerror (errno));
15440   make_cleanup_ui_file_delete (fp);
15441
15442   if (extra_trace_bits)
15443     save_trace_state_variables (fp);
15444
15445   ALL_BREAKPOINTS (tp)
15446   {
15447     /* Skip internal and momentary breakpoints.  */
15448     if (!user_breakpoint_p (tp))
15449       continue;
15450
15451     /* If we have a filter, only save the breakpoints it accepts.  */
15452     if (filter && !filter (tp))
15453       continue;
15454
15455     tp->ops->print_recreate (tp, fp);
15456
15457     /* Note, we can't rely on tp->number for anything, as we can't
15458        assume the recreated breakpoint numbers will match.  Use $bpnum
15459        instead.  */
15460
15461     if (tp->cond_string)
15462       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15463
15464     if (tp->ignore_count)
15465       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15466
15467     if (tp->type != bp_dprintf && tp->commands)
15468       {
15469         volatile struct gdb_exception ex;       
15470
15471         fprintf_unfiltered (fp, "  commands\n");
15472         
15473         ui_out_redirect (current_uiout, fp);
15474         TRY_CATCH (ex, RETURN_MASK_ALL)
15475           {
15476             print_command_lines (current_uiout, tp->commands->commands, 2);
15477           }
15478         ui_out_redirect (current_uiout, NULL);
15479
15480         if (ex.reason < 0)
15481           throw_exception (ex);
15482
15483         fprintf_unfiltered (fp, "  end\n");
15484       }
15485
15486     if (tp->enable_state == bp_disabled)
15487       fprintf_unfiltered (fp, "disable\n");
15488
15489     /* If this is a multi-location breakpoint, check if the locations
15490        should be individually disabled.  Watchpoint locations are
15491        special, and not user visible.  */
15492     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15493       {
15494         struct bp_location *loc;
15495         int n = 1;
15496
15497         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15498           if (!loc->enabled)
15499             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15500       }
15501   }
15502
15503   if (extra_trace_bits && *default_collect)
15504     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15505
15506   do_cleanups (cleanup);
15507   if (from_tty)
15508     printf_filtered (_("Saved to file '%s'.\n"), filename);
15509 }
15510
15511 /* The `save breakpoints' command.  */
15512
15513 static void
15514 save_breakpoints_command (char *args, int from_tty)
15515 {
15516   save_breakpoints (args, from_tty, NULL);
15517 }
15518
15519 /* The `save tracepoints' command.  */
15520
15521 static void
15522 save_tracepoints_command (char *args, int from_tty)
15523 {
15524   save_breakpoints (args, from_tty, is_tracepoint);
15525 }
15526
15527 /* Create a vector of all tracepoints.  */
15528
15529 VEC(breakpoint_p) *
15530 all_tracepoints (void)
15531 {
15532   VEC(breakpoint_p) *tp_vec = 0;
15533   struct breakpoint *tp;
15534
15535   ALL_TRACEPOINTS (tp)
15536   {
15537     VEC_safe_push (breakpoint_p, tp_vec, tp);
15538   }
15539
15540   return tp_vec;
15541 }
15542
15543 \f
15544 /* This help string is used for the break, hbreak, tbreak and thbreak
15545    commands.  It is defined as a macro to prevent duplication.
15546    COMMAND should be a string constant containing the name of the
15547    command.  */
15548 #define BREAK_ARGS_HELP(command) \
15549 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15550 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15551 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15552 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15553 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15554 If a line number is specified, break at start of code for that line.\n\
15555 If a function is specified, break at start of code for that function.\n\
15556 If an address is specified, break at that exact address.\n\
15557 With no LOCATION, uses current execution address of the selected\n\
15558 stack frame.  This is useful for breaking on return to a stack frame.\n\
15559 \n\
15560 THREADNUM is the number from \"info threads\".\n\
15561 CONDITION is a boolean expression.\n\
15562 \n\
15563 Multiple breakpoints at one place are permitted, and useful if their\n\
15564 conditions are different.\n\
15565 \n\
15566 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15567
15568 /* List of subcommands for "catch".  */
15569 static struct cmd_list_element *catch_cmdlist;
15570
15571 /* List of subcommands for "tcatch".  */
15572 static struct cmd_list_element *tcatch_cmdlist;
15573
15574 void
15575 add_catch_command (char *name, char *docstring,
15576                    void (*sfunc) (char *args, int from_tty,
15577                                   struct cmd_list_element *command),
15578                    completer_ftype *completer,
15579                    void *user_data_catch,
15580                    void *user_data_tcatch)
15581 {
15582   struct cmd_list_element *command;
15583
15584   command = add_cmd (name, class_breakpoint, NULL, docstring,
15585                      &catch_cmdlist);
15586   set_cmd_sfunc (command, sfunc);
15587   set_cmd_context (command, user_data_catch);
15588   set_cmd_completer (command, completer);
15589
15590   command = add_cmd (name, class_breakpoint, NULL, docstring,
15591                      &tcatch_cmdlist);
15592   set_cmd_sfunc (command, sfunc);
15593   set_cmd_context (command, user_data_tcatch);
15594   set_cmd_completer (command, completer);
15595 }
15596
15597 static void
15598 clear_syscall_counts (struct inferior *inf)
15599 {
15600   struct catch_syscall_inferior_data *inf_data
15601     = get_catch_syscall_inferior_data (inf);
15602
15603   inf_data->total_syscalls_count = 0;
15604   inf_data->any_syscall_count = 0;
15605   VEC_free (int, inf_data->syscalls_counts);
15606 }
15607
15608 static void
15609 save_command (char *arg, int from_tty)
15610 {
15611   printf_unfiltered (_("\"save\" must be followed by "
15612                        "the name of a save subcommand.\n"));
15613   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15614 }
15615
15616 struct breakpoint *
15617 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15618                           void *data)
15619 {
15620   struct breakpoint *b, *b_tmp;
15621
15622   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15623     {
15624       if ((*callback) (b, data))
15625         return b;
15626     }
15627
15628   return NULL;
15629 }
15630
15631 /* Zero if any of the breakpoint's locations could be a location where
15632    functions have been inlined, nonzero otherwise.  */
15633
15634 static int
15635 is_non_inline_function (struct breakpoint *b)
15636 {
15637   /* The shared library event breakpoint is set on the address of a
15638      non-inline function.  */
15639   if (b->type == bp_shlib_event)
15640     return 1;
15641
15642   return 0;
15643 }
15644
15645 /* Nonzero if the specified PC cannot be a location where functions
15646    have been inlined.  */
15647
15648 int
15649 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15650                            const struct target_waitstatus *ws)
15651 {
15652   struct breakpoint *b;
15653   struct bp_location *bl;
15654
15655   ALL_BREAKPOINTS (b)
15656     {
15657       if (!is_non_inline_function (b))
15658         continue;
15659
15660       for (bl = b->loc; bl != NULL; bl = bl->next)
15661         {
15662           if (!bl->shlib_disabled
15663               && bpstat_check_location (bl, aspace, pc, ws))
15664             return 1;
15665         }
15666     }
15667
15668   return 0;
15669 }
15670
15671 /* Remove any references to OBJFILE which is going to be freed.  */
15672
15673 void
15674 breakpoint_free_objfile (struct objfile *objfile)
15675 {
15676   struct bp_location **locp, *loc;
15677
15678   ALL_BP_LOCATIONS (loc, locp)
15679     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
15680       loc->symtab = NULL;
15681 }
15682
15683 void
15684 initialize_breakpoint_ops (void)
15685 {
15686   static int initialized = 0;
15687
15688   struct breakpoint_ops *ops;
15689
15690   if (initialized)
15691     return;
15692   initialized = 1;
15693
15694   /* The breakpoint_ops structure to be inherit by all kinds of
15695      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15696      internal and momentary breakpoints, etc.).  */
15697   ops = &bkpt_base_breakpoint_ops;
15698   *ops = base_breakpoint_ops;
15699   ops->re_set = bkpt_re_set;
15700   ops->insert_location = bkpt_insert_location;
15701   ops->remove_location = bkpt_remove_location;
15702   ops->breakpoint_hit = bkpt_breakpoint_hit;
15703   ops->create_sals_from_address = bkpt_create_sals_from_address;
15704   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15705   ops->decode_linespec = bkpt_decode_linespec;
15706
15707   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15708   ops = &bkpt_breakpoint_ops;
15709   *ops = bkpt_base_breakpoint_ops;
15710   ops->re_set = bkpt_re_set;
15711   ops->resources_needed = bkpt_resources_needed;
15712   ops->print_it = bkpt_print_it;
15713   ops->print_mention = bkpt_print_mention;
15714   ops->print_recreate = bkpt_print_recreate;
15715
15716   /* Ranged breakpoints.  */
15717   ops = &ranged_breakpoint_ops;
15718   *ops = bkpt_breakpoint_ops;
15719   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15720   ops->resources_needed = resources_needed_ranged_breakpoint;
15721   ops->print_it = print_it_ranged_breakpoint;
15722   ops->print_one = print_one_ranged_breakpoint;
15723   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15724   ops->print_mention = print_mention_ranged_breakpoint;
15725   ops->print_recreate = print_recreate_ranged_breakpoint;
15726
15727   /* Internal breakpoints.  */
15728   ops = &internal_breakpoint_ops;
15729   *ops = bkpt_base_breakpoint_ops;
15730   ops->re_set = internal_bkpt_re_set;
15731   ops->check_status = internal_bkpt_check_status;
15732   ops->print_it = internal_bkpt_print_it;
15733   ops->print_mention = internal_bkpt_print_mention;
15734
15735   /* Momentary breakpoints.  */
15736   ops = &momentary_breakpoint_ops;
15737   *ops = bkpt_base_breakpoint_ops;
15738   ops->re_set = momentary_bkpt_re_set;
15739   ops->check_status = momentary_bkpt_check_status;
15740   ops->print_it = momentary_bkpt_print_it;
15741   ops->print_mention = momentary_bkpt_print_mention;
15742
15743   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15744   ops = &longjmp_breakpoint_ops;
15745   *ops = momentary_breakpoint_ops;
15746   ops->dtor = longjmp_bkpt_dtor;
15747
15748   /* Probe breakpoints.  */
15749   ops = &bkpt_probe_breakpoint_ops;
15750   *ops = bkpt_breakpoint_ops;
15751   ops->insert_location = bkpt_probe_insert_location;
15752   ops->remove_location = bkpt_probe_remove_location;
15753   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15754   ops->decode_linespec = bkpt_probe_decode_linespec;
15755
15756   /* Watchpoints.  */
15757   ops = &watchpoint_breakpoint_ops;
15758   *ops = base_breakpoint_ops;
15759   ops->dtor = dtor_watchpoint;
15760   ops->re_set = re_set_watchpoint;
15761   ops->insert_location = insert_watchpoint;
15762   ops->remove_location = remove_watchpoint;
15763   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15764   ops->check_status = check_status_watchpoint;
15765   ops->resources_needed = resources_needed_watchpoint;
15766   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15767   ops->print_it = print_it_watchpoint;
15768   ops->print_mention = print_mention_watchpoint;
15769   ops->print_recreate = print_recreate_watchpoint;
15770   ops->explains_signal = explains_signal_watchpoint;
15771
15772   /* Masked watchpoints.  */
15773   ops = &masked_watchpoint_breakpoint_ops;
15774   *ops = watchpoint_breakpoint_ops;
15775   ops->insert_location = insert_masked_watchpoint;
15776   ops->remove_location = remove_masked_watchpoint;
15777   ops->resources_needed = resources_needed_masked_watchpoint;
15778   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15779   ops->print_it = print_it_masked_watchpoint;
15780   ops->print_one_detail = print_one_detail_masked_watchpoint;
15781   ops->print_mention = print_mention_masked_watchpoint;
15782   ops->print_recreate = print_recreate_masked_watchpoint;
15783
15784   /* Tracepoints.  */
15785   ops = &tracepoint_breakpoint_ops;
15786   *ops = base_breakpoint_ops;
15787   ops->re_set = tracepoint_re_set;
15788   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15789   ops->print_one_detail = tracepoint_print_one_detail;
15790   ops->print_mention = tracepoint_print_mention;
15791   ops->print_recreate = tracepoint_print_recreate;
15792   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15793   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15794   ops->decode_linespec = tracepoint_decode_linespec;
15795
15796   /* Probe tracepoints.  */
15797   ops = &tracepoint_probe_breakpoint_ops;
15798   *ops = tracepoint_breakpoint_ops;
15799   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15800   ops->decode_linespec = tracepoint_probe_decode_linespec;
15801
15802   /* Static tracepoints with marker (`-m').  */
15803   ops = &strace_marker_breakpoint_ops;
15804   *ops = tracepoint_breakpoint_ops;
15805   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15806   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15807   ops->decode_linespec = strace_marker_decode_linespec;
15808
15809   /* Fork catchpoints.  */
15810   ops = &catch_fork_breakpoint_ops;
15811   *ops = base_breakpoint_ops;
15812   ops->insert_location = insert_catch_fork;
15813   ops->remove_location = remove_catch_fork;
15814   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15815   ops->print_it = print_it_catch_fork;
15816   ops->print_one = print_one_catch_fork;
15817   ops->print_mention = print_mention_catch_fork;
15818   ops->print_recreate = print_recreate_catch_fork;
15819
15820   /* Vfork catchpoints.  */
15821   ops = &catch_vfork_breakpoint_ops;
15822   *ops = base_breakpoint_ops;
15823   ops->insert_location = insert_catch_vfork;
15824   ops->remove_location = remove_catch_vfork;
15825   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15826   ops->print_it = print_it_catch_vfork;
15827   ops->print_one = print_one_catch_vfork;
15828   ops->print_mention = print_mention_catch_vfork;
15829   ops->print_recreate = print_recreate_catch_vfork;
15830
15831   /* Exec catchpoints.  */
15832   ops = &catch_exec_breakpoint_ops;
15833   *ops = base_breakpoint_ops;
15834   ops->dtor = dtor_catch_exec;
15835   ops->insert_location = insert_catch_exec;
15836   ops->remove_location = remove_catch_exec;
15837   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15838   ops->print_it = print_it_catch_exec;
15839   ops->print_one = print_one_catch_exec;
15840   ops->print_mention = print_mention_catch_exec;
15841   ops->print_recreate = print_recreate_catch_exec;
15842
15843   /* Syscall catchpoints.  */
15844   ops = &catch_syscall_breakpoint_ops;
15845   *ops = base_breakpoint_ops;
15846   ops->dtor = dtor_catch_syscall;
15847   ops->insert_location = insert_catch_syscall;
15848   ops->remove_location = remove_catch_syscall;
15849   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15850   ops->print_it = print_it_catch_syscall;
15851   ops->print_one = print_one_catch_syscall;
15852   ops->print_mention = print_mention_catch_syscall;
15853   ops->print_recreate = print_recreate_catch_syscall;
15854
15855   /* Solib-related catchpoints.  */
15856   ops = &catch_solib_breakpoint_ops;
15857   *ops = base_breakpoint_ops;
15858   ops->dtor = dtor_catch_solib;
15859   ops->insert_location = insert_catch_solib;
15860   ops->remove_location = remove_catch_solib;
15861   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15862   ops->check_status = check_status_catch_solib;
15863   ops->print_it = print_it_catch_solib;
15864   ops->print_one = print_one_catch_solib;
15865   ops->print_mention = print_mention_catch_solib;
15866   ops->print_recreate = print_recreate_catch_solib;
15867
15868   ops = &dprintf_breakpoint_ops;
15869   *ops = bkpt_base_breakpoint_ops;
15870   ops->re_set = dprintf_re_set;
15871   ops->resources_needed = bkpt_resources_needed;
15872   ops->print_it = bkpt_print_it;
15873   ops->print_mention = bkpt_print_mention;
15874   ops->print_recreate = dprintf_print_recreate;
15875 }
15876
15877 /* Chain containing all defined "enable breakpoint" subcommands.  */
15878
15879 static struct cmd_list_element *enablebreaklist = NULL;
15880
15881 void
15882 _initialize_breakpoint (void)
15883 {
15884   struct cmd_list_element *c;
15885
15886   initialize_breakpoint_ops ();
15887
15888   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15889   observer_attach_inferior_exit (clear_syscall_counts);
15890   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15891
15892   breakpoint_objfile_key
15893     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15894
15895   catch_syscall_inferior_data
15896     = register_inferior_data_with_cleanup (NULL,
15897                                            catch_syscall_inferior_data_cleanup);
15898
15899   breakpoint_chain = 0;
15900   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15901      before a breakpoint is set.  */
15902   breakpoint_count = 0;
15903
15904   tracepoint_count = 0;
15905
15906   add_com ("ignore", class_breakpoint, ignore_command, _("\
15907 Set ignore-count of breakpoint number N to COUNT.\n\
15908 Usage is `ignore N COUNT'."));
15909   if (xdb_commands)
15910     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15911
15912   add_com ("commands", class_breakpoint, commands_command, _("\
15913 Set commands to be executed when a breakpoint is hit.\n\
15914 Give breakpoint number as argument after \"commands\".\n\
15915 With no argument, the targeted breakpoint is the last one set.\n\
15916 The commands themselves follow starting on the next line.\n\
15917 Type a line containing \"end\" to indicate the end of them.\n\
15918 Give \"silent\" as the first line to make the breakpoint silent;\n\
15919 then no output is printed when it is hit, except what the commands print."));
15920
15921   c = add_com ("condition", class_breakpoint, condition_command, _("\
15922 Specify breakpoint number N to break only if COND is true.\n\
15923 Usage is `condition N COND', where N is an integer and COND is an\n\
15924 expression to be evaluated whenever breakpoint N is reached."));
15925   set_cmd_completer (c, condition_completer);
15926
15927   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15928 Set a temporary breakpoint.\n\
15929 Like \"break\" except the breakpoint is only temporary,\n\
15930 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15931 by using \"enable delete\" on the breakpoint number.\n\
15932 \n"
15933 BREAK_ARGS_HELP ("tbreak")));
15934   set_cmd_completer (c, location_completer);
15935
15936   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15937 Set a hardware assisted breakpoint.\n\
15938 Like \"break\" except the breakpoint requires hardware support,\n\
15939 some target hardware may not have this support.\n\
15940 \n"
15941 BREAK_ARGS_HELP ("hbreak")));
15942   set_cmd_completer (c, location_completer);
15943
15944   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15945 Set a temporary hardware assisted breakpoint.\n\
15946 Like \"hbreak\" except the breakpoint is only temporary,\n\
15947 so it will be deleted when hit.\n\
15948 \n"
15949 BREAK_ARGS_HELP ("thbreak")));
15950   set_cmd_completer (c, location_completer);
15951
15952   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15953 Enable some breakpoints.\n\
15954 Give breakpoint numbers (separated by spaces) as arguments.\n\
15955 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15956 This is used to cancel the effect of the \"disable\" command.\n\
15957 With a subcommand you can enable temporarily."),
15958                   &enablelist, "enable ", 1, &cmdlist);
15959   if (xdb_commands)
15960     add_com ("ab", class_breakpoint, enable_command, _("\
15961 Enable some breakpoints.\n\
15962 Give breakpoint numbers (separated by spaces) as arguments.\n\
15963 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15964 This is used to cancel the effect of the \"disable\" command.\n\
15965 With a subcommand you can enable temporarily."));
15966
15967   add_com_alias ("en", "enable", class_breakpoint, 1);
15968
15969   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15970 Enable some breakpoints.\n\
15971 Give breakpoint numbers (separated by spaces) as arguments.\n\
15972 This is used to cancel the effect of the \"disable\" command.\n\
15973 May be abbreviated to simply \"enable\".\n"),
15974                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15975
15976   add_cmd ("once", no_class, enable_once_command, _("\
15977 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15978 If a breakpoint is hit while enabled in this fashion, it becomes 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            &enablebreaklist);
15985
15986   add_cmd ("count", no_class, enable_count_command, _("\
15987 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15988 If a breakpoint is hit while enabled in this fashion,\n\
15989 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15990            &enablebreaklist);
15991
15992   add_cmd ("delete", no_class, enable_delete_command, _("\
15993 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15994 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15995            &enablelist);
15996
15997   add_cmd ("once", no_class, enable_once_command, _("\
15998 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15999 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16000            &enablelist);
16001
16002   add_cmd ("count", no_class, enable_count_command, _("\
16003 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16004 If a breakpoint is hit while enabled in this fashion,\n\
16005 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16006            &enablelist);
16007
16008   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16009 Disable some breakpoints.\n\
16010 Arguments are breakpoint numbers with spaces in between.\n\
16011 To disable all breakpoints, give no argument.\n\
16012 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16013                   &disablelist, "disable ", 1, &cmdlist);
16014   add_com_alias ("dis", "disable", class_breakpoint, 1);
16015   add_com_alias ("disa", "disable", class_breakpoint, 1);
16016   if (xdb_commands)
16017     add_com ("sb", class_breakpoint, disable_command, _("\
16018 Disable some breakpoints.\n\
16019 Arguments are breakpoint numbers with spaces in between.\n\
16020 To disable all breakpoints, give no argument.\n\
16021 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16022
16023   add_cmd ("breakpoints", class_alias, disable_command, _("\
16024 Disable some breakpoints.\n\
16025 Arguments are breakpoint numbers with spaces in between.\n\
16026 To disable all breakpoints, give no argument.\n\
16027 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16028 This command may be abbreviated \"disable\"."),
16029            &disablelist);
16030
16031   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16032 Delete some breakpoints or auto-display expressions.\n\
16033 Arguments are breakpoint numbers with spaces in between.\n\
16034 To delete all breakpoints, give no argument.\n\
16035 \n\
16036 Also a prefix command for deletion of other GDB objects.\n\
16037 The \"unset\" command is also an alias for \"delete\"."),
16038                   &deletelist, "delete ", 1, &cmdlist);
16039   add_com_alias ("d", "delete", class_breakpoint, 1);
16040   add_com_alias ("del", "delete", class_breakpoint, 1);
16041   if (xdb_commands)
16042     add_com ("db", class_breakpoint, delete_command, _("\
16043 Delete some breakpoints.\n\
16044 Arguments are breakpoint numbers with spaces in between.\n\
16045 To delete all breakpoints, give no argument.\n"));
16046
16047   add_cmd ("breakpoints", class_alias, delete_command, _("\
16048 Delete some breakpoints or auto-display expressions.\n\
16049 Arguments are breakpoint numbers with spaces in between.\n\
16050 To delete all breakpoints, give no argument.\n\
16051 This command may be abbreviated \"delete\"."),
16052            &deletelist);
16053
16054   add_com ("clear", class_breakpoint, clear_command, _("\
16055 Clear breakpoint at specified line or function.\n\
16056 Argument may be line number, function name, or \"*\" and an address.\n\
16057 If line number is specified, all breakpoints in that line are cleared.\n\
16058 If function is specified, breakpoints at beginning of function are cleared.\n\
16059 If an address is specified, breakpoints at that address are cleared.\n\
16060 \n\
16061 With no argument, clears all breakpoints in the line that the selected frame\n\
16062 is executing in.\n\
16063 \n\
16064 See also the \"delete\" command which clears breakpoints by number."));
16065   add_com_alias ("cl", "clear", class_breakpoint, 1);
16066
16067   c = add_com ("break", class_breakpoint, break_command, _("\
16068 Set breakpoint at specified line or function.\n"
16069 BREAK_ARGS_HELP ("break")));
16070   set_cmd_completer (c, location_completer);
16071
16072   add_com_alias ("b", "break", class_run, 1);
16073   add_com_alias ("br", "break", class_run, 1);
16074   add_com_alias ("bre", "break", class_run, 1);
16075   add_com_alias ("brea", "break", class_run, 1);
16076
16077   if (xdb_commands)
16078    add_com_alias ("ba", "break", class_breakpoint, 1);
16079
16080   if (dbx_commands)
16081     {
16082       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16083 Break in function/address or break at a line in the current file."),
16084                              &stoplist, "stop ", 1, &cmdlist);
16085       add_cmd ("in", class_breakpoint, stopin_command,
16086                _("Break in function or address."), &stoplist);
16087       add_cmd ("at", class_breakpoint, stopat_command,
16088                _("Break at a line in the current file."), &stoplist);
16089       add_com ("status", class_info, breakpoints_info, _("\
16090 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16091 The \"Type\" column indicates one of:\n\
16092 \tbreakpoint     - normal breakpoint\n\
16093 \twatchpoint     - watchpoint\n\
16094 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16095 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16096 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16097 address and file/line number respectively.\n\
16098 \n\
16099 Convenience variable \"$_\" and default examine address for \"x\"\n\
16100 are set to the address of the last breakpoint listed unless the command\n\
16101 is prefixed with \"server \".\n\n\
16102 Convenience variable \"$bpnum\" contains the number of the last\n\
16103 breakpoint set."));
16104     }
16105
16106   add_info ("breakpoints", breakpoints_info, _("\
16107 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16108 The \"Type\" column indicates one of:\n\
16109 \tbreakpoint     - normal breakpoint\n\
16110 \twatchpoint     - watchpoint\n\
16111 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16112 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16113 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16114 address and file/line number respectively.\n\
16115 \n\
16116 Convenience variable \"$_\" and default examine address for \"x\"\n\
16117 are set to the address of the last breakpoint listed unless the command\n\
16118 is prefixed with \"server \".\n\n\
16119 Convenience variable \"$bpnum\" contains the number of the last\n\
16120 breakpoint set."));
16121
16122   add_info_alias ("b", "breakpoints", 1);
16123
16124   if (xdb_commands)
16125     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16126 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16127 The \"Type\" column indicates one of:\n\
16128 \tbreakpoint     - normal breakpoint\n\
16129 \twatchpoint     - watchpoint\n\
16130 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16131 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16132 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16133 address and file/line number respectively.\n\
16134 \n\
16135 Convenience variable \"$_\" and default examine address for \"x\"\n\
16136 are set to the address of the last breakpoint listed unless the command\n\
16137 is prefixed with \"server \".\n\n\
16138 Convenience variable \"$bpnum\" contains the number of the last\n\
16139 breakpoint set."));
16140
16141   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16142 Status of all breakpoints, or breakpoint number NUMBER.\n\
16143 The \"Type\" column indicates one of:\n\
16144 \tbreakpoint     - normal breakpoint\n\
16145 \twatchpoint     - watchpoint\n\
16146 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16147 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16148 \tuntil          - internal breakpoint used by the \"until\" command\n\
16149 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16150 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16151 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16152 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16153 address and file/line number respectively.\n\
16154 \n\
16155 Convenience variable \"$_\" and default examine address for \"x\"\n\
16156 are set to the address of the last breakpoint listed unless the command\n\
16157 is prefixed with \"server \".\n\n\
16158 Convenience variable \"$bpnum\" contains the number of the last\n\
16159 breakpoint set."),
16160            &maintenanceinfolist);
16161
16162   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16163 Set catchpoints to catch events."),
16164                   &catch_cmdlist, "catch ",
16165                   0/*allow-unknown*/, &cmdlist);
16166
16167   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16168 Set temporary catchpoints to catch events."),
16169                   &tcatch_cmdlist, "tcatch ",
16170                   0/*allow-unknown*/, &cmdlist);
16171
16172   add_catch_command ("fork", _("Catch calls to fork."),
16173                      catch_fork_command_1,
16174                      NULL,
16175                      (void *) (uintptr_t) catch_fork_permanent,
16176                      (void *) (uintptr_t) catch_fork_temporary);
16177   add_catch_command ("vfork", _("Catch calls to vfork."),
16178                      catch_fork_command_1,
16179                      NULL,
16180                      (void *) (uintptr_t) catch_vfork_permanent,
16181                      (void *) (uintptr_t) catch_vfork_temporary);
16182   add_catch_command ("exec", _("Catch calls to exec."),
16183                      catch_exec_command_1,
16184                      NULL,
16185                      CATCH_PERMANENT,
16186                      CATCH_TEMPORARY);
16187   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16188 Usage: catch load [REGEX]\n\
16189 If REGEX is given, only stop for libraries matching the regular expression."),
16190                      catch_load_command_1,
16191                      NULL,
16192                      CATCH_PERMANENT,
16193                      CATCH_TEMPORARY);
16194   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16195 Usage: catch unload [REGEX]\n\
16196 If REGEX is given, only stop for libraries matching the regular expression."),
16197                      catch_unload_command_1,
16198                      NULL,
16199                      CATCH_PERMANENT,
16200                      CATCH_TEMPORARY);
16201   add_catch_command ("syscall", _("\
16202 Catch system calls by their names and/or numbers.\n\
16203 Arguments say which system calls to catch.  If no arguments\n\
16204 are given, every system call will be caught.\n\
16205 Arguments, if given, should be one or more system call names\n\
16206 (if your system supports that), or system call numbers."),
16207                      catch_syscall_command_1,
16208                      catch_syscall_completer,
16209                      CATCH_PERMANENT,
16210                      CATCH_TEMPORARY);
16211
16212   c = add_com ("watch", class_breakpoint, watch_command, _("\
16213 Set a watchpoint for an expression.\n\
16214 Usage: watch [-l|-location] EXPRESSION\n\
16215 A watchpoint stops execution of your program whenever the value of\n\
16216 an expression changes.\n\
16217 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16218 the memory to which it refers."));
16219   set_cmd_completer (c, expression_completer);
16220
16221   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16222 Set a read watchpoint for an expression.\n\
16223 Usage: rwatch [-l|-location] EXPRESSION\n\
16224 A watchpoint stops execution of your program whenever the value of\n\
16225 an expression is read.\n\
16226 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16227 the memory to which it refers."));
16228   set_cmd_completer (c, expression_completer);
16229
16230   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16231 Set a watchpoint for an expression.\n\
16232 Usage: awatch [-l|-location] EXPRESSION\n\
16233 A watchpoint stops execution of your program whenever the value of\n\
16234 an expression is either read or written.\n\
16235 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16236 the memory to which it refers."));
16237   set_cmd_completer (c, expression_completer);
16238
16239   add_info ("watchpoints", watchpoints_info, _("\
16240 Status of specified watchpoints (all watchpoints if no argument)."));
16241
16242   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16243      respond to changes - contrary to the description.  */
16244   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16245                             &can_use_hw_watchpoints, _("\
16246 Set debugger's willingness to use watchpoint hardware."), _("\
16247 Show debugger's willingness to use watchpoint hardware."), _("\
16248 If zero, gdb will not use hardware for new watchpoints, even if\n\
16249 such is available.  (However, any hardware watchpoints that were\n\
16250 created before setting this to nonzero, will continue to use watchpoint\n\
16251 hardware.)"),
16252                             NULL,
16253                             show_can_use_hw_watchpoints,
16254                             &setlist, &showlist);
16255
16256   can_use_hw_watchpoints = 1;
16257
16258   /* Tracepoint manipulation commands.  */
16259
16260   c = add_com ("trace", class_breakpoint, trace_command, _("\
16261 Set a tracepoint at specified line or function.\n\
16262 \n"
16263 BREAK_ARGS_HELP ("trace") "\n\
16264 Do \"help tracepoints\" for info on other tracepoint commands."));
16265   set_cmd_completer (c, location_completer);
16266
16267   add_com_alias ("tp", "trace", class_alias, 0);
16268   add_com_alias ("tr", "trace", class_alias, 1);
16269   add_com_alias ("tra", "trace", class_alias, 1);
16270   add_com_alias ("trac", "trace", class_alias, 1);
16271
16272   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16273 Set a fast tracepoint at specified line or function.\n\
16274 \n"
16275 BREAK_ARGS_HELP ("ftrace") "\n\
16276 Do \"help tracepoints\" for info on other tracepoint commands."));
16277   set_cmd_completer (c, location_completer);
16278
16279   c = add_com ("strace", class_breakpoint, strace_command, _("\
16280 Set a static tracepoint at specified line, function or marker.\n\
16281 \n\
16282 strace [LOCATION] [if CONDITION]\n\
16283 LOCATION may be a line number, function name, \"*\" and an address,\n\
16284 or -m MARKER_ID.\n\
16285 If a line number is specified, probe the marker at start of code\n\
16286 for that line.  If a function is specified, probe the marker at start\n\
16287 of code for that function.  If an address is specified, probe the marker\n\
16288 at that exact address.  If a marker id is specified, probe the marker\n\
16289 with that name.  With no LOCATION, uses current execution address of\n\
16290 the selected stack frame.\n\
16291 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16292 This collects arbitrary user data passed in the probe point call to the\n\
16293 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16294 by printing the $_sdata variable like any other convenience variable.\n\
16295 \n\
16296 CONDITION is a boolean expression.\n\
16297 \n\
16298 Multiple tracepoints at one place are permitted, and useful if their\n\
16299 conditions are different.\n\
16300 \n\
16301 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16302 Do \"help tracepoints\" for info on other tracepoint commands."));
16303   set_cmd_completer (c, location_completer);
16304
16305   add_info ("tracepoints", tracepoints_info, _("\
16306 Status of specified tracepoints (all tracepoints if no argument).\n\
16307 Convenience variable \"$tpnum\" contains the number of the\n\
16308 last tracepoint set."));
16309
16310   add_info_alias ("tp", "tracepoints", 1);
16311
16312   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16313 Delete specified tracepoints.\n\
16314 Arguments are tracepoint numbers, separated by spaces.\n\
16315 No argument means delete all tracepoints."),
16316            &deletelist);
16317   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16318
16319   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16320 Disable specified tracepoints.\n\
16321 Arguments are tracepoint numbers, separated by spaces.\n\
16322 No argument means disable all tracepoints."),
16323            &disablelist);
16324   deprecate_cmd (c, "disable");
16325
16326   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16327 Enable specified tracepoints.\n\
16328 Arguments are tracepoint numbers, separated by spaces.\n\
16329 No argument means enable all tracepoints."),
16330            &enablelist);
16331   deprecate_cmd (c, "enable");
16332
16333   add_com ("passcount", class_trace, trace_pass_command, _("\
16334 Set the passcount for a tracepoint.\n\
16335 The trace will end when the tracepoint has been passed 'count' times.\n\
16336 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16337 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16338
16339   add_prefix_cmd ("save", class_breakpoint, save_command,
16340                   _("Save breakpoint definitions as a script."),
16341                   &save_cmdlist, "save ",
16342                   0/*allow-unknown*/, &cmdlist);
16343
16344   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16345 Save current breakpoint definitions as a script.\n\
16346 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16347 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16348 session to restore them."),
16349                &save_cmdlist);
16350   set_cmd_completer (c, filename_completer);
16351
16352   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16353 Save current tracepoint definitions as a script.\n\
16354 Use the 'source' command in another debug session to restore them."),
16355                &save_cmdlist);
16356   set_cmd_completer (c, filename_completer);
16357
16358   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16359   deprecate_cmd (c, "save tracepoints");
16360
16361   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16362 Breakpoint specific settings\n\
16363 Configure various breakpoint-specific variables such as\n\
16364 pending breakpoint behavior"),
16365                   &breakpoint_set_cmdlist, "set breakpoint ",
16366                   0/*allow-unknown*/, &setlist);
16367   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16368 Breakpoint specific settings\n\
16369 Configure various breakpoint-specific variables such as\n\
16370 pending breakpoint behavior"),
16371                   &breakpoint_show_cmdlist, "show breakpoint ",
16372                   0/*allow-unknown*/, &showlist);
16373
16374   add_setshow_auto_boolean_cmd ("pending", no_class,
16375                                 &pending_break_support, _("\
16376 Set debugger's behavior regarding pending breakpoints."), _("\
16377 Show debugger's behavior regarding pending breakpoints."), _("\
16378 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16379 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16380 an error.  If auto, an unrecognized breakpoint location results in a\n\
16381 user-query to see if a pending breakpoint should be created."),
16382                                 NULL,
16383                                 show_pending_break_support,
16384                                 &breakpoint_set_cmdlist,
16385                                 &breakpoint_show_cmdlist);
16386
16387   pending_break_support = AUTO_BOOLEAN_AUTO;
16388
16389   add_setshow_boolean_cmd ("auto-hw", no_class,
16390                            &automatic_hardware_breakpoints, _("\
16391 Set automatic usage of hardware breakpoints."), _("\
16392 Show automatic usage of hardware breakpoints."), _("\
16393 If set, the debugger will automatically use hardware breakpoints for\n\
16394 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16395 a warning will be emitted for such breakpoints."),
16396                            NULL,
16397                            show_automatic_hardware_breakpoints,
16398                            &breakpoint_set_cmdlist,
16399                            &breakpoint_show_cmdlist);
16400
16401   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16402                                 &always_inserted_mode, _("\
16403 Set mode for inserting breakpoints."), _("\
16404 Show mode for inserting breakpoints."), _("\
16405 When this mode is off, breakpoints are inserted in inferior when it is\n\
16406 resumed, and removed when execution stops.  When this mode is on,\n\
16407 breakpoints are inserted immediately and removed only when the user\n\
16408 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16409 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16410 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16411 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16412 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16413                                 NULL,
16414                                 &show_always_inserted_mode,
16415                                 &breakpoint_set_cmdlist,
16416                                 &breakpoint_show_cmdlist);
16417
16418   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16419                         condition_evaluation_enums,
16420                         &condition_evaluation_mode_1, _("\
16421 Set mode of breakpoint condition evaluation."), _("\
16422 Show mode of breakpoint condition evaluation."), _("\
16423 When this is set to \"host\", breakpoint conditions will be\n\
16424 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16425 breakpoint conditions will be downloaded to the target (if the target\n\
16426 supports such feature) and conditions will be evaluated on the target's side.\n\
16427 If this is set to \"auto\" (default), this will be automatically set to\n\
16428 \"target\" if it supports condition evaluation, otherwise it will\n\
16429 be set to \"gdb\""),
16430                            &set_condition_evaluation_mode,
16431                            &show_condition_evaluation_mode,
16432                            &breakpoint_set_cmdlist,
16433                            &breakpoint_show_cmdlist);
16434
16435   add_com ("break-range", class_breakpoint, break_range_command, _("\
16436 Set a breakpoint for an address range.\n\
16437 break-range START-LOCATION, END-LOCATION\n\
16438 where START-LOCATION and END-LOCATION can be one of the following:\n\
16439   LINENUM, for that line in the current file,\n\
16440   FILE:LINENUM, for that line in that file,\n\
16441   +OFFSET, for that number of lines after the current line\n\
16442            or the start of the range\n\
16443   FUNCTION, for the first line in that function,\n\
16444   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16445   *ADDRESS, for the instruction at that address.\n\
16446 \n\
16447 The breakpoint will stop execution of the inferior whenever it executes\n\
16448 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16449 range (including START-LOCATION and END-LOCATION)."));
16450
16451   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16452 Set a dynamic printf at specified line or function.\n\
16453 dprintf location,format string,arg1,arg2,...\n\
16454 location may be a line number, function name, or \"*\" and an address.\n\
16455 If a line number is specified, break at start of code for that line.\n\
16456 If a function is specified, break at start of code for that function.\n\
16457 "));
16458   set_cmd_completer (c, location_completer);
16459
16460   add_setshow_enum_cmd ("dprintf-style", class_support,
16461                         dprintf_style_enums, &dprintf_style, _("\
16462 Set the style of usage for dynamic printf."), _("\
16463 Show the style of usage for dynamic printf."), _("\
16464 This setting chooses how GDB will do a dynamic printf.\n\
16465 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16466 console, as with the \"printf\" command.\n\
16467 If the value is \"call\", the print is done by calling a function in your\n\
16468 program; by default printf(), but you can choose a different function or\n\
16469 output stream by setting dprintf-function and dprintf-channel."),
16470                         update_dprintf_commands, NULL,
16471                         &setlist, &showlist);
16472
16473   dprintf_function = xstrdup ("printf");
16474   add_setshow_string_cmd ("dprintf-function", class_support,
16475                           &dprintf_function, _("\
16476 Set the function to use for dynamic printf"), _("\
16477 Show the function to use for dynamic printf"), NULL,
16478                           update_dprintf_commands, NULL,
16479                           &setlist, &showlist);
16480
16481   dprintf_channel = xstrdup ("");
16482   add_setshow_string_cmd ("dprintf-channel", class_support,
16483                           &dprintf_channel, _("\
16484 Set the channel to use for dynamic printf"), _("\
16485 Show the channel to use for dynamic printf"), NULL,
16486                           update_dprintf_commands, NULL,
16487                           &setlist, &showlist);
16488
16489   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16490                            &disconnected_dprintf, _("\
16491 Set whether dprintf continues after GDB disconnects."), _("\
16492 Show whether dprintf continues after GDB disconnects."), _("\
16493 Use this to let dprintf commands continue to hit and produce output\n\
16494 even if GDB disconnects or detaches from the target."),
16495                            NULL,
16496                            NULL,
16497                            &setlist, &showlist);
16498
16499   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16500 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16501 (target agent only) This is useful for formatted output in user-defined commands."));
16502
16503   automatic_hardware_breakpoints = 1;
16504
16505   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16506 }