gdb/
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 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 /* Prototypes for local functions.  */
86
87 static void enable_delete_command (char *, int);
88
89 static void enable_once_command (char *, int);
90
91 static void enable_count_command (char *, int);
92
93 static void disable_command (char *, int);
94
95 static void enable_command (char *, int);
96
97 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
98                                                       void *),
99                                     void *);
100
101 static void ignore_command (char *, int);
102
103 static int breakpoint_re_set_one (void *);
104
105 static void breakpoint_re_set_default (struct breakpoint *);
106
107 static void create_sals_from_address_default (char **,
108                                               struct linespec_result *,
109                                               enum bptype, char *,
110                                               char **);
111
112 static void create_breakpoints_sal_default (struct gdbarch *,
113                                             struct linespec_result *,
114                                             struct linespec_sals *,
115                                             char *, char *, enum bptype,
116                                             enum bpdisp, int, int,
117                                             int,
118                                             const struct breakpoint_ops *,
119                                             int, int, int, unsigned);
120
121 static void decode_linespec_default (struct breakpoint *, char **,
122                                      struct symtabs_and_lines *);
123
124 static void clear_command (char *, int);
125
126 static void catch_command (char *, int);
127
128 static int can_use_hardware_watchpoint (struct value *);
129
130 static void break_command_1 (char *, int, int);
131
132 static void mention (struct breakpoint *);
133
134 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
135                                                                enum bptype,
136                                                                const struct breakpoint_ops *);
137 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
138                                                        const struct symtab_and_line *);
139
140 /* This function is used in gdbtk sources and thus can not be made
141    static.  */
142 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
143                                        struct symtab_and_line,
144                                        enum bptype,
145                                        const struct breakpoint_ops *);
146
147 static struct breakpoint *
148   momentary_breakpoint_from_master (struct breakpoint *orig,
149                                     enum bptype type,
150                                     const struct breakpoint_ops *ops);
151
152 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
153
154 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
155                                             CORE_ADDR bpaddr,
156                                             enum bptype bptype);
157
158 static void describe_other_breakpoints (struct gdbarch *,
159                                         struct program_space *, CORE_ADDR,
160                                         struct obj_section *, int);
161
162 static int breakpoint_address_match (struct address_space *aspace1,
163                                      CORE_ADDR addr1,
164                                      struct address_space *aspace2,
165                                      CORE_ADDR addr2);
166
167 static int watchpoint_locations_match (struct bp_location *loc1,
168                                        struct bp_location *loc2);
169
170 static int breakpoint_location_address_match (struct bp_location *bl,
171                                               struct address_space *aspace,
172                                               CORE_ADDR addr);
173
174 static void breakpoints_info (char *, int);
175
176 static void watchpoints_info (char *, int);
177
178 static int breakpoint_1 (char *, int, 
179                          int (*) (const struct breakpoint *));
180
181 static int breakpoint_cond_eval (void *);
182
183 static void cleanup_executing_breakpoints (void *);
184
185 static void commands_command (char *, int);
186
187 static void condition_command (char *, int);
188
189 typedef enum
190   {
191     mark_inserted,
192     mark_uninserted
193   }
194 insertion_state_t;
195
196 static int remove_breakpoint (struct bp_location *, insertion_state_t);
197 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
198
199 static enum print_stop_action print_bp_stop_message (bpstat bs);
200
201 static int watchpoint_check (void *);
202
203 static void maintenance_info_breakpoints (char *, int);
204
205 static int hw_breakpoint_used_count (void);
206
207 static int hw_watchpoint_use_count (struct breakpoint *);
208
209 static int hw_watchpoint_used_count_others (struct breakpoint *except,
210                                             enum bptype type,
211                                             int *other_type_used);
212
213 static void hbreak_command (char *, int);
214
215 static void thbreak_command (char *, int);
216
217 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
218                                     int count);
219
220 static void stop_command (char *arg, int from_tty);
221
222 static void stopin_command (char *arg, int from_tty);
223
224 static void stopat_command (char *arg, int from_tty);
225
226 static char *ep_parse_optional_if_clause (char **arg);
227
228 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
229                                        char *arg, int tempflag, int from_tty);
230
231 static void tcatch_command (char *arg, int from_tty);
232
233 static void detach_single_step_breakpoints (void);
234
235 static int single_step_breakpoint_inserted_here_p (struct address_space *,
236                                                    CORE_ADDR pc);
237
238 static void free_bp_location (struct bp_location *loc);
239 static void incref_bp_location (struct bp_location *loc);
240 static void decref_bp_location (struct bp_location **loc);
241
242 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
243
244 static void update_global_location_list (int);
245
246 static void update_global_location_list_nothrow (int);
247
248 static int is_hardware_watchpoint (const struct breakpoint *bpt);
249
250 static void insert_breakpoint_locations (void);
251
252 static int syscall_catchpoint_p (struct breakpoint *b);
253
254 static void tracepoints_info (char *, int);
255
256 static void delete_trace_command (char *, int);
257
258 static void enable_trace_command (char *, int);
259
260 static void disable_trace_command (char *, int);
261
262 static void trace_pass_command (char *, int);
263
264 static int is_masked_watchpoint (const struct breakpoint *b);
265
266 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
267
268 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
269    otherwise.  */
270
271 static int strace_marker_p (struct breakpoint *b);
272
273 static void init_catchpoint (struct breakpoint *b,
274                              struct gdbarch *gdbarch, int tempflag,
275                              char *cond_string,
276                              const struct breakpoint_ops *ops);
277
278 /* The abstract base class all breakpoint_ops structures inherit
279    from.  */
280 static 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 static 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       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   breakpoints_changed ();
985   observer_notify_breakpoint_modified (b);
986 }
987
988 /* Completion for the "condition" command.  */
989
990 static VEC (char_ptr) *
991 condition_completer (struct cmd_list_element *cmd, char *text, char *word)
992 {
993   char *space;
994
995   text = skip_spaces (text);
996   space = skip_to_space (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         int single = b->loc->next == NULL;
1017         struct bp_location *loc;
1018         int count = 1;
1019
1020         for (loc = b->loc; loc; loc = loc->next)
1021           {
1022             char location[50];
1023
1024             if (single)
1025               sprintf (location, "%d", b->number);
1026             else
1027               sprintf (location, "%d.%d", b->number, count);
1028
1029             if (strncmp (location, text, len) == 0)
1030               VEC_safe_push (char_ptr, result, xstrdup (location));
1031
1032             ++count;
1033           }
1034       }
1035
1036       return result;
1037     }
1038
1039   /* We're completing the expression part.  */
1040   text = skip_spaces (space);
1041   return expression_completer (cmd, text, word);
1042 }
1043
1044 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1045
1046 static void
1047 condition_command (char *arg, int from_tty)
1048 {
1049   struct breakpoint *b;
1050   char *p;
1051   int bnum;
1052
1053   if (arg == 0)
1054     error_no_arg (_("breakpoint number"));
1055
1056   p = arg;
1057   bnum = get_number (&p);
1058   if (bnum == 0)
1059     error (_("Bad breakpoint argument: '%s'"), arg);
1060
1061   ALL_BREAKPOINTS (b)
1062     if (b->number == bnum)
1063       {
1064         /* Check if this breakpoint has a Python object assigned to
1065            it, and if it has a definition of the "stop"
1066            method.  This method and conditions entered into GDB from
1067            the CLI are mutually exclusive.  */
1068         if (b->py_bp_object
1069             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
1070           error (_("Cannot set a condition where a Python 'stop' "
1071                    "method has been defined in the breakpoint."));
1072         set_breakpoint_condition (b, p, from_tty);
1073
1074         if (is_breakpoint (b))
1075           update_global_location_list (1);
1076
1077         return;
1078       }
1079
1080   error (_("No breakpoint number %d."), bnum);
1081 }
1082
1083 /* Check that COMMAND do not contain commands that are suitable
1084    only for tracepoints and not suitable for ordinary breakpoints.
1085    Throw if any such commands is found.  */
1086
1087 static void
1088 check_no_tracepoint_commands (struct command_line *commands)
1089 {
1090   struct command_line *c;
1091
1092   for (c = commands; c; c = c->next)
1093     {
1094       int i;
1095
1096       if (c->control_type == while_stepping_control)
1097         error (_("The 'while-stepping' command can "
1098                  "only be used for tracepoints"));
1099
1100       for (i = 0; i < c->body_count; ++i)
1101         check_no_tracepoint_commands ((c->body_list)[i]);
1102
1103       /* Not that command parsing removes leading whitespace and comment
1104          lines and also empty lines.  So, we only need to check for
1105          command directly.  */
1106       if (strstr (c->line, "collect ") == c->line)
1107         error (_("The 'collect' command can only be used for tracepoints"));
1108
1109       if (strstr (c->line, "teval ") == c->line)
1110         error (_("The 'teval' command can only be used for tracepoints"));
1111     }
1112 }
1113
1114 /* Encapsulate tests for different types of tracepoints.  */
1115
1116 static int
1117 is_tracepoint_type (enum bptype type)
1118 {
1119   return (type == bp_tracepoint
1120           || type == bp_fast_tracepoint
1121           || type == bp_static_tracepoint);
1122 }
1123
1124 int
1125 is_tracepoint (const struct breakpoint *b)
1126 {
1127   return is_tracepoint_type (b->type);
1128 }
1129
1130 /* A helper function that validates that COMMANDS are valid for a
1131    breakpoint.  This function will throw an exception if a problem is
1132    found.  */
1133
1134 static void
1135 validate_commands_for_breakpoint (struct breakpoint *b,
1136                                   struct command_line *commands)
1137 {
1138   if (is_tracepoint (b))
1139     {
1140       /* We need to verify that each top-level element of commands is
1141          valid for tracepoints, that there's at most one
1142          while-stepping element, and that while-stepping's body has
1143          valid tracing commands excluding nested while-stepping.  */
1144       struct command_line *c;
1145       struct command_line *while_stepping = 0;
1146       for (c = commands; c; c = c->next)
1147         {
1148           if (c->control_type == while_stepping_control)
1149             {
1150               if (b->type == bp_fast_tracepoint)
1151                 error (_("The 'while-stepping' command "
1152                          "cannot be used for fast tracepoint"));
1153               else if (b->type == bp_static_tracepoint)
1154                 error (_("The 'while-stepping' command "
1155                          "cannot be used for static tracepoint"));
1156
1157               if (while_stepping)
1158                 error (_("The 'while-stepping' command "
1159                          "can be used only once"));
1160               else
1161                 while_stepping = c;
1162             }
1163         }
1164       if (while_stepping)
1165         {
1166           struct command_line *c2;
1167
1168           gdb_assert (while_stepping->body_count == 1);
1169           c2 = while_stepping->body_list[0];
1170           for (; c2; c2 = c2->next)
1171             {
1172               if (c2->control_type == while_stepping_control)
1173                 error (_("The 'while-stepping' command cannot be nested"));
1174             }
1175         }
1176     }
1177   else
1178     {
1179       check_no_tracepoint_commands (commands);
1180     }
1181 }
1182
1183 /* Return a vector of all the static tracepoints set at ADDR.  The
1184    caller is responsible for releasing the vector.  */
1185
1186 VEC(breakpoint_p) *
1187 static_tracepoints_here (CORE_ADDR addr)
1188 {
1189   struct breakpoint *b;
1190   VEC(breakpoint_p) *found = 0;
1191   struct bp_location *loc;
1192
1193   ALL_BREAKPOINTS (b)
1194     if (b->type == bp_static_tracepoint)
1195       {
1196         for (loc = b->loc; loc; loc = loc->next)
1197           if (loc->address == addr)
1198             VEC_safe_push(breakpoint_p, found, b);
1199       }
1200
1201   return found;
1202 }
1203
1204 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1205    validate that only allowed commands are included.  */
1206
1207 void
1208 breakpoint_set_commands (struct breakpoint *b, 
1209                          struct command_line *commands)
1210 {
1211   validate_commands_for_breakpoint (b, commands);
1212
1213   decref_counted_command_line (&b->commands);
1214   b->commands = alloc_counted_command_line (commands);
1215   breakpoints_changed ();
1216   observer_notify_breakpoint_modified (b);
1217 }
1218
1219 /* Set the internal `silent' flag on the breakpoint.  Note that this
1220    is not the same as the "silent" that may appear in the breakpoint's
1221    commands.  */
1222
1223 void
1224 breakpoint_set_silent (struct breakpoint *b, int silent)
1225 {
1226   int old_silent = b->silent;
1227
1228   b->silent = silent;
1229   if (old_silent != silent)
1230     observer_notify_breakpoint_modified (b);
1231 }
1232
1233 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1234    breakpoint work for any thread.  */
1235
1236 void
1237 breakpoint_set_thread (struct breakpoint *b, int thread)
1238 {
1239   int old_thread = b->thread;
1240
1241   b->thread = thread;
1242   if (old_thread != thread)
1243     observer_notify_breakpoint_modified (b);
1244 }
1245
1246 /* Set the task for this breakpoint.  If TASK is 0, make the
1247    breakpoint work for any task.  */
1248
1249 void
1250 breakpoint_set_task (struct breakpoint *b, int task)
1251 {
1252   int old_task = b->task;
1253
1254   b->task = task;
1255   if (old_task != task)
1256     observer_notify_breakpoint_modified (b);
1257 }
1258
1259 void
1260 check_tracepoint_command (char *line, void *closure)
1261 {
1262   struct breakpoint *b = closure;
1263
1264   validate_actionline (&line, b);
1265 }
1266
1267 /* A structure used to pass information through
1268    map_breakpoint_numbers.  */
1269
1270 struct commands_info
1271 {
1272   /* True if the command was typed at a tty.  */
1273   int from_tty;
1274
1275   /* The breakpoint range spec.  */
1276   char *arg;
1277
1278   /* Non-NULL if the body of the commands are being read from this
1279      already-parsed command.  */
1280   struct command_line *control;
1281
1282   /* The command lines read from the user, or NULL if they have not
1283      yet been read.  */
1284   struct counted_command_line *cmd;
1285 };
1286
1287 /* A callback for map_breakpoint_numbers that sets the commands for
1288    commands_command.  */
1289
1290 static void
1291 do_map_commands_command (struct breakpoint *b, void *data)
1292 {
1293   struct commands_info *info = data;
1294
1295   if (info->cmd == NULL)
1296     {
1297       struct command_line *l;
1298
1299       if (info->control != NULL)
1300         l = copy_command_lines (info->control->body_list[0]);
1301       else
1302         {
1303           struct cleanup *old_chain;
1304           char *str;
1305
1306           str = xstrprintf (_("Type commands for breakpoint(s) "
1307                               "%s, one per line."),
1308                             info->arg);
1309
1310           old_chain = make_cleanup (xfree, str);
1311
1312           l = read_command_lines (str,
1313                                   info->from_tty, 1,
1314                                   (is_tracepoint (b)
1315                                    ? check_tracepoint_command : 0),
1316                                   b);
1317
1318           do_cleanups (old_chain);
1319         }
1320
1321       info->cmd = alloc_counted_command_line (l);
1322     }
1323
1324   /* If a breakpoint was on the list more than once, we don't need to
1325      do anything.  */
1326   if (b->commands != info->cmd)
1327     {
1328       validate_commands_for_breakpoint (b, info->cmd->commands);
1329       incref_counted_command_line (info->cmd);
1330       decref_counted_command_line (&b->commands);
1331       b->commands = info->cmd;
1332       breakpoints_changed ();
1333       observer_notify_breakpoint_modified (b);
1334     }
1335 }
1336
1337 static void
1338 commands_command_1 (char *arg, int from_tty, 
1339                     struct command_line *control)
1340 {
1341   struct cleanup *cleanups;
1342   struct commands_info info;
1343
1344   info.from_tty = from_tty;
1345   info.control = control;
1346   info.cmd = NULL;
1347   /* If we read command lines from the user, then `info' will hold an
1348      extra reference to the commands that we must clean up.  */
1349   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1350
1351   if (arg == NULL || !*arg)
1352     {
1353       if (breakpoint_count - prev_breakpoint_count > 1)
1354         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1355                           breakpoint_count);
1356       else if (breakpoint_count > 0)
1357         arg = xstrprintf ("%d", breakpoint_count);
1358       else
1359         {
1360           /* So that we don't try to free the incoming non-NULL
1361              argument in the cleanup below.  Mapping breakpoint
1362              numbers will fail in this case.  */
1363           arg = NULL;
1364         }
1365     }
1366   else
1367     /* The command loop has some static state, so we need to preserve
1368        our argument.  */
1369     arg = xstrdup (arg);
1370
1371   if (arg != NULL)
1372     make_cleanup (xfree, arg);
1373
1374   info.arg = arg;
1375
1376   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1377
1378   if (info.cmd == NULL)
1379     error (_("No breakpoints specified."));
1380
1381   do_cleanups (cleanups);
1382 }
1383
1384 static void
1385 commands_command (char *arg, int from_tty)
1386 {
1387   commands_command_1 (arg, from_tty, NULL);
1388 }
1389
1390 /* Like commands_command, but instead of reading the commands from
1391    input stream, takes them from an already parsed command structure.
1392
1393    This is used by cli-script.c to DTRT with breakpoint commands
1394    that are part of if and while bodies.  */
1395 enum command_control_type
1396 commands_from_control_command (char *arg, struct command_line *cmd)
1397 {
1398   commands_command_1 (arg, 0, cmd);
1399   return simple_control;
1400 }
1401
1402 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1403
1404 static int
1405 bp_location_has_shadow (struct bp_location *bl)
1406 {
1407   if (bl->loc_type != bp_loc_software_breakpoint)
1408     return 0;
1409   if (!bl->inserted)
1410     return 0;
1411   if (bl->target_info.shadow_len == 0)
1412     /* BL isn't valid, or doesn't shadow memory.  */
1413     return 0;
1414   return 1;
1415 }
1416
1417 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1418    by replacing any memory breakpoints with their shadowed contents.
1419
1420    If READBUF is not NULL, this buffer must not overlap with any of
1421    the breakpoint location's shadow_contents buffers.  Otherwise,
1422    a failed assertion internal error will be raised.
1423
1424    The range of shadowed area by each bp_location is:
1425      bl->address - bp_location_placed_address_before_address_max
1426      up to bl->address + bp_location_shadow_len_after_address_max
1427    The range we were requested to resolve shadows for is:
1428      memaddr ... memaddr + len
1429    Thus the safe cutoff boundaries for performance optimization are
1430      memaddr + len <= (bl->address
1431                        - bp_location_placed_address_before_address_max)
1432    and:
1433      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1434
1435 void
1436 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1437                         const gdb_byte *writebuf_org,
1438                         ULONGEST memaddr, LONGEST len)
1439 {
1440   /* Left boundary, right boundary and median element of our binary
1441      search.  */
1442   unsigned bc_l, bc_r, bc;
1443
1444   /* Find BC_L which is a leftmost element which may affect BUF
1445      content.  It is safe to report lower value but a failure to
1446      report higher one.  */
1447
1448   bc_l = 0;
1449   bc_r = bp_location_count;
1450   while (bc_l + 1 < bc_r)
1451     {
1452       struct bp_location *bl;
1453
1454       bc = (bc_l + bc_r) / 2;
1455       bl = bp_location[bc];
1456
1457       /* Check first BL->ADDRESS will not overflow due to the added
1458          constant.  Then advance the left boundary only if we are sure
1459          the BC element can in no way affect the BUF content (MEMADDR
1460          to MEMADDR + LEN range).
1461
1462          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1463          offset so that we cannot miss a breakpoint with its shadow
1464          range tail still reaching MEMADDR.  */
1465
1466       if ((bl->address + bp_location_shadow_len_after_address_max
1467            >= bl->address)
1468           && (bl->address + bp_location_shadow_len_after_address_max
1469               <= memaddr))
1470         bc_l = bc;
1471       else
1472         bc_r = bc;
1473     }
1474
1475   /* Due to the binary search above, we need to make sure we pick the
1476      first location that's at BC_L's address.  E.g., if there are
1477      multiple locations at the same address, BC_L may end up pointing
1478      at a duplicate location, and miss the "master"/"inserted"
1479      location.  Say, given locations L1, L2 and L3 at addresses A and
1480      B:
1481
1482       L1@A, L2@A, L3@B, ...
1483
1484      BC_L could end up pointing at location L2, while the "master"
1485      location could be L1.  Since the `loc->inserted' flag is only set
1486      on "master" locations, we'd forget to restore the shadow of L1
1487      and L2.  */
1488   while (bc_l > 0
1489          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1490     bc_l--;
1491
1492   /* Now do full processing of the found relevant range of elements.  */
1493
1494   for (bc = bc_l; bc < bp_location_count; bc++)
1495   {
1496     struct bp_location *bl = bp_location[bc];
1497     CORE_ADDR bp_addr = 0;
1498     int bp_size = 0;
1499     int bptoffset = 0;
1500
1501     /* bp_location array has BL->OWNER always non-NULL.  */
1502     if (bl->owner->type == bp_none)
1503       warning (_("reading through apparently deleted breakpoint #%d?"),
1504                bl->owner->number);
1505
1506     /* Performance optimization: any further element can no longer affect BUF
1507        content.  */
1508
1509     if (bl->address >= bp_location_placed_address_before_address_max
1510         && memaddr + len <= (bl->address
1511                              - bp_location_placed_address_before_address_max))
1512       break;
1513
1514     if (!bp_location_has_shadow (bl))
1515       continue;
1516     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1517                                    current_program_space->aspace, 0))
1518       continue;
1519
1520     /* Addresses and length of the part of the breakpoint that
1521        we need to copy.  */
1522     bp_addr = bl->target_info.placed_address;
1523     bp_size = bl->target_info.shadow_len;
1524
1525     if (bp_addr + bp_size <= memaddr)
1526       /* The breakpoint is entirely before the chunk of memory we
1527          are reading.  */
1528       continue;
1529
1530     if (bp_addr >= memaddr + len)
1531       /* The breakpoint is entirely after the chunk of memory we are
1532          reading.  */
1533       continue;
1534
1535     /* Offset within shadow_contents.  */
1536     if (bp_addr < memaddr)
1537       {
1538         /* Only copy the second part of the breakpoint.  */
1539         bp_size -= memaddr - bp_addr;
1540         bptoffset = memaddr - bp_addr;
1541         bp_addr = memaddr;
1542       }
1543
1544     if (bp_addr + bp_size > memaddr + len)
1545       {
1546         /* Only copy the first part of the breakpoint.  */
1547         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1548       }
1549
1550     if (readbuf != NULL)
1551       {
1552         /* Verify that the readbuf buffer does not overlap with
1553            the shadow_contents buffer.  */
1554         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1555                     || readbuf >= (bl->target_info.shadow_contents
1556                                    + bl->target_info.shadow_len));
1557
1558         /* Update the read buffer with this inserted breakpoint's
1559            shadow.  */
1560         memcpy (readbuf + bp_addr - memaddr,
1561                 bl->target_info.shadow_contents + bptoffset, bp_size);
1562       }
1563     else
1564       {
1565         struct gdbarch *gdbarch = bl->gdbarch;
1566         const unsigned char *bp;
1567         CORE_ADDR placed_address = bl->target_info.placed_address;
1568         unsigned placed_size = bl->target_info.placed_size;
1569
1570         /* Update the shadow with what we want to write to memory.  */
1571         memcpy (bl->target_info.shadow_contents + bptoffset,
1572                 writebuf_org + bp_addr - memaddr, bp_size);
1573
1574         /* Determine appropriate breakpoint contents and size for this
1575            address.  */
1576         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1577
1578         /* Update the final write buffer with this inserted
1579            breakpoint's INSN.  */
1580         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1581       }
1582   }
1583 }
1584 \f
1585
1586 /* Return true if BPT is either a software breakpoint or a hardware
1587    breakpoint.  */
1588
1589 int
1590 is_breakpoint (const struct breakpoint *bpt)
1591 {
1592   return (bpt->type == bp_breakpoint
1593           || bpt->type == bp_hardware_breakpoint
1594           || bpt->type == bp_dprintf);
1595 }
1596
1597 /* Return true if BPT is of any hardware watchpoint kind.  */
1598
1599 static int
1600 is_hardware_watchpoint (const struct breakpoint *bpt)
1601 {
1602   return (bpt->type == bp_hardware_watchpoint
1603           || bpt->type == bp_read_watchpoint
1604           || bpt->type == bp_access_watchpoint);
1605 }
1606
1607 /* Return true if BPT is of any watchpoint kind, hardware or
1608    software.  */
1609
1610 int
1611 is_watchpoint (const struct breakpoint *bpt)
1612 {
1613   return (is_hardware_watchpoint (bpt)
1614           || bpt->type == bp_watchpoint);
1615 }
1616
1617 /* Returns true if the current thread and its running state are safe
1618    to evaluate or update watchpoint B.  Watchpoints on local
1619    expressions need to be evaluated in the context of the thread that
1620    was current when the watchpoint was created, and, that thread needs
1621    to be stopped to be able to select the correct frame context.
1622    Watchpoints on global expressions can be evaluated on any thread,
1623    and in any state.  It is presently left to the target allowing
1624    memory accesses when threads are running.  */
1625
1626 static int
1627 watchpoint_in_thread_scope (struct watchpoint *b)
1628 {
1629   return (b->base.pspace == current_program_space
1630           && (ptid_equal (b->watchpoint_thread, null_ptid)
1631               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1632                   && !is_executing (inferior_ptid))));
1633 }
1634
1635 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1636    associated bp_watchpoint_scope breakpoint.  */
1637
1638 static void
1639 watchpoint_del_at_next_stop (struct watchpoint *w)
1640 {
1641   struct breakpoint *b = &w->base;
1642
1643   if (b->related_breakpoint != b)
1644     {
1645       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1646       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1647       b->related_breakpoint->disposition = disp_del_at_next_stop;
1648       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1649       b->related_breakpoint = b;
1650     }
1651   b->disposition = disp_del_at_next_stop;
1652 }
1653
1654 /* Assuming that B is a watchpoint:
1655    - Reparse watchpoint expression, if REPARSE is non-zero
1656    - Evaluate expression and store the result in B->val
1657    - Evaluate the condition if there is one, and store the result
1658      in b->loc->cond.
1659    - Update the list of values that must be watched in B->loc.
1660
1661    If the watchpoint disposition is disp_del_at_next_stop, then do
1662    nothing.  If this is local watchpoint that is out of scope, delete
1663    it.
1664
1665    Even with `set breakpoint always-inserted on' the watchpoints are
1666    removed + inserted on each stop here.  Normal breakpoints must
1667    never be removed because they might be missed by a running thread
1668    when debugging in non-stop mode.  On the other hand, hardware
1669    watchpoints (is_hardware_watchpoint; processed here) are specific
1670    to each LWP since they are stored in each LWP's hardware debug
1671    registers.  Therefore, such LWP must be stopped first in order to
1672    be able to modify its hardware watchpoints.
1673
1674    Hardware watchpoints must be reset exactly once after being
1675    presented to the user.  It cannot be done sooner, because it would
1676    reset the data used to present the watchpoint hit to the user.  And
1677    it must not be done later because it could display the same single
1678    watchpoint hit during multiple GDB stops.  Note that the latter is
1679    relevant only to the hardware watchpoint types bp_read_watchpoint
1680    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1681    not user-visible - its hit is suppressed if the memory content has
1682    not changed.
1683
1684    The following constraints influence the location where we can reset
1685    hardware watchpoints:
1686
1687    * target_stopped_by_watchpoint and target_stopped_data_address are
1688      called several times when GDB stops.
1689
1690    [linux] 
1691    * Multiple hardware watchpoints can be hit at the same time,
1692      causing GDB to stop.  GDB only presents one hardware watchpoint
1693      hit at a time as the reason for stopping, and all the other hits
1694      are presented later, one after the other, each time the user
1695      requests the execution to be resumed.  Execution is not resumed
1696      for the threads still having pending hit event stored in
1697      LWP_INFO->STATUS.  While the watchpoint is already removed from
1698      the inferior on the first stop the thread hit event is kept being
1699      reported from its cached value by linux_nat_stopped_data_address
1700      until the real thread resume happens after the watchpoint gets
1701      presented and thus its LWP_INFO->STATUS gets reset.
1702
1703    Therefore the hardware watchpoint hit can get safely reset on the
1704    watchpoint removal from inferior.  */
1705
1706 static void
1707 update_watchpoint (struct watchpoint *b, int reparse)
1708 {
1709   int within_current_scope;
1710   struct frame_id saved_frame_id;
1711   int frame_saved;
1712
1713   /* If this is a local watchpoint, we only want to check if the
1714      watchpoint frame is in scope if the current thread is the thread
1715      that was used to create the watchpoint.  */
1716   if (!watchpoint_in_thread_scope (b))
1717     return;
1718
1719   if (b->base.disposition == disp_del_at_next_stop)
1720     return;
1721  
1722   frame_saved = 0;
1723
1724   /* Determine if the watchpoint is within scope.  */
1725   if (b->exp_valid_block == NULL)
1726     within_current_scope = 1;
1727   else
1728     {
1729       struct frame_info *fi = get_current_frame ();
1730       struct gdbarch *frame_arch = get_frame_arch (fi);
1731       CORE_ADDR frame_pc = get_frame_pc (fi);
1732
1733       /* If we're in a function epilogue, unwinding may not work
1734          properly, so do not attempt to recreate locations at this
1735          point.  See similar comments in watchpoint_check.  */
1736       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1737         return;
1738
1739       /* Save the current frame's ID so we can restore it after
1740          evaluating the watchpoint expression on its own frame.  */
1741       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1742          took a frame parameter, so that we didn't have to change the
1743          selected frame.  */
1744       frame_saved = 1;
1745       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1746
1747       fi = frame_find_by_id (b->watchpoint_frame);
1748       within_current_scope = (fi != NULL);
1749       if (within_current_scope)
1750         select_frame (fi);
1751     }
1752
1753   /* We don't free locations.  They are stored in the bp_location array
1754      and update_global_location_list will eventually delete them and
1755      remove breakpoints if needed.  */
1756   b->base.loc = NULL;
1757
1758   if (within_current_scope && reparse)
1759     {
1760       char *s;
1761
1762       if (b->exp)
1763         {
1764           xfree (b->exp);
1765           b->exp = NULL;
1766         }
1767       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1768       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1769       /* If the meaning of expression itself changed, the old value is
1770          no longer relevant.  We don't want to report a watchpoint hit
1771          to the user when the old value and the new value may actually
1772          be completely different objects.  */
1773       value_free (b->val);
1774       b->val = NULL;
1775       b->val_valid = 0;
1776
1777       /* Note that unlike with breakpoints, the watchpoint's condition
1778          expression is stored in the breakpoint object, not in the
1779          locations (re)created below.  */
1780       if (b->base.cond_string != NULL)
1781         {
1782           if (b->cond_exp != NULL)
1783             {
1784               xfree (b->cond_exp);
1785               b->cond_exp = NULL;
1786             }
1787
1788           s = b->base.cond_string;
1789           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1790         }
1791     }
1792
1793   /* If we failed to parse the expression, for example because
1794      it refers to a global variable in a not-yet-loaded shared library,
1795      don't try to insert watchpoint.  We don't automatically delete
1796      such watchpoint, though, since failure to parse expression
1797      is different from out-of-scope watchpoint.  */
1798   if ( !target_has_execution)
1799     {
1800       /* Without execution, memory can't change.  No use to try and
1801          set watchpoint locations.  The watchpoint will be reset when
1802          the target gains execution, through breakpoint_re_set.  */
1803     }
1804   else if (within_current_scope && b->exp)
1805     {
1806       int pc = 0;
1807       struct value *val_chain, *v, *result, *next;
1808       struct program_space *frame_pspace;
1809
1810       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1811
1812       /* Avoid setting b->val if it's already set.  The meaning of
1813          b->val is 'the last value' user saw, and we should update
1814          it only if we reported that last value to user.  As it
1815          happens, the code that reports it updates b->val directly.
1816          We don't keep track of the memory value for masked
1817          watchpoints.  */
1818       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1819         {
1820           b->val = v;
1821           b->val_valid = 1;
1822         }
1823
1824       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1825
1826       /* Look at each value on the value chain.  */
1827       for (v = val_chain; v; v = value_next (v))
1828         {
1829           /* If it's a memory location, and GDB actually needed
1830              its contents to evaluate the expression, then we
1831              must watch it.  If the first value returned is
1832              still lazy, that means an error occurred reading it;
1833              watch it anyway in case it becomes readable.  */
1834           if (VALUE_LVAL (v) == lval_memory
1835               && (v == val_chain || ! value_lazy (v)))
1836             {
1837               struct type *vtype = check_typedef (value_type (v));
1838
1839               /* We only watch structs and arrays if user asked
1840                  for it explicitly, never if they just happen to
1841                  appear in the middle of some value chain.  */
1842               if (v == result
1843                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1844                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1845                 {
1846                   CORE_ADDR addr;
1847                   int len, type;
1848                   struct bp_location *loc, **tmp;
1849
1850                   addr = value_address (v);
1851                   len = TYPE_LENGTH (value_type (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 = len;
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   struct cleanup *old_chain = NULL;
2049   volatile struct gdb_exception ex;
2050
2051   if (!cond)
2052     return NULL;
2053
2054   /* We don't want to stop processing, so catch any errors
2055      that may show up.  */
2056   TRY_CATCH (ex, RETURN_MASK_ERROR)
2057     {
2058       aexpr = gen_eval_for_expr (scope, cond);
2059     }
2060
2061   if (ex.reason < 0)
2062     {
2063       /* If we got here, it means the condition could not be parsed to a valid
2064          bytecode expression and thus can't be evaluated on the target's side.
2065          It's no use iterating through the conditions.  */
2066       return NULL;
2067     }
2068
2069   /* We have a valid agent expression.  */
2070   return aexpr;
2071 }
2072
2073 /* Based on location BL, create a list of breakpoint conditions to be
2074    passed on to the target.  If we have duplicated locations with different
2075    conditions, we will add such conditions to the list.  The idea is that the
2076    target will evaluate the list of conditions and will only notify GDB when
2077    one of them is true.  */
2078
2079 static void
2080 build_target_condition_list (struct bp_location *bl)
2081 {
2082   struct bp_location **locp = NULL, **loc2p;
2083   int null_condition_or_parse_error = 0;
2084   int modified = bl->needs_update;
2085   struct bp_location *loc;
2086
2087   /* This is only meaningful if the target is
2088      evaluating conditions and if the user has
2089      opted for condition evaluation on the target's
2090      side.  */
2091   if (gdb_evaluates_breakpoint_condition_p ()
2092       || !target_supports_evaluation_of_breakpoint_conditions ())
2093     return;
2094
2095   /* Do a first pass to check for locations with no assigned
2096      conditions or conditions that fail to parse to a valid agent expression
2097      bytecode.  If any of these happen, then it's no use to send conditions
2098      to the target since this location will always trigger and generate a
2099      response back to GDB.  */
2100   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2101     {
2102       loc = (*loc2p);
2103       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2104         {
2105           if (modified)
2106             {
2107               struct agent_expr *aexpr;
2108
2109               /* Re-parse the conditions since something changed.  In that
2110                  case we already freed the condition bytecodes (see
2111                  force_breakpoint_reinsertion).  We just
2112                  need to parse the condition to bytecodes again.  */
2113               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2114               loc->cond_bytecode = aexpr;
2115
2116               /* Check if we managed to parse the conditional expression
2117                  correctly.  If not, we will not send this condition
2118                  to the target.  */
2119               if (aexpr)
2120                 continue;
2121             }
2122
2123           /* If we have a NULL bytecode expression, it means something
2124              went wrong or we have a null condition expression.  */
2125           if (!loc->cond_bytecode)
2126             {
2127               null_condition_or_parse_error = 1;
2128               break;
2129             }
2130         }
2131     }
2132
2133   /* If any of these happened, it means we will have to evaluate the conditions
2134      for the location's address on gdb's side.  It is no use keeping bytecodes
2135      for all the other duplicate locations, thus we free all of them here.
2136
2137      This is so we have a finer control over which locations' conditions are
2138      being evaluated by GDB or the remote stub.  */
2139   if (null_condition_or_parse_error)
2140     {
2141       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2142         {
2143           loc = (*loc2p);
2144           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2145             {
2146               /* Only go as far as the first NULL bytecode is
2147                  located.  */
2148               if (!loc->cond_bytecode)
2149                 return;
2150
2151               free_agent_expr (loc->cond_bytecode);
2152               loc->cond_bytecode = NULL;
2153             }
2154         }
2155     }
2156
2157   /* No NULL conditions or failed bytecode generation.  Build a condition list
2158      for this location's address.  */
2159   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2160     {
2161       loc = (*loc2p);
2162       if (loc->cond
2163           && is_breakpoint (loc->owner)
2164           && loc->pspace->num == bl->pspace->num
2165           && loc->owner->enable_state == bp_enabled
2166           && loc->enabled)
2167         /* Add the condition to the vector.  This will be used later to send the
2168            conditions to the target.  */
2169         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2170                        loc->cond_bytecode);
2171     }
2172
2173   return;
2174 }
2175
2176 /* Parses a command described by string CMD into an agent expression
2177    bytecode suitable for evaluation by the bytecode interpreter.
2178    Return NULL if there was any error during parsing.  */
2179
2180 static struct agent_expr *
2181 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2182 {
2183   struct cleanup *old_cleanups = 0;
2184   struct expression *expr, **argvec;
2185   struct agent_expr *aexpr = NULL;
2186   struct cleanup *old_chain = NULL;
2187   volatile struct gdb_exception ex;
2188   char *cmdrest;
2189   char *format_start, *format_end;
2190   struct format_piece *fpieces;
2191   int nargs;
2192   struct gdbarch *gdbarch = get_current_arch ();
2193
2194   if (!cmd)
2195     return NULL;
2196
2197   cmdrest = cmd;
2198
2199   if (*cmdrest == ',')
2200     ++cmdrest;
2201   cmdrest = skip_spaces (cmdrest);
2202
2203   if (*cmdrest++ != '"')
2204     error (_("No format string following the location"));
2205
2206   format_start = cmdrest;
2207
2208   fpieces = parse_format_string (&cmdrest);
2209
2210   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2211
2212   format_end = cmdrest;
2213
2214   if (*cmdrest++ != '"')
2215     error (_("Bad format string, non-terminated '\"'."));
2216   
2217   cmdrest = skip_spaces (cmdrest);
2218
2219   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2220     error (_("Invalid argument syntax"));
2221
2222   if (*cmdrest == ',')
2223     cmdrest++;
2224   cmdrest = skip_spaces (cmdrest);
2225
2226   /* For each argument, make an expression.  */
2227
2228   argvec = (struct expression **) alloca (strlen (cmd)
2229                                          * sizeof (struct expression *));
2230
2231   nargs = 0;
2232   while (*cmdrest != '\0')
2233     {
2234       char *cmd1;
2235
2236       cmd1 = cmdrest;
2237       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2238       argvec[nargs++] = expr;
2239       cmdrest = cmd1;
2240       if (*cmdrest == ',')
2241         ++cmdrest;
2242     }
2243
2244   /* We don't want to stop processing, so catch any errors
2245      that may show up.  */
2246   TRY_CATCH (ex, RETURN_MASK_ERROR)
2247     {
2248       aexpr = gen_printf (scope, gdbarch, 0, 0,
2249                           format_start, format_end - format_start,
2250                           fpieces, nargs, argvec);
2251     }
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   do_cleanups (old_cleanups);
2262
2263   /* We have a valid agent expression, return it.  */
2264   return aexpr;
2265 }
2266
2267 /* Based on location BL, create a list of breakpoint commands to be
2268    passed on to the target.  If we have duplicated locations with
2269    different commands, we will add any such to the list.  */
2270
2271 static void
2272 build_target_command_list (struct bp_location *bl)
2273 {
2274   struct bp_location **locp = NULL, **loc2p;
2275   int null_command_or_parse_error = 0;
2276   int modified = bl->needs_update;
2277   struct bp_location *loc;
2278
2279   /* For now, limit to agent-style dprintf breakpoints.  */
2280   if (bl->owner->type != bp_dprintf
2281       || strcmp (dprintf_style, dprintf_style_agent) != 0)
2282     return;
2283
2284   if (!target_can_run_breakpoint_commands ())
2285     return;
2286
2287   /* Do a first pass to check for locations with no assigned
2288      conditions or conditions that fail to parse to a valid agent expression
2289      bytecode.  If any of these happen, then it's no use to send conditions
2290      to the target since this location will always trigger and generate a
2291      response back to GDB.  */
2292   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2293     {
2294       loc = (*loc2p);
2295       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2296         {
2297           if (modified)
2298             {
2299               struct agent_expr *aexpr;
2300
2301               /* Re-parse the commands since something changed.  In that
2302                  case we already freed the command bytecodes (see
2303                  force_breakpoint_reinsertion).  We just
2304                  need to parse the command to bytecodes again.  */
2305               aexpr = parse_cmd_to_aexpr (bl->address,
2306                                           loc->owner->extra_string);
2307               loc->cmd_bytecode = aexpr;
2308
2309               if (!aexpr)
2310                 continue;
2311             }
2312
2313           /* If we have a NULL bytecode expression, it means something
2314              went wrong or we have a null command expression.  */
2315           if (!loc->cmd_bytecode)
2316             {
2317               null_command_or_parse_error = 1;
2318               break;
2319             }
2320         }
2321     }
2322
2323   /* If anything failed, then we're not doing target-side commands,
2324      and so clean up.  */
2325   if (null_command_or_parse_error)
2326     {
2327       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2328         {
2329           loc = (*loc2p);
2330           if (is_breakpoint (loc->owner)
2331               && loc->pspace->num == bl->pspace->num)
2332             {
2333               /* Only go as far as the first NULL bytecode is
2334                  located.  */
2335               if (!loc->cond_bytecode)
2336                 return;
2337
2338               free_agent_expr (loc->cond_bytecode);
2339               loc->cond_bytecode = NULL;
2340             }
2341         }
2342     }
2343
2344   /* No NULL commands or failed bytecode generation.  Build a command list
2345      for this location's address.  */
2346   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2347     {
2348       loc = (*loc2p);
2349       if (loc->owner->extra_string
2350           && is_breakpoint (loc->owner)
2351           && loc->pspace->num == bl->pspace->num
2352           && loc->owner->enable_state == bp_enabled
2353           && loc->enabled)
2354         /* Add the command to the vector.  This will be used later
2355            to send the commands to the target.  */
2356         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2357                        loc->cmd_bytecode);
2358     }
2359
2360   bl->target_info.persist = 0;
2361   /* Maybe flag this location as persistent.  */
2362   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2363     bl->target_info.persist = 1;
2364 }
2365
2366 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2367    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2368    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2369    Returns 0 for success, 1 if the bp_location type is not supported or
2370    -1 for failure.
2371
2372    NOTE drow/2003-09-09: This routine could be broken down to an
2373    object-style method for each breakpoint or catchpoint type.  */
2374 static int
2375 insert_bp_location (struct bp_location *bl,
2376                     struct ui_file *tmp_error_stream,
2377                     int *disabled_breaks,
2378                     int *hw_breakpoint_error)
2379 {
2380   int val = 0;
2381
2382   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2383     return 0;
2384
2385   /* Note we don't initialize bl->target_info, as that wipes out
2386      the breakpoint location's shadow_contents if the breakpoint
2387      is still inserted at that location.  This in turn breaks
2388      target_read_memory which depends on these buffers when
2389      a memory read is requested at the breakpoint location:
2390      Once the target_info has been wiped, we fail to see that
2391      we have a breakpoint inserted at that address and thus
2392      read the breakpoint instead of returning the data saved in
2393      the breakpoint location's shadow contents.  */
2394   bl->target_info.placed_address = bl->address;
2395   bl->target_info.placed_address_space = bl->pspace->aspace;
2396   bl->target_info.length = bl->length;
2397
2398   /* When working with target-side conditions, we must pass all the conditions
2399      for the same breakpoint address down to the target since GDB will not
2400      insert those locations.  With a list of breakpoint conditions, the target
2401      can decide when to stop and notify GDB.  */
2402
2403   if (is_breakpoint (bl->owner))
2404     {
2405       build_target_condition_list (bl);
2406       build_target_command_list (bl);
2407       /* Reset the modification marker.  */
2408       bl->needs_update = 0;
2409     }
2410
2411   if (bl->loc_type == bp_loc_software_breakpoint
2412       || bl->loc_type == bp_loc_hardware_breakpoint)
2413     {
2414       if (bl->owner->type != bp_hardware_breakpoint)
2415         {
2416           /* If the explicitly specified breakpoint type
2417              is not hardware breakpoint, check the memory map to see
2418              if the breakpoint address is in read only memory or not.
2419
2420              Two important cases are:
2421              - location type is not hardware breakpoint, memory
2422              is readonly.  We change the type of the location to
2423              hardware breakpoint.
2424              - location type is hardware breakpoint, memory is
2425              read-write.  This means we've previously made the
2426              location hardware one, but then the memory map changed,
2427              so we undo.
2428              
2429              When breakpoints are removed, remove_breakpoints will use
2430              location types we've just set here, the only possible
2431              problem is that memory map has changed during running
2432              program, but it's not going to work anyway with current
2433              gdb.  */
2434           struct mem_region *mr 
2435             = lookup_mem_region (bl->target_info.placed_address);
2436           
2437           if (mr)
2438             {
2439               if (automatic_hardware_breakpoints)
2440                 {
2441                   enum bp_loc_type new_type;
2442                   
2443                   if (mr->attrib.mode != MEM_RW)
2444                     new_type = bp_loc_hardware_breakpoint;
2445                   else 
2446                     new_type = bp_loc_software_breakpoint;
2447                   
2448                   if (new_type != bl->loc_type)
2449                     {
2450                       static int said = 0;
2451
2452                       bl->loc_type = new_type;
2453                       if (!said)
2454                         {
2455                           fprintf_filtered (gdb_stdout,
2456                                             _("Note: automatically using "
2457                                               "hardware breakpoints for "
2458                                               "read-only addresses.\n"));
2459                           said = 1;
2460                         }
2461                     }
2462                 }
2463               else if (bl->loc_type == bp_loc_software_breakpoint
2464                        && mr->attrib.mode != MEM_RW)        
2465                 warning (_("cannot set software breakpoint "
2466                            "at readonly address %s"),
2467                          paddress (bl->gdbarch, bl->address));
2468             }
2469         }
2470         
2471       /* First check to see if we have to handle an overlay.  */
2472       if (overlay_debugging == ovly_off
2473           || bl->section == NULL
2474           || !(section_is_overlay (bl->section)))
2475         {
2476           /* No overlay handling: just set the breakpoint.  */
2477
2478           val = bl->owner->ops->insert_location (bl);
2479         }
2480       else
2481         {
2482           /* This breakpoint is in an overlay section.
2483              Shall we set a breakpoint at the LMA?  */
2484           if (!overlay_events_enabled)
2485             {
2486               /* Yes -- overlay event support is not active, 
2487                  so we must try to set a breakpoint at the LMA.
2488                  This will not work for a hardware breakpoint.  */
2489               if (bl->loc_type == bp_loc_hardware_breakpoint)
2490                 warning (_("hardware breakpoint %d not supported in overlay!"),
2491                          bl->owner->number);
2492               else
2493                 {
2494                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2495                                                              bl->section);
2496                   /* Set a software (trap) breakpoint at the LMA.  */
2497                   bl->overlay_target_info = bl->target_info;
2498                   bl->overlay_target_info.placed_address = addr;
2499                   val = target_insert_breakpoint (bl->gdbarch,
2500                                                   &bl->overlay_target_info);
2501                   if (val != 0)
2502                     fprintf_unfiltered (tmp_error_stream,
2503                                         "Overlay breakpoint %d "
2504                                         "failed: in ROM?\n",
2505                                         bl->owner->number);
2506                 }
2507             }
2508           /* Shall we set a breakpoint at the VMA? */
2509           if (section_is_mapped (bl->section))
2510             {
2511               /* Yes.  This overlay section is mapped into memory.  */
2512               val = bl->owner->ops->insert_location (bl);
2513             }
2514           else
2515             {
2516               /* No.  This breakpoint will not be inserted.  
2517                  No error, but do not mark the bp as 'inserted'.  */
2518               return 0;
2519             }
2520         }
2521
2522       if (val)
2523         {
2524           /* Can't set the breakpoint.  */
2525           if (solib_name_from_address (bl->pspace, bl->address))
2526             {
2527               /* See also: disable_breakpoints_in_shlibs.  */
2528               val = 0;
2529               bl->shlib_disabled = 1;
2530               observer_notify_breakpoint_modified (bl->owner);
2531               if (!*disabled_breaks)
2532                 {
2533                   fprintf_unfiltered (tmp_error_stream, 
2534                                       "Cannot insert breakpoint %d.\n", 
2535                                       bl->owner->number);
2536                   fprintf_unfiltered (tmp_error_stream, 
2537                                       "Temporarily disabling shared "
2538                                       "library breakpoints:\n");
2539                 }
2540               *disabled_breaks = 1;
2541               fprintf_unfiltered (tmp_error_stream,
2542                                   "breakpoint #%d\n", bl->owner->number);
2543             }
2544           else
2545             {
2546               if (bl->loc_type == bp_loc_hardware_breakpoint)
2547                 {
2548                   *hw_breakpoint_error = 1;
2549                   fprintf_unfiltered (tmp_error_stream,
2550                                       "Cannot insert hardware "
2551                                       "breakpoint %d.\n",
2552                                       bl->owner->number);
2553                 }
2554               else
2555                 {
2556                   fprintf_unfiltered (tmp_error_stream, 
2557                                       "Cannot insert breakpoint %d.\n", 
2558                                       bl->owner->number);
2559                   fprintf_filtered (tmp_error_stream, 
2560                                     "Error accessing memory address ");
2561                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2562                                   tmp_error_stream);
2563                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2564                                     safe_strerror (val));
2565                 }
2566
2567             }
2568         }
2569       else
2570         bl->inserted = 1;
2571
2572       return val;
2573     }
2574
2575   else if (bl->loc_type == bp_loc_hardware_watchpoint
2576            /* NOTE drow/2003-09-08: This state only exists for removing
2577               watchpoints.  It's not clear that it's necessary...  */
2578            && bl->owner->disposition != disp_del_at_next_stop)
2579     {
2580       gdb_assert (bl->owner->ops != NULL
2581                   && bl->owner->ops->insert_location != NULL);
2582
2583       val = bl->owner->ops->insert_location (bl);
2584
2585       /* If trying to set a read-watchpoint, and it turns out it's not
2586          supported, try emulating one with an access watchpoint.  */
2587       if (val == 1 && bl->watchpoint_type == hw_read)
2588         {
2589           struct bp_location *loc, **loc_temp;
2590
2591           /* But don't try to insert it, if there's already another
2592              hw_access location that would be considered a duplicate
2593              of this one.  */
2594           ALL_BP_LOCATIONS (loc, loc_temp)
2595             if (loc != bl
2596                 && loc->watchpoint_type == hw_access
2597                 && watchpoint_locations_match (bl, loc))
2598               {
2599                 bl->duplicate = 1;
2600                 bl->inserted = 1;
2601                 bl->target_info = loc->target_info;
2602                 bl->watchpoint_type = hw_access;
2603                 val = 0;
2604                 break;
2605               }
2606
2607           if (val == 1)
2608             {
2609               bl->watchpoint_type = hw_access;
2610               val = bl->owner->ops->insert_location (bl);
2611
2612               if (val)
2613                 /* Back to the original value.  */
2614                 bl->watchpoint_type = hw_read;
2615             }
2616         }
2617
2618       bl->inserted = (val == 0);
2619     }
2620
2621   else if (bl->owner->type == bp_catchpoint)
2622     {
2623       gdb_assert (bl->owner->ops != NULL
2624                   && bl->owner->ops->insert_location != NULL);
2625
2626       val = bl->owner->ops->insert_location (bl);
2627       if (val)
2628         {
2629           bl->owner->enable_state = bp_disabled;
2630
2631           if (val == 1)
2632             warning (_("\
2633 Error inserting catchpoint %d: Your system does not support this type\n\
2634 of catchpoint."), bl->owner->number);
2635           else
2636             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2637         }
2638
2639       bl->inserted = (val == 0);
2640
2641       /* We've already printed an error message if there was a problem
2642          inserting this catchpoint, and we've disabled the catchpoint,
2643          so just return success.  */
2644       return 0;
2645     }
2646
2647   return 0;
2648 }
2649
2650 /* This function is called when program space PSPACE is about to be
2651    deleted.  It takes care of updating breakpoints to not reference
2652    PSPACE anymore.  */
2653
2654 void
2655 breakpoint_program_space_exit (struct program_space *pspace)
2656 {
2657   struct breakpoint *b, *b_temp;
2658   struct bp_location *loc, **loc_temp;
2659
2660   /* Remove any breakpoint that was set through this program space.  */
2661   ALL_BREAKPOINTS_SAFE (b, b_temp)
2662     {
2663       if (b->pspace == pspace)
2664         delete_breakpoint (b);
2665     }
2666
2667   /* Breakpoints set through other program spaces could have locations
2668      bound to PSPACE as well.  Remove those.  */
2669   ALL_BP_LOCATIONS (loc, loc_temp)
2670     {
2671       struct bp_location *tmp;
2672
2673       if (loc->pspace == pspace)
2674         {
2675           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2676           if (loc->owner->loc == loc)
2677             loc->owner->loc = loc->next;
2678           else
2679             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2680               if (tmp->next == loc)
2681                 {
2682                   tmp->next = loc->next;
2683                   break;
2684                 }
2685         }
2686     }
2687
2688   /* Now update the global location list to permanently delete the
2689      removed locations above.  */
2690   update_global_location_list (0);
2691 }
2692
2693 /* Make sure all breakpoints are inserted in inferior.
2694    Throws exception on any error.
2695    A breakpoint that is already inserted won't be inserted
2696    again, so calling this function twice is safe.  */
2697 void
2698 insert_breakpoints (void)
2699 {
2700   struct breakpoint *bpt;
2701
2702   ALL_BREAKPOINTS (bpt)
2703     if (is_hardware_watchpoint (bpt))
2704       {
2705         struct watchpoint *w = (struct watchpoint *) bpt;
2706
2707         update_watchpoint (w, 0 /* don't reparse.  */);
2708       }
2709
2710   update_global_location_list (1);
2711
2712   /* update_global_location_list does not insert breakpoints when
2713      always_inserted_mode is not enabled.  Explicitly insert them
2714      now.  */
2715   if (!breakpoints_always_inserted_mode ())
2716     insert_breakpoint_locations ();
2717 }
2718
2719 /* Invoke CALLBACK for each of bp_location.  */
2720
2721 void
2722 iterate_over_bp_locations (walk_bp_location_callback callback)
2723 {
2724   struct bp_location *loc, **loc_tmp;
2725
2726   ALL_BP_LOCATIONS (loc, loc_tmp)
2727     {
2728       callback (loc, NULL);
2729     }
2730 }
2731
2732 /* This is used when we need to synch breakpoint conditions between GDB and the
2733    target.  It is the case with deleting and disabling of breakpoints when using
2734    always-inserted mode.  */
2735
2736 static void
2737 update_inserted_breakpoint_locations (void)
2738 {
2739   struct bp_location *bl, **blp_tmp;
2740   int error_flag = 0;
2741   int val = 0;
2742   int disabled_breaks = 0;
2743   int hw_breakpoint_error = 0;
2744
2745   struct ui_file *tmp_error_stream = mem_fileopen ();
2746   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2747
2748   /* Explicitly mark the warning -- this will only be printed if
2749      there was an error.  */
2750   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2751
2752   save_current_space_and_thread ();
2753
2754   ALL_BP_LOCATIONS (bl, blp_tmp)
2755     {
2756       /* We only want to update software breakpoints and hardware
2757          breakpoints.  */
2758       if (!is_breakpoint (bl->owner))
2759         continue;
2760
2761       /* We only want to update locations that are already inserted
2762          and need updating.  This is to avoid unwanted insertion during
2763          deletion of breakpoints.  */
2764       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2765         continue;
2766
2767       switch_to_program_space_and_thread (bl->pspace);
2768
2769       /* For targets that support global breakpoints, there's no need
2770          to select an inferior to insert breakpoint to.  In fact, even
2771          if we aren't attached to any process yet, we should still
2772          insert breakpoints.  */
2773       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2774           && ptid_equal (inferior_ptid, null_ptid))
2775         continue;
2776
2777       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2778                                     &hw_breakpoint_error);
2779       if (val)
2780         error_flag = val;
2781     }
2782
2783   if (error_flag)
2784     {
2785       target_terminal_ours_for_output ();
2786       error_stream (tmp_error_stream);
2787     }
2788
2789   do_cleanups (cleanups);
2790 }
2791
2792 /* Used when starting or continuing the program.  */
2793
2794 static void
2795 insert_breakpoint_locations (void)
2796 {
2797   struct breakpoint *bpt;
2798   struct bp_location *bl, **blp_tmp;
2799   int error_flag = 0;
2800   int val = 0;
2801   int disabled_breaks = 0;
2802   int hw_breakpoint_error = 0;
2803
2804   struct ui_file *tmp_error_stream = mem_fileopen ();
2805   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2806   
2807   /* Explicitly mark the warning -- this will only be printed if
2808      there was an error.  */
2809   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2810
2811   save_current_space_and_thread ();
2812
2813   ALL_BP_LOCATIONS (bl, blp_tmp)
2814     {
2815       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2816         continue;
2817
2818       /* There is no point inserting thread-specific breakpoints if
2819          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2820          has BL->OWNER always non-NULL.  */
2821       if (bl->owner->thread != -1
2822           && !valid_thread_id (bl->owner->thread))
2823         continue;
2824
2825       switch_to_program_space_and_thread (bl->pspace);
2826
2827       /* For targets that support global breakpoints, there's no need
2828          to select an inferior to insert breakpoint to.  In fact, even
2829          if we aren't attached to any process yet, we should still
2830          insert breakpoints.  */
2831       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2832           && ptid_equal (inferior_ptid, null_ptid))
2833         continue;
2834
2835       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2836                                     &hw_breakpoint_error);
2837       if (val)
2838         error_flag = val;
2839     }
2840
2841   /* If we failed to insert all locations of a watchpoint, remove
2842      them, as half-inserted watchpoint is of limited use.  */
2843   ALL_BREAKPOINTS (bpt)  
2844     {
2845       int some_failed = 0;
2846       struct bp_location *loc;
2847
2848       if (!is_hardware_watchpoint (bpt))
2849         continue;
2850
2851       if (!breakpoint_enabled (bpt))
2852         continue;
2853
2854       if (bpt->disposition == disp_del_at_next_stop)
2855         continue;
2856       
2857       for (loc = bpt->loc; loc; loc = loc->next)
2858         if (!loc->inserted && should_be_inserted (loc))
2859           {
2860             some_failed = 1;
2861             break;
2862           }
2863       if (some_failed)
2864         {
2865           for (loc = bpt->loc; loc; loc = loc->next)
2866             if (loc->inserted)
2867               remove_breakpoint (loc, mark_uninserted);
2868
2869           hw_breakpoint_error = 1;
2870           fprintf_unfiltered (tmp_error_stream,
2871                               "Could not insert hardware watchpoint %d.\n", 
2872                               bpt->number);
2873           error_flag = -1;
2874         }
2875     }
2876
2877   if (error_flag)
2878     {
2879       /* If a hardware breakpoint or watchpoint was inserted, add a
2880          message about possibly exhausted resources.  */
2881       if (hw_breakpoint_error)
2882         {
2883           fprintf_unfiltered (tmp_error_stream, 
2884                               "Could not insert hardware breakpoints:\n\
2885 You may have requested too many hardware breakpoints/watchpoints.\n");
2886         }
2887       target_terminal_ours_for_output ();
2888       error_stream (tmp_error_stream);
2889     }
2890
2891   do_cleanups (cleanups);
2892 }
2893
2894 /* Used when the program stops.
2895    Returns zero if successful, or non-zero if there was a problem
2896    removing a breakpoint location.  */
2897
2898 int
2899 remove_breakpoints (void)
2900 {
2901   struct bp_location *bl, **blp_tmp;
2902   int val = 0;
2903
2904   ALL_BP_LOCATIONS (bl, blp_tmp)
2905   {
2906     if (bl->inserted && !is_tracepoint (bl->owner))
2907       val |= remove_breakpoint (bl, mark_uninserted);
2908   }
2909   return val;
2910 }
2911
2912 /* Remove breakpoints of process PID.  */
2913
2914 int
2915 remove_breakpoints_pid (int pid)
2916 {
2917   struct bp_location *bl, **blp_tmp;
2918   int val;
2919   struct inferior *inf = find_inferior_pid (pid);
2920
2921   ALL_BP_LOCATIONS (bl, blp_tmp)
2922   {
2923     if (bl->pspace != inf->pspace)
2924       continue;
2925
2926     if (bl->owner->type == bp_dprintf)
2927       continue;
2928
2929     if (bl->inserted)
2930       {
2931         val = remove_breakpoint (bl, mark_uninserted);
2932         if (val != 0)
2933           return val;
2934       }
2935   }
2936   return 0;
2937 }
2938
2939 int
2940 reattach_breakpoints (int pid)
2941 {
2942   struct cleanup *old_chain;
2943   struct bp_location *bl, **blp_tmp;
2944   int val;
2945   struct ui_file *tmp_error_stream;
2946   int dummy1 = 0, dummy2 = 0;
2947   struct inferior *inf;
2948   struct thread_info *tp;
2949
2950   tp = any_live_thread_of_process (pid);
2951   if (tp == NULL)
2952     return 1;
2953
2954   inf = find_inferior_pid (pid);
2955   old_chain = save_inferior_ptid ();
2956
2957   inferior_ptid = tp->ptid;
2958
2959   tmp_error_stream = mem_fileopen ();
2960   make_cleanup_ui_file_delete (tmp_error_stream);
2961
2962   ALL_BP_LOCATIONS (bl, blp_tmp)
2963   {
2964     if (bl->pspace != inf->pspace)
2965       continue;
2966
2967     if (bl->inserted)
2968       {
2969         bl->inserted = 0;
2970         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2971         if (val != 0)
2972           {
2973             do_cleanups (old_chain);
2974             return val;
2975           }
2976       }
2977   }
2978   do_cleanups (old_chain);
2979   return 0;
2980 }
2981
2982 static int internal_breakpoint_number = -1;
2983
2984 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2985    If INTERNAL is non-zero, the breakpoint number will be populated
2986    from internal_breakpoint_number and that variable decremented.
2987    Otherwise the breakpoint number will be populated from
2988    breakpoint_count and that value incremented.  Internal breakpoints
2989    do not set the internal var bpnum.  */
2990 static void
2991 set_breakpoint_number (int internal, struct breakpoint *b)
2992 {
2993   if (internal)
2994     b->number = internal_breakpoint_number--;
2995   else
2996     {
2997       set_breakpoint_count (breakpoint_count + 1);
2998       b->number = breakpoint_count;
2999     }
3000 }
3001
3002 static struct breakpoint *
3003 create_internal_breakpoint (struct gdbarch *gdbarch,
3004                             CORE_ADDR address, enum bptype type,
3005                             const struct breakpoint_ops *ops)
3006 {
3007   struct symtab_and_line sal;
3008   struct breakpoint *b;
3009
3010   init_sal (&sal);              /* Initialize to zeroes.  */
3011
3012   sal.pc = address;
3013   sal.section = find_pc_overlay (sal.pc);
3014   sal.pspace = current_program_space;
3015
3016   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3017   b->number = internal_breakpoint_number--;
3018   b->disposition = disp_donttouch;
3019
3020   return b;
3021 }
3022
3023 static const char *const longjmp_names[] =
3024   {
3025     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3026   };
3027 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3028
3029 /* Per-objfile data private to breakpoint.c.  */
3030 struct breakpoint_objfile_data
3031 {
3032   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3033   struct minimal_symbol *overlay_msym;
3034
3035   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3036   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
3037
3038   /* True if we have looked for longjmp probes.  */
3039   int longjmp_searched;
3040
3041   /* SystemTap probe points for longjmp (if any).  */
3042   VEC (probe_p) *longjmp_probes;
3043
3044   /* Minimal symbol for "std::terminate()" (if any).  */
3045   struct minimal_symbol *terminate_msym;
3046
3047   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3048   struct minimal_symbol *exception_msym;
3049
3050   /* True if we have looked for exception probes.  */
3051   int exception_searched;
3052
3053   /* SystemTap probe points for unwinding (if any).  */
3054   VEC (probe_p) *exception_probes;
3055 };
3056
3057 static const struct objfile_data *breakpoint_objfile_key;
3058
3059 /* Minimal symbol not found sentinel.  */
3060 static struct minimal_symbol msym_not_found;
3061
3062 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3063
3064 static int
3065 msym_not_found_p (const struct minimal_symbol *msym)
3066 {
3067   return msym == &msym_not_found;
3068 }
3069
3070 /* Return per-objfile data needed by breakpoint.c.
3071    Allocate the data if necessary.  */
3072
3073 static struct breakpoint_objfile_data *
3074 get_breakpoint_objfile_data (struct objfile *objfile)
3075 {
3076   struct breakpoint_objfile_data *bp_objfile_data;
3077
3078   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3079   if (bp_objfile_data == NULL)
3080     {
3081       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3082                                        sizeof (*bp_objfile_data));
3083
3084       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3085       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3086     }
3087   return bp_objfile_data;
3088 }
3089
3090 static void
3091 free_breakpoint_probes (struct objfile *obj, void *data)
3092 {
3093   struct breakpoint_objfile_data *bp_objfile_data = data;
3094
3095   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3096   VEC_free (probe_p, bp_objfile_data->exception_probes);
3097 }
3098
3099 static void
3100 create_overlay_event_breakpoint (void)
3101 {
3102   struct objfile *objfile;
3103   const char *const func_name = "_ovly_debug_event";
3104
3105   ALL_OBJFILES (objfile)
3106     {
3107       struct breakpoint *b;
3108       struct breakpoint_objfile_data *bp_objfile_data;
3109       CORE_ADDR addr;
3110
3111       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3112
3113       if (msym_not_found_p (bp_objfile_data->overlay_msym))
3114         continue;
3115
3116       if (bp_objfile_data->overlay_msym == NULL)
3117         {
3118           struct minimal_symbol *m;
3119
3120           m = lookup_minimal_symbol_text (func_name, objfile);
3121           if (m == NULL)
3122             {
3123               /* Avoid future lookups in this objfile.  */
3124               bp_objfile_data->overlay_msym = &msym_not_found;
3125               continue;
3126             }
3127           bp_objfile_data->overlay_msym = m;
3128         }
3129
3130       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3131       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3132                                       bp_overlay_event,
3133                                       &internal_breakpoint_ops);
3134       b->addr_string = xstrdup (func_name);
3135
3136       if (overlay_debugging == ovly_auto)
3137         {
3138           b->enable_state = bp_enabled;
3139           overlay_events_enabled = 1;
3140         }
3141       else
3142        {
3143          b->enable_state = bp_disabled;
3144          overlay_events_enabled = 0;
3145        }
3146     }
3147   update_global_location_list (1);
3148 }
3149
3150 static void
3151 create_longjmp_master_breakpoint (void)
3152 {
3153   struct program_space *pspace;
3154   struct cleanup *old_chain;
3155
3156   old_chain = save_current_program_space ();
3157
3158   ALL_PSPACES (pspace)
3159   {
3160     struct objfile *objfile;
3161
3162     set_current_program_space (pspace);
3163
3164     ALL_OBJFILES (objfile)
3165     {
3166       int i;
3167       struct gdbarch *gdbarch;
3168       struct breakpoint_objfile_data *bp_objfile_data;
3169
3170       gdbarch = get_objfile_arch (objfile);
3171       if (!gdbarch_get_longjmp_target_p (gdbarch))
3172         continue;
3173
3174       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3175
3176       if (!bp_objfile_data->longjmp_searched)
3177         {
3178           bp_objfile_data->longjmp_probes
3179             = find_probes_in_objfile (objfile, "libc", "longjmp");
3180           bp_objfile_data->longjmp_searched = 1;
3181         }
3182
3183       if (bp_objfile_data->longjmp_probes != NULL)
3184         {
3185           int i;
3186           struct probe *probe;
3187           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3188
3189           for (i = 0;
3190                VEC_iterate (probe_p,
3191                             bp_objfile_data->longjmp_probes,
3192                             i, probe);
3193                ++i)
3194             {
3195               struct breakpoint *b;
3196
3197               b = create_internal_breakpoint (gdbarch, probe->address,
3198                                               bp_longjmp_master,
3199                                               &internal_breakpoint_ops);
3200               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3201               b->enable_state = bp_disabled;
3202             }
3203
3204           continue;
3205         }
3206
3207       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3208         {
3209           struct breakpoint *b;
3210           const char *func_name;
3211           CORE_ADDR addr;
3212
3213           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
3214             continue;
3215
3216           func_name = longjmp_names[i];
3217           if (bp_objfile_data->longjmp_msym[i] == NULL)
3218             {
3219               struct minimal_symbol *m;
3220
3221               m = lookup_minimal_symbol_text (func_name, objfile);
3222               if (m == NULL)
3223                 {
3224                   /* Prevent future lookups in this objfile.  */
3225                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
3226                   continue;
3227                 }
3228               bp_objfile_data->longjmp_msym[i] = m;
3229             }
3230
3231           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3232           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3233                                           &internal_breakpoint_ops);
3234           b->addr_string = xstrdup (func_name);
3235           b->enable_state = bp_disabled;
3236         }
3237     }
3238   }
3239   update_global_location_list (1);
3240
3241   do_cleanups (old_chain);
3242 }
3243
3244 /* Create a master std::terminate breakpoint.  */
3245 static void
3246 create_std_terminate_master_breakpoint (void)
3247 {
3248   struct program_space *pspace;
3249   struct cleanup *old_chain;
3250   const char *const func_name = "std::terminate()";
3251
3252   old_chain = save_current_program_space ();
3253
3254   ALL_PSPACES (pspace)
3255   {
3256     struct objfile *objfile;
3257     CORE_ADDR addr;
3258
3259     set_current_program_space (pspace);
3260
3261     ALL_OBJFILES (objfile)
3262     {
3263       struct breakpoint *b;
3264       struct breakpoint_objfile_data *bp_objfile_data;
3265
3266       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3267
3268       if (msym_not_found_p (bp_objfile_data->terminate_msym))
3269         continue;
3270
3271       if (bp_objfile_data->terminate_msym == NULL)
3272         {
3273           struct minimal_symbol *m;
3274
3275           m = lookup_minimal_symbol (func_name, NULL, objfile);
3276           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
3277                             && MSYMBOL_TYPE (m) != mst_file_text))
3278             {
3279               /* Prevent future lookups in this objfile.  */
3280               bp_objfile_data->terminate_msym = &msym_not_found;
3281               continue;
3282             }
3283           bp_objfile_data->terminate_msym = m;
3284         }
3285
3286       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3287       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3288                                       bp_std_terminate_master,
3289                                       &internal_breakpoint_ops);
3290       b->addr_string = xstrdup (func_name);
3291       b->enable_state = bp_disabled;
3292     }
3293   }
3294
3295   update_global_location_list (1);
3296
3297   do_cleanups (old_chain);
3298 }
3299
3300 /* Install a master breakpoint on the unwinder's debug hook.  */
3301
3302 static void
3303 create_exception_master_breakpoint (void)
3304 {
3305   struct objfile *objfile;
3306   const char *const func_name = "_Unwind_DebugHook";
3307
3308   ALL_OBJFILES (objfile)
3309     {
3310       struct breakpoint *b;
3311       struct gdbarch *gdbarch;
3312       struct breakpoint_objfile_data *bp_objfile_data;
3313       CORE_ADDR addr;
3314
3315       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3316
3317       /* We prefer the SystemTap probe point if it exists.  */
3318       if (!bp_objfile_data->exception_searched)
3319         {
3320           bp_objfile_data->exception_probes
3321             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3322           bp_objfile_data->exception_searched = 1;
3323         }
3324
3325       if (bp_objfile_data->exception_probes != NULL)
3326         {
3327           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3328           int i;
3329           struct probe *probe;
3330
3331           for (i = 0;
3332                VEC_iterate (probe_p,
3333                             bp_objfile_data->exception_probes,
3334                             i, probe);
3335                ++i)
3336             {
3337               struct breakpoint *b;
3338
3339               b = create_internal_breakpoint (gdbarch, probe->address,
3340                                               bp_exception_master,
3341                                               &internal_breakpoint_ops);
3342               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3343               b->enable_state = bp_disabled;
3344             }
3345
3346           continue;
3347         }
3348
3349       /* Otherwise, try the hook function.  */
3350
3351       if (msym_not_found_p (bp_objfile_data->exception_msym))
3352         continue;
3353
3354       gdbarch = get_objfile_arch (objfile);
3355
3356       if (bp_objfile_data->exception_msym == NULL)
3357         {
3358           struct minimal_symbol *debug_hook;
3359
3360           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3361           if (debug_hook == NULL)
3362             {
3363               bp_objfile_data->exception_msym = &msym_not_found;
3364               continue;
3365             }
3366
3367           bp_objfile_data->exception_msym = debug_hook;
3368         }
3369
3370       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3371       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3372                                                  &current_target);
3373       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3374                                       &internal_breakpoint_ops);
3375       b->addr_string = xstrdup (func_name);
3376       b->enable_state = bp_disabled;
3377     }
3378
3379   update_global_location_list (1);
3380 }
3381
3382 void
3383 update_breakpoints_after_exec (void)
3384 {
3385   struct breakpoint *b, *b_tmp;
3386   struct bp_location *bploc, **bplocp_tmp;
3387
3388   /* We're about to delete breakpoints from GDB's lists.  If the
3389      INSERTED flag is true, GDB will try to lift the breakpoints by
3390      writing the breakpoints' "shadow contents" back into memory.  The
3391      "shadow contents" are NOT valid after an exec, so GDB should not
3392      do that.  Instead, the target is responsible from marking
3393      breakpoints out as soon as it detects an exec.  We don't do that
3394      here instead, because there may be other attempts to delete
3395      breakpoints after detecting an exec and before reaching here.  */
3396   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3397     if (bploc->pspace == current_program_space)
3398       gdb_assert (!bploc->inserted);
3399
3400   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3401   {
3402     if (b->pspace != current_program_space)
3403       continue;
3404
3405     /* Solib breakpoints must be explicitly reset after an exec().  */
3406     if (b->type == bp_shlib_event)
3407       {
3408         delete_breakpoint (b);
3409         continue;
3410       }
3411
3412     /* JIT breakpoints must be explicitly reset after an exec().  */
3413     if (b->type == bp_jit_event)
3414       {
3415         delete_breakpoint (b);
3416         continue;
3417       }
3418
3419     /* Thread event breakpoints must be set anew after an exec(),
3420        as must overlay event and longjmp master breakpoints.  */
3421     if (b->type == bp_thread_event || b->type == bp_overlay_event
3422         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3423         || b->type == bp_exception_master)
3424       {
3425         delete_breakpoint (b);
3426         continue;
3427       }
3428
3429     /* Step-resume breakpoints are meaningless after an exec().  */
3430     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3431       {
3432         delete_breakpoint (b);
3433         continue;
3434       }
3435
3436     /* Longjmp and longjmp-resume breakpoints are also meaningless
3437        after an exec.  */
3438     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3439         || b->type == bp_longjmp_call_dummy
3440         || b->type == bp_exception || b->type == bp_exception_resume)
3441       {
3442         delete_breakpoint (b);
3443         continue;
3444       }
3445
3446     if (b->type == bp_catchpoint)
3447       {
3448         /* For now, none of the bp_catchpoint breakpoints need to
3449            do anything at this point.  In the future, if some of
3450            the catchpoints need to something, we will need to add
3451            a new method, and call this method from here.  */
3452         continue;
3453       }
3454
3455     /* bp_finish is a special case.  The only way we ought to be able
3456        to see one of these when an exec() has happened, is if the user
3457        caught a vfork, and then said "finish".  Ordinarily a finish just
3458        carries them to the call-site of the current callee, by setting
3459        a temporary bp there and resuming.  But in this case, the finish
3460        will carry them entirely through the vfork & exec.
3461
3462        We don't want to allow a bp_finish to remain inserted now.  But
3463        we can't safely delete it, 'cause finish_command has a handle to
3464        the bp on a bpstat, and will later want to delete it.  There's a
3465        chance (and I've seen it happen) that if we delete the bp_finish
3466        here, that its storage will get reused by the time finish_command
3467        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3468        We really must allow finish_command to delete a bp_finish.
3469
3470        In the absence of a general solution for the "how do we know
3471        it's safe to delete something others may have handles to?"
3472        problem, what we'll do here is just uninsert the bp_finish, and
3473        let finish_command delete it.
3474
3475        (We know the bp_finish is "doomed" in the sense that it's
3476        momentary, and will be deleted as soon as finish_command sees
3477        the inferior stopped.  So it doesn't matter that the bp's
3478        address is probably bogus in the new a.out, unlike e.g., the
3479        solib breakpoints.)  */
3480
3481     if (b->type == bp_finish)
3482       {
3483         continue;
3484       }
3485
3486     /* Without a symbolic address, we have little hope of the
3487        pre-exec() address meaning the same thing in the post-exec()
3488        a.out.  */
3489     if (b->addr_string == NULL)
3490       {
3491         delete_breakpoint (b);
3492         continue;
3493       }
3494   }
3495   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3496   create_overlay_event_breakpoint ();
3497   create_longjmp_master_breakpoint ();
3498   create_std_terminate_master_breakpoint ();
3499   create_exception_master_breakpoint ();
3500 }
3501
3502 int
3503 detach_breakpoints (int pid)
3504 {
3505   struct bp_location *bl, **blp_tmp;
3506   int val = 0;
3507   struct cleanup *old_chain = save_inferior_ptid ();
3508   struct inferior *inf = current_inferior ();
3509
3510   if (pid == PIDGET (inferior_ptid))
3511     error (_("Cannot detach breakpoints of inferior_ptid"));
3512
3513   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3514   inferior_ptid = pid_to_ptid (pid);
3515   ALL_BP_LOCATIONS (bl, blp_tmp)
3516   {
3517     if (bl->pspace != inf->pspace)
3518       continue;
3519
3520     if (bl->inserted)
3521       val |= remove_breakpoint_1 (bl, mark_inserted);
3522   }
3523
3524   /* Detach single-step breakpoints as well.  */
3525   detach_single_step_breakpoints ();
3526
3527   do_cleanups (old_chain);
3528   return val;
3529 }
3530
3531 /* Remove the breakpoint location BL from the current address space.
3532    Note that this is used to detach breakpoints from a child fork.
3533    When we get here, the child isn't in the inferior list, and neither
3534    do we have objects to represent its address space --- we should
3535    *not* look at bl->pspace->aspace here.  */
3536
3537 static int
3538 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3539 {
3540   int val;
3541
3542   /* BL is never in moribund_locations by our callers.  */
3543   gdb_assert (bl->owner != NULL);
3544
3545   if (bl->owner->enable_state == bp_permanent)
3546     /* Permanent breakpoints cannot be inserted or removed.  */
3547     return 0;
3548
3549   /* The type of none suggests that owner is actually deleted.
3550      This should not ever happen.  */
3551   gdb_assert (bl->owner->type != bp_none);
3552
3553   if (bl->loc_type == bp_loc_software_breakpoint
3554       || bl->loc_type == bp_loc_hardware_breakpoint)
3555     {
3556       /* "Normal" instruction breakpoint: either the standard
3557          trap-instruction bp (bp_breakpoint), or a
3558          bp_hardware_breakpoint.  */
3559
3560       /* First check to see if we have to handle an overlay.  */
3561       if (overlay_debugging == ovly_off
3562           || bl->section == NULL
3563           || !(section_is_overlay (bl->section)))
3564         {
3565           /* No overlay handling: just remove the breakpoint.  */
3566           val = bl->owner->ops->remove_location (bl);
3567         }
3568       else
3569         {
3570           /* This breakpoint is in an overlay section.
3571              Did we set a breakpoint at the LMA?  */
3572           if (!overlay_events_enabled)
3573               {
3574                 /* Yes -- overlay event support is not active, so we
3575                    should have set a breakpoint at the LMA.  Remove it.  
3576                 */
3577                 /* Ignore any failures: if the LMA is in ROM, we will
3578                    have already warned when we failed to insert it.  */
3579                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3580                   target_remove_hw_breakpoint (bl->gdbarch,
3581                                                &bl->overlay_target_info);
3582                 else
3583                   target_remove_breakpoint (bl->gdbarch,
3584                                             &bl->overlay_target_info);
3585               }
3586           /* Did we set a breakpoint at the VMA? 
3587              If so, we will have marked the breakpoint 'inserted'.  */
3588           if (bl->inserted)
3589             {
3590               /* Yes -- remove it.  Previously we did not bother to
3591                  remove the breakpoint if the section had been
3592                  unmapped, but let's not rely on that being safe.  We
3593                  don't know what the overlay manager might do.  */
3594
3595               /* However, we should remove *software* breakpoints only
3596                  if the section is still mapped, or else we overwrite
3597                  wrong code with the saved shadow contents.  */
3598               if (bl->loc_type == bp_loc_hardware_breakpoint
3599                   || section_is_mapped (bl->section))
3600                 val = bl->owner->ops->remove_location (bl);
3601               else
3602                 val = 0;
3603             }
3604           else
3605             {
3606               /* No -- not inserted, so no need to remove.  No error.  */
3607               val = 0;
3608             }
3609         }
3610
3611       /* In some cases, we might not be able to remove a breakpoint
3612          in a shared library that has already been removed, but we
3613          have not yet processed the shlib unload event.  */
3614       if (val && solib_name_from_address (bl->pspace, bl->address))
3615         val = 0;
3616
3617       if (val)
3618         return val;
3619       bl->inserted = (is == mark_inserted);
3620     }
3621   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3622     {
3623       gdb_assert (bl->owner->ops != NULL
3624                   && bl->owner->ops->remove_location != NULL);
3625
3626       bl->inserted = (is == mark_inserted);
3627       bl->owner->ops->remove_location (bl);
3628
3629       /* Failure to remove any of the hardware watchpoints comes here.  */
3630       if ((is == mark_uninserted) && (bl->inserted))
3631         warning (_("Could not remove hardware watchpoint %d."),
3632                  bl->owner->number);
3633     }
3634   else if (bl->owner->type == bp_catchpoint
3635            && breakpoint_enabled (bl->owner)
3636            && !bl->duplicate)
3637     {
3638       gdb_assert (bl->owner->ops != NULL
3639                   && bl->owner->ops->remove_location != NULL);
3640
3641       val = bl->owner->ops->remove_location (bl);
3642       if (val)
3643         return val;
3644
3645       bl->inserted = (is == mark_inserted);
3646     }
3647
3648   return 0;
3649 }
3650
3651 static int
3652 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3653 {
3654   int ret;
3655   struct cleanup *old_chain;
3656
3657   /* BL is never in moribund_locations by our callers.  */
3658   gdb_assert (bl->owner != NULL);
3659
3660   if (bl->owner->enable_state == bp_permanent)
3661     /* Permanent breakpoints cannot be inserted or removed.  */
3662     return 0;
3663
3664   /* The type of none suggests that owner is actually deleted.
3665      This should not ever happen.  */
3666   gdb_assert (bl->owner->type != bp_none);
3667
3668   old_chain = save_current_space_and_thread ();
3669
3670   switch_to_program_space_and_thread (bl->pspace);
3671
3672   ret = remove_breakpoint_1 (bl, is);
3673
3674   do_cleanups (old_chain);
3675   return ret;
3676 }
3677
3678 /* Clear the "inserted" flag in all breakpoints.  */
3679
3680 void
3681 mark_breakpoints_out (void)
3682 {
3683   struct bp_location *bl, **blp_tmp;
3684
3685   ALL_BP_LOCATIONS (bl, blp_tmp)
3686     if (bl->pspace == current_program_space)
3687       bl->inserted = 0;
3688 }
3689
3690 /* Clear the "inserted" flag in all breakpoints and delete any
3691    breakpoints which should go away between runs of the program.
3692
3693    Plus other such housekeeping that has to be done for breakpoints
3694    between runs.
3695
3696    Note: this function gets called at the end of a run (by
3697    generic_mourn_inferior) and when a run begins (by
3698    init_wait_for_inferior).  */
3699
3700
3701
3702 void
3703 breakpoint_init_inferior (enum inf_context context)
3704 {
3705   struct breakpoint *b, *b_tmp;
3706   struct bp_location *bl, **blp_tmp;
3707   int ix;
3708   struct program_space *pspace = current_program_space;
3709
3710   /* If breakpoint locations are shared across processes, then there's
3711      nothing to do.  */
3712   if (gdbarch_has_global_breakpoints (target_gdbarch))
3713     return;
3714
3715   ALL_BP_LOCATIONS (bl, blp_tmp)
3716   {
3717     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3718     if (bl->pspace == pspace
3719         && bl->owner->enable_state != bp_permanent)
3720       bl->inserted = 0;
3721   }
3722
3723   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3724   {
3725     if (b->loc && b->loc->pspace != pspace)
3726       continue;
3727
3728     switch (b->type)
3729       {
3730       case bp_call_dummy:
3731       case bp_longjmp_call_dummy:
3732
3733         /* If the call dummy breakpoint is at the entry point it will
3734            cause problems when the inferior is rerun, so we better get
3735            rid of it.  */
3736
3737       case bp_watchpoint_scope:
3738
3739         /* Also get rid of scope breakpoints.  */
3740
3741       case bp_shlib_event:
3742
3743         /* Also remove solib event breakpoints.  Their addresses may
3744            have changed since the last time we ran the program.
3745            Actually we may now be debugging against different target;
3746            and so the solib backend that installed this breakpoint may
3747            not be used in by the target.  E.g.,
3748
3749            (gdb) file prog-linux
3750            (gdb) run               # native linux target
3751            ...
3752            (gdb) kill
3753            (gdb) file prog-win.exe
3754            (gdb) tar rem :9999     # remote Windows gdbserver.
3755         */
3756
3757       case bp_step_resume:
3758
3759         /* Also remove step-resume breakpoints.  */
3760
3761         delete_breakpoint (b);
3762         break;
3763
3764       case bp_watchpoint:
3765       case bp_hardware_watchpoint:
3766       case bp_read_watchpoint:
3767       case bp_access_watchpoint:
3768         {
3769           struct watchpoint *w = (struct watchpoint *) b;
3770
3771           /* Likewise for watchpoints on local expressions.  */
3772           if (w->exp_valid_block != NULL)
3773             delete_breakpoint (b);
3774           else if (context == inf_starting)
3775             {
3776               /* Reset val field to force reread of starting value in
3777                  insert_breakpoints.  */
3778               if (w->val)
3779                 value_free (w->val);
3780               w->val = NULL;
3781               w->val_valid = 0;
3782           }
3783         }
3784         break;
3785       default:
3786         break;
3787       }
3788   }
3789
3790   /* Get rid of the moribund locations.  */
3791   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3792     decref_bp_location (&bl);
3793   VEC_free (bp_location_p, moribund_locations);
3794 }
3795
3796 /* These functions concern about actual breakpoints inserted in the
3797    target --- to e.g. check if we need to do decr_pc adjustment or if
3798    we need to hop over the bkpt --- so we check for address space
3799    match, not program space.  */
3800
3801 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3802    exists at PC.  It returns ordinary_breakpoint_here if it's an
3803    ordinary breakpoint, or permanent_breakpoint_here if it's a
3804    permanent breakpoint.
3805    - When continuing from a location with an ordinary breakpoint, we
3806      actually single step once before calling insert_breakpoints.
3807    - When continuing from a location with a permanent breakpoint, we
3808      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3809      the target, to advance the PC past the breakpoint.  */
3810
3811 enum breakpoint_here
3812 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3813 {
3814   struct bp_location *bl, **blp_tmp;
3815   int any_breakpoint_here = 0;
3816
3817   ALL_BP_LOCATIONS (bl, blp_tmp)
3818     {
3819       if (bl->loc_type != bp_loc_software_breakpoint
3820           && bl->loc_type != bp_loc_hardware_breakpoint)
3821         continue;
3822
3823       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3824       if ((breakpoint_enabled (bl->owner)
3825            || bl->owner->enable_state == bp_permanent)
3826           && breakpoint_location_address_match (bl, aspace, pc))
3827         {
3828           if (overlay_debugging 
3829               && section_is_overlay (bl->section)
3830               && !section_is_mapped (bl->section))
3831             continue;           /* unmapped overlay -- can't be a match */
3832           else if (bl->owner->enable_state == bp_permanent)
3833             return permanent_breakpoint_here;
3834           else
3835             any_breakpoint_here = 1;
3836         }
3837     }
3838
3839   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3840 }
3841
3842 /* Return true if there's a moribund breakpoint at PC.  */
3843
3844 int
3845 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3846 {
3847   struct bp_location *loc;
3848   int ix;
3849
3850   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3851     if (breakpoint_location_address_match (loc, aspace, pc))
3852       return 1;
3853
3854   return 0;
3855 }
3856
3857 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3858    inserted using regular breakpoint_chain / bp_location array
3859    mechanism.  This does not check for single-step breakpoints, which
3860    are inserted and removed using direct target manipulation.  */
3861
3862 int
3863 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3864                                     CORE_ADDR pc)
3865 {
3866   struct bp_location *bl, **blp_tmp;
3867
3868   ALL_BP_LOCATIONS (bl, blp_tmp)
3869     {
3870       if (bl->loc_type != bp_loc_software_breakpoint
3871           && bl->loc_type != bp_loc_hardware_breakpoint)
3872         continue;
3873
3874       if (bl->inserted
3875           && breakpoint_location_address_match (bl, aspace, pc))
3876         {
3877           if (overlay_debugging 
3878               && section_is_overlay (bl->section)
3879               && !section_is_mapped (bl->section))
3880             continue;           /* unmapped overlay -- can't be a match */
3881           else
3882             return 1;
3883         }
3884     }
3885   return 0;
3886 }
3887
3888 /* Returns non-zero iff there's either regular breakpoint
3889    or a single step breakpoint inserted at PC.  */
3890
3891 int
3892 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3893 {
3894   if (regular_breakpoint_inserted_here_p (aspace, pc))
3895     return 1;
3896
3897   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3898     return 1;
3899
3900   return 0;
3901 }
3902
3903 /* This function returns non-zero iff there is a software breakpoint
3904    inserted at PC.  */
3905
3906 int
3907 software_breakpoint_inserted_here_p (struct address_space *aspace,
3908                                      CORE_ADDR pc)
3909 {
3910   struct bp_location *bl, **blp_tmp;
3911
3912   ALL_BP_LOCATIONS (bl, blp_tmp)
3913     {
3914       if (bl->loc_type != bp_loc_software_breakpoint)
3915         continue;
3916
3917       if (bl->inserted
3918           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3919                                        aspace, pc))
3920         {
3921           if (overlay_debugging 
3922               && section_is_overlay (bl->section)
3923               && !section_is_mapped (bl->section))
3924             continue;           /* unmapped overlay -- can't be a match */
3925           else
3926             return 1;
3927         }
3928     }
3929
3930   /* Also check for software single-step breakpoints.  */
3931   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3932     return 1;
3933
3934   return 0;
3935 }
3936
3937 int
3938 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3939                                        CORE_ADDR addr, ULONGEST len)
3940 {
3941   struct breakpoint *bpt;
3942
3943   ALL_BREAKPOINTS (bpt)
3944     {
3945       struct bp_location *loc;
3946
3947       if (bpt->type != bp_hardware_watchpoint
3948           && bpt->type != bp_access_watchpoint)
3949         continue;
3950
3951       if (!breakpoint_enabled (bpt))
3952         continue;
3953
3954       for (loc = bpt->loc; loc; loc = loc->next)
3955         if (loc->pspace->aspace == aspace && loc->inserted)
3956           {
3957             CORE_ADDR l, h;
3958
3959             /* Check for intersection.  */
3960             l = max (loc->address, addr);
3961             h = min (loc->address + loc->length, addr + len);
3962             if (l < h)
3963               return 1;
3964           }
3965     }
3966   return 0;
3967 }
3968
3969 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3970    PC is valid for process/thread PTID.  */
3971
3972 int
3973 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3974                          ptid_t ptid)
3975 {
3976   struct bp_location *bl, **blp_tmp;
3977   /* The thread and task IDs associated to PTID, computed lazily.  */
3978   int thread = -1;
3979   int task = 0;
3980   
3981   ALL_BP_LOCATIONS (bl, blp_tmp)
3982     {
3983       if (bl->loc_type != bp_loc_software_breakpoint
3984           && bl->loc_type != bp_loc_hardware_breakpoint)
3985         continue;
3986
3987       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
3988       if (!breakpoint_enabled (bl->owner)
3989           && bl->owner->enable_state != bp_permanent)
3990         continue;
3991
3992       if (!breakpoint_location_address_match (bl, aspace, pc))
3993         continue;
3994
3995       if (bl->owner->thread != -1)
3996         {
3997           /* This is a thread-specific breakpoint.  Check that ptid
3998              matches that thread.  If thread hasn't been computed yet,
3999              it is now time to do so.  */
4000           if (thread == -1)
4001             thread = pid_to_thread_id (ptid);
4002           if (bl->owner->thread != thread)
4003             continue;
4004         }
4005
4006       if (bl->owner->task != 0)
4007         {
4008           /* This is a task-specific breakpoint.  Check that ptid
4009              matches that task.  If task hasn't been computed yet,
4010              it is now time to do so.  */
4011           if (task == 0)
4012             task = ada_get_task_number (ptid);
4013           if (bl->owner->task != task)
4014             continue;
4015         }
4016
4017       if (overlay_debugging 
4018           && section_is_overlay (bl->section)
4019           && !section_is_mapped (bl->section))
4020         continue;           /* unmapped overlay -- can't be a match */
4021
4022       return 1;
4023     }
4024
4025   return 0;
4026 }
4027 \f
4028
4029 /* bpstat stuff.  External routines' interfaces are documented
4030    in breakpoint.h.  */
4031
4032 int
4033 is_catchpoint (struct breakpoint *ep)
4034 {
4035   return (ep->type == bp_catchpoint);
4036 }
4037
4038 /* Frees any storage that is part of a bpstat.  Does not walk the
4039    'next' chain.  */
4040
4041 static void
4042 bpstat_free (bpstat bs)
4043 {
4044   if (bs->old_val != NULL)
4045     value_free (bs->old_val);
4046   decref_counted_command_line (&bs->commands);
4047   decref_bp_location (&bs->bp_location_at);
4048   xfree (bs);
4049 }
4050
4051 /* Clear a bpstat so that it says we are not at any breakpoint.
4052    Also free any storage that is part of a bpstat.  */
4053
4054 void
4055 bpstat_clear (bpstat *bsp)
4056 {
4057   bpstat p;
4058   bpstat q;
4059
4060   if (bsp == 0)
4061     return;
4062   p = *bsp;
4063   while (p != NULL)
4064     {
4065       q = p->next;
4066       bpstat_free (p);
4067       p = q;
4068     }
4069   *bsp = NULL;
4070 }
4071
4072 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4073    is part of the bpstat is copied as well.  */
4074
4075 bpstat
4076 bpstat_copy (bpstat bs)
4077 {
4078   bpstat p = NULL;
4079   bpstat tmp;
4080   bpstat retval = NULL;
4081
4082   if (bs == NULL)
4083     return bs;
4084
4085   for (; bs != NULL; bs = bs->next)
4086     {
4087       tmp = (bpstat) xmalloc (sizeof (*tmp));
4088       memcpy (tmp, bs, sizeof (*tmp));
4089       incref_counted_command_line (tmp->commands);
4090       incref_bp_location (tmp->bp_location_at);
4091       if (bs->old_val != NULL)
4092         {
4093           tmp->old_val = value_copy (bs->old_val);
4094           release_value (tmp->old_val);
4095         }
4096
4097       if (p == NULL)
4098         /* This is the first thing in the chain.  */
4099         retval = tmp;
4100       else
4101         p->next = tmp;
4102       p = tmp;
4103     }
4104   p->next = NULL;
4105   return retval;
4106 }
4107
4108 /* Find the bpstat associated with this breakpoint.  */
4109
4110 bpstat
4111 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4112 {
4113   if (bsp == NULL)
4114     return NULL;
4115
4116   for (; bsp != NULL; bsp = bsp->next)
4117     {
4118       if (bsp->breakpoint_at == breakpoint)
4119         return bsp;
4120     }
4121   return NULL;
4122 }
4123
4124 /* Put in *NUM the breakpoint number of the first breakpoint we are
4125    stopped at.  *BSP upon return is a bpstat which points to the
4126    remaining breakpoints stopped at (but which is not guaranteed to be
4127    good for anything but further calls to bpstat_num).
4128
4129    Return 0 if passed a bpstat which does not indicate any breakpoints.
4130    Return -1 if stopped at a breakpoint that has been deleted since
4131    we set it.
4132    Return 1 otherwise.  */
4133
4134 int
4135 bpstat_num (bpstat *bsp, int *num)
4136 {
4137   struct breakpoint *b;
4138
4139   if ((*bsp) == NULL)
4140     return 0;                   /* No more breakpoint values */
4141
4142   /* We assume we'll never have several bpstats that correspond to a
4143      single breakpoint -- otherwise, this function might return the
4144      same number more than once and this will look ugly.  */
4145   b = (*bsp)->breakpoint_at;
4146   *bsp = (*bsp)->next;
4147   if (b == NULL)
4148     return -1;                  /* breakpoint that's been deleted since */
4149
4150   *num = b->number;             /* We have its number */
4151   return 1;
4152 }
4153
4154 /* See breakpoint.h.  */
4155
4156 void
4157 bpstat_clear_actions (void)
4158 {
4159   struct thread_info *tp;
4160   bpstat bs;
4161
4162   if (ptid_equal (inferior_ptid, null_ptid))
4163     return;
4164
4165   tp = find_thread_ptid (inferior_ptid);
4166   if (tp == NULL)
4167     return;
4168
4169   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4170     {
4171       decref_counted_command_line (&bs->commands);
4172
4173       if (bs->old_val != NULL)
4174         {
4175           value_free (bs->old_val);
4176           bs->old_val = NULL;
4177         }
4178     }
4179 }
4180
4181 /* Called when a command is about to proceed the inferior.  */
4182
4183 static void
4184 breakpoint_about_to_proceed (void)
4185 {
4186   if (!ptid_equal (inferior_ptid, null_ptid))
4187     {
4188       struct thread_info *tp = inferior_thread ();
4189
4190       /* Allow inferior function calls in breakpoint commands to not
4191          interrupt the command list.  When the call finishes
4192          successfully, the inferior will be standing at the same
4193          breakpoint as if nothing happened.  */
4194       if (tp->control.in_infcall)
4195         return;
4196     }
4197
4198   breakpoint_proceeded = 1;
4199 }
4200
4201 /* Stub for cleaning up our state if we error-out of a breakpoint
4202    command.  */
4203 static void
4204 cleanup_executing_breakpoints (void *ignore)
4205 {
4206   executing_breakpoint_commands = 0;
4207 }
4208
4209 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4210    or its equivalent.  */
4211
4212 static int
4213 command_line_is_silent (struct command_line *cmd)
4214 {
4215   return cmd && (strcmp ("silent", cmd->line) == 0
4216                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4217 }
4218
4219 /* Execute all the commands associated with all the breakpoints at
4220    this location.  Any of these commands could cause the process to
4221    proceed beyond this point, etc.  We look out for such changes by
4222    checking the global "breakpoint_proceeded" after each command.
4223
4224    Returns true if a breakpoint command resumed the inferior.  In that
4225    case, it is the caller's responsibility to recall it again with the
4226    bpstat of the current thread.  */
4227
4228 static int
4229 bpstat_do_actions_1 (bpstat *bsp)
4230 {
4231   bpstat bs;
4232   struct cleanup *old_chain;
4233   int again = 0;
4234
4235   /* Avoid endless recursion if a `source' command is contained
4236      in bs->commands.  */
4237   if (executing_breakpoint_commands)
4238     return 0;
4239
4240   executing_breakpoint_commands = 1;
4241   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4242
4243   prevent_dont_repeat ();
4244
4245   /* This pointer will iterate over the list of bpstat's.  */
4246   bs = *bsp;
4247
4248   breakpoint_proceeded = 0;
4249   for (; bs != NULL; bs = bs->next)
4250     {
4251       struct counted_command_line *ccmd;
4252       struct command_line *cmd;
4253       struct cleanup *this_cmd_tree_chain;
4254
4255       /* Take ownership of the BSP's command tree, if it has one.
4256
4257          The command tree could legitimately contain commands like
4258          'step' and 'next', which call clear_proceed_status, which
4259          frees stop_bpstat's command tree.  To make sure this doesn't
4260          free the tree we're executing out from under us, we need to
4261          take ownership of the tree ourselves.  Since a given bpstat's
4262          commands are only executed once, we don't need to copy it; we
4263          can clear the pointer in the bpstat, and make sure we free
4264          the tree when we're done.  */
4265       ccmd = bs->commands;
4266       bs->commands = NULL;
4267       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4268       cmd = ccmd ? ccmd->commands : NULL;
4269       if (command_line_is_silent (cmd))
4270         {
4271           /* The action has been already done by bpstat_stop_status.  */
4272           cmd = cmd->next;
4273         }
4274
4275       while (cmd != NULL)
4276         {
4277           execute_control_command (cmd);
4278
4279           if (breakpoint_proceeded)
4280             break;
4281           else
4282             cmd = cmd->next;
4283         }
4284
4285       /* We can free this command tree now.  */
4286       do_cleanups (this_cmd_tree_chain);
4287
4288       if (breakpoint_proceeded)
4289         {
4290           if (target_can_async_p ())
4291             /* If we are in async mode, then the target might be still
4292                running, not stopped at any breakpoint, so nothing for
4293                us to do here -- just return to the event loop.  */
4294             ;
4295           else
4296             /* In sync mode, when execute_control_command returns
4297                we're already standing on the next breakpoint.
4298                Breakpoint commands for that stop were not run, since
4299                execute_command does not run breakpoint commands --
4300                only command_line_handler does, but that one is not
4301                involved in execution of breakpoint commands.  So, we
4302                can now execute breakpoint commands.  It should be
4303                noted that making execute_command do bpstat actions is
4304                not an option -- in this case we'll have recursive
4305                invocation of bpstat for each breakpoint with a
4306                command, and can easily blow up GDB stack.  Instead, we
4307                return true, which will trigger the caller to recall us
4308                with the new stop_bpstat.  */
4309             again = 1;
4310           break;
4311         }
4312     }
4313   do_cleanups (old_chain);
4314   return again;
4315 }
4316
4317 void
4318 bpstat_do_actions (void)
4319 {
4320   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4321
4322   /* Do any commands attached to breakpoint we are stopped at.  */
4323   while (!ptid_equal (inferior_ptid, null_ptid)
4324          && target_has_execution
4325          && !is_exited (inferior_ptid)
4326          && !is_executing (inferior_ptid))
4327     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4328        and only return when it is stopped at the next breakpoint, we
4329        keep doing breakpoint actions until it returns false to
4330        indicate the inferior was not resumed.  */
4331     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4332       break;
4333
4334   discard_cleanups (cleanup_if_error);
4335 }
4336
4337 /* Print out the (old or new) value associated with a watchpoint.  */
4338
4339 static void
4340 watchpoint_value_print (struct value *val, struct ui_file *stream)
4341 {
4342   if (val == NULL)
4343     fprintf_unfiltered (stream, _("<unreadable>"));
4344   else
4345     {
4346       struct value_print_options opts;
4347       get_user_print_options (&opts);
4348       value_print (val, stream, &opts);
4349     }
4350 }
4351
4352 /* Generic routine for printing messages indicating why we
4353    stopped.  The behavior of this function depends on the value
4354    'print_it' in the bpstat structure.  Under some circumstances we
4355    may decide not to print anything here and delegate the task to
4356    normal_stop().  */
4357
4358 static enum print_stop_action
4359 print_bp_stop_message (bpstat bs)
4360 {
4361   switch (bs->print_it)
4362     {
4363     case print_it_noop:
4364       /* Nothing should be printed for this bpstat entry.  */
4365       return PRINT_UNKNOWN;
4366       break;
4367
4368     case print_it_done:
4369       /* We still want to print the frame, but we already printed the
4370          relevant messages.  */
4371       return PRINT_SRC_AND_LOC;
4372       break;
4373
4374     case print_it_normal:
4375       {
4376         struct breakpoint *b = bs->breakpoint_at;
4377
4378         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4379            which has since been deleted.  */
4380         if (b == NULL)
4381           return PRINT_UNKNOWN;
4382
4383         /* Normal case.  Call the breakpoint's print_it method.  */
4384         return b->ops->print_it (bs);
4385       }
4386       break;
4387
4388     default:
4389       internal_error (__FILE__, __LINE__,
4390                       _("print_bp_stop_message: unrecognized enum value"));
4391       break;
4392     }
4393 }
4394
4395 /* A helper function that prints a shared library stopped event.  */
4396
4397 static void
4398 print_solib_event (int is_catchpoint)
4399 {
4400   int any_deleted
4401     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4402   int any_added
4403     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4404
4405   if (!is_catchpoint)
4406     {
4407       if (any_added || any_deleted)
4408         ui_out_text (current_uiout,
4409                      _("Stopped due to shared library event:\n"));
4410       else
4411         ui_out_text (current_uiout,
4412                      _("Stopped due to shared library event (no "
4413                        "libraries added or removed)\n"));
4414     }
4415
4416   if (ui_out_is_mi_like_p (current_uiout))
4417     ui_out_field_string (current_uiout, "reason",
4418                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4419
4420   if (any_deleted)
4421     {
4422       struct cleanup *cleanup;
4423       char *name;
4424       int ix;
4425
4426       ui_out_text (current_uiout, _("  Inferior unloaded "));
4427       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4428                                                     "removed");
4429       for (ix = 0;
4430            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4431                         ix, name);
4432            ++ix)
4433         {
4434           if (ix > 0)
4435             ui_out_text (current_uiout, "    ");
4436           ui_out_field_string (current_uiout, "library", name);
4437           ui_out_text (current_uiout, "\n");
4438         }
4439
4440       do_cleanups (cleanup);
4441     }
4442
4443   if (any_added)
4444     {
4445       struct so_list *iter;
4446       int ix;
4447       struct cleanup *cleanup;
4448
4449       ui_out_text (current_uiout, _("  Inferior loaded "));
4450       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4451                                                     "added");
4452       for (ix = 0;
4453            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4454                         ix, iter);
4455            ++ix)
4456         {
4457           if (ix > 0)
4458             ui_out_text (current_uiout, "    ");
4459           ui_out_field_string (current_uiout, "library", iter->so_name);
4460           ui_out_text (current_uiout, "\n");
4461         }
4462
4463       do_cleanups (cleanup);
4464     }
4465 }
4466
4467 /* Print a message indicating what happened.  This is called from
4468    normal_stop().  The input to this routine is the head of the bpstat
4469    list - a list of the eventpoints that caused this stop.  KIND is
4470    the target_waitkind for the stopping event.  This
4471    routine calls the generic print routine for printing a message
4472    about reasons for stopping.  This will print (for example) the
4473    "Breakpoint n," part of the output.  The return value of this
4474    routine is one of:
4475
4476    PRINT_UNKNOWN: Means we printed nothing.
4477    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4478    code to print the location.  An example is 
4479    "Breakpoint 1, " which should be followed by
4480    the location.
4481    PRINT_SRC_ONLY: Means we printed something, but there is no need
4482    to also print the location part of the message.
4483    An example is the catch/throw messages, which
4484    don't require a location appended to the end.
4485    PRINT_NOTHING: We have done some printing and we don't need any 
4486    further info to be printed.  */
4487
4488 enum print_stop_action
4489 bpstat_print (bpstat bs, int kind)
4490 {
4491   int val;
4492
4493   /* Maybe another breakpoint in the chain caused us to stop.
4494      (Currently all watchpoints go on the bpstat whether hit or not.
4495      That probably could (should) be changed, provided care is taken
4496      with respect to bpstat_explains_signal).  */
4497   for (; bs; bs = bs->next)
4498     {
4499       val = print_bp_stop_message (bs);
4500       if (val == PRINT_SRC_ONLY 
4501           || val == PRINT_SRC_AND_LOC 
4502           || val == PRINT_NOTHING)
4503         return val;
4504     }
4505
4506   /* If we had hit a shared library event breakpoint,
4507      print_bp_stop_message would print out this message.  If we hit an
4508      OS-level shared library event, do the same thing.  */
4509   if (kind == TARGET_WAITKIND_LOADED)
4510     {
4511       print_solib_event (0);
4512       return PRINT_NOTHING;
4513     }
4514
4515   /* We reached the end of the chain, or we got a null BS to start
4516      with and nothing was printed.  */
4517   return PRINT_UNKNOWN;
4518 }
4519
4520 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4521    used inside a catch_errors to evaluate the breakpoint condition.
4522    The argument is a "struct expression *" that has been cast to a
4523    "char *" to make it pass through catch_errors.  */
4524
4525 static int
4526 breakpoint_cond_eval (void *exp)
4527 {
4528   struct value *mark = value_mark ();
4529   int i = !value_true (evaluate_expression ((struct expression *) exp));
4530
4531   value_free_to_mark (mark);
4532   return i;
4533 }
4534
4535 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4536
4537 static bpstat
4538 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4539 {
4540   bpstat bs;
4541
4542   bs = (bpstat) xmalloc (sizeof (*bs));
4543   bs->next = NULL;
4544   **bs_link_pointer = bs;
4545   *bs_link_pointer = &bs->next;
4546   bs->breakpoint_at = bl->owner;
4547   bs->bp_location_at = bl;
4548   incref_bp_location (bl);
4549   /* If the condition is false, etc., don't do the commands.  */
4550   bs->commands = NULL;
4551   bs->old_val = NULL;
4552   bs->print_it = print_it_normal;
4553   return bs;
4554 }
4555 \f
4556 /* The target has stopped with waitstatus WS.  Check if any hardware
4557    watchpoints have triggered, according to the target.  */
4558
4559 int
4560 watchpoints_triggered (struct target_waitstatus *ws)
4561 {
4562   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4563   CORE_ADDR addr;
4564   struct breakpoint *b;
4565
4566   if (!stopped_by_watchpoint)
4567     {
4568       /* We were not stopped by a watchpoint.  Mark all watchpoints
4569          as not triggered.  */
4570       ALL_BREAKPOINTS (b)
4571         if (is_hardware_watchpoint (b))
4572           {
4573             struct watchpoint *w = (struct watchpoint *) b;
4574
4575             w->watchpoint_triggered = watch_triggered_no;
4576           }
4577
4578       return 0;
4579     }
4580
4581   if (!target_stopped_data_address (&current_target, &addr))
4582     {
4583       /* We were stopped by a watchpoint, but we don't know where.
4584          Mark all watchpoints as unknown.  */
4585       ALL_BREAKPOINTS (b)
4586         if (is_hardware_watchpoint (b))
4587           {
4588             struct watchpoint *w = (struct watchpoint *) b;
4589
4590             w->watchpoint_triggered = watch_triggered_unknown;
4591           }
4592
4593       return stopped_by_watchpoint;
4594     }
4595
4596   /* The target could report the data address.  Mark watchpoints
4597      affected by this data address as triggered, and all others as not
4598      triggered.  */
4599
4600   ALL_BREAKPOINTS (b)
4601     if (is_hardware_watchpoint (b))
4602       {
4603         struct watchpoint *w = (struct watchpoint *) b;
4604         struct bp_location *loc;
4605
4606         w->watchpoint_triggered = watch_triggered_no;
4607         for (loc = b->loc; loc; loc = loc->next)
4608           {
4609             if (is_masked_watchpoint (b))
4610               {
4611                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4612                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4613
4614                 if (newaddr == start)
4615                   {
4616                     w->watchpoint_triggered = watch_triggered_yes;
4617                     break;
4618                   }
4619               }
4620             /* Exact match not required.  Within range is sufficient.  */
4621             else if (target_watchpoint_addr_within_range (&current_target,
4622                                                          addr, loc->address,
4623                                                          loc->length))
4624               {
4625                 w->watchpoint_triggered = watch_triggered_yes;
4626                 break;
4627               }
4628           }
4629       }
4630
4631   return 1;
4632 }
4633
4634 /* Possible return values for watchpoint_check (this can't be an enum
4635    because of check_errors).  */
4636 /* The watchpoint has been deleted.  */
4637 #define WP_DELETED 1
4638 /* The value has changed.  */
4639 #define WP_VALUE_CHANGED 2
4640 /* The value has not changed.  */
4641 #define WP_VALUE_NOT_CHANGED 3
4642 /* Ignore this watchpoint, no matter if the value changed or not.  */
4643 #define WP_IGNORE 4
4644
4645 #define BP_TEMPFLAG 1
4646 #define BP_HARDWAREFLAG 2
4647
4648 /* Evaluate watchpoint condition expression and check if its value
4649    changed.
4650
4651    P should be a pointer to struct bpstat, but is defined as a void *
4652    in order for this function to be usable with catch_errors.  */
4653
4654 static int
4655 watchpoint_check (void *p)
4656 {
4657   bpstat bs = (bpstat) p;
4658   struct watchpoint *b;
4659   struct frame_info *fr;
4660   int within_current_scope;
4661
4662   /* BS is built from an existing struct breakpoint.  */
4663   gdb_assert (bs->breakpoint_at != NULL);
4664   b = (struct watchpoint *) bs->breakpoint_at;
4665
4666   /* If this is a local watchpoint, we only want to check if the
4667      watchpoint frame is in scope if the current thread is the thread
4668      that was used to create the watchpoint.  */
4669   if (!watchpoint_in_thread_scope (b))
4670     return WP_IGNORE;
4671
4672   if (b->exp_valid_block == NULL)
4673     within_current_scope = 1;
4674   else
4675     {
4676       struct frame_info *frame = get_current_frame ();
4677       struct gdbarch *frame_arch = get_frame_arch (frame);
4678       CORE_ADDR frame_pc = get_frame_pc (frame);
4679
4680       /* in_function_epilogue_p() returns a non-zero value if we're
4681          still in the function but the stack frame has already been
4682          invalidated.  Since we can't rely on the values of local
4683          variables after the stack has been destroyed, we are treating
4684          the watchpoint in that state as `not changed' without further
4685          checking.  Don't mark watchpoints as changed if the current
4686          frame is in an epilogue - even if they are in some other
4687          frame, our view of the stack is likely to be wrong and
4688          frame_find_by_id could error out.  */
4689       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4690         return WP_IGNORE;
4691
4692       fr = frame_find_by_id (b->watchpoint_frame);
4693       within_current_scope = (fr != NULL);
4694
4695       /* If we've gotten confused in the unwinder, we might have
4696          returned a frame that can't describe this variable.  */
4697       if (within_current_scope)
4698         {
4699           struct symbol *function;
4700
4701           function = get_frame_function (fr);
4702           if (function == NULL
4703               || !contained_in (b->exp_valid_block,
4704                                 SYMBOL_BLOCK_VALUE (function)))
4705             within_current_scope = 0;
4706         }
4707
4708       if (within_current_scope)
4709         /* If we end up stopping, the current frame will get selected
4710            in normal_stop.  So this call to select_frame won't affect
4711            the user.  */
4712         select_frame (fr);
4713     }
4714
4715   if (within_current_scope)
4716     {
4717       /* We use value_{,free_to_}mark because it could be a *long*
4718          time before we return to the command level and call
4719          free_all_values.  We can't call free_all_values because we
4720          might be in the middle of evaluating a function call.  */
4721
4722       int pc = 0;
4723       struct value *mark;
4724       struct value *new_val;
4725
4726       if (is_masked_watchpoint (&b->base))
4727         /* Since we don't know the exact trigger address (from
4728            stopped_data_address), just tell the user we've triggered
4729            a mask watchpoint.  */
4730         return WP_VALUE_CHANGED;
4731
4732       mark = value_mark ();
4733       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4734
4735       /* We use value_equal_contents instead of value_equal because
4736          the latter coerces an array to a pointer, thus comparing just
4737          the address of the array instead of its contents.  This is
4738          not what we want.  */
4739       if ((b->val != NULL) != (new_val != NULL)
4740           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4741         {
4742           if (new_val != NULL)
4743             {
4744               release_value (new_val);
4745               value_free_to_mark (mark);
4746             }
4747           bs->old_val = b->val;
4748           b->val = new_val;
4749           b->val_valid = 1;
4750           return WP_VALUE_CHANGED;
4751         }
4752       else
4753         {
4754           /* Nothing changed.  */
4755           value_free_to_mark (mark);
4756           return WP_VALUE_NOT_CHANGED;
4757         }
4758     }
4759   else
4760     {
4761       struct ui_out *uiout = current_uiout;
4762
4763       /* This seems like the only logical thing to do because
4764          if we temporarily ignored the watchpoint, then when
4765          we reenter the block in which it is valid it contains
4766          garbage (in the case of a function, it may have two
4767          garbage values, one before and one after the prologue).
4768          So we can't even detect the first assignment to it and
4769          watch after that (since the garbage may or may not equal
4770          the first value assigned).  */
4771       /* We print all the stop information in
4772          breakpoint_ops->print_it, but in this case, by the time we
4773          call breakpoint_ops->print_it this bp will be deleted
4774          already.  So we have no choice but print the information
4775          here.  */
4776       if (ui_out_is_mi_like_p (uiout))
4777         ui_out_field_string
4778           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4779       ui_out_text (uiout, "\nWatchpoint ");
4780       ui_out_field_int (uiout, "wpnum", b->base.number);
4781       ui_out_text (uiout,
4782                    " deleted because the program has left the block in\n\
4783 which its expression is valid.\n");     
4784
4785       /* Make sure the watchpoint's commands aren't executed.  */
4786       decref_counted_command_line (&b->base.commands);
4787       watchpoint_del_at_next_stop (b);
4788
4789       return WP_DELETED;
4790     }
4791 }
4792
4793 /* Return true if it looks like target has stopped due to hitting
4794    breakpoint location BL.  This function does not check if we should
4795    stop, only if BL explains the stop.  */
4796
4797 static int
4798 bpstat_check_location (const struct bp_location *bl,
4799                        struct address_space *aspace, CORE_ADDR bp_addr,
4800                        const struct target_waitstatus *ws)
4801 {
4802   struct breakpoint *b = bl->owner;
4803
4804   /* BL is from an existing breakpoint.  */
4805   gdb_assert (b != NULL);
4806
4807   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4808 }
4809
4810 /* Determine if the watched values have actually changed, and we
4811    should stop.  If not, set BS->stop to 0.  */
4812
4813 static void
4814 bpstat_check_watchpoint (bpstat bs)
4815 {
4816   const struct bp_location *bl;
4817   struct watchpoint *b;
4818
4819   /* BS is built for existing struct breakpoint.  */
4820   bl = bs->bp_location_at;
4821   gdb_assert (bl != NULL);
4822   b = (struct watchpoint *) bs->breakpoint_at;
4823   gdb_assert (b != NULL);
4824
4825     {
4826       int must_check_value = 0;
4827       
4828       if (b->base.type == bp_watchpoint)
4829         /* For a software watchpoint, we must always check the
4830            watched value.  */
4831         must_check_value = 1;
4832       else if (b->watchpoint_triggered == watch_triggered_yes)
4833         /* We have a hardware watchpoint (read, write, or access)
4834            and the target earlier reported an address watched by
4835            this watchpoint.  */
4836         must_check_value = 1;
4837       else if (b->watchpoint_triggered == watch_triggered_unknown
4838                && b->base.type == bp_hardware_watchpoint)
4839         /* We were stopped by a hardware watchpoint, but the target could
4840            not report the data address.  We must check the watchpoint's
4841            value.  Access and read watchpoints are out of luck; without
4842            a data address, we can't figure it out.  */
4843         must_check_value = 1;
4844
4845       if (must_check_value)
4846         {
4847           char *message
4848             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4849                           b->base.number);
4850           struct cleanup *cleanups = make_cleanup (xfree, message);
4851           int e = catch_errors (watchpoint_check, bs, message,
4852                                 RETURN_MASK_ALL);
4853           do_cleanups (cleanups);
4854           switch (e)
4855             {
4856             case WP_DELETED:
4857               /* We've already printed what needs to be printed.  */
4858               bs->print_it = print_it_done;
4859               /* Stop.  */
4860               break;
4861             case WP_IGNORE:
4862               bs->print_it = print_it_noop;
4863               bs->stop = 0;
4864               break;
4865             case WP_VALUE_CHANGED:
4866               if (b->base.type == bp_read_watchpoint)
4867                 {
4868                   /* There are two cases to consider here:
4869
4870                      1. We're watching the triggered memory for reads.
4871                      In that case, trust the target, and always report
4872                      the watchpoint hit to the user.  Even though
4873                      reads don't cause value changes, the value may
4874                      have changed since the last time it was read, and
4875                      since we're not trapping writes, we will not see
4876                      those, and as such we should ignore our notion of
4877                      old value.
4878
4879                      2. We're watching the triggered memory for both
4880                      reads and writes.  There are two ways this may
4881                      happen:
4882
4883                      2.1. This is a target that can't break on data
4884                      reads only, but can break on accesses (reads or
4885                      writes), such as e.g., x86.  We detect this case
4886                      at the time we try to insert read watchpoints.
4887
4888                      2.2. Otherwise, the target supports read
4889                      watchpoints, but, the user set an access or write
4890                      watchpoint watching the same memory as this read
4891                      watchpoint.
4892
4893                      If we're watching memory writes as well as reads,
4894                      ignore watchpoint hits when we find that the
4895                      value hasn't changed, as reads don't cause
4896                      changes.  This still gives false positives when
4897                      the program writes the same value to memory as
4898                      what there was already in memory (we will confuse
4899                      it for a read), but it's much better than
4900                      nothing.  */
4901
4902                   int other_write_watchpoint = 0;
4903
4904                   if (bl->watchpoint_type == hw_read)
4905                     {
4906                       struct breakpoint *other_b;
4907
4908                       ALL_BREAKPOINTS (other_b)
4909                         if (other_b->type == bp_hardware_watchpoint
4910                             || other_b->type == bp_access_watchpoint)
4911                           {
4912                             struct watchpoint *other_w =
4913                               (struct watchpoint *) other_b;
4914
4915                             if (other_w->watchpoint_triggered
4916                                 == watch_triggered_yes)
4917                               {
4918                                 other_write_watchpoint = 1;
4919                                 break;
4920                               }
4921                           }
4922                     }
4923
4924                   if (other_write_watchpoint
4925                       || bl->watchpoint_type == hw_access)
4926                     {
4927                       /* We're watching the same memory for writes,
4928                          and the value changed since the last time we
4929                          updated it, so this trap must be for a write.
4930                          Ignore it.  */
4931                       bs->print_it = print_it_noop;
4932                       bs->stop = 0;
4933                     }
4934                 }
4935               break;
4936             case WP_VALUE_NOT_CHANGED:
4937               if (b->base.type == bp_hardware_watchpoint
4938                   || b->base.type == bp_watchpoint)
4939                 {
4940                   /* Don't stop: write watchpoints shouldn't fire if
4941                      the value hasn't changed.  */
4942                   bs->print_it = print_it_noop;
4943                   bs->stop = 0;
4944                 }
4945               /* Stop.  */
4946               break;
4947             default:
4948               /* Can't happen.  */
4949             case 0:
4950               /* Error from catch_errors.  */
4951               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4952               watchpoint_del_at_next_stop (b);
4953               /* We've already printed what needs to be printed.  */
4954               bs->print_it = print_it_done;
4955               break;
4956             }
4957         }
4958       else      /* must_check_value == 0 */
4959         {
4960           /* This is a case where some watchpoint(s) triggered, but
4961              not at the address of this watchpoint, or else no
4962              watchpoint triggered after all.  So don't print
4963              anything for this watchpoint.  */
4964           bs->print_it = print_it_noop;
4965           bs->stop = 0;
4966         }
4967     }
4968 }
4969
4970
4971 /* Check conditions (condition proper, frame, thread and ignore count)
4972    of breakpoint referred to by BS.  If we should not stop for this
4973    breakpoint, set BS->stop to 0.  */
4974
4975 static void
4976 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4977 {
4978   int thread_id = pid_to_thread_id (ptid);
4979   const struct bp_location *bl;
4980   struct breakpoint *b;
4981
4982   /* BS is built for existing struct breakpoint.  */
4983   bl = bs->bp_location_at;
4984   gdb_assert (bl != NULL);
4985   b = bs->breakpoint_at;
4986   gdb_assert (b != NULL);
4987
4988   /* Even if the target evaluated the condition on its end and notified GDB, we
4989      need to do so again since GDB does not know if we stopped due to a
4990      breakpoint or a single step breakpoint.  */
4991
4992   if (frame_id_p (b->frame_id)
4993       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4994     bs->stop = 0;
4995   else if (bs->stop)
4996     {
4997       int value_is_zero = 0;
4998       struct expression *cond;
4999
5000       /* Evaluate Python breakpoints that have a "stop"
5001          method implemented.  */
5002       if (b->py_bp_object)
5003         bs->stop = gdbpy_should_stop (b->py_bp_object);
5004
5005       if (is_watchpoint (b))
5006         {
5007           struct watchpoint *w = (struct watchpoint *) b;
5008
5009           cond = w->cond_exp;
5010         }
5011       else
5012         cond = bl->cond;
5013
5014       if (cond && b->disposition != disp_del_at_next_stop)
5015         {
5016           int within_current_scope = 1;
5017           struct watchpoint * w;
5018
5019           /* We use value_mark and value_free_to_mark because it could
5020              be a long time before we return to the command level and
5021              call free_all_values.  We can't call free_all_values
5022              because we might be in the middle of evaluating a
5023              function call.  */
5024           struct value *mark = value_mark ();
5025
5026           if (is_watchpoint (b))
5027             w = (struct watchpoint *) b;
5028           else
5029             w = NULL;
5030
5031           /* Need to select the frame, with all that implies so that
5032              the conditions will have the right context.  Because we
5033              use the frame, we will not see an inlined function's
5034              variables when we arrive at a breakpoint at the start
5035              of the inlined function; the current frame will be the
5036              call site.  */
5037           if (w == NULL || w->cond_exp_valid_block == NULL)
5038             select_frame (get_current_frame ());
5039           else
5040             {
5041               struct frame_info *frame;
5042
5043               /* For local watchpoint expressions, which particular
5044                  instance of a local is being watched matters, so we
5045                  keep track of the frame to evaluate the expression
5046                  in.  To evaluate the condition however, it doesn't
5047                  really matter which instantiation of the function
5048                  where the condition makes sense triggers the
5049                  watchpoint.  This allows an expression like "watch
5050                  global if q > 10" set in `func', catch writes to
5051                  global on all threads that call `func', or catch
5052                  writes on all recursive calls of `func' by a single
5053                  thread.  We simply always evaluate the condition in
5054                  the innermost frame that's executing where it makes
5055                  sense to evaluate the condition.  It seems
5056                  intuitive.  */
5057               frame = block_innermost_frame (w->cond_exp_valid_block);
5058               if (frame != NULL)
5059                 select_frame (frame);
5060               else
5061                 within_current_scope = 0;
5062             }
5063           if (within_current_scope)
5064             value_is_zero
5065               = catch_errors (breakpoint_cond_eval, cond,
5066                               "Error in testing breakpoint condition:\n",
5067                               RETURN_MASK_ALL);
5068           else
5069             {
5070               warning (_("Watchpoint condition cannot be tested "
5071                          "in the current scope"));
5072               /* If we failed to set the right context for this
5073                  watchpoint, unconditionally report it.  */
5074               value_is_zero = 0;
5075             }
5076           /* FIXME-someday, should give breakpoint #.  */
5077           value_free_to_mark (mark);
5078         }
5079
5080       if (cond && value_is_zero)
5081         {
5082           bs->stop = 0;
5083         }
5084       else if (b->thread != -1 && b->thread != thread_id)
5085         {
5086           bs->stop = 0;
5087         }
5088       else if (b->ignore_count > 0)
5089         {
5090           b->ignore_count--;
5091           annotate_ignore_count_change ();
5092           bs->stop = 0;
5093           /* Increase the hit count even though we don't stop.  */
5094           ++(b->hit_count);
5095           observer_notify_breakpoint_modified (b);
5096         }       
5097     }
5098 }
5099
5100
5101 /* Get a bpstat associated with having just stopped at address
5102    BP_ADDR in thread PTID.
5103
5104    Determine whether we stopped at a breakpoint, etc, or whether we
5105    don't understand this stop.  Result is a chain of bpstat's such
5106    that:
5107
5108    if we don't understand the stop, the result is a null pointer.
5109
5110    if we understand why we stopped, the result is not null.
5111
5112    Each element of the chain refers to a particular breakpoint or
5113    watchpoint at which we have stopped.  (We may have stopped for
5114    several reasons concurrently.)
5115
5116    Each element of the chain has valid next, breakpoint_at,
5117    commands, FIXME??? fields.  */
5118
5119 bpstat
5120 bpstat_stop_status (struct address_space *aspace,
5121                     CORE_ADDR bp_addr, ptid_t ptid,
5122                     const struct target_waitstatus *ws)
5123 {
5124   struct breakpoint *b = NULL;
5125   struct bp_location *bl;
5126   struct bp_location *loc;
5127   /* First item of allocated bpstat's.  */
5128   bpstat bs_head = NULL, *bs_link = &bs_head;
5129   /* Pointer to the last thing in the chain currently.  */
5130   bpstat bs;
5131   int ix;
5132   int need_remove_insert;
5133   int removed_any;
5134
5135   /* First, build the bpstat chain with locations that explain a
5136      target stop, while being careful to not set the target running,
5137      as that may invalidate locations (in particular watchpoint
5138      locations are recreated).  Resuming will happen here with
5139      breakpoint conditions or watchpoint expressions that include
5140      inferior function calls.  */
5141
5142   ALL_BREAKPOINTS (b)
5143     {
5144       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5145         continue;
5146
5147       for (bl = b->loc; bl != NULL; bl = bl->next)
5148         {
5149           /* For hardware watchpoints, we look only at the first
5150              location.  The watchpoint_check function will work on the
5151              entire expression, not the individual locations.  For
5152              read watchpoints, the watchpoints_triggered function has
5153              checked all locations already.  */
5154           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5155             break;
5156
5157           if (bl->shlib_disabled)
5158             continue;
5159
5160           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5161             continue;
5162
5163           /* Come here if it's a watchpoint, or if the break address
5164              matches.  */
5165
5166           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5167                                                    explain stop.  */
5168
5169           /* Assume we stop.  Should we find a watchpoint that is not
5170              actually triggered, or if the condition of the breakpoint
5171              evaluates as false, we'll reset 'stop' to 0.  */
5172           bs->stop = 1;
5173           bs->print = 1;
5174
5175           /* If this is a scope breakpoint, mark the associated
5176              watchpoint as triggered so that we will handle the
5177              out-of-scope event.  We'll get to the watchpoint next
5178              iteration.  */
5179           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5180             {
5181               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5182
5183               w->watchpoint_triggered = watch_triggered_yes;
5184             }
5185         }
5186     }
5187
5188   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5189     {
5190       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5191         {
5192           bs = bpstat_alloc (loc, &bs_link);
5193           /* For hits of moribund locations, we should just proceed.  */
5194           bs->stop = 0;
5195           bs->print = 0;
5196           bs->print_it = print_it_noop;
5197         }
5198     }
5199
5200   /* A bit of special processing for shlib breakpoints.  We need to
5201      process solib loading here, so that the lists of loaded and
5202      unloaded libraries are correct before we handle "catch load" and
5203      "catch unload".  */
5204   for (bs = bs_head; bs != NULL; bs = bs->next)
5205     {
5206       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5207         {
5208           handle_solib_event ();
5209           break;
5210         }
5211     }
5212
5213   /* Now go through the locations that caused the target to stop, and
5214      check whether we're interested in reporting this stop to higher
5215      layers, or whether we should resume the target transparently.  */
5216
5217   removed_any = 0;
5218
5219   for (bs = bs_head; bs != NULL; bs = bs->next)
5220     {
5221       if (!bs->stop)
5222         continue;
5223
5224       b = bs->breakpoint_at;
5225       b->ops->check_status (bs);
5226       if (bs->stop)
5227         {
5228           bpstat_check_breakpoint_conditions (bs, ptid);
5229
5230           if (bs->stop)
5231             {
5232               ++(b->hit_count);
5233               observer_notify_breakpoint_modified (b);
5234
5235               /* We will stop here.  */
5236               if (b->disposition == disp_disable)
5237                 {
5238                   --(b->enable_count);
5239                   if (b->enable_count <= 0
5240                       && b->enable_state != bp_permanent)
5241                     b->enable_state = bp_disabled;
5242                   removed_any = 1;
5243                 }
5244               if (b->silent)
5245                 bs->print = 0;
5246               bs->commands = b->commands;
5247               incref_counted_command_line (bs->commands);
5248               if (command_line_is_silent (bs->commands
5249                                           ? bs->commands->commands : NULL))
5250                 bs->print = 0;
5251             }
5252
5253         }
5254
5255       /* Print nothing for this entry if we don't stop or don't
5256          print.  */
5257       if (!bs->stop || !bs->print)
5258         bs->print_it = print_it_noop;
5259     }
5260
5261   /* If we aren't stopping, the value of some hardware watchpoint may
5262      not have changed, but the intermediate memory locations we are
5263      watching may have.  Don't bother if we're stopping; this will get
5264      done later.  */
5265   need_remove_insert = 0;
5266   if (! bpstat_causes_stop (bs_head))
5267     for (bs = bs_head; bs != NULL; bs = bs->next)
5268       if (!bs->stop
5269           && bs->breakpoint_at
5270           && is_hardware_watchpoint (bs->breakpoint_at))
5271         {
5272           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5273
5274           update_watchpoint (w, 0 /* don't reparse.  */);
5275           need_remove_insert = 1;
5276         }
5277
5278   if (need_remove_insert)
5279     update_global_location_list (1);
5280   else if (removed_any)
5281     update_global_location_list (0);
5282
5283   return bs_head;
5284 }
5285
5286 static void
5287 handle_jit_event (void)
5288 {
5289   struct frame_info *frame;
5290   struct gdbarch *gdbarch;
5291
5292   /* Switch terminal for any messages produced by
5293      breakpoint_re_set.  */
5294   target_terminal_ours_for_output ();
5295
5296   frame = get_current_frame ();
5297   gdbarch = get_frame_arch (frame);
5298
5299   jit_event_handler (gdbarch);
5300
5301   target_terminal_inferior ();
5302 }
5303
5304 /* Handle an solib event by calling solib_add.  */
5305
5306 void
5307 handle_solib_event (void)
5308 {
5309   clear_program_space_solib_cache (current_inferior ()->pspace);
5310
5311   /* Check for any newly added shared libraries if we're supposed to
5312      be adding them automatically.  Switch terminal for any messages
5313      produced by breakpoint_re_set.  */
5314   target_terminal_ours_for_output ();
5315 #ifdef SOLIB_ADD
5316   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5317 #else
5318   solib_add (NULL, 0, &current_target, auto_solib_add);
5319 #endif
5320   target_terminal_inferior ();
5321 }
5322
5323 /* Prepare WHAT final decision for infrun.  */
5324
5325 /* Decide what infrun needs to do with this bpstat.  */
5326
5327 struct bpstat_what
5328 bpstat_what (bpstat bs_head)
5329 {
5330   struct bpstat_what retval;
5331   int jit_event = 0;
5332   bpstat bs;
5333
5334   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5335   retval.call_dummy = STOP_NONE;
5336   retval.is_longjmp = 0;
5337
5338   for (bs = bs_head; bs != NULL; bs = bs->next)
5339     {
5340       /* Extract this BS's action.  After processing each BS, we check
5341          if its action overrides all we've seem so far.  */
5342       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5343       enum bptype bptype;
5344
5345       if (bs->breakpoint_at == NULL)
5346         {
5347           /* I suspect this can happen if it was a momentary
5348              breakpoint which has since been deleted.  */
5349           bptype = bp_none;
5350         }
5351       else
5352         bptype = bs->breakpoint_at->type;
5353
5354       switch (bptype)
5355         {
5356         case bp_none:
5357           break;
5358         case bp_breakpoint:
5359         case bp_hardware_breakpoint:
5360         case bp_until:
5361         case bp_finish:
5362         case bp_shlib_event:
5363           if (bs->stop)
5364             {
5365               if (bs->print)
5366                 this_action = BPSTAT_WHAT_STOP_NOISY;
5367               else
5368                 this_action = BPSTAT_WHAT_STOP_SILENT;
5369             }
5370           else
5371             this_action = BPSTAT_WHAT_SINGLE;
5372           break;
5373         case bp_watchpoint:
5374         case bp_hardware_watchpoint:
5375         case bp_read_watchpoint:
5376         case bp_access_watchpoint:
5377           if (bs->stop)
5378             {
5379               if (bs->print)
5380                 this_action = BPSTAT_WHAT_STOP_NOISY;
5381               else
5382                 this_action = BPSTAT_WHAT_STOP_SILENT;
5383             }
5384           else
5385             {
5386               /* There was a watchpoint, but we're not stopping.
5387                  This requires no further action.  */
5388             }
5389           break;
5390         case bp_longjmp:
5391         case bp_longjmp_call_dummy:
5392         case bp_exception:
5393           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5394           retval.is_longjmp = bptype != bp_exception;
5395           break;
5396         case bp_longjmp_resume:
5397         case bp_exception_resume:
5398           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5399           retval.is_longjmp = bptype == bp_longjmp_resume;
5400           break;
5401         case bp_step_resume:
5402           if (bs->stop)
5403             this_action = BPSTAT_WHAT_STEP_RESUME;
5404           else
5405             {
5406               /* It is for the wrong frame.  */
5407               this_action = BPSTAT_WHAT_SINGLE;
5408             }
5409           break;
5410         case bp_hp_step_resume:
5411           if (bs->stop)
5412             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5413           else
5414             {
5415               /* It is for the wrong frame.  */
5416               this_action = BPSTAT_WHAT_SINGLE;
5417             }
5418           break;
5419         case bp_watchpoint_scope:
5420         case bp_thread_event:
5421         case bp_overlay_event:
5422         case bp_longjmp_master:
5423         case bp_std_terminate_master:
5424         case bp_exception_master:
5425           this_action = BPSTAT_WHAT_SINGLE;
5426           break;
5427         case bp_catchpoint:
5428           if (bs->stop)
5429             {
5430               if (bs->print)
5431                 this_action = BPSTAT_WHAT_STOP_NOISY;
5432               else
5433                 this_action = BPSTAT_WHAT_STOP_SILENT;
5434             }
5435           else
5436             {
5437               /* There was a catchpoint, but we're not stopping.
5438                  This requires no further action.  */
5439             }
5440           break;
5441         case bp_jit_event:
5442           jit_event = 1;
5443           this_action = BPSTAT_WHAT_SINGLE;
5444           break;
5445         case bp_call_dummy:
5446           /* Make sure the action is stop (silent or noisy),
5447              so infrun.c pops the dummy frame.  */
5448           retval.call_dummy = STOP_STACK_DUMMY;
5449           this_action = BPSTAT_WHAT_STOP_SILENT;
5450           break;
5451         case bp_std_terminate:
5452           /* Make sure the action is stop (silent or noisy),
5453              so infrun.c pops the dummy frame.  */
5454           retval.call_dummy = STOP_STD_TERMINATE;
5455           this_action = BPSTAT_WHAT_STOP_SILENT;
5456           break;
5457         case bp_tracepoint:
5458         case bp_fast_tracepoint:
5459         case bp_static_tracepoint:
5460           /* Tracepoint hits should not be reported back to GDB, and
5461              if one got through somehow, it should have been filtered
5462              out already.  */
5463           internal_error (__FILE__, __LINE__,
5464                           _("bpstat_what: tracepoint encountered"));
5465           break;
5466         case bp_gnu_ifunc_resolver:
5467           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5468           this_action = BPSTAT_WHAT_SINGLE;
5469           break;
5470         case bp_gnu_ifunc_resolver_return:
5471           /* The breakpoint will be removed, execution will restart from the
5472              PC of the former breakpoint.  */
5473           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5474           break;
5475
5476         case bp_dprintf:
5477           this_action = BPSTAT_WHAT_STOP_SILENT;
5478           break;
5479
5480         default:
5481           internal_error (__FILE__, __LINE__,
5482                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5483         }
5484
5485       retval.main_action = max (retval.main_action, this_action);
5486     }
5487
5488   /* These operations may affect the bs->breakpoint_at state so they are
5489      delayed after MAIN_ACTION is decided above.  */
5490
5491   if (jit_event)
5492     {
5493       if (debug_infrun)
5494         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5495
5496       handle_jit_event ();
5497     }
5498
5499   for (bs = bs_head; bs != NULL; bs = bs->next)
5500     {
5501       struct breakpoint *b = bs->breakpoint_at;
5502
5503       if (b == NULL)
5504         continue;
5505       switch (b->type)
5506         {
5507         case bp_gnu_ifunc_resolver:
5508           gnu_ifunc_resolver_stop (b);
5509           break;
5510         case bp_gnu_ifunc_resolver_return:
5511           gnu_ifunc_resolver_return_stop (b);
5512           break;
5513         }
5514     }
5515
5516   return retval;
5517 }
5518
5519 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5520    without hardware support).  This isn't related to a specific bpstat,
5521    just to things like whether watchpoints are set.  */
5522
5523 int
5524 bpstat_should_step (void)
5525 {
5526   struct breakpoint *b;
5527
5528   ALL_BREAKPOINTS (b)
5529     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5530       return 1;
5531   return 0;
5532 }
5533
5534 int
5535 bpstat_causes_stop (bpstat bs)
5536 {
5537   for (; bs != NULL; bs = bs->next)
5538     if (bs->stop)
5539       return 1;
5540
5541   return 0;
5542 }
5543
5544 \f
5545
5546 /* Compute a string of spaces suitable to indent the next line
5547    so it starts at the position corresponding to the table column
5548    named COL_NAME in the currently active table of UIOUT.  */
5549
5550 static char *
5551 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5552 {
5553   static char wrap_indent[80];
5554   int i, total_width, width, align;
5555   char *text;
5556
5557   total_width = 0;
5558   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5559     {
5560       if (strcmp (text, col_name) == 0)
5561         {
5562           gdb_assert (total_width < sizeof wrap_indent);
5563           memset (wrap_indent, ' ', total_width);
5564           wrap_indent[total_width] = 0;
5565
5566           return wrap_indent;
5567         }
5568
5569       total_width += width + 1;
5570     }
5571
5572   return NULL;
5573 }
5574
5575 /* Determine if the locations of this breakpoint will have their conditions
5576    evaluated by the target, host or a mix of both.  Returns the following:
5577
5578     "host": Host evals condition.
5579     "host or target": Host or Target evals condition.
5580     "target": Target evals condition.
5581 */
5582
5583 static const char *
5584 bp_condition_evaluator (struct breakpoint *b)
5585 {
5586   struct bp_location *bl;
5587   char host_evals = 0;
5588   char target_evals = 0;
5589
5590   if (!b)
5591     return NULL;
5592
5593   if (!is_breakpoint (b))
5594     return NULL;
5595
5596   if (gdb_evaluates_breakpoint_condition_p ()
5597       || !target_supports_evaluation_of_breakpoint_conditions ())
5598     return condition_evaluation_host;
5599
5600   for (bl = b->loc; bl; bl = bl->next)
5601     {
5602       if (bl->cond_bytecode)
5603         target_evals++;
5604       else
5605         host_evals++;
5606     }
5607
5608   if (host_evals && target_evals)
5609     return condition_evaluation_both;
5610   else if (target_evals)
5611     return condition_evaluation_target;
5612   else
5613     return condition_evaluation_host;
5614 }
5615
5616 /* Determine the breakpoint location's condition evaluator.  This is
5617    similar to bp_condition_evaluator, but for locations.  */
5618
5619 static const char *
5620 bp_location_condition_evaluator (struct bp_location *bl)
5621 {
5622   if (bl && !is_breakpoint (bl->owner))
5623     return NULL;
5624
5625   if (gdb_evaluates_breakpoint_condition_p ()
5626       || !target_supports_evaluation_of_breakpoint_conditions ())
5627     return condition_evaluation_host;
5628
5629   if (bl && bl->cond_bytecode)
5630     return condition_evaluation_target;
5631   else
5632     return condition_evaluation_host;
5633 }
5634
5635 /* Print the LOC location out of the list of B->LOC locations.  */
5636
5637 static void
5638 print_breakpoint_location (struct breakpoint *b,
5639                            struct bp_location *loc)
5640 {
5641   struct ui_out *uiout = current_uiout;
5642   struct cleanup *old_chain = save_current_program_space ();
5643
5644   if (loc != NULL && loc->shlib_disabled)
5645     loc = NULL;
5646
5647   if (loc != NULL)
5648     set_current_program_space (loc->pspace);
5649
5650   if (b->display_canonical)
5651     ui_out_field_string (uiout, "what", b->addr_string);
5652   else if (loc && loc->source_file)
5653     {
5654       struct symbol *sym 
5655         = find_pc_sect_function (loc->address, loc->section);
5656       if (sym)
5657         {
5658           ui_out_text (uiout, "in ");
5659           ui_out_field_string (uiout, "func",
5660                                SYMBOL_PRINT_NAME (sym));
5661           ui_out_text (uiout, " ");
5662           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5663           ui_out_text (uiout, "at ");
5664         }
5665       ui_out_field_string (uiout, "file", loc->source_file);
5666       ui_out_text (uiout, ":");
5667       
5668       if (ui_out_is_mi_like_p (uiout))
5669         {
5670           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5671           char *fullname = symtab_to_fullname (sal.symtab);
5672           
5673           if (fullname)
5674             ui_out_field_string (uiout, "fullname", fullname);
5675         }
5676       
5677       ui_out_field_int (uiout, "line", loc->line_number);
5678     }
5679   else if (loc)
5680     {
5681       struct ui_file *stb = mem_fileopen ();
5682       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5683
5684       print_address_symbolic (loc->gdbarch, loc->address, stb,
5685                               demangle, "");
5686       ui_out_field_stream (uiout, "at", stb);
5687
5688       do_cleanups (stb_chain);
5689     }
5690   else
5691     ui_out_field_string (uiout, "pending", b->addr_string);
5692
5693   if (loc && is_breakpoint (b)
5694       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5695       && bp_condition_evaluator (b) == condition_evaluation_both)
5696     {
5697       ui_out_text (uiout, " (");
5698       ui_out_field_string (uiout, "evaluated-by",
5699                            bp_location_condition_evaluator (loc));
5700       ui_out_text (uiout, ")");
5701     }
5702
5703   do_cleanups (old_chain);
5704 }
5705
5706 static const char *
5707 bptype_string (enum bptype type)
5708 {
5709   struct ep_type_description
5710     {
5711       enum bptype type;
5712       char *description;
5713     };
5714   static struct ep_type_description bptypes[] =
5715   {
5716     {bp_none, "?deleted?"},
5717     {bp_breakpoint, "breakpoint"},
5718     {bp_hardware_breakpoint, "hw breakpoint"},
5719     {bp_until, "until"},
5720     {bp_finish, "finish"},
5721     {bp_watchpoint, "watchpoint"},
5722     {bp_hardware_watchpoint, "hw watchpoint"},
5723     {bp_read_watchpoint, "read watchpoint"},
5724     {bp_access_watchpoint, "acc watchpoint"},
5725     {bp_longjmp, "longjmp"},
5726     {bp_longjmp_resume, "longjmp resume"},
5727     {bp_longjmp_call_dummy, "longjmp for call dummy"},
5728     {bp_exception, "exception"},
5729     {bp_exception_resume, "exception resume"},
5730     {bp_step_resume, "step resume"},
5731     {bp_hp_step_resume, "high-priority step resume"},
5732     {bp_watchpoint_scope, "watchpoint scope"},
5733     {bp_call_dummy, "call dummy"},
5734     {bp_std_terminate, "std::terminate"},
5735     {bp_shlib_event, "shlib events"},
5736     {bp_thread_event, "thread events"},
5737     {bp_overlay_event, "overlay events"},
5738     {bp_longjmp_master, "longjmp master"},
5739     {bp_std_terminate_master, "std::terminate master"},
5740     {bp_exception_master, "exception master"},
5741     {bp_catchpoint, "catchpoint"},
5742     {bp_tracepoint, "tracepoint"},
5743     {bp_fast_tracepoint, "fast tracepoint"},
5744     {bp_static_tracepoint, "static tracepoint"},
5745     {bp_dprintf, "dprintf"},
5746     {bp_jit_event, "jit events"},
5747     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5748     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5749   };
5750
5751   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5752       || ((int) type != bptypes[(int) type].type))
5753     internal_error (__FILE__, __LINE__,
5754                     _("bptypes table does not describe type #%d."),
5755                     (int) type);
5756
5757   return bptypes[(int) type].description;
5758 }
5759
5760 /* Print B to gdb_stdout.  */
5761
5762 static void
5763 print_one_breakpoint_location (struct breakpoint *b,
5764                                struct bp_location *loc,
5765                                int loc_number,
5766                                struct bp_location **last_loc,
5767                                int allflag)
5768 {
5769   struct command_line *l;
5770   static char bpenables[] = "nynny";
5771
5772   struct ui_out *uiout = current_uiout;
5773   int header_of_multiple = 0;
5774   int part_of_multiple = (loc != NULL);
5775   struct value_print_options opts;
5776
5777   get_user_print_options (&opts);
5778
5779   gdb_assert (!loc || loc_number != 0);
5780   /* See comment in print_one_breakpoint concerning treatment of
5781      breakpoints with single disabled location.  */
5782   if (loc == NULL 
5783       && (b->loc != NULL 
5784           && (b->loc->next != NULL || !b->loc->enabled)))
5785     header_of_multiple = 1;
5786   if (loc == NULL)
5787     loc = b->loc;
5788
5789   annotate_record ();
5790
5791   /* 1 */
5792   annotate_field (0);
5793   if (part_of_multiple)
5794     {
5795       char *formatted;
5796       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5797       ui_out_field_string (uiout, "number", formatted);
5798       xfree (formatted);
5799     }
5800   else
5801     {
5802       ui_out_field_int (uiout, "number", b->number);
5803     }
5804
5805   /* 2 */
5806   annotate_field (1);
5807   if (part_of_multiple)
5808     ui_out_field_skip (uiout, "type");
5809   else
5810     ui_out_field_string (uiout, "type", bptype_string (b->type));
5811
5812   /* 3 */
5813   annotate_field (2);
5814   if (part_of_multiple)
5815     ui_out_field_skip (uiout, "disp");
5816   else
5817     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5818
5819
5820   /* 4 */
5821   annotate_field (3);
5822   if (part_of_multiple)
5823     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5824   else
5825     ui_out_field_fmt (uiout, "enabled", "%c", 
5826                       bpenables[(int) b->enable_state]);
5827   ui_out_spaces (uiout, 2);
5828
5829   
5830   /* 5 and 6 */
5831   if (b->ops != NULL && b->ops->print_one != NULL)
5832     {
5833       /* Although the print_one can possibly print all locations,
5834          calling it here is not likely to get any nice result.  So,
5835          make sure there's just one location.  */
5836       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5837       b->ops->print_one (b, last_loc);
5838     }
5839   else
5840     switch (b->type)
5841       {
5842       case bp_none:
5843         internal_error (__FILE__, __LINE__,
5844                         _("print_one_breakpoint: bp_none encountered\n"));
5845         break;
5846
5847       case bp_watchpoint:
5848       case bp_hardware_watchpoint:
5849       case bp_read_watchpoint:
5850       case bp_access_watchpoint:
5851         {
5852           struct watchpoint *w = (struct watchpoint *) b;
5853
5854           /* Field 4, the address, is omitted (which makes the columns
5855              not line up too nicely with the headers, but the effect
5856              is relatively readable).  */
5857           if (opts.addressprint)
5858             ui_out_field_skip (uiout, "addr");
5859           annotate_field (5);
5860           ui_out_field_string (uiout, "what", w->exp_string);
5861         }
5862         break;
5863
5864       case bp_breakpoint:
5865       case bp_hardware_breakpoint:
5866       case bp_until:
5867       case bp_finish:
5868       case bp_longjmp:
5869       case bp_longjmp_resume:
5870       case bp_longjmp_call_dummy:
5871       case bp_exception:
5872       case bp_exception_resume:
5873       case bp_step_resume:
5874       case bp_hp_step_resume:
5875       case bp_watchpoint_scope:
5876       case bp_call_dummy:
5877       case bp_std_terminate:
5878       case bp_shlib_event:
5879       case bp_thread_event:
5880       case bp_overlay_event:
5881       case bp_longjmp_master:
5882       case bp_std_terminate_master:
5883       case bp_exception_master:
5884       case bp_tracepoint:
5885       case bp_fast_tracepoint:
5886       case bp_static_tracepoint:
5887       case bp_dprintf:
5888       case bp_jit_event:
5889       case bp_gnu_ifunc_resolver:
5890       case bp_gnu_ifunc_resolver_return:
5891         if (opts.addressprint)
5892           {
5893             annotate_field (4);
5894             if (header_of_multiple)
5895               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5896             else if (b->loc == NULL || loc->shlib_disabled)
5897               ui_out_field_string (uiout, "addr", "<PENDING>");
5898             else
5899               ui_out_field_core_addr (uiout, "addr",
5900                                       loc->gdbarch, loc->address);
5901           }
5902         annotate_field (5);
5903         if (!header_of_multiple)
5904           print_breakpoint_location (b, loc);
5905         if (b->loc)
5906           *last_loc = b->loc;
5907         break;
5908       }
5909
5910
5911   /* For backward compatibility, don't display inferiors unless there
5912      are several.  */
5913   if (loc != NULL
5914       && !header_of_multiple
5915       && (allflag
5916           || (!gdbarch_has_global_breakpoints (target_gdbarch)
5917               && (number_of_program_spaces () > 1
5918                   || number_of_inferiors () > 1)
5919               /* LOC is for existing B, it cannot be in
5920                  moribund_locations and thus having NULL OWNER.  */
5921               && loc->owner->type != bp_catchpoint)))
5922     {
5923       struct inferior *inf;
5924       int first = 1;
5925
5926       for (inf = inferior_list; inf != NULL; inf = inf->next)
5927         {
5928           if (inf->pspace == loc->pspace)
5929             {
5930               if (first)
5931                 {
5932                   first = 0;
5933                   ui_out_text (uiout, " inf ");
5934                 }
5935               else
5936                 ui_out_text (uiout, ", ");
5937               ui_out_text (uiout, plongest (inf->num));
5938             }
5939         }
5940     }
5941
5942   if (!part_of_multiple)
5943     {
5944       if (b->thread != -1)
5945         {
5946           /* FIXME: This seems to be redundant and lost here; see the
5947              "stop only in" line a little further down.  */
5948           ui_out_text (uiout, " thread ");
5949           ui_out_field_int (uiout, "thread", b->thread);
5950         }
5951       else if (b->task != 0)
5952         {
5953           ui_out_text (uiout, " task ");
5954           ui_out_field_int (uiout, "task", b->task);
5955         }
5956     }
5957
5958   ui_out_text (uiout, "\n");
5959
5960   if (!part_of_multiple)
5961     b->ops->print_one_detail (b, uiout);
5962
5963   if (part_of_multiple && frame_id_p (b->frame_id))
5964     {
5965       annotate_field (6);
5966       ui_out_text (uiout, "\tstop only in stack frame at ");
5967       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5968          the frame ID.  */
5969       ui_out_field_core_addr (uiout, "frame",
5970                               b->gdbarch, b->frame_id.stack_addr);
5971       ui_out_text (uiout, "\n");
5972     }
5973   
5974   if (!part_of_multiple && b->cond_string)
5975     {
5976       annotate_field (7);
5977       if (is_tracepoint (b))
5978         ui_out_text (uiout, "\ttrace only if ");
5979       else
5980         ui_out_text (uiout, "\tstop only if ");
5981       ui_out_field_string (uiout, "cond", b->cond_string);
5982
5983       /* Print whether the target is doing the breakpoint's condition
5984          evaluation.  If GDB is doing the evaluation, don't print anything.  */
5985       if (is_breakpoint (b)
5986           && breakpoint_condition_evaluation_mode ()
5987           == condition_evaluation_target)
5988         {
5989           ui_out_text (uiout, " (");
5990           ui_out_field_string (uiout, "evaluated-by",
5991                                bp_condition_evaluator (b));
5992           ui_out_text (uiout, " evals)");
5993         }
5994       ui_out_text (uiout, "\n");
5995     }
5996
5997   if (!part_of_multiple && b->thread != -1)
5998     {
5999       /* FIXME should make an annotation for this.  */
6000       ui_out_text (uiout, "\tstop only in thread ");
6001       ui_out_field_int (uiout, "thread", b->thread);
6002       ui_out_text (uiout, "\n");
6003     }
6004   
6005   if (!part_of_multiple && b->hit_count)
6006     {
6007       /* FIXME should make an annotation for this.  */
6008       if (is_catchpoint (b))
6009         ui_out_text (uiout, "\tcatchpoint");
6010       else if (is_tracepoint (b))
6011         ui_out_text (uiout, "\ttracepoint");
6012       else
6013         ui_out_text (uiout, "\tbreakpoint");
6014       ui_out_text (uiout, " already hit ");
6015       ui_out_field_int (uiout, "times", b->hit_count);
6016       if (b->hit_count == 1)
6017         ui_out_text (uiout, " time\n");
6018       else
6019         ui_out_text (uiout, " times\n");
6020     }
6021   
6022   /* Output the count also if it is zero, but only if this is mi.
6023      FIXME: Should have a better test for this.  */
6024   if (ui_out_is_mi_like_p (uiout))
6025     if (!part_of_multiple && b->hit_count == 0)
6026       ui_out_field_int (uiout, "times", b->hit_count);
6027
6028   if (!part_of_multiple && b->ignore_count)
6029     {
6030       annotate_field (8);
6031       ui_out_text (uiout, "\tignore next ");
6032       ui_out_field_int (uiout, "ignore", b->ignore_count);
6033       ui_out_text (uiout, " hits\n");
6034     }
6035
6036   /* Note that an enable count of 1 corresponds to "enable once"
6037      behavior, which is reported by the combination of enablement and
6038      disposition, so we don't need to mention it here.  */
6039   if (!part_of_multiple && b->enable_count > 1)
6040     {
6041       annotate_field (8);
6042       ui_out_text (uiout, "\tdisable after ");
6043       /* Tweak the wording to clarify that ignore and enable counts
6044          are distinct, and have additive effect.  */
6045       if (b->ignore_count)
6046         ui_out_text (uiout, "additional ");
6047       else
6048         ui_out_text (uiout, "next ");
6049       ui_out_field_int (uiout, "enable", b->enable_count);
6050       ui_out_text (uiout, " hits\n");
6051     }
6052
6053   if (!part_of_multiple && is_tracepoint (b))
6054     {
6055       struct tracepoint *tp = (struct tracepoint *) b;
6056
6057       if (tp->traceframe_usage)
6058         {
6059           ui_out_text (uiout, "\ttrace buffer usage ");
6060           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6061           ui_out_text (uiout, " bytes\n");
6062         }
6063     }
6064   
6065   if (!part_of_multiple && b->extra_string
6066       && b->type == bp_dprintf && !b->commands)
6067     {
6068       annotate_field (7);
6069       ui_out_text (uiout, "\t(agent printf) ");
6070       ui_out_field_string (uiout, "printf", b->extra_string);
6071       ui_out_text (uiout, "\n");
6072     }
6073
6074   l = b->commands ? b->commands->commands : NULL;
6075   if (!part_of_multiple && l)
6076     {
6077       struct cleanup *script_chain;
6078
6079       annotate_field (9);
6080       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6081       print_command_lines (uiout, l, 4);
6082       do_cleanups (script_chain);
6083     }
6084
6085   if (is_tracepoint (b))
6086     {
6087       struct tracepoint *t = (struct tracepoint *) b;
6088
6089       if (!part_of_multiple && t->pass_count)
6090         {
6091           annotate_field (10);
6092           ui_out_text (uiout, "\tpass count ");
6093           ui_out_field_int (uiout, "pass", t->pass_count);
6094           ui_out_text (uiout, " \n");
6095         }
6096     }
6097
6098   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6099     {
6100       if (is_watchpoint (b))
6101         {
6102           struct watchpoint *w = (struct watchpoint *) b;
6103
6104           ui_out_field_string (uiout, "original-location", w->exp_string);
6105         }
6106       else if (b->addr_string)
6107         ui_out_field_string (uiout, "original-location", b->addr_string);
6108     }
6109 }
6110
6111 static void
6112 print_one_breakpoint (struct breakpoint *b,
6113                       struct bp_location **last_loc, 
6114                       int allflag)
6115 {
6116   struct cleanup *bkpt_chain;
6117   struct ui_out *uiout = current_uiout;
6118
6119   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6120
6121   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6122   do_cleanups (bkpt_chain);
6123
6124   /* If this breakpoint has custom print function,
6125      it's already printed.  Otherwise, print individual
6126      locations, if any.  */
6127   if (b->ops == NULL || b->ops->print_one == NULL)
6128     {
6129       /* If breakpoint has a single location that is disabled, we
6130          print it as if it had several locations, since otherwise it's
6131          hard to represent "breakpoint enabled, location disabled"
6132          situation.
6133
6134          Note that while hardware watchpoints have several locations
6135          internally, that's not a property exposed to user.  */
6136       if (b->loc 
6137           && !is_hardware_watchpoint (b)
6138           && (b->loc->next || !b->loc->enabled))
6139         {
6140           struct bp_location *loc;
6141           int n = 1;
6142
6143           for (loc = b->loc; loc; loc = loc->next, ++n)
6144             {
6145               struct cleanup *inner2 =
6146                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6147               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6148               do_cleanups (inner2);
6149             }
6150         }
6151     }
6152 }
6153
6154 static int
6155 breakpoint_address_bits (struct breakpoint *b)
6156 {
6157   int print_address_bits = 0;
6158   struct bp_location *loc;
6159
6160   for (loc = b->loc; loc; loc = loc->next)
6161     {
6162       int addr_bit;
6163
6164       /* Software watchpoints that aren't watching memory don't have
6165          an address to print.  */
6166       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6167         continue;
6168
6169       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6170       if (addr_bit > print_address_bits)
6171         print_address_bits = addr_bit;
6172     }
6173
6174   return print_address_bits;
6175 }
6176
6177 struct captured_breakpoint_query_args
6178   {
6179     int bnum;
6180   };
6181
6182 static int
6183 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6184 {
6185   struct captured_breakpoint_query_args *args = data;
6186   struct breakpoint *b;
6187   struct bp_location *dummy_loc = NULL;
6188
6189   ALL_BREAKPOINTS (b)
6190     {
6191       if (args->bnum == b->number)
6192         {
6193           print_one_breakpoint (b, &dummy_loc, 0);
6194           return GDB_RC_OK;
6195         }
6196     }
6197   return GDB_RC_NONE;
6198 }
6199
6200 enum gdb_rc
6201 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6202                       char **error_message)
6203 {
6204   struct captured_breakpoint_query_args args;
6205
6206   args.bnum = bnum;
6207   /* For the moment we don't trust print_one_breakpoint() to not throw
6208      an error.  */
6209   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6210                                  error_message, RETURN_MASK_ALL) < 0)
6211     return GDB_RC_FAIL;
6212   else
6213     return GDB_RC_OK;
6214 }
6215
6216 /* Return true if this breakpoint was set by the user, false if it is
6217    internal or momentary.  */
6218
6219 int
6220 user_breakpoint_p (struct breakpoint *b)
6221 {
6222   return b->number > 0;
6223 }
6224
6225 /* Print information on user settable breakpoint (watchpoint, etc)
6226    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6227    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6228    FILTER is non-NULL, call it on each breakpoint and only include the
6229    ones for which it returns non-zero.  Return the total number of
6230    breakpoints listed.  */
6231
6232 static int
6233 breakpoint_1 (char *args, int allflag, 
6234               int (*filter) (const struct breakpoint *))
6235 {
6236   struct breakpoint *b;
6237   struct bp_location *last_loc = NULL;
6238   int nr_printable_breakpoints;
6239   struct cleanup *bkpttbl_chain;
6240   struct value_print_options opts;
6241   int print_address_bits = 0;
6242   int print_type_col_width = 14;
6243   struct ui_out *uiout = current_uiout;
6244
6245   get_user_print_options (&opts);
6246
6247   /* Compute the number of rows in the table, as well as the size
6248      required for address fields.  */
6249   nr_printable_breakpoints = 0;
6250   ALL_BREAKPOINTS (b)
6251     {
6252       /* If we have a filter, only list the breakpoints it accepts.  */
6253       if (filter && !filter (b))
6254         continue;
6255
6256       /* If we have an "args" string, it is a list of breakpoints to 
6257          accept.  Skip the others.  */
6258       if (args != NULL && *args != '\0')
6259         {
6260           if (allflag && parse_and_eval_long (args) != b->number)
6261             continue;
6262           if (!allflag && !number_is_in_list (args, b->number))
6263             continue;
6264         }
6265
6266       if (allflag || user_breakpoint_p (b))
6267         {
6268           int addr_bit, type_len;
6269
6270           addr_bit = breakpoint_address_bits (b);
6271           if (addr_bit > print_address_bits)
6272             print_address_bits = addr_bit;
6273
6274           type_len = strlen (bptype_string (b->type));
6275           if (type_len > print_type_col_width)
6276             print_type_col_width = type_len;
6277
6278           nr_printable_breakpoints++;
6279         }
6280     }
6281
6282   if (opts.addressprint)
6283     bkpttbl_chain 
6284       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6285                                              nr_printable_breakpoints,
6286                                              "BreakpointTable");
6287   else
6288     bkpttbl_chain 
6289       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6290                                              nr_printable_breakpoints,
6291                                              "BreakpointTable");
6292
6293   if (nr_printable_breakpoints > 0)
6294     annotate_breakpoints_headers ();
6295   if (nr_printable_breakpoints > 0)
6296     annotate_field (0);
6297   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6298   if (nr_printable_breakpoints > 0)
6299     annotate_field (1);
6300   ui_out_table_header (uiout, print_type_col_width, ui_left,
6301                        "type", "Type");                         /* 2 */
6302   if (nr_printable_breakpoints > 0)
6303     annotate_field (2);
6304   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6305   if (nr_printable_breakpoints > 0)
6306     annotate_field (3);
6307   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6308   if (opts.addressprint)
6309     {
6310       if (nr_printable_breakpoints > 0)
6311         annotate_field (4);
6312       if (print_address_bits <= 32)
6313         ui_out_table_header (uiout, 10, ui_left, 
6314                              "addr", "Address");                /* 5 */
6315       else
6316         ui_out_table_header (uiout, 18, ui_left, 
6317                              "addr", "Address");                /* 5 */
6318     }
6319   if (nr_printable_breakpoints > 0)
6320     annotate_field (5);
6321   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6322   ui_out_table_body (uiout);
6323   if (nr_printable_breakpoints > 0)
6324     annotate_breakpoints_table ();
6325
6326   ALL_BREAKPOINTS (b)
6327     {
6328       QUIT;
6329       /* If we have a filter, only list the breakpoints it accepts.  */
6330       if (filter && !filter (b))
6331         continue;
6332
6333       /* If we have an "args" string, it is a list of breakpoints to 
6334          accept.  Skip the others.  */
6335
6336       if (args != NULL && *args != '\0')
6337         {
6338           if (allflag)  /* maintenance info breakpoint */
6339             {
6340               if (parse_and_eval_long (args) != b->number)
6341                 continue;
6342             }
6343           else          /* all others */
6344             {
6345               if (!number_is_in_list (args, b->number))
6346                 continue;
6347             }
6348         }
6349       /* We only print out user settable breakpoints unless the
6350          allflag is set.  */
6351       if (allflag || user_breakpoint_p (b))
6352         print_one_breakpoint (b, &last_loc, allflag);
6353     }
6354
6355   do_cleanups (bkpttbl_chain);
6356
6357   if (nr_printable_breakpoints == 0)
6358     {
6359       /* If there's a filter, let the caller decide how to report
6360          empty list.  */
6361       if (!filter)
6362         {
6363           if (args == NULL || *args == '\0')
6364             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6365           else
6366             ui_out_message (uiout, 0, 
6367                             "No breakpoint or watchpoint matching '%s'.\n",
6368                             args);
6369         }
6370     }
6371   else
6372     {
6373       if (last_loc && !server_command)
6374         set_next_address (last_loc->gdbarch, last_loc->address);
6375     }
6376
6377   /* FIXME?  Should this be moved up so that it is only called when
6378      there have been breakpoints? */
6379   annotate_breakpoints_table_end ();
6380
6381   return nr_printable_breakpoints;
6382 }
6383
6384 /* Display the value of default-collect in a way that is generally
6385    compatible with the breakpoint list.  */
6386
6387 static void
6388 default_collect_info (void)
6389 {
6390   struct ui_out *uiout = current_uiout;
6391
6392   /* If it has no value (which is frequently the case), say nothing; a
6393      message like "No default-collect." gets in user's face when it's
6394      not wanted.  */
6395   if (!*default_collect)
6396     return;
6397
6398   /* The following phrase lines up nicely with per-tracepoint collect
6399      actions.  */
6400   ui_out_text (uiout, "default collect ");
6401   ui_out_field_string (uiout, "default-collect", default_collect);
6402   ui_out_text (uiout, " \n");
6403 }
6404   
6405 static void
6406 breakpoints_info (char *args, int from_tty)
6407 {
6408   breakpoint_1 (args, 0, NULL);
6409
6410   default_collect_info ();
6411 }
6412
6413 static void
6414 watchpoints_info (char *args, int from_tty)
6415 {
6416   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6417   struct ui_out *uiout = current_uiout;
6418
6419   if (num_printed == 0)
6420     {
6421       if (args == NULL || *args == '\0')
6422         ui_out_message (uiout, 0, "No watchpoints.\n");
6423       else
6424         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6425     }
6426 }
6427
6428 static void
6429 maintenance_info_breakpoints (char *args, int from_tty)
6430 {
6431   breakpoint_1 (args, 1, NULL);
6432
6433   default_collect_info ();
6434 }
6435
6436 static int
6437 breakpoint_has_pc (struct breakpoint *b,
6438                    struct program_space *pspace,
6439                    CORE_ADDR pc, struct obj_section *section)
6440 {
6441   struct bp_location *bl = b->loc;
6442
6443   for (; bl; bl = bl->next)
6444     {
6445       if (bl->pspace == pspace
6446           && bl->address == pc
6447           && (!overlay_debugging || bl->section == section))
6448         return 1;         
6449     }
6450   return 0;
6451 }
6452
6453 /* Print a message describing any user-breakpoints set at PC.  This
6454    concerns with logical breakpoints, so we match program spaces, not
6455    address spaces.  */
6456
6457 static void
6458 describe_other_breakpoints (struct gdbarch *gdbarch,
6459                             struct program_space *pspace, CORE_ADDR pc,
6460                             struct obj_section *section, int thread)
6461 {
6462   int others = 0;
6463   struct breakpoint *b;
6464
6465   ALL_BREAKPOINTS (b)
6466     others += (user_breakpoint_p (b)
6467                && breakpoint_has_pc (b, pspace, pc, section));
6468   if (others > 0)
6469     {
6470       if (others == 1)
6471         printf_filtered (_("Note: breakpoint "));
6472       else /* if (others == ???) */
6473         printf_filtered (_("Note: breakpoints "));
6474       ALL_BREAKPOINTS (b)
6475         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6476           {
6477             others--;
6478             printf_filtered ("%d", b->number);
6479             if (b->thread == -1 && thread != -1)
6480               printf_filtered (" (all threads)");
6481             else if (b->thread != -1)
6482               printf_filtered (" (thread %d)", b->thread);
6483             printf_filtered ("%s%s ",
6484                              ((b->enable_state == bp_disabled
6485                                || b->enable_state == bp_call_disabled)
6486                               ? " (disabled)"
6487                               : b->enable_state == bp_permanent 
6488                               ? " (permanent)"
6489                               : ""),
6490                              (others > 1) ? "," 
6491                              : ((others == 1) ? " and" : ""));
6492           }
6493       printf_filtered (_("also set at pc "));
6494       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6495       printf_filtered (".\n");
6496     }
6497 }
6498 \f
6499
6500 /* Return true iff it is meaningful to use the address member of
6501    BPT.  For some breakpoint types, the address member is irrelevant
6502    and it makes no sense to attempt to compare it to other addresses
6503    (or use it for any other purpose either).
6504
6505    More specifically, each of the following breakpoint types will
6506    always have a zero valued address and we don't want to mark
6507    breakpoints of any of these types to be a duplicate of an actual
6508    breakpoint at address zero:
6509
6510       bp_watchpoint
6511       bp_catchpoint
6512
6513 */
6514
6515 static int
6516 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6517 {
6518   enum bptype type = bpt->type;
6519
6520   return (type != bp_watchpoint && type != bp_catchpoint);
6521 }
6522
6523 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6524    true if LOC1 and LOC2 represent the same watchpoint location.  */
6525
6526 static int
6527 watchpoint_locations_match (struct bp_location *loc1, 
6528                             struct bp_location *loc2)
6529 {
6530   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6531   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6532
6533   /* Both of them must exist.  */
6534   gdb_assert (w1 != NULL);
6535   gdb_assert (w2 != NULL);
6536
6537   /* If the target can evaluate the condition expression in hardware,
6538      then we we need to insert both watchpoints even if they are at
6539      the same place.  Otherwise the watchpoint will only trigger when
6540      the condition of whichever watchpoint was inserted evaluates to
6541      true, not giving a chance for GDB to check the condition of the
6542      other watchpoint.  */
6543   if ((w1->cond_exp
6544        && target_can_accel_watchpoint_condition (loc1->address, 
6545                                                  loc1->length,
6546                                                  loc1->watchpoint_type,
6547                                                  w1->cond_exp))
6548       || (w2->cond_exp
6549           && target_can_accel_watchpoint_condition (loc2->address, 
6550                                                     loc2->length,
6551                                                     loc2->watchpoint_type,
6552                                                     w2->cond_exp)))
6553     return 0;
6554
6555   /* Note that this checks the owner's type, not the location's.  In
6556      case the target does not support read watchpoints, but does
6557      support access watchpoints, we'll have bp_read_watchpoint
6558      watchpoints with hw_access locations.  Those should be considered
6559      duplicates of hw_read locations.  The hw_read locations will
6560      become hw_access locations later.  */
6561   return (loc1->owner->type == loc2->owner->type
6562           && loc1->pspace->aspace == loc2->pspace->aspace
6563           && loc1->address == loc2->address
6564           && loc1->length == loc2->length);
6565 }
6566
6567 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6568    same breakpoint location.  In most targets, this can only be true
6569    if ASPACE1 matches ASPACE2.  On targets that have global
6570    breakpoints, the address space doesn't really matter.  */
6571
6572 static int
6573 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6574                           struct address_space *aspace2, CORE_ADDR addr2)
6575 {
6576   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6577            || aspace1 == aspace2)
6578           && addr1 == addr2);
6579 }
6580
6581 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6582    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6583    matches ASPACE2.  On targets that have global breakpoints, the address
6584    space doesn't really matter.  */
6585
6586 static int
6587 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6588                                 int len1, struct address_space *aspace2,
6589                                 CORE_ADDR addr2)
6590 {
6591   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6592            || aspace1 == aspace2)
6593           && addr2 >= addr1 && addr2 < addr1 + len1);
6594 }
6595
6596 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6597    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6598    matches the breakpoint's address space.  On targets that have global
6599    breakpoints, the address space doesn't really matter.  */
6600
6601 static int
6602 breakpoint_location_address_match (struct bp_location *bl,
6603                                    struct address_space *aspace,
6604                                    CORE_ADDR addr)
6605 {
6606   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6607                                     aspace, addr)
6608           || (bl->length
6609               && breakpoint_address_match_range (bl->pspace->aspace,
6610                                                  bl->address, bl->length,
6611                                                  aspace, addr)));
6612 }
6613
6614 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6615    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6616    true, otherwise returns false.  */
6617
6618 static int
6619 tracepoint_locations_match (struct bp_location *loc1,
6620                             struct bp_location *loc2)
6621 {
6622   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6623     /* Since tracepoint locations are never duplicated with others', tracepoint
6624        locations at the same address of different tracepoints are regarded as
6625        different locations.  */
6626     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6627   else
6628     return 0;
6629 }
6630
6631 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6632    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6633    represent the same location.  */
6634
6635 static int
6636 breakpoint_locations_match (struct bp_location *loc1, 
6637                             struct bp_location *loc2)
6638 {
6639   int hw_point1, hw_point2;
6640
6641   /* Both of them must not be in moribund_locations.  */
6642   gdb_assert (loc1->owner != NULL);
6643   gdb_assert (loc2->owner != NULL);
6644
6645   hw_point1 = is_hardware_watchpoint (loc1->owner);
6646   hw_point2 = is_hardware_watchpoint (loc2->owner);
6647
6648   if (hw_point1 != hw_point2)
6649     return 0;
6650   else if (hw_point1)
6651     return watchpoint_locations_match (loc1, loc2);
6652   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6653     return tracepoint_locations_match (loc1, loc2);
6654   else
6655     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6656     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6657                                      loc2->pspace->aspace, loc2->address)
6658             && loc1->length == loc2->length);
6659 }
6660
6661 static void
6662 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6663                                int bnum, int have_bnum)
6664 {
6665   /* The longest string possibly returned by hex_string_custom
6666      is 50 chars.  These must be at least that big for safety.  */
6667   char astr1[64];
6668   char astr2[64];
6669
6670   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6671   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6672   if (have_bnum)
6673     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6674              bnum, astr1, astr2);
6675   else
6676     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6677 }
6678
6679 /* Adjust a breakpoint's address to account for architectural
6680    constraints on breakpoint placement.  Return the adjusted address.
6681    Note: Very few targets require this kind of adjustment.  For most
6682    targets, this function is simply the identity function.  */
6683
6684 static CORE_ADDR
6685 adjust_breakpoint_address (struct gdbarch *gdbarch,
6686                            CORE_ADDR bpaddr, enum bptype bptype)
6687 {
6688   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6689     {
6690       /* Very few targets need any kind of breakpoint adjustment.  */
6691       return bpaddr;
6692     }
6693   else if (bptype == bp_watchpoint
6694            || bptype == bp_hardware_watchpoint
6695            || bptype == bp_read_watchpoint
6696            || bptype == bp_access_watchpoint
6697            || bptype == bp_catchpoint)
6698     {
6699       /* Watchpoints and the various bp_catch_* eventpoints should not
6700          have their addresses modified.  */
6701       return bpaddr;
6702     }
6703   else
6704     {
6705       CORE_ADDR adjusted_bpaddr;
6706
6707       /* Some targets have architectural constraints on the placement
6708          of breakpoint instructions.  Obtain the adjusted address.  */
6709       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6710
6711       /* An adjusted breakpoint address can significantly alter
6712          a user's expectations.  Print a warning if an adjustment
6713          is required.  */
6714       if (adjusted_bpaddr != bpaddr)
6715         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6716
6717       return adjusted_bpaddr;
6718     }
6719 }
6720
6721 void
6722 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6723                   struct breakpoint *owner)
6724 {
6725   memset (loc, 0, sizeof (*loc));
6726
6727   gdb_assert (ops != NULL);
6728
6729   loc->ops = ops;
6730   loc->owner = owner;
6731   loc->cond = NULL;
6732   loc->cond_bytecode = NULL;
6733   loc->shlib_disabled = 0;
6734   loc->enabled = 1;
6735
6736   switch (owner->type)
6737     {
6738     case bp_breakpoint:
6739     case bp_until:
6740     case bp_finish:
6741     case bp_longjmp:
6742     case bp_longjmp_resume:
6743     case bp_longjmp_call_dummy:
6744     case bp_exception:
6745     case bp_exception_resume:
6746     case bp_step_resume:
6747     case bp_hp_step_resume:
6748     case bp_watchpoint_scope:
6749     case bp_call_dummy:
6750     case bp_std_terminate:
6751     case bp_shlib_event:
6752     case bp_thread_event:
6753     case bp_overlay_event:
6754     case bp_jit_event:
6755     case bp_longjmp_master:
6756     case bp_std_terminate_master:
6757     case bp_exception_master:
6758     case bp_gnu_ifunc_resolver:
6759     case bp_gnu_ifunc_resolver_return:
6760     case bp_dprintf:
6761       loc->loc_type = bp_loc_software_breakpoint;
6762       mark_breakpoint_location_modified (loc);
6763       break;
6764     case bp_hardware_breakpoint:
6765       loc->loc_type = bp_loc_hardware_breakpoint;
6766       mark_breakpoint_location_modified (loc);
6767       break;
6768     case bp_hardware_watchpoint:
6769     case bp_read_watchpoint:
6770     case bp_access_watchpoint:
6771       loc->loc_type = bp_loc_hardware_watchpoint;
6772       break;
6773     case bp_watchpoint:
6774     case bp_catchpoint:
6775     case bp_tracepoint:
6776     case bp_fast_tracepoint:
6777     case bp_static_tracepoint:
6778       loc->loc_type = bp_loc_other;
6779       break;
6780     default:
6781       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6782     }
6783
6784   loc->refc = 1;
6785 }
6786
6787 /* Allocate a struct bp_location.  */
6788
6789 static struct bp_location *
6790 allocate_bp_location (struct breakpoint *bpt)
6791 {
6792   return bpt->ops->allocate_location (bpt);
6793 }
6794
6795 static void
6796 free_bp_location (struct bp_location *loc)
6797 {
6798   loc->ops->dtor (loc);
6799   xfree (loc);
6800 }
6801
6802 /* Increment reference count.  */
6803
6804 static void
6805 incref_bp_location (struct bp_location *bl)
6806 {
6807   ++bl->refc;
6808 }
6809
6810 /* Decrement reference count.  If the reference count reaches 0,
6811    destroy the bp_location.  Sets *BLP to NULL.  */
6812
6813 static void
6814 decref_bp_location (struct bp_location **blp)
6815 {
6816   gdb_assert ((*blp)->refc > 0);
6817
6818   if (--(*blp)->refc == 0)
6819     free_bp_location (*blp);
6820   *blp = NULL;
6821 }
6822
6823 /* Add breakpoint B at the end of the global breakpoint chain.  */
6824
6825 static void
6826 add_to_breakpoint_chain (struct breakpoint *b)
6827 {
6828   struct breakpoint *b1;
6829
6830   /* Add this breakpoint to the end of the chain so that a list of
6831      breakpoints will come out in order of increasing numbers.  */
6832
6833   b1 = breakpoint_chain;
6834   if (b1 == 0)
6835     breakpoint_chain = b;
6836   else
6837     {
6838       while (b1->next)
6839         b1 = b1->next;
6840       b1->next = b;
6841     }
6842 }
6843
6844 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6845
6846 static void
6847 init_raw_breakpoint_without_location (struct breakpoint *b,
6848                                       struct gdbarch *gdbarch,
6849                                       enum bptype bptype,
6850                                       const struct breakpoint_ops *ops)
6851 {
6852   memset (b, 0, sizeof (*b));
6853
6854   gdb_assert (ops != NULL);
6855
6856   b->ops = ops;
6857   b->type = bptype;
6858   b->gdbarch = gdbarch;
6859   b->language = current_language->la_language;
6860   b->input_radix = input_radix;
6861   b->thread = -1;
6862   b->enable_state = bp_enabled;
6863   b->next = 0;
6864   b->silent = 0;
6865   b->ignore_count = 0;
6866   b->commands = NULL;
6867   b->frame_id = null_frame_id;
6868   b->condition_not_parsed = 0;
6869   b->py_bp_object = NULL;
6870   b->related_breakpoint = b;
6871 }
6872
6873 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6874    that has type BPTYPE and has no locations as yet.  */
6875
6876 static struct breakpoint *
6877 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6878                                      enum bptype bptype,
6879                                      const struct breakpoint_ops *ops)
6880 {
6881   struct breakpoint *b = XNEW (struct breakpoint);
6882
6883   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6884   add_to_breakpoint_chain (b);
6885   return b;
6886 }
6887
6888 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6889    resolutions should be made as the user specified the location explicitly
6890    enough.  */
6891
6892 static void
6893 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6894 {
6895   gdb_assert (loc->owner != NULL);
6896
6897   if (loc->owner->type == bp_breakpoint
6898       || loc->owner->type == bp_hardware_breakpoint
6899       || is_tracepoint (loc->owner))
6900     {
6901       int is_gnu_ifunc;
6902       const char *function_name;
6903       CORE_ADDR func_addr;
6904
6905       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6906                                           &func_addr, NULL, &is_gnu_ifunc);
6907
6908       if (is_gnu_ifunc && !explicit_loc)
6909         {
6910           struct breakpoint *b = loc->owner;
6911
6912           gdb_assert (loc->pspace == current_program_space);
6913           if (gnu_ifunc_resolve_name (function_name,
6914                                       &loc->requested_address))
6915             {
6916               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6917               loc->address = adjust_breakpoint_address (loc->gdbarch,
6918                                                         loc->requested_address,
6919                                                         b->type);
6920             }
6921           else if (b->type == bp_breakpoint && b->loc == loc
6922                    && loc->next == NULL && b->related_breakpoint == b)
6923             {
6924               /* Create only the whole new breakpoint of this type but do not
6925                  mess more complicated breakpoints with multiple locations.  */
6926               b->type = bp_gnu_ifunc_resolver;
6927               /* Remember the resolver's address for use by the return
6928                  breakpoint.  */
6929               loc->related_address = func_addr;
6930             }
6931         }
6932
6933       if (function_name)
6934         loc->function_name = xstrdup (function_name);
6935     }
6936 }
6937
6938 /* Attempt to determine architecture of location identified by SAL.  */
6939 struct gdbarch *
6940 get_sal_arch (struct symtab_and_line sal)
6941 {
6942   if (sal.section)
6943     return get_objfile_arch (sal.section->objfile);
6944   if (sal.symtab)
6945     return get_objfile_arch (sal.symtab->objfile);
6946
6947   return NULL;
6948 }
6949
6950 /* Low level routine for partially initializing a breakpoint of type
6951    BPTYPE.  The newly created breakpoint's address, section, source
6952    file name, and line number are provided by SAL.
6953
6954    It is expected that the caller will complete the initialization of
6955    the newly created breakpoint struct as well as output any status
6956    information regarding the creation of a new breakpoint.  */
6957
6958 static void
6959 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6960                      struct symtab_and_line sal, enum bptype bptype,
6961                      const struct breakpoint_ops *ops)
6962 {
6963   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6964
6965   add_location_to_breakpoint (b, &sal);
6966
6967   if (bptype != bp_catchpoint)
6968     gdb_assert (sal.pspace != NULL);
6969
6970   /* Store the program space that was used to set the breakpoint,
6971      except for ordinary breakpoints, which are independent of the
6972      program space.  */
6973   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6974     b->pspace = sal.pspace;
6975
6976   breakpoints_changed ();
6977 }
6978
6979 /* set_raw_breakpoint is a low level routine for allocating and
6980    partially initializing a breakpoint of type BPTYPE.  The newly
6981    created breakpoint's address, section, source file name, and line
6982    number are provided by SAL.  The newly created and partially
6983    initialized breakpoint is added to the breakpoint chain and
6984    is also returned as the value of this function.
6985
6986    It is expected that the caller will complete the initialization of
6987    the newly created breakpoint struct as well as output any status
6988    information regarding the creation of a new breakpoint.  In
6989    particular, set_raw_breakpoint does NOT set the breakpoint
6990    number!  Care should be taken to not allow an error to occur
6991    prior to completing the initialization of the breakpoint.  If this
6992    should happen, a bogus breakpoint will be left on the chain.  */
6993
6994 struct breakpoint *
6995 set_raw_breakpoint (struct gdbarch *gdbarch,
6996                     struct symtab_and_line sal, enum bptype bptype,
6997                     const struct breakpoint_ops *ops)
6998 {
6999   struct breakpoint *b = XNEW (struct breakpoint);
7000
7001   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7002   add_to_breakpoint_chain (b);
7003   return b;
7004 }
7005
7006
7007 /* Note that the breakpoint object B describes a permanent breakpoint
7008    instruction, hard-wired into the inferior's code.  */
7009 void
7010 make_breakpoint_permanent (struct breakpoint *b)
7011 {
7012   struct bp_location *bl;
7013
7014   b->enable_state = bp_permanent;
7015
7016   /* By definition, permanent breakpoints are already present in the
7017      code.  Mark all locations as inserted.  For now,
7018      make_breakpoint_permanent is called in just one place, so it's
7019      hard to say if it's reasonable to have permanent breakpoint with
7020      multiple locations or not, but it's easy to implement.  */
7021   for (bl = b->loc; bl; bl = bl->next)
7022     bl->inserted = 1;
7023 }
7024
7025 /* Call this routine when stepping and nexting to enable a breakpoint
7026    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7027    initiated the operation.  */
7028
7029 void
7030 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7031 {
7032   struct breakpoint *b, *b_tmp;
7033   int thread = tp->num;
7034
7035   /* To avoid having to rescan all objfile symbols at every step,
7036      we maintain a list of continually-inserted but always disabled
7037      longjmp "master" breakpoints.  Here, we simply create momentary
7038      clones of those and enable them for the requested thread.  */
7039   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7040     if (b->pspace == current_program_space
7041         && (b->type == bp_longjmp_master
7042             || b->type == bp_exception_master))
7043       {
7044         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7045         struct breakpoint *clone;
7046
7047         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7048            after their removal.  */
7049         clone = momentary_breakpoint_from_master (b, type,
7050                                                   &longjmp_breakpoint_ops);
7051         clone->thread = thread;
7052       }
7053
7054   tp->initiating_frame = frame;
7055 }
7056
7057 /* Delete all longjmp breakpoints from THREAD.  */
7058 void
7059 delete_longjmp_breakpoint (int thread)
7060 {
7061   struct breakpoint *b, *b_tmp;
7062
7063   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7064     if (b->type == bp_longjmp || b->type == bp_exception)
7065       {
7066         if (b->thread == thread)
7067           delete_breakpoint (b);
7068       }
7069 }
7070
7071 void
7072 delete_longjmp_breakpoint_at_next_stop (int thread)
7073 {
7074   struct breakpoint *b, *b_tmp;
7075
7076   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7077     if (b->type == bp_longjmp || b->type == bp_exception)
7078       {
7079         if (b->thread == thread)
7080           b->disposition = disp_del_at_next_stop;
7081       }
7082 }
7083
7084 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7085    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7086    pointer to any of them.  Return NULL if this system cannot place longjmp
7087    breakpoints.  */
7088
7089 struct breakpoint *
7090 set_longjmp_breakpoint_for_call_dummy (void)
7091 {
7092   struct breakpoint *b, *retval = NULL;
7093
7094   ALL_BREAKPOINTS (b)
7095     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7096       {
7097         struct breakpoint *new_b;
7098
7099         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7100                                                   &momentary_breakpoint_ops);
7101         new_b->thread = pid_to_thread_id (inferior_ptid);
7102
7103         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7104
7105         gdb_assert (new_b->related_breakpoint == new_b);
7106         if (retval == NULL)
7107           retval = new_b;
7108         new_b->related_breakpoint = retval;
7109         while (retval->related_breakpoint != new_b->related_breakpoint)
7110           retval = retval->related_breakpoint;
7111         retval->related_breakpoint = new_b;
7112       }
7113
7114   return retval;
7115 }
7116
7117 /* Verify all existing dummy frames and their associated breakpoints for
7118    THREAD.  Remove those which can no longer be found in the current frame
7119    stack.
7120
7121    You should call this function only at places where it is safe to currently
7122    unwind the whole stack.  Failed stack unwind would discard live dummy
7123    frames.  */
7124
7125 void
7126 check_longjmp_breakpoint_for_call_dummy (int thread)
7127 {
7128   struct breakpoint *b, *b_tmp;
7129
7130   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7131     if (b->type == bp_longjmp_call_dummy && b->thread == thread)
7132       {
7133         struct breakpoint *dummy_b = b->related_breakpoint;
7134
7135         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7136           dummy_b = dummy_b->related_breakpoint;
7137         if (dummy_b->type != bp_call_dummy
7138             || frame_find_by_id (dummy_b->frame_id) != NULL)
7139           continue;
7140         
7141         dummy_frame_discard (dummy_b->frame_id);
7142
7143         while (b->related_breakpoint != b)
7144           {
7145             if (b_tmp == b->related_breakpoint)
7146               b_tmp = b->related_breakpoint->next;
7147             delete_breakpoint (b->related_breakpoint);
7148           }
7149         delete_breakpoint (b);
7150       }
7151 }
7152
7153 void
7154 enable_overlay_breakpoints (void)
7155 {
7156   struct breakpoint *b;
7157
7158   ALL_BREAKPOINTS (b)
7159     if (b->type == bp_overlay_event)
7160     {
7161       b->enable_state = bp_enabled;
7162       update_global_location_list (1);
7163       overlay_events_enabled = 1;
7164     }
7165 }
7166
7167 void
7168 disable_overlay_breakpoints (void)
7169 {
7170   struct breakpoint *b;
7171
7172   ALL_BREAKPOINTS (b)
7173     if (b->type == bp_overlay_event)
7174     {
7175       b->enable_state = bp_disabled;
7176       update_global_location_list (0);
7177       overlay_events_enabled = 0;
7178     }
7179 }
7180
7181 /* Set an active std::terminate breakpoint for each std::terminate
7182    master breakpoint.  */
7183 void
7184 set_std_terminate_breakpoint (void)
7185 {
7186   struct breakpoint *b, *b_tmp;
7187
7188   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7189     if (b->pspace == current_program_space
7190         && b->type == bp_std_terminate_master)
7191       {
7192         momentary_breakpoint_from_master (b, bp_std_terminate,
7193                                           &momentary_breakpoint_ops);
7194       }
7195 }
7196
7197 /* Delete all the std::terminate breakpoints.  */
7198 void
7199 delete_std_terminate_breakpoint (void)
7200 {
7201   struct breakpoint *b, *b_tmp;
7202
7203   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7204     if (b->type == bp_std_terminate)
7205       delete_breakpoint (b);
7206 }
7207
7208 struct breakpoint *
7209 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7210 {
7211   struct breakpoint *b;
7212
7213   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7214                                   &internal_breakpoint_ops);
7215
7216   b->enable_state = bp_enabled;
7217   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7218   b->addr_string
7219     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7220
7221   update_global_location_list_nothrow (1);
7222
7223   return b;
7224 }
7225
7226 void
7227 remove_thread_event_breakpoints (void)
7228 {
7229   struct breakpoint *b, *b_tmp;
7230
7231   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7232     if (b->type == bp_thread_event
7233         && b->loc->pspace == current_program_space)
7234       delete_breakpoint (b);
7235 }
7236
7237 struct lang_and_radix
7238   {
7239     enum language lang;
7240     int radix;
7241   };
7242
7243 /* Create a breakpoint for JIT code registration and unregistration.  */
7244
7245 struct breakpoint *
7246 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7247 {
7248   struct breakpoint *b;
7249
7250   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7251                                   &internal_breakpoint_ops);
7252   update_global_location_list_nothrow (1);
7253   return b;
7254 }
7255
7256 /* Remove JIT code registration and unregistration breakpoint(s).  */
7257
7258 void
7259 remove_jit_event_breakpoints (void)
7260 {
7261   struct breakpoint *b, *b_tmp;
7262
7263   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7264     if (b->type == bp_jit_event
7265         && b->loc->pspace == current_program_space)
7266       delete_breakpoint (b);
7267 }
7268
7269 void
7270 remove_solib_event_breakpoints (void)
7271 {
7272   struct breakpoint *b, *b_tmp;
7273
7274   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7275     if (b->type == bp_shlib_event
7276         && b->loc->pspace == current_program_space)
7277       delete_breakpoint (b);
7278 }
7279
7280 struct breakpoint *
7281 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7282 {
7283   struct breakpoint *b;
7284
7285   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7286                                   &internal_breakpoint_ops);
7287   update_global_location_list_nothrow (1);
7288   return b;
7289 }
7290
7291 /* Disable any breakpoints that are on code in shared libraries.  Only
7292    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7293
7294 void
7295 disable_breakpoints_in_shlibs (void)
7296 {
7297   struct bp_location *loc, **locp_tmp;
7298
7299   ALL_BP_LOCATIONS (loc, locp_tmp)
7300   {
7301     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7302     struct breakpoint *b = loc->owner;
7303
7304     /* We apply the check to all breakpoints, including disabled for
7305        those with loc->duplicate set.  This is so that when breakpoint
7306        becomes enabled, or the duplicate is removed, gdb will try to
7307        insert all breakpoints.  If we don't set shlib_disabled here,
7308        we'll try to insert those breakpoints and fail.  */
7309     if (((b->type == bp_breakpoint)
7310          || (b->type == bp_jit_event)
7311          || (b->type == bp_hardware_breakpoint)
7312          || (is_tracepoint (b)))
7313         && loc->pspace == current_program_space
7314         && !loc->shlib_disabled
7315 #ifdef PC_SOLIB
7316         && PC_SOLIB (loc->address)
7317 #else
7318         && solib_name_from_address (loc->pspace, loc->address)
7319 #endif
7320         )
7321       {
7322         loc->shlib_disabled = 1;
7323       }
7324   }
7325 }
7326
7327 /* Disable any breakpoints and tracepoints that are in an unloaded shared
7328    library.  Only apply to enabled breakpoints, disabled ones can just stay
7329    disabled.  */
7330
7331 static void
7332 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7333 {
7334   struct bp_location *loc, **locp_tmp;
7335   int disabled_shlib_breaks = 0;
7336
7337   /* SunOS a.out shared libraries are always mapped, so do not
7338      disable breakpoints; they will only be reported as unloaded
7339      through clear_solib when GDB discards its shared library
7340      list.  See clear_solib for more information.  */
7341   if (exec_bfd != NULL
7342       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7343     return;
7344
7345   ALL_BP_LOCATIONS (loc, locp_tmp)
7346   {
7347     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7348     struct breakpoint *b = loc->owner;
7349
7350     if (solib->pspace == loc->pspace
7351         && !loc->shlib_disabled
7352         && (((b->type == bp_breakpoint
7353               || b->type == bp_jit_event
7354               || b->type == bp_hardware_breakpoint)
7355              && (loc->loc_type == bp_loc_hardware_breakpoint
7356                  || loc->loc_type == bp_loc_software_breakpoint))
7357             || is_tracepoint (b))
7358         && solib_contains_address_p (solib, loc->address))
7359       {
7360         loc->shlib_disabled = 1;
7361         /* At this point, we cannot rely on remove_breakpoint
7362            succeeding so we must mark the breakpoint as not inserted
7363            to prevent future errors occurring in remove_breakpoints.  */
7364         loc->inserted = 0;
7365
7366         /* This may cause duplicate notifications for the same breakpoint.  */
7367         observer_notify_breakpoint_modified (b);
7368
7369         if (!disabled_shlib_breaks)
7370           {
7371             target_terminal_ours_for_output ();
7372             warning (_("Temporarily disabling breakpoints "
7373                        "for unloaded shared library \"%s\""),
7374                      solib->so_name);
7375           }
7376         disabled_shlib_breaks = 1;
7377       }
7378   }
7379 }
7380
7381 /* FORK & VFORK catchpoints.  */
7382
7383 /* An instance of this type is used to represent a fork or vfork
7384    catchpoint.  It includes a "struct breakpoint" as a kind of base
7385    class; users downcast to "struct breakpoint *" when needed.  A
7386    breakpoint is really of this type iff its ops pointer points to
7387    CATCH_FORK_BREAKPOINT_OPS.  */
7388
7389 struct fork_catchpoint
7390 {
7391   /* The base class.  */
7392   struct breakpoint base;
7393
7394   /* Process id of a child process whose forking triggered this
7395      catchpoint.  This field is only valid immediately after this
7396      catchpoint has triggered.  */
7397   ptid_t forked_inferior_pid;
7398 };
7399
7400 /* Implement the "insert" breakpoint_ops method for fork
7401    catchpoints.  */
7402
7403 static int
7404 insert_catch_fork (struct bp_location *bl)
7405 {
7406   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7407 }
7408
7409 /* Implement the "remove" breakpoint_ops method for fork
7410    catchpoints.  */
7411
7412 static int
7413 remove_catch_fork (struct bp_location *bl)
7414 {
7415   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7416 }
7417
7418 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7419    catchpoints.  */
7420
7421 static int
7422 breakpoint_hit_catch_fork (const struct bp_location *bl,
7423                            struct address_space *aspace, CORE_ADDR bp_addr,
7424                            const struct target_waitstatus *ws)
7425 {
7426   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7427
7428   if (ws->kind != TARGET_WAITKIND_FORKED)
7429     return 0;
7430
7431   c->forked_inferior_pid = ws->value.related_pid;
7432   return 1;
7433 }
7434
7435 /* Implement the "print_it" breakpoint_ops method for fork
7436    catchpoints.  */
7437
7438 static enum print_stop_action
7439 print_it_catch_fork (bpstat bs)
7440 {
7441   struct ui_out *uiout = current_uiout;
7442   struct breakpoint *b = bs->breakpoint_at;
7443   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7444
7445   annotate_catchpoint (b->number);
7446   if (b->disposition == disp_del)
7447     ui_out_text (uiout, "\nTemporary catchpoint ");
7448   else
7449     ui_out_text (uiout, "\nCatchpoint ");
7450   if (ui_out_is_mi_like_p (uiout))
7451     {
7452       ui_out_field_string (uiout, "reason",
7453                            async_reason_lookup (EXEC_ASYNC_FORK));
7454       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7455     }
7456   ui_out_field_int (uiout, "bkptno", b->number);
7457   ui_out_text (uiout, " (forked process ");
7458   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7459   ui_out_text (uiout, "), ");
7460   return PRINT_SRC_AND_LOC;
7461 }
7462
7463 /* Implement the "print_one" breakpoint_ops method for fork
7464    catchpoints.  */
7465
7466 static void
7467 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7468 {
7469   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7470   struct value_print_options opts;
7471   struct ui_out *uiout = current_uiout;
7472
7473   get_user_print_options (&opts);
7474
7475   /* Field 4, the address, is omitted (which makes the columns not
7476      line up too nicely with the headers, but the effect is relatively
7477      readable).  */
7478   if (opts.addressprint)
7479     ui_out_field_skip (uiout, "addr");
7480   annotate_field (5);
7481   ui_out_text (uiout, "fork");
7482   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7483     {
7484       ui_out_text (uiout, ", process ");
7485       ui_out_field_int (uiout, "what",
7486                         ptid_get_pid (c->forked_inferior_pid));
7487       ui_out_spaces (uiout, 1);
7488     }
7489 }
7490
7491 /* Implement the "print_mention" breakpoint_ops method for fork
7492    catchpoints.  */
7493
7494 static void
7495 print_mention_catch_fork (struct breakpoint *b)
7496 {
7497   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7498 }
7499
7500 /* Implement the "print_recreate" breakpoint_ops method for fork
7501    catchpoints.  */
7502
7503 static void
7504 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7505 {
7506   fprintf_unfiltered (fp, "catch fork");
7507   print_recreate_thread (b, fp);
7508 }
7509
7510 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7511
7512 static struct breakpoint_ops catch_fork_breakpoint_ops;
7513
7514 /* Implement the "insert" breakpoint_ops method for vfork
7515    catchpoints.  */
7516
7517 static int
7518 insert_catch_vfork (struct bp_location *bl)
7519 {
7520   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7521 }
7522
7523 /* Implement the "remove" breakpoint_ops method for vfork
7524    catchpoints.  */
7525
7526 static int
7527 remove_catch_vfork (struct bp_location *bl)
7528 {
7529   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7530 }
7531
7532 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7533    catchpoints.  */
7534
7535 static int
7536 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7537                             struct address_space *aspace, CORE_ADDR bp_addr,
7538                             const struct target_waitstatus *ws)
7539 {
7540   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7541
7542   if (ws->kind != TARGET_WAITKIND_VFORKED)
7543     return 0;
7544
7545   c->forked_inferior_pid = ws->value.related_pid;
7546   return 1;
7547 }
7548
7549 /* Implement the "print_it" breakpoint_ops method for vfork
7550    catchpoints.  */
7551
7552 static enum print_stop_action
7553 print_it_catch_vfork (bpstat bs)
7554 {
7555   struct ui_out *uiout = current_uiout;
7556   struct breakpoint *b = bs->breakpoint_at;
7557   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7558
7559   annotate_catchpoint (b->number);
7560   if (b->disposition == disp_del)
7561     ui_out_text (uiout, "\nTemporary catchpoint ");
7562   else
7563     ui_out_text (uiout, "\nCatchpoint ");
7564   if (ui_out_is_mi_like_p (uiout))
7565     {
7566       ui_out_field_string (uiout, "reason",
7567                            async_reason_lookup (EXEC_ASYNC_VFORK));
7568       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7569     }
7570   ui_out_field_int (uiout, "bkptno", b->number);
7571   ui_out_text (uiout, " (vforked process ");
7572   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7573   ui_out_text (uiout, "), ");
7574   return PRINT_SRC_AND_LOC;
7575 }
7576
7577 /* Implement the "print_one" breakpoint_ops method for vfork
7578    catchpoints.  */
7579
7580 static void
7581 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7582 {
7583   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7584   struct value_print_options opts;
7585   struct ui_out *uiout = current_uiout;
7586
7587   get_user_print_options (&opts);
7588   /* Field 4, the address, is omitted (which makes the columns not
7589      line up too nicely with the headers, but the effect is relatively
7590      readable).  */
7591   if (opts.addressprint)
7592     ui_out_field_skip (uiout, "addr");
7593   annotate_field (5);
7594   ui_out_text (uiout, "vfork");
7595   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7596     {
7597       ui_out_text (uiout, ", process ");
7598       ui_out_field_int (uiout, "what",
7599                         ptid_get_pid (c->forked_inferior_pid));
7600       ui_out_spaces (uiout, 1);
7601     }
7602 }
7603
7604 /* Implement the "print_mention" breakpoint_ops method for vfork
7605    catchpoints.  */
7606
7607 static void
7608 print_mention_catch_vfork (struct breakpoint *b)
7609 {
7610   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7611 }
7612
7613 /* Implement the "print_recreate" breakpoint_ops method for vfork
7614    catchpoints.  */
7615
7616 static void
7617 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7618 {
7619   fprintf_unfiltered (fp, "catch vfork");
7620   print_recreate_thread (b, fp);
7621 }
7622
7623 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7624
7625 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7626
7627 /* An instance of this type is used to represent an solib catchpoint.
7628    It includes a "struct breakpoint" as a kind of base class; users
7629    downcast to "struct breakpoint *" when needed.  A breakpoint is
7630    really of this type iff its ops pointer points to
7631    CATCH_SOLIB_BREAKPOINT_OPS.  */
7632
7633 struct solib_catchpoint
7634 {
7635   /* The base class.  */
7636   struct breakpoint base;
7637
7638   /* True for "catch load", false for "catch unload".  */
7639   unsigned char is_load;
7640
7641   /* Regular expression to match, if any.  COMPILED is only valid when
7642      REGEX is non-NULL.  */
7643   char *regex;
7644   regex_t compiled;
7645 };
7646
7647 static void
7648 dtor_catch_solib (struct breakpoint *b)
7649 {
7650   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7651
7652   if (self->regex)
7653     regfree (&self->compiled);
7654   xfree (self->regex);
7655
7656   base_breakpoint_ops.dtor (b);
7657 }
7658
7659 static int
7660 insert_catch_solib (struct bp_location *ignore)
7661 {
7662   return 0;
7663 }
7664
7665 static int
7666 remove_catch_solib (struct bp_location *ignore)
7667 {
7668   return 0;
7669 }
7670
7671 static int
7672 breakpoint_hit_catch_solib (const struct bp_location *bl,
7673                             struct address_space *aspace,
7674                             CORE_ADDR bp_addr,
7675                             const struct target_waitstatus *ws)
7676 {
7677   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7678   struct breakpoint *other;
7679
7680   if (ws->kind == TARGET_WAITKIND_LOADED)
7681     return 1;
7682
7683   ALL_BREAKPOINTS (other)
7684   {
7685     struct bp_location *other_bl;
7686
7687     if (other == bl->owner)
7688       continue;
7689
7690     if (other->type != bp_shlib_event)
7691       continue;
7692
7693     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7694       continue;
7695
7696     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7697       {
7698         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7699           return 1;
7700       }
7701   }
7702
7703   return 0;
7704 }
7705
7706 static void
7707 check_status_catch_solib (struct bpstats *bs)
7708 {
7709   struct solib_catchpoint *self
7710     = (struct solib_catchpoint *) bs->breakpoint_at;
7711   int ix;
7712
7713   if (self->is_load)
7714     {
7715       struct so_list *iter;
7716
7717       for (ix = 0;
7718            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7719                         ix, iter);
7720            ++ix)
7721         {
7722           if (!self->regex
7723               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7724             return;
7725         }
7726     }
7727   else
7728     {
7729       char *iter;
7730
7731       for (ix = 0;
7732            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7733                         ix, iter);
7734            ++ix)
7735         {
7736           if (!self->regex
7737               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7738             return;
7739         }
7740     }
7741
7742   bs->stop = 0;
7743   bs->print_it = print_it_noop;
7744 }
7745
7746 static enum print_stop_action
7747 print_it_catch_solib (bpstat bs)
7748 {
7749   struct breakpoint *b = bs->breakpoint_at;
7750   struct ui_out *uiout = current_uiout;
7751
7752   annotate_catchpoint (b->number);
7753   if (b->disposition == disp_del)
7754     ui_out_text (uiout, "\nTemporary catchpoint ");
7755   else
7756     ui_out_text (uiout, "\nCatchpoint ");
7757   ui_out_field_int (uiout, "bkptno", b->number);
7758   ui_out_text (uiout, "\n");
7759   if (ui_out_is_mi_like_p (uiout))
7760     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7761   print_solib_event (1);
7762   return PRINT_SRC_AND_LOC;
7763 }
7764
7765 static void
7766 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7767 {
7768   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7769   struct value_print_options opts;
7770   struct ui_out *uiout = current_uiout;
7771   char *msg;
7772
7773   get_user_print_options (&opts);
7774   /* Field 4, the address, is omitted (which makes the columns not
7775      line up too nicely with the headers, but the effect is relatively
7776      readable).  */
7777   if (opts.addressprint)
7778     {
7779       annotate_field (4);
7780       ui_out_field_skip (uiout, "addr");
7781     }
7782
7783   annotate_field (5);
7784   if (self->is_load)
7785     {
7786       if (self->regex)
7787         msg = xstrprintf (_("load of library matching %s"), self->regex);
7788       else
7789         msg = xstrdup (_("load of library"));
7790     }
7791   else
7792     {
7793       if (self->regex)
7794         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7795       else
7796         msg = xstrdup (_("unload of library"));
7797     }
7798   ui_out_field_string (uiout, "what", msg);
7799   xfree (msg);
7800 }
7801
7802 static void
7803 print_mention_catch_solib (struct breakpoint *b)
7804 {
7805   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7806
7807   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7808                    self->is_load ? "load" : "unload");
7809 }
7810
7811 static void
7812 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7813 {
7814   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7815
7816   fprintf_unfiltered (fp, "%s %s",
7817                       b->disposition == disp_del ? "tcatch" : "catch",
7818                       self->is_load ? "load" : "unload");
7819   if (self->regex)
7820     fprintf_unfiltered (fp, " %s", self->regex);
7821   fprintf_unfiltered (fp, "\n");
7822 }
7823
7824 static struct breakpoint_ops catch_solib_breakpoint_ops;
7825
7826 /* A helper function that does all the work for "catch load" and
7827    "catch unload".  */
7828
7829 static void
7830 catch_load_or_unload (char *arg, int from_tty, int is_load,
7831                       struct cmd_list_element *command)
7832 {
7833   struct solib_catchpoint *c;
7834   struct gdbarch *gdbarch = get_current_arch ();
7835   int tempflag;
7836   struct cleanup *cleanup;
7837
7838   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7839
7840   if (!arg)
7841     arg = "";
7842   arg = skip_spaces (arg);
7843
7844   c = XCNEW (struct solib_catchpoint);
7845   cleanup = make_cleanup (xfree, c);
7846
7847   if (*arg != '\0')
7848     {
7849       int errcode;
7850
7851       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7852       if (errcode != 0)
7853         {
7854           char *err = get_regcomp_error (errcode, &c->compiled);
7855
7856           make_cleanup (xfree, err);
7857           error (_("Invalid regexp (%s): %s"), err, arg);
7858         }
7859       c->regex = xstrdup (arg);
7860     }
7861
7862   c->is_load = is_load;
7863   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7864                    &catch_solib_breakpoint_ops);
7865
7866   discard_cleanups (cleanup);
7867   install_breakpoint (0, &c->base, 1);
7868 }
7869
7870 static void
7871 catch_load_command_1 (char *arg, int from_tty,
7872                       struct cmd_list_element *command)
7873 {
7874   catch_load_or_unload (arg, from_tty, 1, command);
7875 }
7876
7877 static void
7878 catch_unload_command_1 (char *arg, int from_tty,
7879                         struct cmd_list_element *command)
7880 {
7881   catch_load_or_unload (arg, from_tty, 0, command);
7882 }
7883
7884 DEF_VEC_I(int);
7885
7886 /* An instance of this type is used to represent a syscall catchpoint.
7887    It includes a "struct breakpoint" as a kind of base class; users
7888    downcast to "struct breakpoint *" when needed.  A breakpoint is
7889    really of this type iff its ops pointer points to
7890    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7891
7892 struct syscall_catchpoint
7893 {
7894   /* The base class.  */
7895   struct breakpoint base;
7896
7897   /* Syscall numbers used for the 'catch syscall' feature.  If no
7898      syscall has been specified for filtering, its value is NULL.
7899      Otherwise, it holds a list of all syscalls to be caught.  The
7900      list elements are allocated with xmalloc.  */
7901   VEC(int) *syscalls_to_be_caught;
7902 };
7903
7904 /* Implement the "dtor" breakpoint_ops method for syscall
7905    catchpoints.  */
7906
7907 static void
7908 dtor_catch_syscall (struct breakpoint *b)
7909 {
7910   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7911
7912   VEC_free (int, c->syscalls_to_be_caught);
7913
7914   base_breakpoint_ops.dtor (b);
7915 }
7916
7917 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7918
7919 struct catch_syscall_inferior_data
7920 {
7921   /* We keep a count of the number of times the user has requested a
7922      particular syscall to be tracked, and pass this information to the
7923      target.  This lets capable targets implement filtering directly.  */
7924
7925   /* Number of times that "any" syscall is requested.  */
7926   int any_syscall_count;
7927
7928   /* Count of each system call.  */
7929   VEC(int) *syscalls_counts;
7930
7931   /* This counts all syscall catch requests, so we can readily determine
7932      if any catching is necessary.  */
7933   int total_syscalls_count;
7934 };
7935
7936 static struct catch_syscall_inferior_data*
7937 get_catch_syscall_inferior_data (struct inferior *inf)
7938 {
7939   struct catch_syscall_inferior_data *inf_data;
7940
7941   inf_data = inferior_data (inf, catch_syscall_inferior_data);
7942   if (inf_data == NULL)
7943     {
7944       inf_data = XZALLOC (struct catch_syscall_inferior_data);
7945       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7946     }
7947
7948   return inf_data;
7949 }
7950
7951 static void
7952 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7953 {
7954   xfree (arg);
7955 }
7956
7957
7958 /* Implement the "insert" breakpoint_ops method for syscall
7959    catchpoints.  */
7960
7961 static int
7962 insert_catch_syscall (struct bp_location *bl)
7963 {
7964   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7965   struct inferior *inf = current_inferior ();
7966   struct catch_syscall_inferior_data *inf_data
7967     = get_catch_syscall_inferior_data (inf);
7968
7969   ++inf_data->total_syscalls_count;
7970   if (!c->syscalls_to_be_caught)
7971     ++inf_data->any_syscall_count;
7972   else
7973     {
7974       int i, iter;
7975
7976       for (i = 0;
7977            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7978            i++)
7979         {
7980           int elem;
7981
7982           if (iter >= VEC_length (int, inf_data->syscalls_counts))
7983             {
7984               int old_size = VEC_length (int, inf_data->syscalls_counts);
7985               uintptr_t vec_addr_offset
7986                 = old_size * ((uintptr_t) sizeof (int));
7987               uintptr_t vec_addr;
7988               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
7989               vec_addr = ((uintptr_t) VEC_address (int,
7990                                                   inf_data->syscalls_counts)
7991                           + vec_addr_offset);
7992               memset ((void *) vec_addr, 0,
7993                       (iter + 1 - old_size) * sizeof (int));
7994             }
7995           elem = VEC_index (int, inf_data->syscalls_counts, iter);
7996           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
7997         }
7998     }
7999
8000   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8001                                         inf_data->total_syscalls_count != 0,
8002                                         inf_data->any_syscall_count,
8003                                         VEC_length (int,
8004                                                     inf_data->syscalls_counts),
8005                                         VEC_address (int,
8006                                                      inf_data->syscalls_counts));
8007 }
8008
8009 /* Implement the "remove" breakpoint_ops method for syscall
8010    catchpoints.  */
8011
8012 static int
8013 remove_catch_syscall (struct bp_location *bl)
8014 {
8015   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8016   struct inferior *inf = current_inferior ();
8017   struct catch_syscall_inferior_data *inf_data
8018     = get_catch_syscall_inferior_data (inf);
8019
8020   --inf_data->total_syscalls_count;
8021   if (!c->syscalls_to_be_caught)
8022     --inf_data->any_syscall_count;
8023   else
8024     {
8025       int i, iter;
8026
8027       for (i = 0;
8028            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8029            i++)
8030         {
8031           int elem;
8032           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8033             /* Shouldn't happen.  */
8034             continue;
8035           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8036           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8037         }
8038     }
8039
8040   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
8041                                         inf_data->total_syscalls_count != 0,
8042                                         inf_data->any_syscall_count,
8043                                         VEC_length (int,
8044                                                     inf_data->syscalls_counts),
8045                                         VEC_address (int,
8046                                                      inf_data->syscalls_counts));
8047 }
8048
8049 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8050    catchpoints.  */
8051
8052 static int
8053 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8054                               struct address_space *aspace, CORE_ADDR bp_addr,
8055                               const struct target_waitstatus *ws)
8056 {
8057   /* We must check if we are catching specific syscalls in this
8058      breakpoint.  If we are, then we must guarantee that the called
8059      syscall is the same syscall we are catching.  */
8060   int syscall_number = 0;
8061   const struct syscall_catchpoint *c
8062     = (const struct syscall_catchpoint *) bl->owner;
8063
8064   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8065       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8066     return 0;
8067
8068   syscall_number = ws->value.syscall_number;
8069
8070   /* Now, checking if the syscall is the same.  */
8071   if (c->syscalls_to_be_caught)
8072     {
8073       int i, iter;
8074
8075       for (i = 0;
8076            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8077            i++)
8078         if (syscall_number == iter)
8079           break;
8080       /* Not the same.  */
8081       if (!iter)
8082         return 0;
8083     }
8084
8085   return 1;
8086 }
8087
8088 /* Implement the "print_it" breakpoint_ops method for syscall
8089    catchpoints.  */
8090
8091 static enum print_stop_action
8092 print_it_catch_syscall (bpstat bs)
8093 {
8094   struct ui_out *uiout = current_uiout;
8095   struct breakpoint *b = bs->breakpoint_at;
8096   /* These are needed because we want to know in which state a
8097      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8098      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8099      must print "called syscall" or "returned from syscall".  */
8100   ptid_t ptid;
8101   struct target_waitstatus last;
8102   struct syscall s;
8103
8104   get_last_target_status (&ptid, &last);
8105
8106   get_syscall_by_number (last.value.syscall_number, &s);
8107
8108   annotate_catchpoint (b->number);
8109
8110   if (b->disposition == disp_del)
8111     ui_out_text (uiout, "\nTemporary catchpoint ");
8112   else
8113     ui_out_text (uiout, "\nCatchpoint ");
8114   if (ui_out_is_mi_like_p (uiout))
8115     {
8116       ui_out_field_string (uiout, "reason",
8117                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8118                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8119                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8120       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8121     }
8122   ui_out_field_int (uiout, "bkptno", b->number);
8123
8124   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8125     ui_out_text (uiout, " (call to syscall ");
8126   else
8127     ui_out_text (uiout, " (returned from syscall ");
8128
8129   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8130     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8131   if (s.name != NULL)
8132     ui_out_field_string (uiout, "syscall-name", s.name);
8133
8134   ui_out_text (uiout, "), ");
8135
8136   return PRINT_SRC_AND_LOC;
8137 }
8138
8139 /* Implement the "print_one" breakpoint_ops method for syscall
8140    catchpoints.  */
8141
8142 static void
8143 print_one_catch_syscall (struct breakpoint *b,
8144                          struct bp_location **last_loc)
8145 {
8146   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8147   struct value_print_options opts;
8148   struct ui_out *uiout = current_uiout;
8149
8150   get_user_print_options (&opts);
8151   /* Field 4, the address, is omitted (which makes the columns not
8152      line up too nicely with the headers, but the effect is relatively
8153      readable).  */
8154   if (opts.addressprint)
8155     ui_out_field_skip (uiout, "addr");
8156   annotate_field (5);
8157
8158   if (c->syscalls_to_be_caught
8159       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8160     ui_out_text (uiout, "syscalls \"");
8161   else
8162     ui_out_text (uiout, "syscall \"");
8163
8164   if (c->syscalls_to_be_caught)
8165     {
8166       int i, iter;
8167       char *text = xstrprintf ("%s", "");
8168
8169       for (i = 0;
8170            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8171            i++)
8172         {
8173           char *x = text;
8174           struct syscall s;
8175           get_syscall_by_number (iter, &s);
8176
8177           if (s.name != NULL)
8178             text = xstrprintf ("%s%s, ", text, s.name);
8179           else
8180             text = xstrprintf ("%s%d, ", text, iter);
8181
8182           /* We have to xfree the last 'text' (now stored at 'x')
8183              because xstrprintf dynamically allocates new space for it
8184              on every call.  */
8185           xfree (x);
8186         }
8187       /* Remove the last comma.  */
8188       text[strlen (text) - 2] = '\0';
8189       ui_out_field_string (uiout, "what", text);
8190     }
8191   else
8192     ui_out_field_string (uiout, "what", "<any syscall>");
8193   ui_out_text (uiout, "\" ");
8194 }
8195
8196 /* Implement the "print_mention" breakpoint_ops method for syscall
8197    catchpoints.  */
8198
8199 static void
8200 print_mention_catch_syscall (struct breakpoint *b)
8201 {
8202   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8203
8204   if (c->syscalls_to_be_caught)
8205     {
8206       int i, iter;
8207
8208       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8209         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8210       else
8211         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8212
8213       for (i = 0;
8214            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8215            i++)
8216         {
8217           struct syscall s;
8218           get_syscall_by_number (iter, &s);
8219
8220           if (s.name)
8221             printf_filtered (" '%s' [%d]", s.name, s.number);
8222           else
8223             printf_filtered (" %d", s.number);
8224         }
8225       printf_filtered (")");
8226     }
8227   else
8228     printf_filtered (_("Catchpoint %d (any syscall)"),
8229                      b->number);
8230 }
8231
8232 /* Implement the "print_recreate" breakpoint_ops method for syscall
8233    catchpoints.  */
8234
8235 static void
8236 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8237 {
8238   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8239
8240   fprintf_unfiltered (fp, "catch syscall");
8241
8242   if (c->syscalls_to_be_caught)
8243     {
8244       int i, iter;
8245
8246       for (i = 0;
8247            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8248            i++)
8249         {
8250           struct syscall s;
8251
8252           get_syscall_by_number (iter, &s);
8253           if (s.name)
8254             fprintf_unfiltered (fp, " %s", s.name);
8255           else
8256             fprintf_unfiltered (fp, " %d", s.number);
8257         }
8258     }
8259   print_recreate_thread (b, fp);
8260 }
8261
8262 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8263
8264 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8265
8266 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8267
8268 static int
8269 syscall_catchpoint_p (struct breakpoint *b)
8270 {
8271   return (b->ops == &catch_syscall_breakpoint_ops);
8272 }
8273
8274 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8275    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8276    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8277    the breakpoint_ops structure associated to the catchpoint.  */
8278
8279 static void
8280 init_catchpoint (struct breakpoint *b,
8281                  struct gdbarch *gdbarch, int tempflag,
8282                  char *cond_string,
8283                  const struct breakpoint_ops *ops)
8284 {
8285   struct symtab_and_line sal;
8286
8287   init_sal (&sal);
8288   sal.pspace = current_program_space;
8289
8290   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8291
8292   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8293   b->disposition = tempflag ? disp_del : disp_donttouch;
8294 }
8295
8296 void
8297 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8298 {
8299   add_to_breakpoint_chain (b);
8300   set_breakpoint_number (internal, b);
8301   if (!internal)
8302     mention (b);
8303   observer_notify_breakpoint_created (b);
8304
8305   if (update_gll)
8306     update_global_location_list (1);
8307 }
8308
8309 static void
8310 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8311                                     int tempflag, char *cond_string,
8312                                     const struct breakpoint_ops *ops)
8313 {
8314   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8315
8316   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8317
8318   c->forked_inferior_pid = null_ptid;
8319
8320   install_breakpoint (0, &c->base, 1);
8321 }
8322
8323 /* Exec catchpoints.  */
8324
8325 /* An instance of this type is used to represent an exec catchpoint.
8326    It includes a "struct breakpoint" as a kind of base class; users
8327    downcast to "struct breakpoint *" when needed.  A breakpoint is
8328    really of this type iff its ops pointer points to
8329    CATCH_EXEC_BREAKPOINT_OPS.  */
8330
8331 struct exec_catchpoint
8332 {
8333   /* The base class.  */
8334   struct breakpoint base;
8335
8336   /* Filename of a program whose exec triggered this catchpoint.
8337      This field is only valid immediately after this catchpoint has
8338      triggered.  */
8339   char *exec_pathname;
8340 };
8341
8342 /* Implement the "dtor" breakpoint_ops method for exec
8343    catchpoints.  */
8344
8345 static void
8346 dtor_catch_exec (struct breakpoint *b)
8347 {
8348   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8349
8350   xfree (c->exec_pathname);
8351
8352   base_breakpoint_ops.dtor (b);
8353 }
8354
8355 static int
8356 insert_catch_exec (struct bp_location *bl)
8357 {
8358   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
8359 }
8360
8361 static int
8362 remove_catch_exec (struct bp_location *bl)
8363 {
8364   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
8365 }
8366
8367 static int
8368 breakpoint_hit_catch_exec (const struct bp_location *bl,
8369                            struct address_space *aspace, CORE_ADDR bp_addr,
8370                            const struct target_waitstatus *ws)
8371 {
8372   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8373
8374   if (ws->kind != TARGET_WAITKIND_EXECD)
8375     return 0;
8376
8377   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8378   return 1;
8379 }
8380
8381 static enum print_stop_action
8382 print_it_catch_exec (bpstat bs)
8383 {
8384   struct ui_out *uiout = current_uiout;
8385   struct breakpoint *b = bs->breakpoint_at;
8386   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8387
8388   annotate_catchpoint (b->number);
8389   if (b->disposition == disp_del)
8390     ui_out_text (uiout, "\nTemporary catchpoint ");
8391   else
8392     ui_out_text (uiout, "\nCatchpoint ");
8393   if (ui_out_is_mi_like_p (uiout))
8394     {
8395       ui_out_field_string (uiout, "reason",
8396                            async_reason_lookup (EXEC_ASYNC_EXEC));
8397       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8398     }
8399   ui_out_field_int (uiout, "bkptno", b->number);
8400   ui_out_text (uiout, " (exec'd ");
8401   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8402   ui_out_text (uiout, "), ");
8403
8404   return PRINT_SRC_AND_LOC;
8405 }
8406
8407 static void
8408 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8409 {
8410   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8411   struct value_print_options opts;
8412   struct ui_out *uiout = current_uiout;
8413
8414   get_user_print_options (&opts);
8415
8416   /* Field 4, the address, is omitted (which makes the columns
8417      not line up too nicely with the headers, but the effect
8418      is relatively readable).  */
8419   if (opts.addressprint)
8420     ui_out_field_skip (uiout, "addr");
8421   annotate_field (5);
8422   ui_out_text (uiout, "exec");
8423   if (c->exec_pathname != NULL)
8424     {
8425       ui_out_text (uiout, ", program \"");
8426       ui_out_field_string (uiout, "what", c->exec_pathname);
8427       ui_out_text (uiout, "\" ");
8428     }
8429 }
8430
8431 static void
8432 print_mention_catch_exec (struct breakpoint *b)
8433 {
8434   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8435 }
8436
8437 /* Implement the "print_recreate" breakpoint_ops method for exec
8438    catchpoints.  */
8439
8440 static void
8441 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8442 {
8443   fprintf_unfiltered (fp, "catch exec");
8444   print_recreate_thread (b, fp);
8445 }
8446
8447 static struct breakpoint_ops catch_exec_breakpoint_ops;
8448
8449 static void
8450 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8451                                  const struct breakpoint_ops *ops)
8452 {
8453   struct syscall_catchpoint *c;
8454   struct gdbarch *gdbarch = get_current_arch ();
8455
8456   c = XNEW (struct syscall_catchpoint);
8457   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8458   c->syscalls_to_be_caught = filter;
8459
8460   install_breakpoint (0, &c->base, 1);
8461 }
8462
8463 static int
8464 hw_breakpoint_used_count (void)
8465 {
8466   int i = 0;
8467   struct breakpoint *b;
8468   struct bp_location *bl;
8469
8470   ALL_BREAKPOINTS (b)
8471   {
8472     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8473       for (bl = b->loc; bl; bl = bl->next)
8474         {
8475           /* Special types of hardware breakpoints may use more than
8476              one register.  */
8477           i += b->ops->resources_needed (bl);
8478         }
8479   }
8480
8481   return i;
8482 }
8483
8484 /* Returns the resources B would use if it were a hardware
8485    watchpoint.  */
8486
8487 static int
8488 hw_watchpoint_use_count (struct breakpoint *b)
8489 {
8490   int i = 0;
8491   struct bp_location *bl;
8492
8493   if (!breakpoint_enabled (b))
8494     return 0;
8495
8496   for (bl = b->loc; bl; bl = bl->next)
8497     {
8498       /* Special types of hardware watchpoints may use more than
8499          one register.  */
8500       i += b->ops->resources_needed (bl);
8501     }
8502
8503   return i;
8504 }
8505
8506 /* Returns the sum the used resources of all hardware watchpoints of
8507    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8508    the sum of the used resources of all hardware watchpoints of other
8509    types _not_ TYPE.  */
8510
8511 static int
8512 hw_watchpoint_used_count_others (struct breakpoint *except,
8513                                  enum bptype type, int *other_type_used)
8514 {
8515   int i = 0;
8516   struct breakpoint *b;
8517
8518   *other_type_used = 0;
8519   ALL_BREAKPOINTS (b)
8520     {
8521       if (b == except)
8522         continue;
8523       if (!breakpoint_enabled (b))
8524         continue;
8525
8526       if (b->type == type)
8527         i += hw_watchpoint_use_count (b);
8528       else if (is_hardware_watchpoint (b))
8529         *other_type_used = 1;
8530     }
8531
8532   return i;
8533 }
8534
8535 void
8536 disable_watchpoints_before_interactive_call_start (void)
8537 {
8538   struct breakpoint *b;
8539
8540   ALL_BREAKPOINTS (b)
8541   {
8542     if (is_watchpoint (b) && breakpoint_enabled (b))
8543       {
8544         b->enable_state = bp_call_disabled;
8545         update_global_location_list (0);
8546       }
8547   }
8548 }
8549
8550 void
8551 enable_watchpoints_after_interactive_call_stop (void)
8552 {
8553   struct breakpoint *b;
8554
8555   ALL_BREAKPOINTS (b)
8556   {
8557     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8558       {
8559         b->enable_state = bp_enabled;
8560         update_global_location_list (1);
8561       }
8562   }
8563 }
8564
8565 void
8566 disable_breakpoints_before_startup (void)
8567 {
8568   current_program_space->executing_startup = 1;
8569   update_global_location_list (0);
8570 }
8571
8572 void
8573 enable_breakpoints_after_startup (void)
8574 {
8575   current_program_space->executing_startup = 0;
8576   breakpoint_re_set ();
8577 }
8578
8579
8580 /* Set a breakpoint that will evaporate an end of command
8581    at address specified by SAL.
8582    Restrict it to frame FRAME if FRAME is nonzero.  */
8583
8584 struct breakpoint *
8585 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8586                           struct frame_id frame_id, enum bptype type)
8587 {
8588   struct breakpoint *b;
8589
8590   /* If FRAME_ID is valid, it should be a real frame, not an inlined
8591      one.  */
8592   gdb_assert (!frame_id_inlined_p (frame_id));
8593
8594   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8595   b->enable_state = bp_enabled;
8596   b->disposition = disp_donttouch;
8597   b->frame_id = frame_id;
8598
8599   /* If we're debugging a multi-threaded program, then we want
8600      momentary breakpoints to be active in only a single thread of
8601      control.  */
8602   if (in_thread_list (inferior_ptid))
8603     b->thread = pid_to_thread_id (inferior_ptid);
8604
8605   update_global_location_list_nothrow (1);
8606
8607   return b;
8608 }
8609
8610 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8611    The new breakpoint will have type TYPE, and use OPS as it
8612    breakpoint_ops.  */
8613
8614 static struct breakpoint *
8615 momentary_breakpoint_from_master (struct breakpoint *orig,
8616                                   enum bptype type,
8617                                   const struct breakpoint_ops *ops)
8618 {
8619   struct breakpoint *copy;
8620
8621   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8622   copy->loc = allocate_bp_location (copy);
8623   set_breakpoint_location_function (copy->loc, 1);
8624
8625   copy->loc->gdbarch = orig->loc->gdbarch;
8626   copy->loc->requested_address = orig->loc->requested_address;
8627   copy->loc->address = orig->loc->address;
8628   copy->loc->section = orig->loc->section;
8629   copy->loc->pspace = orig->loc->pspace;
8630   copy->loc->probe = orig->loc->probe;
8631
8632   if (orig->loc->source_file != NULL)
8633     copy->loc->source_file = xstrdup (orig->loc->source_file);
8634
8635   copy->loc->line_number = orig->loc->line_number;
8636   copy->frame_id = orig->frame_id;
8637   copy->thread = orig->thread;
8638   copy->pspace = orig->pspace;
8639
8640   copy->enable_state = bp_enabled;
8641   copy->disposition = disp_donttouch;
8642   copy->number = internal_breakpoint_number--;
8643
8644   update_global_location_list_nothrow (0);
8645   return copy;
8646 }
8647
8648 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8649    ORIG is NULL.  */
8650
8651 struct breakpoint *
8652 clone_momentary_breakpoint (struct breakpoint *orig)
8653 {
8654   /* If there's nothing to clone, then return nothing.  */
8655   if (orig == NULL)
8656     return NULL;
8657
8658   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8659 }
8660
8661 struct breakpoint *
8662 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8663                                 enum bptype type)
8664 {
8665   struct symtab_and_line sal;
8666
8667   sal = find_pc_line (pc, 0);
8668   sal.pc = pc;
8669   sal.section = find_pc_overlay (pc);
8670   sal.explicit_pc = 1;
8671
8672   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8673 }
8674 \f
8675
8676 /* Tell the user we have just set a breakpoint B.  */
8677
8678 static void
8679 mention (struct breakpoint *b)
8680 {
8681   b->ops->print_mention (b);
8682   if (ui_out_is_mi_like_p (current_uiout))
8683     return;
8684   printf_filtered ("\n");
8685 }
8686 \f
8687
8688 static struct bp_location *
8689 add_location_to_breakpoint (struct breakpoint *b,
8690                             const struct symtab_and_line *sal)
8691 {
8692   struct bp_location *loc, **tmp;
8693   CORE_ADDR adjusted_address;
8694   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8695
8696   if (loc_gdbarch == NULL)
8697     loc_gdbarch = b->gdbarch;
8698
8699   /* Adjust the breakpoint's address prior to allocating a location.
8700      Once we call allocate_bp_location(), that mostly uninitialized
8701      location will be placed on the location chain.  Adjustment of the
8702      breakpoint may cause target_read_memory() to be called and we do
8703      not want its scan of the location chain to find a breakpoint and
8704      location that's only been partially initialized.  */
8705   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8706                                                 sal->pc, b->type);
8707
8708   loc = allocate_bp_location (b);
8709   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8710     ;
8711   *tmp = loc;
8712
8713   loc->requested_address = sal->pc;
8714   loc->address = adjusted_address;
8715   loc->pspace = sal->pspace;
8716   loc->probe = sal->probe;
8717   gdb_assert (loc->pspace != NULL);
8718   loc->section = sal->section;
8719   loc->gdbarch = loc_gdbarch;
8720
8721   if (sal->symtab != NULL)
8722     loc->source_file = xstrdup (sal->symtab->filename);
8723   loc->line_number = sal->line;
8724
8725   set_breakpoint_location_function (loc,
8726                                     sal->explicit_pc || sal->explicit_line);
8727   return loc;
8728 }
8729 \f
8730
8731 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8732    return 0 otherwise.  */
8733
8734 static int
8735 bp_loc_is_permanent (struct bp_location *loc)
8736 {
8737   int len;
8738   CORE_ADDR addr;
8739   const gdb_byte *bpoint;
8740   gdb_byte *target_mem;
8741   struct cleanup *cleanup;
8742   int retval = 0;
8743
8744   gdb_assert (loc != NULL);
8745
8746   addr = loc->address;
8747   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8748
8749   /* Software breakpoints unsupported?  */
8750   if (bpoint == NULL)
8751     return 0;
8752
8753   target_mem = alloca (len);
8754
8755   /* Enable the automatic memory restoration from breakpoints while
8756      we read the memory.  Otherwise we could say about our temporary
8757      breakpoints they are permanent.  */
8758   cleanup = save_current_space_and_thread ();
8759
8760   switch_to_program_space_and_thread (loc->pspace);
8761   make_show_memory_breakpoints_cleanup (0);
8762
8763   if (target_read_memory (loc->address, target_mem, len) == 0
8764       && memcmp (target_mem, bpoint, len) == 0)
8765     retval = 1;
8766
8767   do_cleanups (cleanup);
8768
8769   return retval;
8770 }
8771
8772 /* Build a command list for the dprintf corresponding to the current
8773    settings of the dprintf style options.  */
8774
8775 static void
8776 update_dprintf_command_list (struct breakpoint *b)
8777 {
8778   char *dprintf_args = b->extra_string;
8779   char *printf_line = NULL;
8780
8781   if (!dprintf_args)
8782     return;
8783
8784   dprintf_args = skip_spaces (dprintf_args);
8785
8786   /* Allow a comma, as it may have terminated a location, but don't
8787      insist on it.  */
8788   if (*dprintf_args == ',')
8789     ++dprintf_args;
8790   dprintf_args = skip_spaces (dprintf_args);
8791
8792   if (*dprintf_args != '"')
8793     error (_("Bad format string, missing '\"'."));
8794
8795   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
8796     printf_line = xstrprintf ("printf %s", dprintf_args);
8797   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
8798     {
8799       if (!dprintf_function)
8800         error (_("No function supplied for dprintf call"));
8801
8802       if (dprintf_channel && strlen (dprintf_channel) > 0)
8803         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8804                                   dprintf_function,
8805                                   dprintf_channel,
8806                                   dprintf_args);
8807       else
8808         printf_line = xstrprintf ("call (void) %s (%s)",
8809                                   dprintf_function,
8810                                   dprintf_args);
8811     }
8812   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
8813     {
8814       if (target_can_run_breakpoint_commands ())
8815         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
8816       else
8817         {
8818           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
8819           printf_line = xstrprintf ("printf %s", dprintf_args);
8820         }
8821     }
8822   else
8823     internal_error (__FILE__, __LINE__,
8824                     _("Invalid dprintf style."));
8825
8826   /* Manufacture a printf/continue sequence.  */
8827   if (printf_line)
8828     {
8829       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8830
8831       if (strcmp (dprintf_style, dprintf_style_agent) != 0)
8832         {
8833           cont_cmd_line = xmalloc (sizeof (struct command_line));
8834           cont_cmd_line->control_type = simple_control;
8835           cont_cmd_line->body_count = 0;
8836           cont_cmd_line->body_list = NULL;
8837           cont_cmd_line->next = NULL;
8838           cont_cmd_line->line = xstrdup ("continue");
8839         }
8840
8841       printf_cmd_line = xmalloc (sizeof (struct command_line));
8842       printf_cmd_line->control_type = simple_control;
8843       printf_cmd_line->body_count = 0;
8844       printf_cmd_line->body_list = NULL;
8845       printf_cmd_line->next = cont_cmd_line;
8846       printf_cmd_line->line = printf_line;
8847
8848       breakpoint_set_commands (b, printf_cmd_line);
8849     }
8850 }
8851
8852 /* Update all dprintf commands, making their command lists reflect
8853    current style settings.  */
8854
8855 static void
8856 update_dprintf_commands (char *args, int from_tty,
8857                          struct cmd_list_element *c)
8858 {
8859   struct breakpoint *b;
8860
8861   ALL_BREAKPOINTS (b)
8862     {
8863       if (b->type == bp_dprintf)
8864         update_dprintf_command_list (b);
8865     }
8866 }
8867
8868 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8869    as textual description of the location, and COND_STRING
8870    as condition expression.  */
8871
8872 static void
8873 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8874                      struct symtabs_and_lines sals, char *addr_string,
8875                      char *filter, char *cond_string,
8876                      char *extra_string,
8877                      enum bptype type, enum bpdisp disposition,
8878                      int thread, int task, int ignore_count,
8879                      const struct breakpoint_ops *ops, int from_tty,
8880                      int enabled, int internal, unsigned flags,
8881                      int display_canonical)
8882 {
8883   int i;
8884
8885   if (type == bp_hardware_breakpoint)
8886     {
8887       int target_resources_ok;
8888
8889       i = hw_breakpoint_used_count ();
8890       target_resources_ok =
8891         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8892                                             i + 1, 0);
8893       if (target_resources_ok == 0)
8894         error (_("No hardware breakpoint support in the target."));
8895       else if (target_resources_ok < 0)
8896         error (_("Hardware breakpoints used exceeds limit."));
8897     }
8898
8899   gdb_assert (sals.nelts > 0);
8900
8901   for (i = 0; i < sals.nelts; ++i)
8902     {
8903       struct symtab_and_line sal = sals.sals[i];
8904       struct bp_location *loc;
8905
8906       if (from_tty)
8907         {
8908           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8909           if (!loc_gdbarch)
8910             loc_gdbarch = gdbarch;
8911
8912           describe_other_breakpoints (loc_gdbarch,
8913                                       sal.pspace, sal.pc, sal.section, thread);
8914         }
8915
8916       if (i == 0)
8917         {
8918           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8919           b->thread = thread;
8920           b->task = task;
8921
8922           b->cond_string = cond_string;
8923           b->extra_string = extra_string;
8924           b->ignore_count = ignore_count;
8925           b->enable_state = enabled ? bp_enabled : bp_disabled;
8926           b->disposition = disposition;
8927
8928           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8929             b->loc->inserted = 1;
8930
8931           if (type == bp_static_tracepoint)
8932             {
8933               struct tracepoint *t = (struct tracepoint *) b;
8934               struct static_tracepoint_marker marker;
8935
8936               if (strace_marker_p (b))
8937                 {
8938                   /* We already know the marker exists, otherwise, we
8939                      wouldn't see a sal for it.  */
8940                   char *p = &addr_string[3];
8941                   char *endp;
8942                   char *marker_str;
8943
8944                   p = skip_spaces (p);
8945
8946                   endp = skip_to_space (p);
8947
8948                   marker_str = savestring (p, endp - p);
8949                   t->static_trace_marker_id = marker_str;
8950
8951                   printf_filtered (_("Probed static tracepoint "
8952                                      "marker \"%s\"\n"),
8953                                    t->static_trace_marker_id);
8954                 }
8955               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8956                 {
8957                   t->static_trace_marker_id = xstrdup (marker.str_id);
8958                   release_static_tracepoint_marker (&marker);
8959
8960                   printf_filtered (_("Probed static tracepoint "
8961                                      "marker \"%s\"\n"),
8962                                    t->static_trace_marker_id);
8963                 }
8964               else
8965                 warning (_("Couldn't determine the static "
8966                            "tracepoint marker to probe"));
8967             }
8968
8969           loc = b->loc;
8970         }
8971       else
8972         {
8973           loc = add_location_to_breakpoint (b, &sal);
8974           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8975             loc->inserted = 1;
8976         }
8977
8978       if (bp_loc_is_permanent (loc))
8979         make_breakpoint_permanent (b);
8980
8981       if (b->cond_string)
8982         {
8983           char *arg = b->cond_string;
8984           loc->cond = parse_exp_1 (&arg, loc->address,
8985                                    block_for_pc (loc->address), 0);
8986           if (*arg)
8987               error (_("Garbage '%s' follows condition"), arg);
8988         }
8989
8990       /* Dynamic printf requires and uses additional arguments on the
8991          command line, otherwise it's an error.  */
8992       if (type == bp_dprintf)
8993         {
8994           if (b->extra_string)
8995             update_dprintf_command_list (b);
8996           else
8997             error (_("Format string required"));
8998         }
8999       else if (b->extra_string)
9000         error (_("Garbage '%s' at end of command"), b->extra_string);
9001     }
9002
9003   b->display_canonical = display_canonical;
9004   if (addr_string)
9005     b->addr_string = addr_string;
9006   else
9007     /* addr_string has to be used or breakpoint_re_set will delete
9008        me.  */
9009     b->addr_string
9010       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9011   b->filter = filter;
9012 }
9013
9014 static void
9015 create_breakpoint_sal (struct gdbarch *gdbarch,
9016                        struct symtabs_and_lines sals, char *addr_string,
9017                        char *filter, char *cond_string,
9018                        char *extra_string,
9019                        enum bptype type, enum bpdisp disposition,
9020                        int thread, int task, int ignore_count,
9021                        const struct breakpoint_ops *ops, int from_tty,
9022                        int enabled, int internal, unsigned flags,
9023                        int display_canonical)
9024 {
9025   struct breakpoint *b;
9026   struct cleanup *old_chain;
9027
9028   if (is_tracepoint_type (type))
9029     {
9030       struct tracepoint *t;
9031
9032       t = XCNEW (struct tracepoint);
9033       b = &t->base;
9034     }
9035   else
9036     b = XNEW (struct breakpoint);
9037
9038   old_chain = make_cleanup (xfree, b);
9039
9040   init_breakpoint_sal (b, gdbarch,
9041                        sals, addr_string,
9042                        filter, cond_string, extra_string,
9043                        type, disposition,
9044                        thread, task, ignore_count,
9045                        ops, from_tty,
9046                        enabled, internal, flags,
9047                        display_canonical);
9048   discard_cleanups (old_chain);
9049
9050   install_breakpoint (internal, b, 0);
9051 }
9052
9053 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9054    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9055    value.  COND_STRING, if not NULL, specified the condition to be
9056    used for all breakpoints.  Essentially the only case where
9057    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9058    function.  In that case, it's still not possible to specify
9059    separate conditions for different overloaded functions, so
9060    we take just a single condition string.
9061    
9062    NOTE: If the function succeeds, the caller is expected to cleanup
9063    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9064    array contents).  If the function fails (error() is called), the
9065    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9066    COND and SALS arrays and each of those arrays contents.  */
9067
9068 static void
9069 create_breakpoints_sal (struct gdbarch *gdbarch,
9070                         struct linespec_result *canonical,
9071                         char *cond_string, char *extra_string,
9072                         enum bptype type, enum bpdisp disposition,
9073                         int thread, int task, int ignore_count,
9074                         const struct breakpoint_ops *ops, int from_tty,
9075                         int enabled, int internal, unsigned flags)
9076 {
9077   int i;
9078   struct linespec_sals *lsal;
9079
9080   if (canonical->pre_expanded)
9081     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9082
9083   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9084     {
9085       /* Note that 'addr_string' can be NULL in the case of a plain
9086          'break', without arguments.  */
9087       char *addr_string = (canonical->addr_string
9088                            ? xstrdup (canonical->addr_string)
9089                            : NULL);
9090       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9091       struct cleanup *inner = make_cleanup (xfree, addr_string);
9092
9093       make_cleanup (xfree, filter_string);
9094       create_breakpoint_sal (gdbarch, lsal->sals,
9095                              addr_string,
9096                              filter_string,
9097                              cond_string, extra_string,
9098                              type, disposition,
9099                              thread, task, ignore_count, ops,
9100                              from_tty, enabled, internal, flags,
9101                              canonical->special_display);
9102       discard_cleanups (inner);
9103     }
9104 }
9105
9106 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9107    followed by conditionals.  On return, SALS contains an array of SAL
9108    addresses found.  ADDR_STRING contains a vector of (canonical)
9109    address strings.  ADDRESS points to the end of the SAL.
9110
9111    The array and the line spec strings are allocated on the heap, it is
9112    the caller's responsibility to free them.  */
9113
9114 static void
9115 parse_breakpoint_sals (char **address,
9116                        struct linespec_result *canonical)
9117 {
9118   /* If no arg given, or if first arg is 'if ', use the default
9119      breakpoint.  */
9120   if ((*address) == NULL
9121       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9122     {
9123       /* The last displayed codepoint, if it's valid, is our default breakpoint
9124          address.  */
9125       if (last_displayed_sal_is_valid ())
9126         {
9127           struct linespec_sals lsal;
9128           struct symtab_and_line sal;
9129
9130           init_sal (&sal);              /* Initialize to zeroes.  */
9131           lsal.sals.sals = (struct symtab_and_line *)
9132             xmalloc (sizeof (struct symtab_and_line));
9133
9134           /* Set sal's pspace, pc, symtab, and line to the values
9135              corresponding to the last call to print_frame_info.  */
9136           get_last_displayed_sal (&sal);
9137           sal.section = find_pc_overlay (sal.pc);
9138
9139           /* "break" without arguments is equivalent to "break *PC"
9140              where PC is the last displayed codepoint's address.  So
9141              make sure to set sal.explicit_pc to prevent GDB from
9142              trying to expand the list of sals to include all other
9143              instances with the same symtab and line.  */
9144           sal.explicit_pc = 1;
9145
9146           lsal.sals.sals[0] = sal;
9147           lsal.sals.nelts = 1;
9148           lsal.canonical = NULL;
9149
9150           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9151         }
9152       else
9153         error (_("No default breakpoint address now."));
9154     }
9155   else
9156     {
9157       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9158
9159       /* Force almost all breakpoints to be in terms of the
9160          current_source_symtab (which is decode_line_1's default).
9161          This should produce the results we want almost all of the
9162          time while leaving default_breakpoint_* alone.
9163
9164          ObjC: However, don't match an Objective-C method name which
9165          may have a '+' or '-' succeeded by a '['.  */
9166       if (last_displayed_sal_is_valid ()
9167           && (!cursal.symtab
9168               || ((strchr ("+-", (*address)[0]) != NULL)
9169                   && ((*address)[1] != '['))))
9170         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9171                           get_last_displayed_symtab (),
9172                           get_last_displayed_line (),
9173                           canonical, NULL, NULL);
9174       else
9175         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9176                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9177     }
9178 }
9179
9180
9181 /* Convert each SAL into a real PC.  Verify that the PC can be
9182    inserted as a breakpoint.  If it can't throw an error.  */
9183
9184 static void
9185 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9186 {    
9187   int i;
9188
9189   for (i = 0; i < sals->nelts; i++)
9190     resolve_sal_pc (&sals->sals[i]);
9191 }
9192
9193 /* Fast tracepoints may have restrictions on valid locations.  For
9194    instance, a fast tracepoint using a jump instead of a trap will
9195    likely have to overwrite more bytes than a trap would, and so can
9196    only be placed where the instruction is longer than the jump, or a
9197    multi-instruction sequence does not have a jump into the middle of
9198    it, etc.  */
9199
9200 static void
9201 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9202                             struct symtabs_and_lines *sals)
9203 {
9204   int i, rslt;
9205   struct symtab_and_line *sal;
9206   char *msg;
9207   struct cleanup *old_chain;
9208
9209   for (i = 0; i < sals->nelts; i++)
9210     {
9211       struct gdbarch *sarch;
9212
9213       sal = &sals->sals[i];
9214
9215       sarch = get_sal_arch (*sal);
9216       /* We fall back to GDBARCH if there is no architecture
9217          associated with SAL.  */
9218       if (sarch == NULL)
9219         sarch = gdbarch;
9220       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9221                                                NULL, &msg);
9222       old_chain = make_cleanup (xfree, msg);
9223
9224       if (!rslt)
9225         error (_("May not have a fast tracepoint at 0x%s%s"),
9226                paddress (sarch, sal->pc), (msg ? msg : ""));
9227
9228       do_cleanups (old_chain);
9229     }
9230 }
9231
9232 /* Issue an invalid thread ID error.  */
9233
9234 static void ATTRIBUTE_NORETURN
9235 invalid_thread_id_error (int id)
9236 {
9237   error (_("Unknown thread %d."), id);
9238 }
9239
9240 /* Given TOK, a string specification of condition and thread, as
9241    accepted by the 'break' command, extract the condition
9242    string and thread number and set *COND_STRING and *THREAD.
9243    PC identifies the context at which the condition should be parsed.
9244    If no condition is found, *COND_STRING is set to NULL.
9245    If no thread is found, *THREAD is set to -1.  */
9246
9247 static void
9248 find_condition_and_thread (char *tok, CORE_ADDR pc,
9249                            char **cond_string, int *thread, int *task,
9250                            char **rest)
9251 {
9252   *cond_string = NULL;
9253   *thread = -1;
9254   *task = 0;
9255   *rest = NULL;
9256
9257   while (tok && *tok)
9258     {
9259       char *end_tok;
9260       int toklen;
9261       char *cond_start = NULL;
9262       char *cond_end = NULL;
9263
9264       tok = skip_spaces (tok);
9265
9266       if ((*tok == '"' || *tok == ',') && rest)
9267         {
9268           *rest = savestring (tok, strlen (tok));
9269           return;
9270         }
9271
9272       end_tok = skip_to_space (tok);
9273
9274       toklen = end_tok - tok;
9275
9276       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9277         {
9278           struct expression *expr;
9279
9280           tok = cond_start = end_tok + 1;
9281           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9282           xfree (expr);
9283           cond_end = tok;
9284           *cond_string = savestring (cond_start, cond_end - cond_start);
9285         }
9286       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9287         {
9288           char *tmptok;
9289
9290           tok = end_tok + 1;
9291           tmptok = tok;
9292           *thread = strtol (tok, &tok, 0);
9293           if (tok == tmptok)
9294             error (_("Junk after thread keyword."));
9295           if (!valid_thread_id (*thread))
9296             invalid_thread_id_error (*thread);
9297         }
9298       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9299         {
9300           char *tmptok;
9301
9302           tok = end_tok + 1;
9303           tmptok = tok;
9304           *task = strtol (tok, &tok, 0);
9305           if (tok == tmptok)
9306             error (_("Junk after task keyword."));
9307           if (!valid_task_id (*task))
9308             error (_("Unknown task %d."), *task);
9309         }
9310       else if (rest)
9311         {
9312           *rest = savestring (tok, strlen (tok));
9313           return;
9314         }
9315       else
9316         error (_("Junk at end of arguments."));
9317     }
9318 }
9319
9320 /* Decode a static tracepoint marker spec.  */
9321
9322 static struct symtabs_and_lines
9323 decode_static_tracepoint_spec (char **arg_p)
9324 {
9325   VEC(static_tracepoint_marker_p) *markers = NULL;
9326   struct symtabs_and_lines sals;
9327   struct cleanup *old_chain;
9328   char *p = &(*arg_p)[3];
9329   char *endp;
9330   char *marker_str;
9331   int i;
9332
9333   p = skip_spaces (p);
9334
9335   endp = skip_to_space (p);
9336
9337   marker_str = savestring (p, endp - p);
9338   old_chain = make_cleanup (xfree, marker_str);
9339
9340   markers = target_static_tracepoint_markers_by_strid (marker_str);
9341   if (VEC_empty(static_tracepoint_marker_p, markers))
9342     error (_("No known static tracepoint marker named %s"), marker_str);
9343
9344   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9345   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9346
9347   for (i = 0; i < sals.nelts; i++)
9348     {
9349       struct static_tracepoint_marker *marker;
9350
9351       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9352
9353       init_sal (&sals.sals[i]);
9354
9355       sals.sals[i] = find_pc_line (marker->address, 0);
9356       sals.sals[i].pc = marker->address;
9357
9358       release_static_tracepoint_marker (marker);
9359     }
9360
9361   do_cleanups (old_chain);
9362
9363   *arg_p = endp;
9364   return sals;
9365 }
9366
9367 /* Set a breakpoint.  This function is shared between CLI and MI
9368    functions for setting a breakpoint.  This function has two major
9369    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9370    parameter.  If non-zero, the function will parse arg, extracting
9371    breakpoint location, address and thread.  Otherwise, ARG is just
9372    the location of breakpoint, with condition and thread specified by
9373    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9374    the breakpoint number will be allocated from the internal
9375    breakpoint count.  Returns true if any breakpoint was created;
9376    false otherwise.  */
9377
9378 int
9379 create_breakpoint (struct gdbarch *gdbarch,
9380                    char *arg, char *cond_string,
9381                    int thread, char *extra_string,
9382                    int parse_condition_and_thread,
9383                    int tempflag, enum bptype type_wanted,
9384                    int ignore_count,
9385                    enum auto_boolean pending_break_support,
9386                    const struct breakpoint_ops *ops,
9387                    int from_tty, int enabled, int internal,
9388                    unsigned flags)
9389 {
9390   volatile struct gdb_exception e;
9391   char *copy_arg = NULL;
9392   char *addr_start = arg;
9393   struct linespec_result canonical;
9394   struct cleanup *old_chain;
9395   struct cleanup *bkpt_chain = NULL;
9396   int pending = 0;
9397   int task = 0;
9398   int prev_bkpt_count = breakpoint_count;
9399
9400   gdb_assert (ops != NULL);
9401
9402   init_linespec_result (&canonical);
9403
9404   TRY_CATCH (e, RETURN_MASK_ALL)
9405     {
9406       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9407                                      addr_start, &copy_arg);
9408     }
9409
9410   /* If caller is interested in rc value from parse, set value.  */
9411   switch (e.reason)
9412     {
9413     case GDB_NO_ERROR:
9414       if (VEC_empty (linespec_sals, canonical.sals))
9415         return 0;
9416       break;
9417     case RETURN_ERROR:
9418       switch (e.error)
9419         {
9420         case NOT_FOUND_ERROR:
9421
9422           /* If pending breakpoint support is turned off, throw
9423              error.  */
9424
9425           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9426             throw_exception (e);
9427
9428           exception_print (gdb_stderr, e);
9429
9430           /* If pending breakpoint support is auto query and the user
9431              selects no, then simply return the error code.  */
9432           if (pending_break_support == AUTO_BOOLEAN_AUTO
9433               && !nquery (_("Make %s pending on future shared library load? "),
9434                           bptype_string (type_wanted)))
9435             return 0;
9436
9437           /* At this point, either the user was queried about setting
9438              a pending breakpoint and selected yes, or pending
9439              breakpoint behavior is on and thus a pending breakpoint
9440              is defaulted on behalf of the user.  */
9441           {
9442             struct linespec_sals lsal;
9443
9444             copy_arg = xstrdup (addr_start);
9445             lsal.canonical = xstrdup (copy_arg);
9446             lsal.sals.nelts = 1;
9447             lsal.sals.sals = XNEW (struct symtab_and_line);
9448             init_sal (&lsal.sals.sals[0]);
9449             pending = 1;
9450             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9451           }
9452           break;
9453         default:
9454           throw_exception (e);
9455         }
9456       break;
9457     default:
9458       throw_exception (e);
9459     }
9460
9461   /* Create a chain of things that always need to be cleaned up.  */
9462   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9463
9464   /* ----------------------------- SNIP -----------------------------
9465      Anything added to the cleanup chain beyond this point is assumed
9466      to be part of a breakpoint.  If the breakpoint create succeeds
9467      then the memory is not reclaimed.  */
9468   bkpt_chain = make_cleanup (null_cleanup, 0);
9469
9470   /* Resolve all line numbers to PC's and verify that the addresses
9471      are ok for the target.  */
9472   if (!pending)
9473     {
9474       int ix;
9475       struct linespec_sals *iter;
9476
9477       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9478         breakpoint_sals_to_pc (&iter->sals);
9479     }
9480
9481   /* Fast tracepoints may have additional restrictions on location.  */
9482   if (!pending && type_wanted == bp_fast_tracepoint)
9483     {
9484       int ix;
9485       struct linespec_sals *iter;
9486
9487       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9488         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9489     }
9490
9491   /* Verify that condition can be parsed, before setting any
9492      breakpoints.  Allocate a separate condition expression for each
9493      breakpoint.  */
9494   if (!pending)
9495     {
9496       struct linespec_sals *lsal;
9497
9498       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9499
9500       if (parse_condition_and_thread)
9501         {
9502             char *rest;
9503             /* Here we only parse 'arg' to separate condition
9504                from thread number, so parsing in context of first
9505                sal is OK.  When setting the breakpoint we'll 
9506                re-parse it in context of each sal.  */
9507
9508             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9509                                        &thread, &task, &rest);
9510             if (cond_string)
9511                 make_cleanup (xfree, cond_string);
9512             if (rest)
9513               make_cleanup (xfree, rest);
9514             if (rest)
9515               extra_string = rest;
9516         }
9517       else
9518         {
9519             /* Create a private copy of condition string.  */
9520             if (cond_string)
9521             {
9522                 cond_string = xstrdup (cond_string);
9523                 make_cleanup (xfree, cond_string);
9524             }
9525             /* Create a private copy of any extra string.  */
9526             if (extra_string)
9527               {
9528                 extra_string = xstrdup (extra_string);
9529                 make_cleanup (xfree, extra_string);
9530               }
9531         }
9532
9533       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9534                                    cond_string, extra_string, type_wanted,
9535                                    tempflag ? disp_del : disp_donttouch,
9536                                    thread, task, ignore_count, ops,
9537                                    from_tty, enabled, internal, flags);
9538     }
9539   else
9540     {
9541       struct breakpoint *b;
9542
9543       make_cleanup (xfree, copy_arg);
9544
9545       if (is_tracepoint_type (type_wanted))
9546         {
9547           struct tracepoint *t;
9548
9549           t = XCNEW (struct tracepoint);
9550           b = &t->base;
9551         }
9552       else
9553         b = XNEW (struct breakpoint);
9554
9555       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9556
9557       b->addr_string = copy_arg;
9558       if (parse_condition_and_thread)
9559         b->cond_string = NULL;
9560       else
9561         {
9562           /* Create a private copy of condition string.  */
9563           if (cond_string)
9564             {
9565               cond_string = xstrdup (cond_string);
9566               make_cleanup (xfree, cond_string);
9567             }
9568           b->cond_string = cond_string;
9569         }
9570       b->extra_string = NULL;
9571       b->ignore_count = ignore_count;
9572       b->disposition = tempflag ? disp_del : disp_donttouch;
9573       b->condition_not_parsed = 1;
9574       b->enable_state = enabled ? bp_enabled : bp_disabled;
9575       if ((type_wanted != bp_breakpoint
9576            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9577         b->pspace = current_program_space;
9578
9579       install_breakpoint (internal, b, 0);
9580     }
9581   
9582   if (VEC_length (linespec_sals, canonical.sals) > 1)
9583     {
9584       warning (_("Multiple breakpoints were set.\nUse the "
9585                  "\"delete\" command to delete unwanted breakpoints."));
9586       prev_breakpoint_count = prev_bkpt_count;
9587     }
9588
9589   /* That's it.  Discard the cleanups for data inserted into the
9590      breakpoint.  */
9591   discard_cleanups (bkpt_chain);
9592   /* But cleanup everything else.  */
9593   do_cleanups (old_chain);
9594
9595   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9596   update_global_location_list (1);
9597
9598   return 1;
9599 }
9600
9601 /* Set a breakpoint.
9602    ARG is a string describing breakpoint address,
9603    condition, and thread.
9604    FLAG specifies if a breakpoint is hardware on,
9605    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9606    and BP_TEMPFLAG.  */
9607
9608 static void
9609 break_command_1 (char *arg, int flag, int from_tty)
9610 {
9611   int tempflag = flag & BP_TEMPFLAG;
9612   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9613                              ? bp_hardware_breakpoint
9614                              : bp_breakpoint);
9615   struct breakpoint_ops *ops;
9616   const char *arg_cp = arg;
9617
9618   /* Matching breakpoints on probes.  */
9619   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9620     ops = &bkpt_probe_breakpoint_ops;
9621   else
9622     ops = &bkpt_breakpoint_ops;
9623
9624   create_breakpoint (get_current_arch (),
9625                      arg,
9626                      NULL, 0, NULL, 1 /* parse arg */,
9627                      tempflag, type_wanted,
9628                      0 /* Ignore count */,
9629                      pending_break_support,
9630                      ops,
9631                      from_tty,
9632                      1 /* enabled */,
9633                      0 /* internal */,
9634                      0);
9635 }
9636
9637 /* Helper function for break_command_1 and disassemble_command.  */
9638
9639 void
9640 resolve_sal_pc (struct symtab_and_line *sal)
9641 {
9642   CORE_ADDR pc;
9643
9644   if (sal->pc == 0 && sal->symtab != NULL)
9645     {
9646       if (!find_line_pc (sal->symtab, sal->line, &pc))
9647         error (_("No line %d in file \"%s\"."),
9648                sal->line, sal->symtab->filename);
9649       sal->pc = pc;
9650
9651       /* If this SAL corresponds to a breakpoint inserted using a line
9652          number, then skip the function prologue if necessary.  */
9653       if (sal->explicit_line)
9654         skip_prologue_sal (sal);
9655     }
9656
9657   if (sal->section == 0 && sal->symtab != NULL)
9658     {
9659       struct blockvector *bv;
9660       struct block *b;
9661       struct symbol *sym;
9662
9663       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9664       if (bv != NULL)
9665         {
9666           sym = block_linkage_function (b);
9667           if (sym != NULL)
9668             {
9669               fixup_symbol_section (sym, sal->symtab->objfile);
9670               sal->section = SYMBOL_OBJ_SECTION (sym);
9671             }
9672           else
9673             {
9674               /* It really is worthwhile to have the section, so we'll
9675                  just have to look harder. This case can be executed
9676                  if we have line numbers but no functions (as can
9677                  happen in assembly source).  */
9678
9679               struct minimal_symbol *msym;
9680               struct cleanup *old_chain = save_current_space_and_thread ();
9681
9682               switch_to_program_space_and_thread (sal->pspace);
9683
9684               msym = lookup_minimal_symbol_by_pc (sal->pc);
9685               if (msym)
9686                 sal->section = SYMBOL_OBJ_SECTION (msym);
9687
9688               do_cleanups (old_chain);
9689             }
9690         }
9691     }
9692 }
9693
9694 void
9695 break_command (char *arg, int from_tty)
9696 {
9697   break_command_1 (arg, 0, from_tty);
9698 }
9699
9700 void
9701 tbreak_command (char *arg, int from_tty)
9702 {
9703   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9704 }
9705
9706 static void
9707 hbreak_command (char *arg, int from_tty)
9708 {
9709   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9710 }
9711
9712 static void
9713 thbreak_command (char *arg, int from_tty)
9714 {
9715   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9716 }
9717
9718 static void
9719 stop_command (char *arg, int from_tty)
9720 {
9721   printf_filtered (_("Specify the type of breakpoint to set.\n\
9722 Usage: stop in <function | address>\n\
9723        stop at <line>\n"));
9724 }
9725
9726 static void
9727 stopin_command (char *arg, int from_tty)
9728 {
9729   int badInput = 0;
9730
9731   if (arg == (char *) NULL)
9732     badInput = 1;
9733   else if (*arg != '*')
9734     {
9735       char *argptr = arg;
9736       int hasColon = 0;
9737
9738       /* Look for a ':'.  If this is a line number specification, then
9739          say it is bad, otherwise, it should be an address or
9740          function/method name.  */
9741       while (*argptr && !hasColon)
9742         {
9743           hasColon = (*argptr == ':');
9744           argptr++;
9745         }
9746
9747       if (hasColon)
9748         badInput = (*argptr != ':');    /* Not a class::method */
9749       else
9750         badInput = isdigit (*arg);      /* a simple line number */
9751     }
9752
9753   if (badInput)
9754     printf_filtered (_("Usage: stop in <function | address>\n"));
9755   else
9756     break_command_1 (arg, 0, from_tty);
9757 }
9758
9759 static void
9760 stopat_command (char *arg, int from_tty)
9761 {
9762   int badInput = 0;
9763
9764   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9765     badInput = 1;
9766   else
9767     {
9768       char *argptr = arg;
9769       int hasColon = 0;
9770
9771       /* Look for a ':'.  If there is a '::' then get out, otherwise
9772          it is probably a line number.  */
9773       while (*argptr && !hasColon)
9774         {
9775           hasColon = (*argptr == ':');
9776           argptr++;
9777         }
9778
9779       if (hasColon)
9780         badInput = (*argptr == ':');    /* we have class::method */
9781       else
9782         badInput = !isdigit (*arg);     /* not a line number */
9783     }
9784
9785   if (badInput)
9786     printf_filtered (_("Usage: stop at <line>\n"));
9787   else
9788     break_command_1 (arg, 0, from_tty);
9789 }
9790
9791 void dprintf_command (char *arg, int from_tty);
9792
9793 /* The dynamic printf command is mostly like a regular breakpoint, but
9794    with a prewired command list consisting of a single output command,
9795    built from extra arguments supplied on the dprintf command
9796    line.  */
9797
9798 void
9799 dprintf_command (char *arg, int from_tty)
9800 {
9801   create_breakpoint (get_current_arch (),
9802                      arg,
9803                      NULL, 0, NULL, 1 /* parse arg */,
9804                      0, bp_dprintf,
9805                      0 /* Ignore count */,
9806                      pending_break_support,
9807                      &dprintf_breakpoint_ops,
9808                      from_tty,
9809                      1 /* enabled */,
9810                      0 /* internal */,
9811                      0);
9812 }
9813
9814 static void
9815 agent_printf_command (char *arg, int from_tty)
9816 {
9817   error (_("May only run agent-printf on the target"));
9818 }
9819
9820 /* Implement the "breakpoint_hit" breakpoint_ops method for
9821    ranged breakpoints.  */
9822
9823 static int
9824 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9825                                   struct address_space *aspace,
9826                                   CORE_ADDR bp_addr,
9827                                   const struct target_waitstatus *ws)
9828 {
9829   if (ws->kind != TARGET_WAITKIND_STOPPED
9830       || ws->value.sig != GDB_SIGNAL_TRAP)
9831     return 0;
9832
9833   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9834                                          bl->length, aspace, bp_addr);
9835 }
9836
9837 /* Implement the "resources_needed" breakpoint_ops method for
9838    ranged breakpoints.  */
9839
9840 static int
9841 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9842 {
9843   return target_ranged_break_num_registers ();
9844 }
9845
9846 /* Implement the "print_it" breakpoint_ops method for
9847    ranged breakpoints.  */
9848
9849 static enum print_stop_action
9850 print_it_ranged_breakpoint (bpstat bs)
9851 {
9852   struct breakpoint *b = bs->breakpoint_at;
9853   struct bp_location *bl = b->loc;
9854   struct ui_out *uiout = current_uiout;
9855
9856   gdb_assert (b->type == bp_hardware_breakpoint);
9857
9858   /* Ranged breakpoints have only one location.  */
9859   gdb_assert (bl && bl->next == NULL);
9860
9861   annotate_breakpoint (b->number);
9862   if (b->disposition == disp_del)
9863     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9864   else
9865     ui_out_text (uiout, "\nRanged breakpoint ");
9866   if (ui_out_is_mi_like_p (uiout))
9867     {
9868       ui_out_field_string (uiout, "reason",
9869                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9870       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9871     }
9872   ui_out_field_int (uiout, "bkptno", b->number);
9873   ui_out_text (uiout, ", ");
9874
9875   return PRINT_SRC_AND_LOC;
9876 }
9877
9878 /* Implement the "print_one" breakpoint_ops method for
9879    ranged breakpoints.  */
9880
9881 static void
9882 print_one_ranged_breakpoint (struct breakpoint *b,
9883                              struct bp_location **last_loc)
9884 {
9885   struct bp_location *bl = b->loc;
9886   struct value_print_options opts;
9887   struct ui_out *uiout = current_uiout;
9888
9889   /* Ranged breakpoints have only one location.  */
9890   gdb_assert (bl && bl->next == NULL);
9891
9892   get_user_print_options (&opts);
9893
9894   if (opts.addressprint)
9895     /* We don't print the address range here, it will be printed later
9896        by print_one_detail_ranged_breakpoint.  */
9897     ui_out_field_skip (uiout, "addr");
9898   annotate_field (5);
9899   print_breakpoint_location (b, bl);
9900   *last_loc = bl;
9901 }
9902
9903 /* Implement the "print_one_detail" breakpoint_ops method for
9904    ranged breakpoints.  */
9905
9906 static void
9907 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9908                                     struct ui_out *uiout)
9909 {
9910   CORE_ADDR address_start, address_end;
9911   struct bp_location *bl = b->loc;
9912   struct ui_file *stb = mem_fileopen ();
9913   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9914
9915   gdb_assert (bl);
9916
9917   address_start = bl->address;
9918   address_end = address_start + bl->length - 1;
9919
9920   ui_out_text (uiout, "\taddress range: ");
9921   fprintf_unfiltered (stb, "[%s, %s]",
9922                       print_core_address (bl->gdbarch, address_start),
9923                       print_core_address (bl->gdbarch, address_end));
9924   ui_out_field_stream (uiout, "addr", stb);
9925   ui_out_text (uiout, "\n");
9926
9927   do_cleanups (cleanup);
9928 }
9929
9930 /* Implement the "print_mention" breakpoint_ops method for
9931    ranged breakpoints.  */
9932
9933 static void
9934 print_mention_ranged_breakpoint (struct breakpoint *b)
9935 {
9936   struct bp_location *bl = b->loc;
9937   struct ui_out *uiout = current_uiout;
9938
9939   gdb_assert (bl);
9940   gdb_assert (b->type == bp_hardware_breakpoint);
9941
9942   if (ui_out_is_mi_like_p (uiout))
9943     return;
9944
9945   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9946                    b->number, paddress (bl->gdbarch, bl->address),
9947                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9948 }
9949
9950 /* Implement the "print_recreate" breakpoint_ops method for
9951    ranged breakpoints.  */
9952
9953 static void
9954 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9955 {
9956   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9957                       b->addr_string_range_end);
9958   print_recreate_thread (b, fp);
9959 }
9960
9961 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9962
9963 static struct breakpoint_ops ranged_breakpoint_ops;
9964
9965 /* Find the address where the end of the breakpoint range should be
9966    placed, given the SAL of the end of the range.  This is so that if
9967    the user provides a line number, the end of the range is set to the
9968    last instruction of the given line.  */
9969
9970 static CORE_ADDR
9971 find_breakpoint_range_end (struct symtab_and_line sal)
9972 {
9973   CORE_ADDR end;
9974
9975   /* If the user provided a PC value, use it.  Otherwise,
9976      find the address of the end of the given location.  */
9977   if (sal.explicit_pc)
9978     end = sal.pc;
9979   else
9980     {
9981       int ret;
9982       CORE_ADDR start;
9983
9984       ret = find_line_pc_range (sal, &start, &end);
9985       if (!ret)
9986         error (_("Could not find location of the end of the range."));
9987
9988       /* find_line_pc_range returns the start of the next line.  */
9989       end--;
9990     }
9991
9992   return end;
9993 }
9994
9995 /* Implement the "break-range" CLI command.  */
9996
9997 static void
9998 break_range_command (char *arg, int from_tty)
9999 {
10000   char *arg_start, *addr_string_start, *addr_string_end;
10001   struct linespec_result canonical_start, canonical_end;
10002   int bp_count, can_use_bp, length;
10003   CORE_ADDR end;
10004   struct breakpoint *b;
10005   struct symtab_and_line sal_start, sal_end;
10006   struct cleanup *cleanup_bkpt;
10007   struct linespec_sals *lsal_start, *lsal_end;
10008
10009   /* We don't support software ranged breakpoints.  */
10010   if (target_ranged_break_num_registers () < 0)
10011     error (_("This target does not support hardware ranged breakpoints."));
10012
10013   bp_count = hw_breakpoint_used_count ();
10014   bp_count += target_ranged_break_num_registers ();
10015   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10016                                                    bp_count, 0);
10017   if (can_use_bp < 0)
10018     error (_("Hardware breakpoints used exceeds limit."));
10019
10020   arg = skip_spaces (arg);
10021   if (arg == NULL || arg[0] == '\0')
10022     error(_("No address range specified."));
10023
10024   init_linespec_result (&canonical_start);
10025
10026   arg_start = arg;
10027   parse_breakpoint_sals (&arg, &canonical_start);
10028
10029   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10030
10031   if (arg[0] != ',')
10032     error (_("Too few arguments."));
10033   else if (VEC_empty (linespec_sals, canonical_start.sals))
10034     error (_("Could not find location of the beginning of the range."));
10035
10036   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10037
10038   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10039       || lsal_start->sals.nelts != 1)
10040     error (_("Cannot create a ranged breakpoint with multiple locations."));
10041
10042   sal_start = lsal_start->sals.sals[0];
10043   addr_string_start = savestring (arg_start, arg - arg_start);
10044   make_cleanup (xfree, addr_string_start);
10045
10046   arg++;        /* Skip the comma.  */
10047   arg = skip_spaces (arg);
10048
10049   /* Parse the end location.  */
10050
10051   init_linespec_result (&canonical_end);
10052   arg_start = arg;
10053
10054   /* We call decode_line_full directly here instead of using
10055      parse_breakpoint_sals because we need to specify the start location's
10056      symtab and line as the default symtab and line for the end of the
10057      range.  This makes it possible to have ranges like "foo.c:27, +14",
10058      where +14 means 14 lines from the start location.  */
10059   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10060                     sal_start.symtab, sal_start.line,
10061                     &canonical_end, NULL, NULL);
10062
10063   make_cleanup_destroy_linespec_result (&canonical_end);
10064
10065   if (VEC_empty (linespec_sals, canonical_end.sals))
10066     error (_("Could not find location of the end of the range."));
10067
10068   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10069   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10070       || lsal_end->sals.nelts != 1)
10071     error (_("Cannot create a ranged breakpoint with multiple locations."));
10072
10073   sal_end = lsal_end->sals.sals[0];
10074   addr_string_end = savestring (arg_start, arg - arg_start);
10075   make_cleanup (xfree, addr_string_end);
10076
10077   end = find_breakpoint_range_end (sal_end);
10078   if (sal_start.pc > end)
10079     error (_("Invalid address range, end precedes start."));
10080
10081   length = end - sal_start.pc + 1;
10082   if (length < 0)
10083     /* Length overflowed.  */
10084     error (_("Address range too large."));
10085   else if (length == 1)
10086     {
10087       /* This range is simple enough to be handled by
10088          the `hbreak' command.  */
10089       hbreak_command (addr_string_start, 1);
10090
10091       do_cleanups (cleanup_bkpt);
10092
10093       return;
10094     }
10095
10096   /* Now set up the breakpoint.  */
10097   b = set_raw_breakpoint (get_current_arch (), sal_start,
10098                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10099   set_breakpoint_count (breakpoint_count + 1);
10100   b->number = breakpoint_count;
10101   b->disposition = disp_donttouch;
10102   b->addr_string = xstrdup (addr_string_start);
10103   b->addr_string_range_end = xstrdup (addr_string_end);
10104   b->loc->length = length;
10105
10106   do_cleanups (cleanup_bkpt);
10107
10108   mention (b);
10109   observer_notify_breakpoint_created (b);
10110   update_global_location_list (1);
10111 }
10112
10113 /*  Return non-zero if EXP is verified as constant.  Returned zero
10114     means EXP is variable.  Also the constant detection may fail for
10115     some constant expressions and in such case still falsely return
10116     zero.  */
10117
10118 static int
10119 watchpoint_exp_is_const (const struct expression *exp)
10120 {
10121   int i = exp->nelts;
10122
10123   while (i > 0)
10124     {
10125       int oplenp, argsp;
10126
10127       /* We are only interested in the descriptor of each element.  */
10128       operator_length (exp, i, &oplenp, &argsp);
10129       i -= oplenp;
10130
10131       switch (exp->elts[i].opcode)
10132         {
10133         case BINOP_ADD:
10134         case BINOP_SUB:
10135         case BINOP_MUL:
10136         case BINOP_DIV:
10137         case BINOP_REM:
10138         case BINOP_MOD:
10139         case BINOP_LSH:
10140         case BINOP_RSH:
10141         case BINOP_LOGICAL_AND:
10142         case BINOP_LOGICAL_OR:
10143         case BINOP_BITWISE_AND:
10144         case BINOP_BITWISE_IOR:
10145         case BINOP_BITWISE_XOR:
10146         case BINOP_EQUAL:
10147         case BINOP_NOTEQUAL:
10148         case BINOP_LESS:
10149         case BINOP_GTR:
10150         case BINOP_LEQ:
10151         case BINOP_GEQ:
10152         case BINOP_REPEAT:
10153         case BINOP_COMMA:
10154         case BINOP_EXP:
10155         case BINOP_MIN:
10156         case BINOP_MAX:
10157         case BINOP_INTDIV:
10158         case BINOP_CONCAT:
10159         case BINOP_IN:
10160         case BINOP_RANGE:
10161         case TERNOP_COND:
10162         case TERNOP_SLICE:
10163         case TERNOP_SLICE_COUNT:
10164
10165         case OP_LONG:
10166         case OP_DOUBLE:
10167         case OP_DECFLOAT:
10168         case OP_LAST:
10169         case OP_COMPLEX:
10170         case OP_STRING:
10171         case OP_BITSTRING:
10172         case OP_ARRAY:
10173         case OP_TYPE:
10174         case OP_TYPEOF:
10175         case OP_DECLTYPE:
10176         case OP_NAME:
10177         case OP_OBJC_NSSTRING:
10178
10179         case UNOP_NEG:
10180         case UNOP_LOGICAL_NOT:
10181         case UNOP_COMPLEMENT:
10182         case UNOP_ADDR:
10183         case UNOP_HIGH:
10184         case UNOP_CAST:
10185
10186         case UNOP_CAST_TYPE:
10187         case UNOP_REINTERPRET_CAST:
10188         case UNOP_DYNAMIC_CAST:
10189           /* Unary, binary and ternary operators: We have to check
10190              their operands.  If they are constant, then so is the
10191              result of that operation.  For instance, if A and B are
10192              determined to be constants, then so is "A + B".
10193
10194              UNOP_IND is one exception to the rule above, because the
10195              value of *ADDR is not necessarily a constant, even when
10196              ADDR is.  */
10197           break;
10198
10199         case OP_VAR_VALUE:
10200           /* Check whether the associated symbol is a constant.
10201
10202              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10203              possible that a buggy compiler could mark a variable as
10204              constant even when it is not, and TYPE_CONST would return
10205              true in this case, while SYMBOL_CLASS wouldn't.
10206
10207              We also have to check for function symbols because they
10208              are always constant.  */
10209           {
10210             struct symbol *s = exp->elts[i + 2].symbol;
10211
10212             if (SYMBOL_CLASS (s) != LOC_BLOCK
10213                 && SYMBOL_CLASS (s) != LOC_CONST
10214                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10215               return 0;
10216             break;
10217           }
10218
10219         /* The default action is to return 0 because we are using
10220            the optimistic approach here: If we don't know something,
10221            then it is not a constant.  */
10222         default:
10223           return 0;
10224         }
10225     }
10226
10227   return 1;
10228 }
10229
10230 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10231
10232 static void
10233 dtor_watchpoint (struct breakpoint *self)
10234 {
10235   struct watchpoint *w = (struct watchpoint *) self;
10236
10237   xfree (w->cond_exp);
10238   xfree (w->exp);
10239   xfree (w->exp_string);
10240   xfree (w->exp_string_reparse);
10241   value_free (w->val);
10242
10243   base_breakpoint_ops.dtor (self);
10244 }
10245
10246 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10247
10248 static void
10249 re_set_watchpoint (struct breakpoint *b)
10250 {
10251   struct watchpoint *w = (struct watchpoint *) b;
10252
10253   /* Watchpoint can be either on expression using entirely global
10254      variables, or it can be on local variables.
10255
10256      Watchpoints of the first kind are never auto-deleted, and even
10257      persist across program restarts.  Since they can use variables
10258      from shared libraries, we need to reparse expression as libraries
10259      are loaded and unloaded.
10260
10261      Watchpoints on local variables can also change meaning as result
10262      of solib event.  For example, if a watchpoint uses both a local
10263      and a global variables in expression, it's a local watchpoint,
10264      but unloading of a shared library will make the expression
10265      invalid.  This is not a very common use case, but we still
10266      re-evaluate expression, to avoid surprises to the user.
10267
10268      Note that for local watchpoints, we re-evaluate it only if
10269      watchpoints frame id is still valid.  If it's not, it means the
10270      watchpoint is out of scope and will be deleted soon.  In fact,
10271      I'm not sure we'll ever be called in this case.
10272
10273      If a local watchpoint's frame id is still valid, then
10274      w->exp_valid_block is likewise valid, and we can safely use it.
10275
10276      Don't do anything about disabled watchpoints, since they will be
10277      reevaluated again when enabled.  */
10278   update_watchpoint (w, 1 /* reparse */);
10279 }
10280
10281 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10282
10283 static int
10284 insert_watchpoint (struct bp_location *bl)
10285 {
10286   struct watchpoint *w = (struct watchpoint *) bl->owner;
10287   int length = w->exact ? 1 : bl->length;
10288
10289   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10290                                    w->cond_exp);
10291 }
10292
10293 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10294
10295 static int
10296 remove_watchpoint (struct bp_location *bl)
10297 {
10298   struct watchpoint *w = (struct watchpoint *) bl->owner;
10299   int length = w->exact ? 1 : bl->length;
10300
10301   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10302                                    w->cond_exp);
10303 }
10304
10305 static int
10306 breakpoint_hit_watchpoint (const struct bp_location *bl,
10307                            struct address_space *aspace, CORE_ADDR bp_addr,
10308                            const struct target_waitstatus *ws)
10309 {
10310   struct breakpoint *b = bl->owner;
10311   struct watchpoint *w = (struct watchpoint *) b;
10312
10313   /* Continuable hardware watchpoints are treated as non-existent if the
10314      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10315      some data address).  Otherwise gdb won't stop on a break instruction
10316      in the code (not from a breakpoint) when a hardware watchpoint has
10317      been defined.  Also skip watchpoints which we know did not trigger
10318      (did not match the data address).  */
10319   if (is_hardware_watchpoint (b)
10320       && w->watchpoint_triggered == watch_triggered_no)
10321     return 0;
10322
10323   return 1;
10324 }
10325
10326 static void
10327 check_status_watchpoint (bpstat bs)
10328 {
10329   gdb_assert (is_watchpoint (bs->breakpoint_at));
10330
10331   bpstat_check_watchpoint (bs);
10332 }
10333
10334 /* Implement the "resources_needed" breakpoint_ops method for
10335    hardware watchpoints.  */
10336
10337 static int
10338 resources_needed_watchpoint (const struct bp_location *bl)
10339 {
10340   struct watchpoint *w = (struct watchpoint *) bl->owner;
10341   int length = w->exact? 1 : bl->length;
10342
10343   return target_region_ok_for_hw_watchpoint (bl->address, length);
10344 }
10345
10346 /* Implement the "works_in_software_mode" breakpoint_ops method for
10347    hardware watchpoints.  */
10348
10349 static int
10350 works_in_software_mode_watchpoint (const struct breakpoint *b)
10351 {
10352   /* Read and access watchpoints only work with hardware support.  */
10353   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10354 }
10355
10356 static enum print_stop_action
10357 print_it_watchpoint (bpstat bs)
10358 {
10359   struct cleanup *old_chain;
10360   struct breakpoint *b;
10361   const struct bp_location *bl;
10362   struct ui_file *stb;
10363   enum print_stop_action result;
10364   struct watchpoint *w;
10365   struct ui_out *uiout = current_uiout;
10366
10367   gdb_assert (bs->bp_location_at != NULL);
10368
10369   bl = bs->bp_location_at;
10370   b = bs->breakpoint_at;
10371   w = (struct watchpoint *) b;
10372
10373   stb = mem_fileopen ();
10374   old_chain = make_cleanup_ui_file_delete (stb);
10375
10376   switch (b->type)
10377     {
10378     case bp_watchpoint:
10379     case bp_hardware_watchpoint:
10380       annotate_watchpoint (b->number);
10381       if (ui_out_is_mi_like_p (uiout))
10382         ui_out_field_string
10383           (uiout, "reason",
10384            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10385       mention (b);
10386       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10387       ui_out_text (uiout, "\nOld value = ");
10388       watchpoint_value_print (bs->old_val, stb);
10389       ui_out_field_stream (uiout, "old", stb);
10390       ui_out_text (uiout, "\nNew value = ");
10391       watchpoint_value_print (w->val, stb);
10392       ui_out_field_stream (uiout, "new", stb);
10393       ui_out_text (uiout, "\n");
10394       /* More than one watchpoint may have been triggered.  */
10395       result = PRINT_UNKNOWN;
10396       break;
10397
10398     case bp_read_watchpoint:
10399       if (ui_out_is_mi_like_p (uiout))
10400         ui_out_field_string
10401           (uiout, "reason",
10402            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10403       mention (b);
10404       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10405       ui_out_text (uiout, "\nValue = ");
10406       watchpoint_value_print (w->val, stb);
10407       ui_out_field_stream (uiout, "value", stb);
10408       ui_out_text (uiout, "\n");
10409       result = PRINT_UNKNOWN;
10410       break;
10411
10412     case bp_access_watchpoint:
10413       if (bs->old_val != NULL)
10414         {
10415           annotate_watchpoint (b->number);
10416           if (ui_out_is_mi_like_p (uiout))
10417             ui_out_field_string
10418               (uiout, "reason",
10419                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10420           mention (b);
10421           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10422           ui_out_text (uiout, "\nOld value = ");
10423           watchpoint_value_print (bs->old_val, stb);
10424           ui_out_field_stream (uiout, "old", stb);
10425           ui_out_text (uiout, "\nNew value = ");
10426         }
10427       else
10428         {
10429           mention (b);
10430           if (ui_out_is_mi_like_p (uiout))
10431             ui_out_field_string
10432               (uiout, "reason",
10433                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10434           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10435           ui_out_text (uiout, "\nValue = ");
10436         }
10437       watchpoint_value_print (w->val, stb);
10438       ui_out_field_stream (uiout, "new", stb);
10439       ui_out_text (uiout, "\n");
10440       result = PRINT_UNKNOWN;
10441       break;
10442     default:
10443       result = PRINT_UNKNOWN;
10444     }
10445
10446   do_cleanups (old_chain);
10447   return result;
10448 }
10449
10450 /* Implement the "print_mention" breakpoint_ops method for hardware
10451    watchpoints.  */
10452
10453 static void
10454 print_mention_watchpoint (struct breakpoint *b)
10455 {
10456   struct cleanup *ui_out_chain;
10457   struct watchpoint *w = (struct watchpoint *) b;
10458   struct ui_out *uiout = current_uiout;
10459
10460   switch (b->type)
10461     {
10462     case bp_watchpoint:
10463       ui_out_text (uiout, "Watchpoint ");
10464       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10465       break;
10466     case bp_hardware_watchpoint:
10467       ui_out_text (uiout, "Hardware watchpoint ");
10468       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10469       break;
10470     case bp_read_watchpoint:
10471       ui_out_text (uiout, "Hardware read watchpoint ");
10472       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10473       break;
10474     case bp_access_watchpoint:
10475       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10476       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10477       break;
10478     default:
10479       internal_error (__FILE__, __LINE__,
10480                       _("Invalid hardware watchpoint type."));
10481     }
10482
10483   ui_out_field_int (uiout, "number", b->number);
10484   ui_out_text (uiout, ": ");
10485   ui_out_field_string (uiout, "exp", w->exp_string);
10486   do_cleanups (ui_out_chain);
10487 }
10488
10489 /* Implement the "print_recreate" breakpoint_ops method for
10490    watchpoints.  */
10491
10492 static void
10493 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10494 {
10495   struct watchpoint *w = (struct watchpoint *) b;
10496
10497   switch (b->type)
10498     {
10499     case bp_watchpoint:
10500     case bp_hardware_watchpoint:
10501       fprintf_unfiltered (fp, "watch");
10502       break;
10503     case bp_read_watchpoint:
10504       fprintf_unfiltered (fp, "rwatch");
10505       break;
10506     case bp_access_watchpoint:
10507       fprintf_unfiltered (fp, "awatch");
10508       break;
10509     default:
10510       internal_error (__FILE__, __LINE__,
10511                       _("Invalid watchpoint type."));
10512     }
10513
10514   fprintf_unfiltered (fp, " %s", w->exp_string);
10515   print_recreate_thread (b, fp);
10516 }
10517
10518 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10519
10520 static struct breakpoint_ops watchpoint_breakpoint_ops;
10521
10522 /* Implement the "insert" breakpoint_ops method for
10523    masked hardware watchpoints.  */
10524
10525 static int
10526 insert_masked_watchpoint (struct bp_location *bl)
10527 {
10528   struct watchpoint *w = (struct watchpoint *) bl->owner;
10529
10530   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10531                                         bl->watchpoint_type);
10532 }
10533
10534 /* Implement the "remove" breakpoint_ops method for
10535    masked hardware watchpoints.  */
10536
10537 static int
10538 remove_masked_watchpoint (struct bp_location *bl)
10539 {
10540   struct watchpoint *w = (struct watchpoint *) bl->owner;
10541
10542   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10543                                         bl->watchpoint_type);
10544 }
10545
10546 /* Implement the "resources_needed" breakpoint_ops method for
10547    masked hardware watchpoints.  */
10548
10549 static int
10550 resources_needed_masked_watchpoint (const struct bp_location *bl)
10551 {
10552   struct watchpoint *w = (struct watchpoint *) bl->owner;
10553
10554   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10555 }
10556
10557 /* Implement the "works_in_software_mode" breakpoint_ops method for
10558    masked hardware watchpoints.  */
10559
10560 static int
10561 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10562 {
10563   return 0;
10564 }
10565
10566 /* Implement the "print_it" breakpoint_ops method for
10567    masked hardware watchpoints.  */
10568
10569 static enum print_stop_action
10570 print_it_masked_watchpoint (bpstat bs)
10571 {
10572   struct breakpoint *b = bs->breakpoint_at;
10573   struct ui_out *uiout = current_uiout;
10574
10575   /* Masked watchpoints have only one location.  */
10576   gdb_assert (b->loc && b->loc->next == NULL);
10577
10578   switch (b->type)
10579     {
10580     case bp_hardware_watchpoint:
10581       annotate_watchpoint (b->number);
10582       if (ui_out_is_mi_like_p (uiout))
10583         ui_out_field_string
10584           (uiout, "reason",
10585            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10586       break;
10587
10588     case bp_read_watchpoint:
10589       if (ui_out_is_mi_like_p (uiout))
10590         ui_out_field_string
10591           (uiout, "reason",
10592            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10593       break;
10594
10595     case bp_access_watchpoint:
10596       if (ui_out_is_mi_like_p (uiout))
10597         ui_out_field_string
10598           (uiout, "reason",
10599            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10600       break;
10601     default:
10602       internal_error (__FILE__, __LINE__,
10603                       _("Invalid hardware watchpoint type."));
10604     }
10605
10606   mention (b);
10607   ui_out_text (uiout, _("\n\
10608 Check the underlying instruction at PC for the memory\n\
10609 address and value which triggered this watchpoint.\n"));
10610   ui_out_text (uiout, "\n");
10611
10612   /* More than one watchpoint may have been triggered.  */
10613   return PRINT_UNKNOWN;
10614 }
10615
10616 /* Implement the "print_one_detail" breakpoint_ops method for
10617    masked hardware watchpoints.  */
10618
10619 static void
10620 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10621                                     struct ui_out *uiout)
10622 {
10623   struct watchpoint *w = (struct watchpoint *) b;
10624
10625   /* Masked watchpoints have only one location.  */
10626   gdb_assert (b->loc && b->loc->next == NULL);
10627
10628   ui_out_text (uiout, "\tmask ");
10629   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10630   ui_out_text (uiout, "\n");
10631 }
10632
10633 /* Implement the "print_mention" breakpoint_ops method for
10634    masked hardware watchpoints.  */
10635
10636 static void
10637 print_mention_masked_watchpoint (struct breakpoint *b)
10638 {
10639   struct watchpoint *w = (struct watchpoint *) b;
10640   struct ui_out *uiout = current_uiout;
10641   struct cleanup *ui_out_chain;
10642
10643   switch (b->type)
10644     {
10645     case bp_hardware_watchpoint:
10646       ui_out_text (uiout, "Masked hardware watchpoint ");
10647       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10648       break;
10649     case bp_read_watchpoint:
10650       ui_out_text (uiout, "Masked hardware read watchpoint ");
10651       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10652       break;
10653     case bp_access_watchpoint:
10654       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10655       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10656       break;
10657     default:
10658       internal_error (__FILE__, __LINE__,
10659                       _("Invalid hardware watchpoint type."));
10660     }
10661
10662   ui_out_field_int (uiout, "number", b->number);
10663   ui_out_text (uiout, ": ");
10664   ui_out_field_string (uiout, "exp", w->exp_string);
10665   do_cleanups (ui_out_chain);
10666 }
10667
10668 /* Implement the "print_recreate" breakpoint_ops method for
10669    masked hardware watchpoints.  */
10670
10671 static void
10672 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10673 {
10674   struct watchpoint *w = (struct watchpoint *) b;
10675   char tmp[40];
10676
10677   switch (b->type)
10678     {
10679     case bp_hardware_watchpoint:
10680       fprintf_unfiltered (fp, "watch");
10681       break;
10682     case bp_read_watchpoint:
10683       fprintf_unfiltered (fp, "rwatch");
10684       break;
10685     case bp_access_watchpoint:
10686       fprintf_unfiltered (fp, "awatch");
10687       break;
10688     default:
10689       internal_error (__FILE__, __LINE__,
10690                       _("Invalid hardware watchpoint type."));
10691     }
10692
10693   sprintf_vma (tmp, w->hw_wp_mask);
10694   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10695   print_recreate_thread (b, fp);
10696 }
10697
10698 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10699
10700 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10701
10702 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10703
10704 static int
10705 is_masked_watchpoint (const struct breakpoint *b)
10706 {
10707   return b->ops == &masked_watchpoint_breakpoint_ops;
10708 }
10709
10710 /* accessflag:  hw_write:  watch write, 
10711                 hw_read:   watch read, 
10712                 hw_access: watch access (read or write) */
10713 static void
10714 watch_command_1 (char *arg, int accessflag, int from_tty,
10715                  int just_location, int internal)
10716 {
10717   volatile struct gdb_exception e;
10718   struct breakpoint *b, *scope_breakpoint = NULL;
10719   struct expression *exp;
10720   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10721   struct value *val, *mark, *result;
10722   struct frame_info *frame;
10723   char *exp_start = NULL;
10724   char *exp_end = NULL;
10725   char *tok, *end_tok;
10726   int toklen = -1;
10727   char *cond_start = NULL;
10728   char *cond_end = NULL;
10729   enum bptype bp_type;
10730   int thread = -1;
10731   int pc = 0;
10732   /* Flag to indicate whether we are going to use masks for
10733      the hardware watchpoint.  */
10734   int use_mask = 0;
10735   CORE_ADDR mask = 0;
10736   struct watchpoint *w;
10737
10738   /* Make sure that we actually have parameters to parse.  */
10739   if (arg != NULL && arg[0] != '\0')
10740     {
10741       char *value_start;
10742
10743       /* Look for "parameter value" pairs at the end
10744          of the arguments string.  */
10745       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10746         {
10747           /* Skip whitespace at the end of the argument list.  */
10748           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10749             tok--;
10750
10751           /* Find the beginning of the last token.
10752              This is the value of the parameter.  */
10753           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10754             tok--;
10755           value_start = tok + 1;
10756
10757           /* Skip whitespace.  */
10758           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10759             tok--;
10760
10761           end_tok = tok;
10762
10763           /* Find the beginning of the second to last token.
10764              This is the parameter itself.  */
10765           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10766             tok--;
10767           tok++;
10768           toklen = end_tok - tok + 1;
10769
10770           if (toklen == 6 && !strncmp (tok, "thread", 6))
10771             {
10772               /* At this point we've found a "thread" token, which means
10773                  the user is trying to set a watchpoint that triggers
10774                  only in a specific thread.  */
10775               char *endp;
10776
10777               if (thread != -1)
10778                 error(_("You can specify only one thread."));
10779
10780               /* Extract the thread ID from the next token.  */
10781               thread = strtol (value_start, &endp, 0);
10782
10783               /* Check if the user provided a valid numeric value for the
10784                  thread ID.  */
10785               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10786                 error (_("Invalid thread ID specification %s."), value_start);
10787
10788               /* Check if the thread actually exists.  */
10789               if (!valid_thread_id (thread))
10790                 invalid_thread_id_error (thread);
10791             }
10792           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10793             {
10794               /* We've found a "mask" token, which means the user wants to
10795                  create a hardware watchpoint that is going to have the mask
10796                  facility.  */
10797               struct value *mask_value, *mark;
10798
10799               if (use_mask)
10800                 error(_("You can specify only one mask."));
10801
10802               use_mask = just_location = 1;
10803
10804               mark = value_mark ();
10805               mask_value = parse_to_comma_and_eval (&value_start);
10806               mask = value_as_address (mask_value);
10807               value_free_to_mark (mark);
10808             }
10809           else
10810             /* We didn't recognize what we found.  We should stop here.  */
10811             break;
10812
10813           /* Truncate the string and get rid of the "parameter value" pair before
10814              the arguments string is parsed by the parse_exp_1 function.  */
10815           *tok = '\0';
10816         }
10817     }
10818
10819   /* Parse the rest of the arguments.  */
10820   innermost_block = NULL;
10821   exp_start = arg;
10822   exp = parse_exp_1 (&arg, 0, 0, 0);
10823   exp_end = arg;
10824   /* Remove trailing whitespace from the expression before saving it.
10825      This makes the eventual display of the expression string a bit
10826      prettier.  */
10827   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10828     --exp_end;
10829
10830   /* Checking if the expression is not constant.  */
10831   if (watchpoint_exp_is_const (exp))
10832     {
10833       int len;
10834
10835       len = exp_end - exp_start;
10836       while (len > 0 && isspace (exp_start[len - 1]))
10837         len--;
10838       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10839     }
10840
10841   exp_valid_block = innermost_block;
10842   mark = value_mark ();
10843   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10844
10845   if (just_location)
10846     {
10847       int ret;
10848
10849       exp_valid_block = NULL;
10850       val = value_addr (result);
10851       release_value (val);
10852       value_free_to_mark (mark);
10853
10854       if (use_mask)
10855         {
10856           ret = target_masked_watch_num_registers (value_as_address (val),
10857                                                    mask);
10858           if (ret == -1)
10859             error (_("This target does not support masked watchpoints."));
10860           else if (ret == -2)
10861             error (_("Invalid mask or memory region."));
10862         }
10863     }
10864   else if (val != NULL)
10865     release_value (val);
10866
10867   tok = skip_spaces (arg);
10868   end_tok = skip_to_space (tok);
10869
10870   toklen = end_tok - tok;
10871   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10872     {
10873       struct expression *cond;
10874
10875       innermost_block = NULL;
10876       tok = cond_start = end_tok + 1;
10877       cond = parse_exp_1 (&tok, 0, 0, 0);
10878
10879       /* The watchpoint expression may not be local, but the condition
10880          may still be.  E.g.: `watch global if local > 0'.  */
10881       cond_exp_valid_block = innermost_block;
10882
10883       xfree (cond);
10884       cond_end = tok;
10885     }
10886   if (*tok)
10887     error (_("Junk at end of command."));
10888
10889   if (accessflag == hw_read)
10890     bp_type = bp_read_watchpoint;
10891   else if (accessflag == hw_access)
10892     bp_type = bp_access_watchpoint;
10893   else
10894     bp_type = bp_hardware_watchpoint;
10895
10896   frame = block_innermost_frame (exp_valid_block);
10897
10898   /* If the expression is "local", then set up a "watchpoint scope"
10899      breakpoint at the point where we've left the scope of the watchpoint
10900      expression.  Create the scope breakpoint before the watchpoint, so
10901      that we will encounter it first in bpstat_stop_status.  */
10902   if (exp_valid_block && frame)
10903     {
10904       if (frame_id_p (frame_unwind_caller_id (frame)))
10905         {
10906           scope_breakpoint
10907             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10908                                           frame_unwind_caller_pc (frame),
10909                                           bp_watchpoint_scope,
10910                                           &momentary_breakpoint_ops);
10911
10912           scope_breakpoint->enable_state = bp_enabled;
10913
10914           /* Automatically delete the breakpoint when it hits.  */
10915           scope_breakpoint->disposition = disp_del;
10916
10917           /* Only break in the proper frame (help with recursion).  */
10918           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10919
10920           /* Set the address at which we will stop.  */
10921           scope_breakpoint->loc->gdbarch
10922             = frame_unwind_caller_arch (frame);
10923           scope_breakpoint->loc->requested_address
10924             = frame_unwind_caller_pc (frame);
10925           scope_breakpoint->loc->address
10926             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10927                                          scope_breakpoint->loc->requested_address,
10928                                          scope_breakpoint->type);
10929         }
10930     }
10931
10932   /* Now set up the breakpoint.  */
10933
10934   w = XCNEW (struct watchpoint);
10935   b = &w->base;
10936   if (use_mask)
10937     init_raw_breakpoint_without_location (b, NULL, bp_type,
10938                                           &masked_watchpoint_breakpoint_ops);
10939   else
10940     init_raw_breakpoint_without_location (b, NULL, bp_type,
10941                                           &watchpoint_breakpoint_ops);
10942   b->thread = thread;
10943   b->disposition = disp_donttouch;
10944   b->pspace = current_program_space;
10945   w->exp = exp;
10946   w->exp_valid_block = exp_valid_block;
10947   w->cond_exp_valid_block = cond_exp_valid_block;
10948   if (just_location)
10949     {
10950       struct type *t = value_type (val);
10951       CORE_ADDR addr = value_as_address (val);
10952       char *name;
10953
10954       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10955       name = type_to_string (t);
10956
10957       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10958                                           core_addr_to_string (addr));
10959       xfree (name);
10960
10961       w->exp_string = xstrprintf ("-location %.*s",
10962                                   (int) (exp_end - exp_start), exp_start);
10963
10964       /* The above expression is in C.  */
10965       b->language = language_c;
10966     }
10967   else
10968     w->exp_string = savestring (exp_start, exp_end - exp_start);
10969
10970   if (use_mask)
10971     {
10972       w->hw_wp_mask = mask;
10973     }
10974   else
10975     {
10976       w->val = val;
10977       w->val_valid = 1;
10978     }
10979
10980   if (cond_start)
10981     b->cond_string = savestring (cond_start, cond_end - cond_start);
10982   else
10983     b->cond_string = 0;
10984
10985   if (frame)
10986     {
10987       w->watchpoint_frame = get_frame_id (frame);
10988       w->watchpoint_thread = inferior_ptid;
10989     }
10990   else
10991     {
10992       w->watchpoint_frame = null_frame_id;
10993       w->watchpoint_thread = null_ptid;
10994     }
10995
10996   if (scope_breakpoint != NULL)
10997     {
10998       /* The scope breakpoint is related to the watchpoint.  We will
10999          need to act on them together.  */
11000       b->related_breakpoint = scope_breakpoint;
11001       scope_breakpoint->related_breakpoint = b;
11002     }
11003
11004   if (!just_location)
11005     value_free_to_mark (mark);
11006
11007   TRY_CATCH (e, RETURN_MASK_ALL)
11008     {
11009       /* Finally update the new watchpoint.  This creates the locations
11010          that should be inserted.  */
11011       update_watchpoint (w, 1);
11012     }
11013   if (e.reason < 0)
11014     {
11015       delete_breakpoint (b);
11016       throw_exception (e);
11017     }
11018
11019   install_breakpoint (internal, b, 1);
11020 }
11021
11022 /* Return count of debug registers needed to watch the given expression.
11023    If the watchpoint cannot be handled in hardware return zero.  */
11024
11025 static int
11026 can_use_hardware_watchpoint (struct value *v)
11027 {
11028   int found_memory_cnt = 0;
11029   struct value *head = v;
11030
11031   /* Did the user specifically forbid us to use hardware watchpoints? */
11032   if (!can_use_hw_watchpoints)
11033     return 0;
11034
11035   /* Make sure that the value of the expression depends only upon
11036      memory contents, and values computed from them within GDB.  If we
11037      find any register references or function calls, we can't use a
11038      hardware watchpoint.
11039
11040      The idea here is that evaluating an expression generates a series
11041      of values, one holding the value of every subexpression.  (The
11042      expression a*b+c has five subexpressions: a, b, a*b, c, and
11043      a*b+c.)  GDB's values hold almost enough information to establish
11044      the criteria given above --- they identify memory lvalues,
11045      register lvalues, computed values, etcetera.  So we can evaluate
11046      the expression, and then scan the chain of values that leaves
11047      behind to decide whether we can detect any possible change to the
11048      expression's final value using only hardware watchpoints.
11049
11050      However, I don't think that the values returned by inferior
11051      function calls are special in any way.  So this function may not
11052      notice that an expression involving an inferior function call
11053      can't be watched with hardware watchpoints.  FIXME.  */
11054   for (; v; v = value_next (v))
11055     {
11056       if (VALUE_LVAL (v) == lval_memory)
11057         {
11058           if (v != head && value_lazy (v))
11059             /* A lazy memory lvalue in the chain is one that GDB never
11060                needed to fetch; we either just used its address (e.g.,
11061                `a' in `a.b') or we never needed it at all (e.g., `a'
11062                in `a,b').  This doesn't apply to HEAD; if that is
11063                lazy then it was not readable, but watch it anyway.  */
11064             ;
11065           else
11066             {
11067               /* Ahh, memory we actually used!  Check if we can cover
11068                  it with hardware watchpoints.  */
11069               struct type *vtype = check_typedef (value_type (v));
11070
11071               /* We only watch structs and arrays if user asked for it
11072                  explicitly, never if they just happen to appear in a
11073                  middle of some value chain.  */
11074               if (v == head
11075                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11076                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11077                 {
11078                   CORE_ADDR vaddr = value_address (v);
11079                   int len;
11080                   int num_regs;
11081
11082                   len = (target_exact_watchpoints
11083                          && is_scalar_type_recursive (vtype))?
11084                     1 : TYPE_LENGTH (value_type (v));
11085
11086                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11087                   if (!num_regs)
11088                     return 0;
11089                   else
11090                     found_memory_cnt += num_regs;
11091                 }
11092             }
11093         }
11094       else if (VALUE_LVAL (v) != not_lval
11095                && deprecated_value_modifiable (v) == 0)
11096         return 0;       /* These are values from the history (e.g., $1).  */
11097       else if (VALUE_LVAL (v) == lval_register)
11098         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11099     }
11100
11101   /* The expression itself looks suitable for using a hardware
11102      watchpoint, but give the target machine a chance to reject it.  */
11103   return found_memory_cnt;
11104 }
11105
11106 void
11107 watch_command_wrapper (char *arg, int from_tty, int internal)
11108 {
11109   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11110 }
11111
11112 /* A helper function that looks for the "-location" argument and then
11113    calls watch_command_1.  */
11114
11115 static void
11116 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11117 {
11118   int just_location = 0;
11119
11120   if (arg
11121       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11122           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11123     {
11124       arg = skip_spaces (arg);
11125       just_location = 1;
11126     }
11127
11128   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11129 }
11130
11131 static void
11132 watch_command (char *arg, int from_tty)
11133 {
11134   watch_maybe_just_location (arg, hw_write, from_tty);
11135 }
11136
11137 void
11138 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11139 {
11140   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11141 }
11142
11143 static void
11144 rwatch_command (char *arg, int from_tty)
11145 {
11146   watch_maybe_just_location (arg, hw_read, from_tty);
11147 }
11148
11149 void
11150 awatch_command_wrapper (char *arg, int from_tty, int internal)
11151 {
11152   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11153 }
11154
11155 static void
11156 awatch_command (char *arg, int from_tty)
11157 {
11158   watch_maybe_just_location (arg, hw_access, from_tty);
11159 }
11160 \f
11161
11162 /* Helper routines for the until_command routine in infcmd.c.  Here
11163    because it uses the mechanisms of breakpoints.  */
11164
11165 struct until_break_command_continuation_args
11166 {
11167   struct breakpoint *breakpoint;
11168   struct breakpoint *breakpoint2;
11169   int thread_num;
11170 };
11171
11172 /* This function is called by fetch_inferior_event via the
11173    cmd_continuation pointer, to complete the until command.  It takes
11174    care of cleaning up the temporary breakpoints set up by the until
11175    command.  */
11176 static void
11177 until_break_command_continuation (void *arg, int err)
11178 {
11179   struct until_break_command_continuation_args *a = arg;
11180
11181   delete_breakpoint (a->breakpoint);
11182   if (a->breakpoint2)
11183     delete_breakpoint (a->breakpoint2);
11184   delete_longjmp_breakpoint (a->thread_num);
11185 }
11186
11187 void
11188 until_break_command (char *arg, int from_tty, int anywhere)
11189 {
11190   struct symtabs_and_lines sals;
11191   struct symtab_and_line sal;
11192   struct frame_info *frame;
11193   struct gdbarch *frame_gdbarch;
11194   struct frame_id stack_frame_id;
11195   struct frame_id caller_frame_id;
11196   struct breakpoint *breakpoint;
11197   struct breakpoint *breakpoint2 = NULL;
11198   struct cleanup *old_chain;
11199   int thread;
11200   struct thread_info *tp;
11201
11202   clear_proceed_status ();
11203
11204   /* Set a breakpoint where the user wants it and at return from
11205      this function.  */
11206
11207   if (last_displayed_sal_is_valid ())
11208     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11209                           get_last_displayed_symtab (),
11210                           get_last_displayed_line ());
11211   else
11212     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11213                           (struct symtab *) NULL, 0);
11214
11215   if (sals.nelts != 1)
11216     error (_("Couldn't get information on specified line."));
11217
11218   sal = sals.sals[0];
11219   xfree (sals.sals);    /* malloc'd, so freed.  */
11220
11221   if (*arg)
11222     error (_("Junk at end of arguments."));
11223
11224   resolve_sal_pc (&sal);
11225
11226   tp = inferior_thread ();
11227   thread = tp->num;
11228
11229   old_chain = make_cleanup (null_cleanup, NULL);
11230
11231   /* Note linespec handling above invalidates the frame chain.
11232      Installing a breakpoint also invalidates the frame chain (as it
11233      may need to switch threads), so do any frame handling before
11234      that.  */
11235
11236   frame = get_selected_frame (NULL);
11237   frame_gdbarch = get_frame_arch (frame);
11238   stack_frame_id = get_stack_frame_id (frame);
11239   caller_frame_id = frame_unwind_caller_id (frame);
11240
11241   /* Keep within the current frame, or in frames called by the current
11242      one.  */
11243
11244   if (frame_id_p (caller_frame_id))
11245     {
11246       struct symtab_and_line sal2;
11247
11248       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11249       sal2.pc = frame_unwind_caller_pc (frame);
11250       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11251                                               sal2,
11252                                               caller_frame_id,
11253                                               bp_until);
11254       make_cleanup_delete_breakpoint (breakpoint2);
11255
11256       set_longjmp_breakpoint (tp, caller_frame_id);
11257       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11258     }
11259
11260   /* set_momentary_breakpoint could invalidate FRAME.  */
11261   frame = NULL;
11262
11263   if (anywhere)
11264     /* If the user told us to continue until a specified location,
11265        we don't specify a frame at which we need to stop.  */
11266     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11267                                            null_frame_id, bp_until);
11268   else
11269     /* Otherwise, specify the selected frame, because we want to stop
11270        only at the very same frame.  */
11271     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11272                                            stack_frame_id, bp_until);
11273   make_cleanup_delete_breakpoint (breakpoint);
11274
11275   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11276
11277   /* If we are running asynchronously, and proceed call above has
11278      actually managed to start the target, arrange for breakpoints to
11279      be deleted when the target stops.  Otherwise, we're already
11280      stopped and delete breakpoints via cleanup chain.  */
11281
11282   if (target_can_async_p () && is_running (inferior_ptid))
11283     {
11284       struct until_break_command_continuation_args *args;
11285       args = xmalloc (sizeof (*args));
11286
11287       args->breakpoint = breakpoint;
11288       args->breakpoint2 = breakpoint2;
11289       args->thread_num = thread;
11290
11291       discard_cleanups (old_chain);
11292       add_continuation (inferior_thread (),
11293                         until_break_command_continuation, args,
11294                         xfree);
11295     }
11296   else
11297     do_cleanups (old_chain);
11298 }
11299
11300 /* This function attempts to parse an optional "if <cond>" clause
11301    from the arg string.  If one is not found, it returns NULL.
11302
11303    Else, it returns a pointer to the condition string.  (It does not
11304    attempt to evaluate the string against a particular block.)  And,
11305    it updates arg to point to the first character following the parsed
11306    if clause in the arg string.  */
11307
11308 static char *
11309 ep_parse_optional_if_clause (char **arg)
11310 {
11311   char *cond_string;
11312
11313   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11314     return NULL;
11315
11316   /* Skip the "if" keyword.  */
11317   (*arg) += 2;
11318
11319   /* Skip any extra leading whitespace, and record the start of the
11320      condition string.  */
11321   *arg = skip_spaces (*arg);
11322   cond_string = *arg;
11323
11324   /* Assume that the condition occupies the remainder of the arg
11325      string.  */
11326   (*arg) += strlen (cond_string);
11327
11328   return cond_string;
11329 }
11330
11331 /* Commands to deal with catching events, such as signals, exceptions,
11332    process start/exit, etc.  */
11333
11334 typedef enum
11335 {
11336   catch_fork_temporary, catch_vfork_temporary,
11337   catch_fork_permanent, catch_vfork_permanent
11338 }
11339 catch_fork_kind;
11340
11341 static void
11342 catch_fork_command_1 (char *arg, int from_tty, 
11343                       struct cmd_list_element *command)
11344 {
11345   struct gdbarch *gdbarch = get_current_arch ();
11346   char *cond_string = NULL;
11347   catch_fork_kind fork_kind;
11348   int tempflag;
11349
11350   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11351   tempflag = (fork_kind == catch_fork_temporary
11352               || fork_kind == catch_vfork_temporary);
11353
11354   if (!arg)
11355     arg = "";
11356   arg = skip_spaces (arg);
11357
11358   /* The allowed syntax is:
11359      catch [v]fork
11360      catch [v]fork if <cond>
11361
11362      First, check if there's an if clause.  */
11363   cond_string = ep_parse_optional_if_clause (&arg);
11364
11365   if ((*arg != '\0') && !isspace (*arg))
11366     error (_("Junk at end of arguments."));
11367
11368   /* If this target supports it, create a fork or vfork catchpoint
11369      and enable reporting of such events.  */
11370   switch (fork_kind)
11371     {
11372     case catch_fork_temporary:
11373     case catch_fork_permanent:
11374       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11375                                           &catch_fork_breakpoint_ops);
11376       break;
11377     case catch_vfork_temporary:
11378     case catch_vfork_permanent:
11379       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11380                                           &catch_vfork_breakpoint_ops);
11381       break;
11382     default:
11383       error (_("unsupported or unknown fork kind; cannot catch it"));
11384       break;
11385     }
11386 }
11387
11388 static void
11389 catch_exec_command_1 (char *arg, int from_tty, 
11390                       struct cmd_list_element *command)
11391 {
11392   struct exec_catchpoint *c;
11393   struct gdbarch *gdbarch = get_current_arch ();
11394   int tempflag;
11395   char *cond_string = NULL;
11396
11397   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11398
11399   if (!arg)
11400     arg = "";
11401   arg = skip_spaces (arg);
11402
11403   /* The allowed syntax is:
11404      catch exec
11405      catch exec if <cond>
11406
11407      First, check if there's an if clause.  */
11408   cond_string = ep_parse_optional_if_clause (&arg);
11409
11410   if ((*arg != '\0') && !isspace (*arg))
11411     error (_("Junk at end of arguments."));
11412
11413   c = XNEW (struct exec_catchpoint);
11414   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11415                    &catch_exec_breakpoint_ops);
11416   c->exec_pathname = NULL;
11417
11418   install_breakpoint (0, &c->base, 1);
11419 }
11420
11421 static enum print_stop_action
11422 print_it_exception_catchpoint (bpstat bs)
11423 {
11424   struct ui_out *uiout = current_uiout;
11425   struct breakpoint *b = bs->breakpoint_at;
11426   int bp_temp, bp_throw;
11427
11428   annotate_catchpoint (b->number);
11429
11430   bp_throw = strstr (b->addr_string, "throw") != NULL;
11431   if (b->loc->address != b->loc->requested_address)
11432     breakpoint_adjustment_warning (b->loc->requested_address,
11433                                    b->loc->address,
11434                                    b->number, 1);
11435   bp_temp = b->disposition == disp_del;
11436   ui_out_text (uiout, 
11437                bp_temp ? "Temporary catchpoint "
11438                        : "Catchpoint ");
11439   if (!ui_out_is_mi_like_p (uiout))
11440     ui_out_field_int (uiout, "bkptno", b->number);
11441   ui_out_text (uiout,
11442                bp_throw ? " (exception thrown), "
11443                         : " (exception caught), ");
11444   if (ui_out_is_mi_like_p (uiout))
11445     {
11446       ui_out_field_string (uiout, "reason", 
11447                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11448       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11449       ui_out_field_int (uiout, "bkptno", b->number);
11450     }
11451   return PRINT_SRC_AND_LOC;
11452 }
11453
11454 static void
11455 print_one_exception_catchpoint (struct breakpoint *b, 
11456                                 struct bp_location **last_loc)
11457 {
11458   struct value_print_options opts;
11459   struct ui_out *uiout = current_uiout;
11460
11461   get_user_print_options (&opts);
11462   if (opts.addressprint)
11463     {
11464       annotate_field (4);
11465       if (b->loc == NULL || b->loc->shlib_disabled)
11466         ui_out_field_string (uiout, "addr", "<PENDING>");
11467       else
11468         ui_out_field_core_addr (uiout, "addr",
11469                                 b->loc->gdbarch, b->loc->address);
11470     }
11471   annotate_field (5);
11472   if (b->loc)
11473     *last_loc = b->loc;
11474   if (strstr (b->addr_string, "throw") != NULL)
11475     ui_out_field_string (uiout, "what", "exception throw");
11476   else
11477     ui_out_field_string (uiout, "what", "exception catch");
11478 }
11479
11480 static void
11481 print_mention_exception_catchpoint (struct breakpoint *b)
11482 {
11483   struct ui_out *uiout = current_uiout;
11484   int bp_temp;
11485   int bp_throw;
11486
11487   bp_temp = b->disposition == disp_del;
11488   bp_throw = strstr (b->addr_string, "throw") != NULL;
11489   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11490                               : _("Catchpoint "));
11491   ui_out_field_int (uiout, "bkptno", b->number);
11492   ui_out_text (uiout, bp_throw ? _(" (throw)")
11493                                : _(" (catch)"));
11494 }
11495
11496 /* Implement the "print_recreate" breakpoint_ops method for throw and
11497    catch catchpoints.  */
11498
11499 static void
11500 print_recreate_exception_catchpoint (struct breakpoint *b, 
11501                                      struct ui_file *fp)
11502 {
11503   int bp_temp;
11504   int bp_throw;
11505
11506   bp_temp = b->disposition == disp_del;
11507   bp_throw = strstr (b->addr_string, "throw") != NULL;
11508   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11509   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11510   print_recreate_thread (b, fp);
11511 }
11512
11513 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11514
11515 static int
11516 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11517                           enum exception_event_kind ex_event, int from_tty)
11518 {
11519   char *trigger_func_name;
11520  
11521   if (ex_event == EX_EVENT_CATCH)
11522     trigger_func_name = "__cxa_begin_catch";
11523   else
11524     trigger_func_name = "__cxa_throw";
11525
11526   create_breakpoint (get_current_arch (),
11527                      trigger_func_name, cond_string, -1, NULL,
11528                      0 /* condition and thread are valid.  */,
11529                      tempflag, bp_breakpoint,
11530                      0,
11531                      AUTO_BOOLEAN_TRUE /* pending */,
11532                      &gnu_v3_exception_catchpoint_ops, from_tty,
11533                      1 /* enabled */,
11534                      0 /* internal */,
11535                      0);
11536
11537   return 1;
11538 }
11539
11540 /* Deal with "catch catch" and "catch throw" commands.  */
11541
11542 static void
11543 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11544                            int tempflag, int from_tty)
11545 {
11546   char *cond_string = NULL;
11547
11548   if (!arg)
11549     arg = "";
11550   arg = skip_spaces (arg);
11551
11552   cond_string = ep_parse_optional_if_clause (&arg);
11553
11554   if ((*arg != '\0') && !isspace (*arg))
11555     error (_("Junk at end of arguments."));
11556
11557   if (ex_event != EX_EVENT_THROW
11558       && ex_event != EX_EVENT_CATCH)
11559     error (_("Unsupported or unknown exception event; cannot catch it"));
11560
11561   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11562     return;
11563
11564   warning (_("Unsupported with this platform/compiler combination."));
11565 }
11566
11567 /* Implementation of "catch catch" command.  */
11568
11569 static void
11570 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11571 {
11572   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11573
11574   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11575 }
11576
11577 /* Implementation of "catch throw" command.  */
11578
11579 static void
11580 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11581 {
11582   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11583
11584   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11585 }
11586
11587 void
11588 init_ada_exception_breakpoint (struct breakpoint *b,
11589                                struct gdbarch *gdbarch,
11590                                struct symtab_and_line sal,
11591                                char *addr_string,
11592                                const struct breakpoint_ops *ops,
11593                                int tempflag,
11594                                int from_tty)
11595 {
11596   if (from_tty)
11597     {
11598       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11599       if (!loc_gdbarch)
11600         loc_gdbarch = gdbarch;
11601
11602       describe_other_breakpoints (loc_gdbarch,
11603                                   sal.pspace, sal.pc, sal.section, -1);
11604       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11605          version for exception catchpoints, because two catchpoints
11606          used for different exception names will use the same address.
11607          In this case, a "breakpoint ... also set at..." warning is
11608          unproductive.  Besides, the warning phrasing is also a bit
11609          inappropriate, we should use the word catchpoint, and tell
11610          the user what type of catchpoint it is.  The above is good
11611          enough for now, though.  */
11612     }
11613
11614   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11615
11616   b->enable_state = bp_enabled;
11617   b->disposition = tempflag ? disp_del : disp_donttouch;
11618   b->addr_string = addr_string;
11619   b->language = language_ada;
11620 }
11621
11622 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11623    filter list, or NULL if no filtering is required.  */
11624 static VEC(int) *
11625 catch_syscall_split_args (char *arg)
11626 {
11627   VEC(int) *result = NULL;
11628   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11629
11630   while (*arg != '\0')
11631     {
11632       int i, syscall_number;
11633       char *endptr;
11634       char cur_name[128];
11635       struct syscall s;
11636
11637       /* Skip whitespace.  */
11638       while (isspace (*arg))
11639         arg++;
11640
11641       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11642         cur_name[i] = arg[i];
11643       cur_name[i] = '\0';
11644       arg += i;
11645
11646       /* Check if the user provided a syscall name or a number.  */
11647       syscall_number = (int) strtol (cur_name, &endptr, 0);
11648       if (*endptr == '\0')
11649         get_syscall_by_number (syscall_number, &s);
11650       else
11651         {
11652           /* We have a name.  Let's check if it's valid and convert it
11653              to a number.  */
11654           get_syscall_by_name (cur_name, &s);
11655
11656           if (s.number == UNKNOWN_SYSCALL)
11657             /* Here we have to issue an error instead of a warning,
11658                because GDB cannot do anything useful if there's no
11659                syscall number to be caught.  */
11660             error (_("Unknown syscall name '%s'."), cur_name);
11661         }
11662
11663       /* Ok, it's valid.  */
11664       VEC_safe_push (int, result, s.number);
11665     }
11666
11667   discard_cleanups (cleanup);
11668   return result;
11669 }
11670
11671 /* Implement the "catch syscall" command.  */
11672
11673 static void
11674 catch_syscall_command_1 (char *arg, int from_tty, 
11675                          struct cmd_list_element *command)
11676 {
11677   int tempflag;
11678   VEC(int) *filter;
11679   struct syscall s;
11680   struct gdbarch *gdbarch = get_current_arch ();
11681
11682   /* Checking if the feature if supported.  */
11683   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11684     error (_("The feature 'catch syscall' is not supported on \
11685 this architecture yet."));
11686
11687   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11688
11689   arg = skip_spaces (arg);
11690
11691   /* We need to do this first "dummy" translation in order
11692      to get the syscall XML file loaded or, most important,
11693      to display a warning to the user if there's no XML file
11694      for his/her architecture.  */
11695   get_syscall_by_number (0, &s);
11696
11697   /* The allowed syntax is:
11698      catch syscall
11699      catch syscall <name | number> [<name | number> ... <name | number>]
11700
11701      Let's check if there's a syscall name.  */
11702
11703   if (arg != NULL)
11704     filter = catch_syscall_split_args (arg);
11705   else
11706     filter = NULL;
11707
11708   create_syscall_event_catchpoint (tempflag, filter,
11709                                    &catch_syscall_breakpoint_ops);
11710 }
11711
11712 static void
11713 catch_command (char *arg, int from_tty)
11714 {
11715   error (_("Catch requires an event name."));
11716 }
11717 \f
11718
11719 static void
11720 tcatch_command (char *arg, int from_tty)
11721 {
11722   error (_("Catch requires an event name."));
11723 }
11724
11725 /* A qsort comparison function that sorts breakpoints in order.  */
11726
11727 static int
11728 compare_breakpoints (const void *a, const void *b)
11729 {
11730   const breakpoint_p *ba = a;
11731   uintptr_t ua = (uintptr_t) *ba;
11732   const breakpoint_p *bb = b;
11733   uintptr_t ub = (uintptr_t) *bb;
11734
11735   if ((*ba)->number < (*bb)->number)
11736     return -1;
11737   else if ((*ba)->number > (*bb)->number)
11738     return 1;
11739
11740   /* Now sort by address, in case we see, e..g, two breakpoints with
11741      the number 0.  */
11742   if (ua < ub)
11743     return -1;
11744   return ub > ub ? 1 : 0;
11745 }
11746
11747 /* Delete breakpoints by address or line.  */
11748
11749 static void
11750 clear_command (char *arg, int from_tty)
11751 {
11752   struct breakpoint *b, *prev;
11753   VEC(breakpoint_p) *found = 0;
11754   int ix;
11755   int default_match;
11756   struct symtabs_and_lines sals;
11757   struct symtab_and_line sal;
11758   int i;
11759   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11760
11761   if (arg)
11762     {
11763       sals = decode_line_with_current_source (arg,
11764                                               (DECODE_LINE_FUNFIRSTLINE
11765                                                | DECODE_LINE_LIST_MODE));
11766       default_match = 0;
11767     }
11768   else
11769     {
11770       sals.sals = (struct symtab_and_line *)
11771         xmalloc (sizeof (struct symtab_and_line));
11772       make_cleanup (xfree, sals.sals);
11773       init_sal (&sal);          /* Initialize to zeroes.  */
11774
11775       /* Set sal's line, symtab, pc, and pspace to the values
11776          corresponding to the last call to print_frame_info.  If the
11777          codepoint is not valid, this will set all the fields to 0.  */
11778       get_last_displayed_sal (&sal);
11779       if (sal.symtab == 0)
11780         error (_("No source file specified."));
11781
11782       sals.sals[0] = sal;
11783       sals.nelts = 1;
11784
11785       default_match = 1;
11786     }
11787
11788   /* We don't call resolve_sal_pc here.  That's not as bad as it
11789      seems, because all existing breakpoints typically have both
11790      file/line and pc set.  So, if clear is given file/line, we can
11791      match this to existing breakpoint without obtaining pc at all.
11792
11793      We only support clearing given the address explicitly 
11794      present in breakpoint table.  Say, we've set breakpoint 
11795      at file:line.  There were several PC values for that file:line,
11796      due to optimization, all in one block.
11797
11798      We've picked one PC value.  If "clear" is issued with another
11799      PC corresponding to the same file:line, the breakpoint won't
11800      be cleared.  We probably can still clear the breakpoint, but 
11801      since the other PC value is never presented to user, user
11802      can only find it by guessing, and it does not seem important
11803      to support that.  */
11804
11805   /* For each line spec given, delete bps which correspond to it.  Do
11806      it in two passes, solely to preserve the current behavior that
11807      from_tty is forced true if we delete more than one
11808      breakpoint.  */
11809
11810   found = NULL;
11811   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11812   for (i = 0; i < sals.nelts; i++)
11813     {
11814       int is_abs, sal_name_len;
11815
11816       /* If exact pc given, clear bpts at that pc.
11817          If line given (pc == 0), clear all bpts on specified line.
11818          If defaulting, clear all bpts on default line
11819          or at default pc.
11820
11821          defaulting    sal.pc != 0    tests to do
11822
11823          0              1             pc
11824          1              1             pc _and_ line
11825          0              0             line
11826          1              0             <can't happen> */
11827
11828       sal = sals.sals[i];
11829       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11830       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11831
11832       /* Find all matching breakpoints and add them to 'found'.  */
11833       ALL_BREAKPOINTS (b)
11834         {
11835           int match = 0;
11836           /* Are we going to delete b?  */
11837           if (b->type != bp_none && !is_watchpoint (b))
11838             {
11839               struct bp_location *loc = b->loc;
11840               for (; loc; loc = loc->next)
11841                 {
11842                   /* If the user specified file:line, don't allow a PC
11843                      match.  This matches historical gdb behavior.  */
11844                   int pc_match = (!sal.explicit_line
11845                                   && sal.pc
11846                                   && (loc->pspace == sal.pspace)
11847                                   && (loc->address == sal.pc)
11848                                   && (!section_is_overlay (loc->section)
11849                                       || loc->section == sal.section));
11850                   int line_match = 0;
11851
11852                   if ((default_match || sal.explicit_line)
11853                       && loc->source_file != NULL
11854                       && sal.symtab != NULL
11855                       && sal.pspace == loc->pspace
11856                       && loc->line_number == sal.line)
11857                     {
11858                       if (filename_cmp (loc->source_file,
11859                                         sal.symtab->filename) == 0)
11860                         line_match = 1;
11861                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11862                                && compare_filenames_for_search (loc->source_file,
11863                                                                 sal.symtab->filename,
11864                                                                 sal_name_len))
11865                         line_match = 1;
11866                     }
11867
11868                   if (pc_match || line_match)
11869                     {
11870                       match = 1;
11871                       break;
11872                     }
11873                 }
11874             }
11875
11876           if (match)
11877             VEC_safe_push(breakpoint_p, found, b);
11878         }
11879     }
11880
11881   /* Now go thru the 'found' chain and delete them.  */
11882   if (VEC_empty(breakpoint_p, found))
11883     {
11884       if (arg)
11885         error (_("No breakpoint at %s."), arg);
11886       else
11887         error (_("No breakpoint at this line."));
11888     }
11889
11890   /* Remove duplicates from the vec.  */
11891   qsort (VEC_address (breakpoint_p, found),
11892          VEC_length (breakpoint_p, found),
11893          sizeof (breakpoint_p),
11894          compare_breakpoints);
11895   prev = VEC_index (breakpoint_p, found, 0);
11896   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11897     {
11898       if (b == prev)
11899         {
11900           VEC_ordered_remove (breakpoint_p, found, ix);
11901           --ix;
11902         }
11903     }
11904
11905   if (VEC_length(breakpoint_p, found) > 1)
11906     from_tty = 1;       /* Always report if deleted more than one.  */
11907   if (from_tty)
11908     {
11909       if (VEC_length(breakpoint_p, found) == 1)
11910         printf_unfiltered (_("Deleted breakpoint "));
11911       else
11912         printf_unfiltered (_("Deleted breakpoints "));
11913     }
11914   breakpoints_changed ();
11915
11916   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11917     {
11918       if (from_tty)
11919         printf_unfiltered ("%d ", b->number);
11920       delete_breakpoint (b);
11921     }
11922   if (from_tty)
11923     putchar_unfiltered ('\n');
11924
11925   do_cleanups (cleanups);
11926 }
11927 \f
11928 /* Delete breakpoint in BS if they are `delete' breakpoints and
11929    all breakpoints that are marked for deletion, whether hit or not.
11930    This is called after any breakpoint is hit, or after errors.  */
11931
11932 void
11933 breakpoint_auto_delete (bpstat bs)
11934 {
11935   struct breakpoint *b, *b_tmp;
11936
11937   for (; bs; bs = bs->next)
11938     if (bs->breakpoint_at
11939         && bs->breakpoint_at->disposition == disp_del
11940         && bs->stop)
11941       delete_breakpoint (bs->breakpoint_at);
11942
11943   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11944   {
11945     if (b->disposition == disp_del_at_next_stop)
11946       delete_breakpoint (b);
11947   }
11948 }
11949
11950 /* A comparison function for bp_location AP and BP being interfaced to
11951    qsort.  Sort elements primarily by their ADDRESS (no matter what
11952    does breakpoint_address_is_meaningful say for its OWNER),
11953    secondarily by ordering first bp_permanent OWNERed elements and
11954    terciarily just ensuring the array is sorted stable way despite
11955    qsort being an unstable algorithm.  */
11956
11957 static int
11958 bp_location_compare (const void *ap, const void *bp)
11959 {
11960   struct bp_location *a = *(void **) ap;
11961   struct bp_location *b = *(void **) bp;
11962   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11963   int a_perm = a->owner->enable_state == bp_permanent;
11964   int b_perm = b->owner->enable_state == bp_permanent;
11965
11966   if (a->address != b->address)
11967     return (a->address > b->address) - (a->address < b->address);
11968
11969   /* Sort locations at the same address by their pspace number, keeping
11970      locations of the same inferior (in a multi-inferior environment)
11971      grouped.  */
11972
11973   if (a->pspace->num != b->pspace->num)
11974     return ((a->pspace->num > b->pspace->num)
11975             - (a->pspace->num < b->pspace->num));
11976
11977   /* Sort permanent breakpoints first.  */
11978   if (a_perm != b_perm)
11979     return (a_perm < b_perm) - (a_perm > b_perm);
11980
11981   /* Make the internal GDB representation stable across GDB runs
11982      where A and B memory inside GDB can differ.  Breakpoint locations of
11983      the same type at the same address can be sorted in arbitrary order.  */
11984
11985   if (a->owner->number != b->owner->number)
11986     return ((a->owner->number > b->owner->number)
11987             - (a->owner->number < b->owner->number));
11988
11989   return (a > b) - (a < b);
11990 }
11991
11992 /* Set bp_location_placed_address_before_address_max and
11993    bp_location_shadow_len_after_address_max according to the current
11994    content of the bp_location array.  */
11995
11996 static void
11997 bp_location_target_extensions_update (void)
11998 {
11999   struct bp_location *bl, **blp_tmp;
12000
12001   bp_location_placed_address_before_address_max = 0;
12002   bp_location_shadow_len_after_address_max = 0;
12003
12004   ALL_BP_LOCATIONS (bl, blp_tmp)
12005     {
12006       CORE_ADDR start, end, addr;
12007
12008       if (!bp_location_has_shadow (bl))
12009         continue;
12010
12011       start = bl->target_info.placed_address;
12012       end = start + bl->target_info.shadow_len;
12013
12014       gdb_assert (bl->address >= start);
12015       addr = bl->address - start;
12016       if (addr > bp_location_placed_address_before_address_max)
12017         bp_location_placed_address_before_address_max = addr;
12018
12019       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12020
12021       gdb_assert (bl->address < end);
12022       addr = end - bl->address;
12023       if (addr > bp_location_shadow_len_after_address_max)
12024         bp_location_shadow_len_after_address_max = addr;
12025     }
12026 }
12027
12028 /* Download tracepoint locations if they haven't been.  */
12029
12030 static void
12031 download_tracepoint_locations (void)
12032 {
12033   struct bp_location *bl, **blp_tmp;
12034   struct cleanup *old_chain;
12035
12036   if (!target_can_download_tracepoint ())
12037     return;
12038
12039   old_chain = save_current_space_and_thread ();
12040
12041   ALL_BP_LOCATIONS (bl, blp_tmp)
12042     {
12043       struct tracepoint *t;
12044
12045       if (!is_tracepoint (bl->owner))
12046         continue;
12047
12048       if ((bl->owner->type == bp_fast_tracepoint
12049            ? !may_insert_fast_tracepoints
12050            : !may_insert_tracepoints))
12051         continue;
12052
12053       /* In tracepoint, locations are _never_ duplicated, so
12054          should_be_inserted is equivalent to
12055          unduplicated_should_be_inserted.  */
12056       if (!should_be_inserted (bl) || bl->inserted)
12057         continue;
12058
12059       switch_to_program_space_and_thread (bl->pspace);
12060
12061       target_download_tracepoint (bl);
12062
12063       bl->inserted = 1;
12064       t = (struct tracepoint *) bl->owner;
12065       t->number_on_target = bl->owner->number;
12066     }
12067
12068   do_cleanups (old_chain);
12069 }
12070
12071 /* Swap the insertion/duplication state between two locations.  */
12072
12073 static void
12074 swap_insertion (struct bp_location *left, struct bp_location *right)
12075 {
12076   const int left_inserted = left->inserted;
12077   const int left_duplicate = left->duplicate;
12078   const int left_needs_update = left->needs_update;
12079   const struct bp_target_info left_target_info = left->target_info;
12080
12081   /* Locations of tracepoints can never be duplicated.  */
12082   if (is_tracepoint (left->owner))
12083     gdb_assert (!left->duplicate);
12084   if (is_tracepoint (right->owner))
12085     gdb_assert (!right->duplicate);
12086
12087   left->inserted = right->inserted;
12088   left->duplicate = right->duplicate;
12089   left->needs_update = right->needs_update;
12090   left->target_info = right->target_info;
12091   right->inserted = left_inserted;
12092   right->duplicate = left_duplicate;
12093   right->needs_update = left_needs_update;
12094   right->target_info = left_target_info;
12095 }
12096
12097 /* Force the re-insertion of the locations at ADDRESS.  This is called
12098    once a new/deleted/modified duplicate location is found and we are evaluating
12099    conditions on the target's side.  Such conditions need to be updated on
12100    the target.  */
12101
12102 static void
12103 force_breakpoint_reinsertion (struct bp_location *bl)
12104 {
12105   struct bp_location **locp = NULL, **loc2p;
12106   struct bp_location *loc;
12107   CORE_ADDR address = 0;
12108   int pspace_num;
12109
12110   address = bl->address;
12111   pspace_num = bl->pspace->num;
12112
12113   /* This is only meaningful if the target is
12114      evaluating conditions and if the user has
12115      opted for condition evaluation on the target's
12116      side.  */
12117   if (gdb_evaluates_breakpoint_condition_p ()
12118       || !target_supports_evaluation_of_breakpoint_conditions ())
12119     return;
12120
12121   /* Flag all breakpoint locations with this address and
12122      the same program space as the location
12123      as "its condition has changed".  We need to
12124      update the conditions on the target's side.  */
12125   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12126     {
12127       loc = *loc2p;
12128
12129       if (!is_breakpoint (loc->owner)
12130           || pspace_num != loc->pspace->num)
12131         continue;
12132
12133       /* Flag the location appropriately.  We use a different state to
12134          let everyone know that we already updated the set of locations
12135          with addr bl->address and program space bl->pspace.  This is so
12136          we don't have to keep calling these functions just to mark locations
12137          that have already been marked.  */
12138       loc->condition_changed = condition_updated;
12139
12140       /* Free the agent expression bytecode as well.  We will compute
12141          it later on.  */
12142       if (loc->cond_bytecode)
12143         {
12144           free_agent_expr (loc->cond_bytecode);
12145           loc->cond_bytecode = NULL;
12146         }
12147     }
12148 }
12149
12150 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12151    into the inferior, only remove already-inserted locations that no
12152    longer should be inserted.  Functions that delete a breakpoint or
12153    breakpoints should pass false, so that deleting a breakpoint
12154    doesn't have the side effect of inserting the locations of other
12155    breakpoints that are marked not-inserted, but should_be_inserted
12156    returns true on them.
12157
12158    This behaviour is useful is situations close to tear-down -- e.g.,
12159    after an exec, while the target still has execution, but breakpoint
12160    shadows of the previous executable image should *NOT* be restored
12161    to the new image; or before detaching, where the target still has
12162    execution and wants to delete breakpoints from GDB's lists, and all
12163    breakpoints had already been removed from the inferior.  */
12164
12165 static void
12166 update_global_location_list (int should_insert)
12167 {
12168   struct breakpoint *b;
12169   struct bp_location **locp, *loc;
12170   struct cleanup *cleanups;
12171   /* Last breakpoint location address that was marked for update.  */
12172   CORE_ADDR last_addr = 0;
12173   /* Last breakpoint location program space that was marked for update.  */
12174   int last_pspace_num = -1;
12175
12176   /* Used in the duplicates detection below.  When iterating over all
12177      bp_locations, points to the first bp_location of a given address.
12178      Breakpoints and watchpoints of different types are never
12179      duplicates of each other.  Keep one pointer for each type of
12180      breakpoint/watchpoint, so we only need to loop over all locations
12181      once.  */
12182   struct bp_location *bp_loc_first;  /* breakpoint */
12183   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12184   struct bp_location *awp_loc_first; /* access watchpoint */
12185   struct bp_location *rwp_loc_first; /* read watchpoint */
12186
12187   /* Saved former bp_location array which we compare against the newly
12188      built bp_location from the current state of ALL_BREAKPOINTS.  */
12189   struct bp_location **old_location, **old_locp;
12190   unsigned old_location_count;
12191
12192   old_location = bp_location;
12193   old_location_count = bp_location_count;
12194   bp_location = NULL;
12195   bp_location_count = 0;
12196   cleanups = make_cleanup (xfree, old_location);
12197
12198   ALL_BREAKPOINTS (b)
12199     for (loc = b->loc; loc; loc = loc->next)
12200       bp_location_count++;
12201
12202   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12203   locp = bp_location;
12204   ALL_BREAKPOINTS (b)
12205     for (loc = b->loc; loc; loc = loc->next)
12206       *locp++ = loc;
12207   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12208          bp_location_compare);
12209
12210   bp_location_target_extensions_update ();
12211
12212   /* Identify bp_location instances that are no longer present in the
12213      new list, and therefore should be freed.  Note that it's not
12214      necessary that those locations should be removed from inferior --
12215      if there's another location at the same address (previously
12216      marked as duplicate), we don't need to remove/insert the
12217      location.
12218      
12219      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12220      and former bp_location array state respectively.  */
12221
12222   locp = bp_location;
12223   for (old_locp = old_location; old_locp < old_location + old_location_count;
12224        old_locp++)
12225     {
12226       struct bp_location *old_loc = *old_locp;
12227       struct bp_location **loc2p;
12228
12229       /* Tells if 'old_loc' is found among the new locations.  If
12230          not, we have to free it.  */
12231       int found_object = 0;
12232       /* Tells if the location should remain inserted in the target.  */
12233       int keep_in_target = 0;
12234       int removed = 0;
12235
12236       /* Skip LOCP entries which will definitely never be needed.
12237          Stop either at or being the one matching OLD_LOC.  */
12238       while (locp < bp_location + bp_location_count
12239              && (*locp)->address < old_loc->address)
12240         locp++;
12241
12242       for (loc2p = locp;
12243            (loc2p < bp_location + bp_location_count
12244             && (*loc2p)->address == old_loc->address);
12245            loc2p++)
12246         {
12247           /* Check if this is a new/duplicated location or a duplicated
12248              location that had its condition modified.  If so, we want to send
12249              its condition to the target if evaluation of conditions is taking
12250              place there.  */
12251           if ((*loc2p)->condition_changed == condition_modified
12252               && (last_addr != old_loc->address
12253                   || last_pspace_num != old_loc->pspace->num))
12254             {
12255               force_breakpoint_reinsertion (*loc2p);
12256               last_pspace_num = old_loc->pspace->num;
12257             }
12258
12259           if (*loc2p == old_loc)
12260             found_object = 1;
12261         }
12262
12263       /* We have already handled this address, update it so that we don't
12264          have to go through updates again.  */
12265       last_addr = old_loc->address;
12266
12267       /* Target-side condition evaluation: Handle deleted locations.  */
12268       if (!found_object)
12269         force_breakpoint_reinsertion (old_loc);
12270
12271       /* If this location is no longer present, and inserted, look if
12272          there's maybe a new location at the same address.  If so,
12273          mark that one inserted, and don't remove this one.  This is
12274          needed so that we don't have a time window where a breakpoint
12275          at certain location is not inserted.  */
12276
12277       if (old_loc->inserted)
12278         {
12279           /* If the location is inserted now, we might have to remove
12280              it.  */
12281
12282           if (found_object && should_be_inserted (old_loc))
12283             {
12284               /* The location is still present in the location list,
12285                  and still should be inserted.  Don't do anything.  */
12286               keep_in_target = 1;
12287             }
12288           else
12289             {
12290               /* This location still exists, but it won't be kept in the
12291                  target since it may have been disabled.  We proceed to
12292                  remove its target-side condition.  */
12293
12294               /* The location is either no longer present, or got
12295                  disabled.  See if there's another location at the
12296                  same address, in which case we don't need to remove
12297                  this one from the target.  */
12298
12299               /* OLD_LOC comes from existing struct breakpoint.  */
12300               if (breakpoint_address_is_meaningful (old_loc->owner))
12301                 {
12302                   for (loc2p = locp;
12303                        (loc2p < bp_location + bp_location_count
12304                         && (*loc2p)->address == old_loc->address);
12305                        loc2p++)
12306                     {
12307                       struct bp_location *loc2 = *loc2p;
12308
12309                       if (breakpoint_locations_match (loc2, old_loc))
12310                         {
12311                           /* Read watchpoint locations are switched to
12312                              access watchpoints, if the former are not
12313                              supported, but the latter are.  */
12314                           if (is_hardware_watchpoint (old_loc->owner))
12315                             {
12316                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12317                               loc2->watchpoint_type = old_loc->watchpoint_type;
12318                             }
12319
12320                           /* loc2 is a duplicated location. We need to check
12321                              if it should be inserted in case it will be
12322                              unduplicated.  */
12323                           if (loc2 != old_loc
12324                               && unduplicated_should_be_inserted (loc2))
12325                             {
12326                               swap_insertion (old_loc, loc2);
12327                               keep_in_target = 1;
12328                               break;
12329                             }
12330                         }
12331                     }
12332                 }
12333             }
12334
12335           if (!keep_in_target)
12336             {
12337               if (remove_breakpoint (old_loc, mark_uninserted))
12338                 {
12339                   /* This is just about all we can do.  We could keep
12340                      this location on the global list, and try to
12341                      remove it next time, but there's no particular
12342                      reason why we will succeed next time.
12343                      
12344                      Note that at this point, old_loc->owner is still
12345                      valid, as delete_breakpoint frees the breakpoint
12346                      only after calling us.  */
12347                   printf_filtered (_("warning: Error removing "
12348                                      "breakpoint %d\n"), 
12349                                    old_loc->owner->number);
12350                 }
12351               removed = 1;
12352             }
12353         }
12354
12355       if (!found_object)
12356         {
12357           if (removed && non_stop
12358               && breakpoint_address_is_meaningful (old_loc->owner)
12359               && !is_hardware_watchpoint (old_loc->owner))
12360             {
12361               /* This location was removed from the target.  In
12362                  non-stop mode, a race condition is possible where
12363                  we've removed a breakpoint, but stop events for that
12364                  breakpoint are already queued and will arrive later.
12365                  We apply an heuristic to be able to distinguish such
12366                  SIGTRAPs from other random SIGTRAPs: we keep this
12367                  breakpoint location for a bit, and will retire it
12368                  after we see some number of events.  The theory here
12369                  is that reporting of events should, "on the average",
12370                  be fair, so after a while we'll see events from all
12371                  threads that have anything of interest, and no longer
12372                  need to keep this breakpoint location around.  We
12373                  don't hold locations forever so to reduce chances of
12374                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12375                  SIGTRAP.
12376
12377                  The heuristic failing can be disastrous on
12378                  decr_pc_after_break targets.
12379
12380                  On decr_pc_after_break targets, like e.g., x86-linux,
12381                  if we fail to recognize a late breakpoint SIGTRAP,
12382                  because events_till_retirement has reached 0 too
12383                  soon, we'll fail to do the PC adjustment, and report
12384                  a random SIGTRAP to the user.  When the user resumes
12385                  the inferior, it will most likely immediately crash
12386                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12387                  corrupted, because of being resumed e.g., in the
12388                  middle of a multi-byte instruction, or skipped a
12389                  one-byte instruction.  This was actually seen happen
12390                  on native x86-linux, and should be less rare on
12391                  targets that do not support new thread events, like
12392                  remote, due to the heuristic depending on
12393                  thread_count.
12394
12395                  Mistaking a random SIGTRAP for a breakpoint trap
12396                  causes similar symptoms (PC adjustment applied when
12397                  it shouldn't), but then again, playing with SIGTRAPs
12398                  behind the debugger's back is asking for trouble.
12399
12400                  Since hardware watchpoint traps are always
12401                  distinguishable from other traps, so we don't need to
12402                  apply keep hardware watchpoint moribund locations
12403                  around.  We simply always ignore hardware watchpoint
12404                  traps we can no longer explain.  */
12405
12406               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12407               old_loc->owner = NULL;
12408
12409               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12410             }
12411           else
12412             {
12413               old_loc->owner = NULL;
12414               decref_bp_location (&old_loc);
12415             }
12416         }
12417     }
12418
12419   /* Rescan breakpoints at the same address and section, marking the
12420      first one as "first" and any others as "duplicates".  This is so
12421      that the bpt instruction is only inserted once.  If we have a
12422      permanent breakpoint at the same place as BPT, make that one the
12423      official one, and the rest as duplicates.  Permanent breakpoints
12424      are sorted first for the same address.
12425
12426      Do the same for hardware watchpoints, but also considering the
12427      watchpoint's type (regular/access/read) and length.  */
12428
12429   bp_loc_first = NULL;
12430   wp_loc_first = NULL;
12431   awp_loc_first = NULL;
12432   rwp_loc_first = NULL;
12433   ALL_BP_LOCATIONS (loc, locp)
12434     {
12435       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12436          non-NULL.  */
12437       struct bp_location **loc_first_p;
12438       b = loc->owner;
12439
12440       if (!should_be_inserted (loc)
12441           || !breakpoint_address_is_meaningful (b)
12442           /* Don't detect duplicate for tracepoint locations because they are
12443            never duplicated.  See the comments in field `duplicate' of
12444            `struct bp_location'.  */
12445           || is_tracepoint (b))
12446         {
12447           /* Clear the condition modification flag.  */
12448           loc->condition_changed = condition_unchanged;
12449           continue;
12450         }
12451
12452       /* Permanent breakpoint should always be inserted.  */
12453       if (b->enable_state == bp_permanent && ! loc->inserted)
12454         internal_error (__FILE__, __LINE__,
12455                         _("allegedly permanent breakpoint is not "
12456                         "actually inserted"));
12457
12458       if (b->type == bp_hardware_watchpoint)
12459         loc_first_p = &wp_loc_first;
12460       else if (b->type == bp_read_watchpoint)
12461         loc_first_p = &rwp_loc_first;
12462       else if (b->type == bp_access_watchpoint)
12463         loc_first_p = &awp_loc_first;
12464       else
12465         loc_first_p = &bp_loc_first;
12466
12467       if (*loc_first_p == NULL
12468           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12469           || !breakpoint_locations_match (loc, *loc_first_p))
12470         {
12471           *loc_first_p = loc;
12472           loc->duplicate = 0;
12473
12474           if (is_breakpoint (loc->owner) && loc->condition_changed)
12475             {
12476               loc->needs_update = 1;
12477               /* Clear the condition modification flag.  */
12478               loc->condition_changed = condition_unchanged;
12479             }
12480           continue;
12481         }
12482
12483
12484       /* This and the above ensure the invariant that the first location
12485          is not duplicated, and is the inserted one.
12486          All following are marked as duplicated, and are not inserted.  */
12487       if (loc->inserted)
12488         swap_insertion (loc, *loc_first_p);
12489       loc->duplicate = 1;
12490
12491       /* Clear the condition modification flag.  */
12492       loc->condition_changed = condition_unchanged;
12493
12494       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12495           && b->enable_state != bp_permanent)
12496         internal_error (__FILE__, __LINE__,
12497                         _("another breakpoint was inserted on top of "
12498                         "a permanent breakpoint"));
12499     }
12500
12501   if (breakpoints_always_inserted_mode ()
12502       && (have_live_inferiors ()
12503           || (gdbarch_has_global_breakpoints (target_gdbarch))))
12504     {
12505       if (should_insert)
12506         insert_breakpoint_locations ();
12507       else
12508         {
12509           /* Though should_insert is false, we may need to update conditions
12510              on the target's side if it is evaluating such conditions.  We
12511              only update conditions for locations that are marked
12512              "needs_update".  */
12513           update_inserted_breakpoint_locations ();
12514         }
12515     }
12516
12517   if (should_insert)
12518     download_tracepoint_locations ();
12519
12520   do_cleanups (cleanups);
12521 }
12522
12523 void
12524 breakpoint_retire_moribund (void)
12525 {
12526   struct bp_location *loc;
12527   int ix;
12528
12529   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12530     if (--(loc->events_till_retirement) == 0)
12531       {
12532         decref_bp_location (&loc);
12533         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12534         --ix;
12535       }
12536 }
12537
12538 static void
12539 update_global_location_list_nothrow (int inserting)
12540 {
12541   volatile struct gdb_exception e;
12542
12543   TRY_CATCH (e, RETURN_MASK_ERROR)
12544     update_global_location_list (inserting);
12545 }
12546
12547 /* Clear BKP from a BPS.  */
12548
12549 static void
12550 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12551 {
12552   bpstat bs;
12553
12554   for (bs = bps; bs; bs = bs->next)
12555     if (bs->breakpoint_at == bpt)
12556       {
12557         bs->breakpoint_at = NULL;
12558         bs->old_val = NULL;
12559         /* bs->commands will be freed later.  */
12560       }
12561 }
12562
12563 /* Callback for iterate_over_threads.  */
12564 static int
12565 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12566 {
12567   struct breakpoint *bpt = data;
12568
12569   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12570   return 0;
12571 }
12572
12573 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12574    callbacks.  */
12575
12576 static void
12577 say_where (struct breakpoint *b)
12578 {
12579   struct ui_out *uiout = current_uiout;
12580   struct value_print_options opts;
12581
12582   get_user_print_options (&opts);
12583
12584   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12585      single string.  */
12586   if (b->loc == NULL)
12587     {
12588       printf_filtered (_(" (%s) pending."), b->addr_string);
12589     }
12590   else
12591     {
12592       if (opts.addressprint || b->loc->source_file == NULL)
12593         {
12594           printf_filtered (" at ");
12595           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12596                           gdb_stdout);
12597         }
12598       if (b->loc->source_file)
12599         {
12600           /* If there is a single location, we can print the location
12601              more nicely.  */
12602           if (b->loc->next == NULL)
12603             printf_filtered (": file %s, line %d.",
12604                              b->loc->source_file, b->loc->line_number);
12605           else
12606             /* This is not ideal, but each location may have a
12607                different file name, and this at least reflects the
12608                real situation somewhat.  */
12609             printf_filtered (": %s.", b->addr_string);
12610         }
12611
12612       if (b->loc->next)
12613         {
12614           struct bp_location *loc = b->loc;
12615           int n = 0;
12616           for (; loc; loc = loc->next)
12617             ++n;
12618           printf_filtered (" (%d locations)", n);
12619         }
12620     }
12621 }
12622
12623 /* Default bp_location_ops methods.  */
12624
12625 static void
12626 bp_location_dtor (struct bp_location *self)
12627 {
12628   xfree (self->cond);
12629   if (self->cond_bytecode)
12630     free_agent_expr (self->cond_bytecode);
12631   xfree (self->function_name);
12632   xfree (self->source_file);
12633 }
12634
12635 static const struct bp_location_ops bp_location_ops =
12636 {
12637   bp_location_dtor
12638 };
12639
12640 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12641    inherit from.  */
12642
12643 static void
12644 base_breakpoint_dtor (struct breakpoint *self)
12645 {
12646   decref_counted_command_line (&self->commands);
12647   xfree (self->cond_string);
12648   xfree (self->addr_string);
12649   xfree (self->filter);
12650   xfree (self->addr_string_range_end);
12651 }
12652
12653 static struct bp_location *
12654 base_breakpoint_allocate_location (struct breakpoint *self)
12655 {
12656   struct bp_location *loc;
12657
12658   loc = XNEW (struct bp_location);
12659   init_bp_location (loc, &bp_location_ops, self);
12660   return loc;
12661 }
12662
12663 static void
12664 base_breakpoint_re_set (struct breakpoint *b)
12665 {
12666   /* Nothing to re-set. */
12667 }
12668
12669 #define internal_error_pure_virtual_called() \
12670   gdb_assert_not_reached ("pure virtual function called")
12671
12672 static int
12673 base_breakpoint_insert_location (struct bp_location *bl)
12674 {
12675   internal_error_pure_virtual_called ();
12676 }
12677
12678 static int
12679 base_breakpoint_remove_location (struct bp_location *bl)
12680 {
12681   internal_error_pure_virtual_called ();
12682 }
12683
12684 static int
12685 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12686                                 struct address_space *aspace,
12687                                 CORE_ADDR bp_addr,
12688                                 const struct target_waitstatus *ws)
12689 {
12690   internal_error_pure_virtual_called ();
12691 }
12692
12693 static void
12694 base_breakpoint_check_status (bpstat bs)
12695 {
12696   /* Always stop.   */
12697 }
12698
12699 /* A "works_in_software_mode" breakpoint_ops method that just internal
12700    errors.  */
12701
12702 static int
12703 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12704 {
12705   internal_error_pure_virtual_called ();
12706 }
12707
12708 /* A "resources_needed" breakpoint_ops method that just internal
12709    errors.  */
12710
12711 static int
12712 base_breakpoint_resources_needed (const struct bp_location *bl)
12713 {
12714   internal_error_pure_virtual_called ();
12715 }
12716
12717 static enum print_stop_action
12718 base_breakpoint_print_it (bpstat bs)
12719 {
12720   internal_error_pure_virtual_called ();
12721 }
12722
12723 static void
12724 base_breakpoint_print_one_detail (const struct breakpoint *self,
12725                                   struct ui_out *uiout)
12726 {
12727   /* nothing */
12728 }
12729
12730 static void
12731 base_breakpoint_print_mention (struct breakpoint *b)
12732 {
12733   internal_error_pure_virtual_called ();
12734 }
12735
12736 static void
12737 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12738 {
12739   internal_error_pure_virtual_called ();
12740 }
12741
12742 static void
12743 base_breakpoint_create_sals_from_address (char **arg,
12744                                           struct linespec_result *canonical,
12745                                           enum bptype type_wanted,
12746                                           char *addr_start,
12747                                           char **copy_arg)
12748 {
12749   internal_error_pure_virtual_called ();
12750 }
12751
12752 static void
12753 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12754                                         struct linespec_result *c,
12755                                         struct linespec_sals *lsal,
12756                                         char *cond_string,
12757                                         char *extra_string,
12758                                         enum bptype type_wanted,
12759                                         enum bpdisp disposition,
12760                                         int thread,
12761                                         int task, int ignore_count,
12762                                         const struct breakpoint_ops *o,
12763                                         int from_tty, int enabled,
12764                                         int internal, unsigned flags)
12765 {
12766   internal_error_pure_virtual_called ();
12767 }
12768
12769 static void
12770 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12771                                  struct symtabs_and_lines *sals)
12772 {
12773   internal_error_pure_virtual_called ();
12774 }
12775
12776 static struct breakpoint_ops base_breakpoint_ops =
12777 {
12778   base_breakpoint_dtor,
12779   base_breakpoint_allocate_location,
12780   base_breakpoint_re_set,
12781   base_breakpoint_insert_location,
12782   base_breakpoint_remove_location,
12783   base_breakpoint_breakpoint_hit,
12784   base_breakpoint_check_status,
12785   base_breakpoint_resources_needed,
12786   base_breakpoint_works_in_software_mode,
12787   base_breakpoint_print_it,
12788   NULL,
12789   base_breakpoint_print_one_detail,
12790   base_breakpoint_print_mention,
12791   base_breakpoint_print_recreate,
12792   base_breakpoint_create_sals_from_address,
12793   base_breakpoint_create_breakpoints_sal,
12794   base_breakpoint_decode_linespec,
12795 };
12796
12797 /* Default breakpoint_ops methods.  */
12798
12799 static void
12800 bkpt_re_set (struct breakpoint *b)
12801 {
12802   /* FIXME: is this still reachable?  */
12803   if (b->addr_string == NULL)
12804     {
12805       /* Anything without a string can't be re-set.  */
12806       delete_breakpoint (b);
12807       return;
12808     }
12809
12810   breakpoint_re_set_default (b);
12811 }
12812
12813 static int
12814 bkpt_insert_location (struct bp_location *bl)
12815 {
12816   if (bl->loc_type == bp_loc_hardware_breakpoint)
12817     return target_insert_hw_breakpoint (bl->gdbarch,
12818                                         &bl->target_info);
12819   else
12820     return target_insert_breakpoint (bl->gdbarch,
12821                                      &bl->target_info);
12822 }
12823
12824 static int
12825 bkpt_remove_location (struct bp_location *bl)
12826 {
12827   if (bl->loc_type == bp_loc_hardware_breakpoint)
12828     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12829   else
12830     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12831 }
12832
12833 static int
12834 bkpt_breakpoint_hit (const struct bp_location *bl,
12835                      struct address_space *aspace, CORE_ADDR bp_addr,
12836                      const struct target_waitstatus *ws)
12837 {
12838   struct breakpoint *b = bl->owner;
12839
12840   if (ws->kind != TARGET_WAITKIND_STOPPED
12841       || ws->value.sig != GDB_SIGNAL_TRAP)
12842     return 0;
12843
12844   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12845                                  aspace, bp_addr))
12846     return 0;
12847
12848   if (overlay_debugging         /* unmapped overlay section */
12849       && section_is_overlay (bl->section)
12850       && !section_is_mapped (bl->section))
12851     return 0;
12852
12853   return 1;
12854 }
12855
12856 static int
12857 bkpt_resources_needed (const struct bp_location *bl)
12858 {
12859   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12860
12861   return 1;
12862 }
12863
12864 static enum print_stop_action
12865 bkpt_print_it (bpstat bs)
12866 {
12867   struct breakpoint *b;
12868   const struct bp_location *bl;
12869   int bp_temp;
12870   struct ui_out *uiout = current_uiout;
12871
12872   gdb_assert (bs->bp_location_at != NULL);
12873
12874   bl = bs->bp_location_at;
12875   b = bs->breakpoint_at;
12876
12877   bp_temp = b->disposition == disp_del;
12878   if (bl->address != bl->requested_address)
12879     breakpoint_adjustment_warning (bl->requested_address,
12880                                    bl->address,
12881                                    b->number, 1);
12882   annotate_breakpoint (b->number);
12883   if (bp_temp)
12884     ui_out_text (uiout, "\nTemporary breakpoint ");
12885   else
12886     ui_out_text (uiout, "\nBreakpoint ");
12887   if (ui_out_is_mi_like_p (uiout))
12888     {
12889       ui_out_field_string (uiout, "reason",
12890                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12891       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12892     }
12893   ui_out_field_int (uiout, "bkptno", b->number);
12894   ui_out_text (uiout, ", ");
12895
12896   return PRINT_SRC_AND_LOC;
12897 }
12898
12899 static void
12900 bkpt_print_mention (struct breakpoint *b)
12901 {
12902   if (ui_out_is_mi_like_p (current_uiout))
12903     return;
12904
12905   switch (b->type)
12906     {
12907     case bp_breakpoint:
12908     case bp_gnu_ifunc_resolver:
12909       if (b->disposition == disp_del)
12910         printf_filtered (_("Temporary breakpoint"));
12911       else
12912         printf_filtered (_("Breakpoint"));
12913       printf_filtered (_(" %d"), b->number);
12914       if (b->type == bp_gnu_ifunc_resolver)
12915         printf_filtered (_(" at gnu-indirect-function resolver"));
12916       break;
12917     case bp_hardware_breakpoint:
12918       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12919       break;
12920     case bp_dprintf:
12921       printf_filtered (_("Dprintf %d"), b->number);
12922       break;
12923     }
12924
12925   say_where (b);
12926 }
12927
12928 static void
12929 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12930 {
12931   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12932     fprintf_unfiltered (fp, "tbreak");
12933   else if (tp->type == bp_breakpoint)
12934     fprintf_unfiltered (fp, "break");
12935   else if (tp->type == bp_hardware_breakpoint
12936            && tp->disposition == disp_del)
12937     fprintf_unfiltered (fp, "thbreak");
12938   else if (tp->type == bp_hardware_breakpoint)
12939     fprintf_unfiltered (fp, "hbreak");
12940   else
12941     internal_error (__FILE__, __LINE__,
12942                     _("unhandled breakpoint type %d"), (int) tp->type);
12943
12944   fprintf_unfiltered (fp, " %s", tp->addr_string);
12945   print_recreate_thread (tp, fp);
12946 }
12947
12948 static void
12949 bkpt_create_sals_from_address (char **arg,
12950                                struct linespec_result *canonical,
12951                                enum bptype type_wanted,
12952                                char *addr_start, char **copy_arg)
12953 {
12954   create_sals_from_address_default (arg, canonical, type_wanted,
12955                                     addr_start, copy_arg);
12956 }
12957
12958 static void
12959 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12960                              struct linespec_result *canonical,
12961                              struct linespec_sals *lsal,
12962                              char *cond_string,
12963                              char *extra_string,
12964                              enum bptype type_wanted,
12965                              enum bpdisp disposition,
12966                              int thread,
12967                              int task, int ignore_count,
12968                              const struct breakpoint_ops *ops,
12969                              int from_tty, int enabled,
12970                              int internal, unsigned flags)
12971 {
12972   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12973                                   cond_string, extra_string,
12974                                   type_wanted,
12975                                   disposition, thread, task,
12976                                   ignore_count, ops, from_tty,
12977                                   enabled, internal, flags);
12978 }
12979
12980 static void
12981 bkpt_decode_linespec (struct breakpoint *b, char **s,
12982                       struct symtabs_and_lines *sals)
12983 {
12984   decode_linespec_default (b, s, sals);
12985 }
12986
12987 /* Virtual table for internal breakpoints.  */
12988
12989 static void
12990 internal_bkpt_re_set (struct breakpoint *b)
12991 {
12992   switch (b->type)
12993     {
12994       /* Delete overlay event and longjmp master breakpoints; they
12995          will be reset later by breakpoint_re_set.  */
12996     case bp_overlay_event:
12997     case bp_longjmp_master:
12998     case bp_std_terminate_master:
12999     case bp_exception_master:
13000       delete_breakpoint (b);
13001       break;
13002
13003       /* This breakpoint is special, it's set up when the inferior
13004          starts and we really don't want to touch it.  */
13005     case bp_shlib_event:
13006
13007       /* Like bp_shlib_event, this breakpoint type is special.  Once
13008          it is set up, we do not want to touch it.  */
13009     case bp_thread_event:
13010       break;
13011     }
13012 }
13013
13014 static void
13015 internal_bkpt_check_status (bpstat bs)
13016 {
13017   if (bs->breakpoint_at->type == bp_shlib_event)
13018     {
13019       /* If requested, stop when the dynamic linker notifies GDB of
13020          events.  This allows the user to get control and place
13021          breakpoints in initializer routines for dynamically loaded
13022          objects (among other things).  */
13023       bs->stop = stop_on_solib_events;
13024       bs->print = stop_on_solib_events;
13025     }
13026   else
13027     bs->stop = 0;
13028 }
13029
13030 static enum print_stop_action
13031 internal_bkpt_print_it (bpstat bs)
13032 {
13033   struct ui_out *uiout = current_uiout;
13034   struct breakpoint *b;
13035
13036   b = bs->breakpoint_at;
13037
13038   switch (b->type)
13039     {
13040     case bp_shlib_event:
13041       /* Did we stop because the user set the stop_on_solib_events
13042          variable?  (If so, we report this as a generic, "Stopped due
13043          to shlib event" message.) */
13044       print_solib_event (0);
13045       break;
13046
13047     case bp_thread_event:
13048       /* Not sure how we will get here.
13049          GDB should not stop for these breakpoints.  */
13050       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13051       break;
13052
13053     case bp_overlay_event:
13054       /* By analogy with the thread event, GDB should not stop for these.  */
13055       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13056       break;
13057
13058     case bp_longjmp_master:
13059       /* These should never be enabled.  */
13060       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13061       break;
13062
13063     case bp_std_terminate_master:
13064       /* These should never be enabled.  */
13065       printf_filtered (_("std::terminate Master Breakpoint: "
13066                          "gdb should not stop!\n"));
13067       break;
13068
13069     case bp_exception_master:
13070       /* These should never be enabled.  */
13071       printf_filtered (_("Exception Master Breakpoint: "
13072                          "gdb should not stop!\n"));
13073       break;
13074     }
13075
13076   return PRINT_NOTHING;
13077 }
13078
13079 static void
13080 internal_bkpt_print_mention (struct breakpoint *b)
13081 {
13082   /* Nothing to mention.  These breakpoints are internal.  */
13083 }
13084
13085 /* Virtual table for momentary breakpoints  */
13086
13087 static void
13088 momentary_bkpt_re_set (struct breakpoint *b)
13089 {
13090   /* Keep temporary breakpoints, which can be encountered when we step
13091      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
13092      Otherwise these should have been blown away via the cleanup chain
13093      or by breakpoint_init_inferior when we rerun the executable.  */
13094 }
13095
13096 static void
13097 momentary_bkpt_check_status (bpstat bs)
13098 {
13099   /* Nothing.  The point of these breakpoints is causing a stop.  */
13100 }
13101
13102 static enum print_stop_action
13103 momentary_bkpt_print_it (bpstat bs)
13104 {
13105   struct ui_out *uiout = current_uiout;
13106
13107   if (ui_out_is_mi_like_p (uiout))
13108     {
13109       struct breakpoint *b = bs->breakpoint_at;
13110
13111       switch (b->type)
13112         {
13113         case bp_finish:
13114           ui_out_field_string
13115             (uiout, "reason",
13116              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13117           break;
13118
13119         case bp_until:
13120           ui_out_field_string
13121             (uiout, "reason",
13122              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13123           break;
13124         }
13125     }
13126
13127   return PRINT_UNKNOWN;
13128 }
13129
13130 static void
13131 momentary_bkpt_print_mention (struct breakpoint *b)
13132 {
13133   /* Nothing to mention.  These breakpoints are internal.  */
13134 }
13135
13136 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13137
13138    It gets cleared already on the removal of the first one of such placed
13139    breakpoints.  This is OK as they get all removed altogether.  */
13140
13141 static void
13142 longjmp_bkpt_dtor (struct breakpoint *self)
13143 {
13144   struct thread_info *tp = find_thread_id (self->thread);
13145
13146   if (tp)
13147     tp->initiating_frame = null_frame_id;
13148
13149   momentary_breakpoint_ops.dtor (self);
13150 }
13151
13152 /* Specific methods for probe breakpoints.  */
13153
13154 static int
13155 bkpt_probe_insert_location (struct bp_location *bl)
13156 {
13157   int v = bkpt_insert_location (bl);
13158
13159   if (v == 0)
13160     {
13161       /* The insertion was successful, now let's set the probe's semaphore
13162          if needed.  */
13163       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
13164     }
13165
13166   return v;
13167 }
13168
13169 static int
13170 bkpt_probe_remove_location (struct bp_location *bl)
13171 {
13172   /* Let's clear the semaphore before removing the location.  */
13173   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
13174
13175   return bkpt_remove_location (bl);
13176 }
13177
13178 static void
13179 bkpt_probe_create_sals_from_address (char **arg,
13180                                      struct linespec_result *canonical,
13181                                      enum bptype type_wanted,
13182                                      char *addr_start, char **copy_arg)
13183 {
13184   struct linespec_sals lsal;
13185
13186   lsal.sals = parse_probes (arg, canonical);
13187
13188   *copy_arg = xstrdup (canonical->addr_string);
13189   lsal.canonical = xstrdup (*copy_arg);
13190
13191   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13192 }
13193
13194 static void
13195 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13196                             struct symtabs_and_lines *sals)
13197 {
13198   *sals = parse_probes (s, NULL);
13199   if (!sals->sals)
13200     error (_("probe not found"));
13201 }
13202
13203 /* The breakpoint_ops structure to be used in tracepoints.  */
13204
13205 static void
13206 tracepoint_re_set (struct breakpoint *b)
13207 {
13208   breakpoint_re_set_default (b);
13209 }
13210
13211 static int
13212 tracepoint_breakpoint_hit (const struct bp_location *bl,
13213                            struct address_space *aspace, CORE_ADDR bp_addr,
13214                            const struct target_waitstatus *ws)
13215 {
13216   /* By definition, the inferior does not report stops at
13217      tracepoints.  */
13218   return 0;
13219 }
13220
13221 static void
13222 tracepoint_print_one_detail (const struct breakpoint *self,
13223                              struct ui_out *uiout)
13224 {
13225   struct tracepoint *tp = (struct tracepoint *) self;
13226   if (tp->static_trace_marker_id)
13227     {
13228       gdb_assert (self->type == bp_static_tracepoint);
13229
13230       ui_out_text (uiout, "\tmarker id is ");
13231       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13232                            tp->static_trace_marker_id);
13233       ui_out_text (uiout, "\n");
13234     }
13235 }
13236
13237 static void
13238 tracepoint_print_mention (struct breakpoint *b)
13239 {
13240   if (ui_out_is_mi_like_p (current_uiout))
13241     return;
13242
13243   switch (b->type)
13244     {
13245     case bp_tracepoint:
13246       printf_filtered (_("Tracepoint"));
13247       printf_filtered (_(" %d"), b->number);
13248       break;
13249     case bp_fast_tracepoint:
13250       printf_filtered (_("Fast tracepoint"));
13251       printf_filtered (_(" %d"), b->number);
13252       break;
13253     case bp_static_tracepoint:
13254       printf_filtered (_("Static tracepoint"));
13255       printf_filtered (_(" %d"), b->number);
13256       break;
13257     default:
13258       internal_error (__FILE__, __LINE__,
13259                       _("unhandled tracepoint type %d"), (int) b->type);
13260     }
13261
13262   say_where (b);
13263 }
13264
13265 static void
13266 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13267 {
13268   struct tracepoint *tp = (struct tracepoint *) self;
13269
13270   if (self->type == bp_fast_tracepoint)
13271     fprintf_unfiltered (fp, "ftrace");
13272   if (self->type == bp_static_tracepoint)
13273     fprintf_unfiltered (fp, "strace");
13274   else if (self->type == bp_tracepoint)
13275     fprintf_unfiltered (fp, "trace");
13276   else
13277     internal_error (__FILE__, __LINE__,
13278                     _("unhandled tracepoint type %d"), (int) self->type);
13279
13280   fprintf_unfiltered (fp, " %s", self->addr_string);
13281   print_recreate_thread (self, fp);
13282
13283   if (tp->pass_count)
13284     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13285 }
13286
13287 static void
13288 tracepoint_create_sals_from_address (char **arg,
13289                                      struct linespec_result *canonical,
13290                                      enum bptype type_wanted,
13291                                      char *addr_start, char **copy_arg)
13292 {
13293   create_sals_from_address_default (arg, canonical, type_wanted,
13294                                     addr_start, copy_arg);
13295 }
13296
13297 static void
13298 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13299                                    struct linespec_result *canonical,
13300                                    struct linespec_sals *lsal,
13301                                    char *cond_string,
13302                                    char *extra_string,
13303                                    enum bptype type_wanted,
13304                                    enum bpdisp disposition,
13305                                    int thread,
13306                                    int task, int ignore_count,
13307                                    const struct breakpoint_ops *ops,
13308                                    int from_tty, int enabled,
13309                                    int internal, unsigned flags)
13310 {
13311   create_breakpoints_sal_default (gdbarch, canonical, lsal,
13312                                   cond_string, extra_string,
13313                                   type_wanted,
13314                                   disposition, thread, task,
13315                                   ignore_count, ops, from_tty,
13316                                   enabled, internal, flags);
13317 }
13318
13319 static void
13320 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13321                             struct symtabs_and_lines *sals)
13322 {
13323   decode_linespec_default (b, s, sals);
13324 }
13325
13326 struct breakpoint_ops tracepoint_breakpoint_ops;
13327
13328 /* The breakpoint_ops structure to be use on tracepoints placed in a
13329    static probe.  */
13330
13331 static void
13332 tracepoint_probe_create_sals_from_address (char **arg,
13333                                            struct linespec_result *canonical,
13334                                            enum bptype type_wanted,
13335                                            char *addr_start, char **copy_arg)
13336 {
13337   /* We use the same method for breakpoint on probes.  */
13338   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13339                                        addr_start, copy_arg);
13340 }
13341
13342 static void
13343 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13344                                   struct symtabs_and_lines *sals)
13345 {
13346   /* We use the same method for breakpoint on probes.  */
13347   bkpt_probe_decode_linespec (b, s, sals);
13348 }
13349
13350 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13351
13352 /* The breakpoint_ops structure to be used on static tracepoints with
13353    markers (`-m').  */
13354
13355 static void
13356 strace_marker_create_sals_from_address (char **arg,
13357                                         struct linespec_result *canonical,
13358                                         enum bptype type_wanted,
13359                                         char *addr_start, char **copy_arg)
13360 {
13361   struct linespec_sals lsal;
13362
13363   lsal.sals = decode_static_tracepoint_spec (arg);
13364
13365   *copy_arg = savestring (addr_start, *arg - addr_start);
13366
13367   canonical->addr_string = xstrdup (*copy_arg);
13368   lsal.canonical = xstrdup (*copy_arg);
13369   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13370 }
13371
13372 static void
13373 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13374                                       struct linespec_result *canonical,
13375                                       struct linespec_sals *lsal,
13376                                       char *cond_string,
13377                                       char *extra_string,
13378                                       enum bptype type_wanted,
13379                                       enum bpdisp disposition,
13380                                       int thread,
13381                                       int task, int ignore_count,
13382                                       const struct breakpoint_ops *ops,
13383                                       int from_tty, int enabled,
13384                                       int internal, unsigned flags)
13385 {
13386   int i;
13387
13388   /* If the user is creating a static tracepoint by marker id
13389      (strace -m MARKER_ID), then store the sals index, so that
13390      breakpoint_re_set can try to match up which of the newly
13391      found markers corresponds to this one, and, don't try to
13392      expand multiple locations for each sal, given than SALS
13393      already should contain all sals for MARKER_ID.  */
13394
13395   for (i = 0; i < lsal->sals.nelts; ++i)
13396     {
13397       struct symtabs_and_lines expanded;
13398       struct tracepoint *tp;
13399       struct cleanup *old_chain;
13400       char *addr_string;
13401
13402       expanded.nelts = 1;
13403       expanded.sals = &lsal->sals.sals[i];
13404
13405       addr_string = xstrdup (canonical->addr_string);
13406       old_chain = make_cleanup (xfree, addr_string);
13407
13408       tp = XCNEW (struct tracepoint);
13409       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13410                            addr_string, NULL,
13411                            cond_string, extra_string,
13412                            type_wanted, disposition,
13413                            thread, task, ignore_count, ops,
13414                            from_tty, enabled, internal, flags,
13415                            canonical->special_display);
13416       /* Given that its possible to have multiple markers with
13417          the same string id, if the user is creating a static
13418          tracepoint by marker id ("strace -m MARKER_ID"), then
13419          store the sals index, so that breakpoint_re_set can
13420          try to match up which of the newly found markers
13421          corresponds to this one  */
13422       tp->static_trace_marker_id_idx = i;
13423
13424       install_breakpoint (internal, &tp->base, 0);
13425
13426       discard_cleanups (old_chain);
13427     }
13428 }
13429
13430 static void
13431 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13432                                struct symtabs_and_lines *sals)
13433 {
13434   struct tracepoint *tp = (struct tracepoint *) b;
13435
13436   *sals = decode_static_tracepoint_spec (s);
13437   if (sals->nelts > tp->static_trace_marker_id_idx)
13438     {
13439       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13440       sals->nelts = 1;
13441     }
13442   else
13443     error (_("marker %s not found"), tp->static_trace_marker_id);
13444 }
13445
13446 static struct breakpoint_ops strace_marker_breakpoint_ops;
13447
13448 static int
13449 strace_marker_p (struct breakpoint *b)
13450 {
13451   return b->ops == &strace_marker_breakpoint_ops;
13452 }
13453
13454 /* Delete a breakpoint and clean up all traces of it in the data
13455    structures.  */
13456
13457 void
13458 delete_breakpoint (struct breakpoint *bpt)
13459 {
13460   struct breakpoint *b;
13461
13462   gdb_assert (bpt != NULL);
13463
13464   /* Has this bp already been deleted?  This can happen because
13465      multiple lists can hold pointers to bp's.  bpstat lists are
13466      especial culprits.
13467
13468      One example of this happening is a watchpoint's scope bp.  When
13469      the scope bp triggers, we notice that the watchpoint is out of
13470      scope, and delete it.  We also delete its scope bp.  But the
13471      scope bp is marked "auto-deleting", and is already on a bpstat.
13472      That bpstat is then checked for auto-deleting bp's, which are
13473      deleted.
13474
13475      A real solution to this problem might involve reference counts in
13476      bp's, and/or giving them pointers back to their referencing
13477      bpstat's, and teaching delete_breakpoint to only free a bp's
13478      storage when no more references were extent.  A cheaper bandaid
13479      was chosen.  */
13480   if (bpt->type == bp_none)
13481     return;
13482
13483   /* At least avoid this stale reference until the reference counting
13484      of breakpoints gets resolved.  */
13485   if (bpt->related_breakpoint != bpt)
13486     {
13487       struct breakpoint *related;
13488       struct watchpoint *w;
13489
13490       if (bpt->type == bp_watchpoint_scope)
13491         w = (struct watchpoint *) bpt->related_breakpoint;
13492       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13493         w = (struct watchpoint *) bpt;
13494       else
13495         w = NULL;
13496       if (w != NULL)
13497         watchpoint_del_at_next_stop (w);
13498
13499       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13500       for (related = bpt; related->related_breakpoint != bpt;
13501            related = related->related_breakpoint);
13502       related->related_breakpoint = bpt->related_breakpoint;
13503       bpt->related_breakpoint = bpt;
13504     }
13505
13506   /* watch_command_1 creates a watchpoint but only sets its number if
13507      update_watchpoint succeeds in creating its bp_locations.  If there's
13508      a problem in that process, we'll be asked to delete the half-created
13509      watchpoint.  In that case, don't announce the deletion.  */
13510   if (bpt->number)
13511     observer_notify_breakpoint_deleted (bpt);
13512
13513   if (breakpoint_chain == bpt)
13514     breakpoint_chain = bpt->next;
13515
13516   ALL_BREAKPOINTS (b)
13517     if (b->next == bpt)
13518     {
13519       b->next = bpt->next;
13520       break;
13521     }
13522
13523   /* Be sure no bpstat's are pointing at the breakpoint after it's
13524      been freed.  */
13525   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13526      in all threads for now.  Note that we cannot just remove bpstats
13527      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13528      commands are associated with the bpstat; if we remove it here,
13529      then the later call to bpstat_do_actions (&stop_bpstat); in
13530      event-top.c won't do anything, and temporary breakpoints with
13531      commands won't work.  */
13532
13533   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13534
13535   /* Now that breakpoint is removed from breakpoint list, update the
13536      global location list.  This will remove locations that used to
13537      belong to this breakpoint.  Do this before freeing the breakpoint
13538      itself, since remove_breakpoint looks at location's owner.  It
13539      might be better design to have location completely
13540      self-contained, but it's not the case now.  */
13541   update_global_location_list (0);
13542
13543   bpt->ops->dtor (bpt);
13544   /* On the chance that someone will soon try again to delete this
13545      same bp, we mark it as deleted before freeing its storage.  */
13546   bpt->type = bp_none;
13547   xfree (bpt);
13548 }
13549
13550 static void
13551 do_delete_breakpoint_cleanup (void *b)
13552 {
13553   delete_breakpoint (b);
13554 }
13555
13556 struct cleanup *
13557 make_cleanup_delete_breakpoint (struct breakpoint *b)
13558 {
13559   return make_cleanup (do_delete_breakpoint_cleanup, b);
13560 }
13561
13562 /* Iterator function to call a user-provided callback function once
13563    for each of B and its related breakpoints.  */
13564
13565 static void
13566 iterate_over_related_breakpoints (struct breakpoint *b,
13567                                   void (*function) (struct breakpoint *,
13568                                                     void *),
13569                                   void *data)
13570 {
13571   struct breakpoint *related;
13572
13573   related = b;
13574   do
13575     {
13576       struct breakpoint *next;
13577
13578       /* FUNCTION may delete RELATED.  */
13579       next = related->related_breakpoint;
13580
13581       if (next == related)
13582         {
13583           /* RELATED is the last ring entry.  */
13584           function (related, data);
13585
13586           /* FUNCTION may have deleted it, so we'd never reach back to
13587              B.  There's nothing left to do anyway, so just break
13588              out.  */
13589           break;
13590         }
13591       else
13592         function (related, data);
13593
13594       related = next;
13595     }
13596   while (related != b);
13597 }
13598
13599 static void
13600 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13601 {
13602   delete_breakpoint (b);
13603 }
13604
13605 /* A callback for map_breakpoint_numbers that calls
13606    delete_breakpoint.  */
13607
13608 static void
13609 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13610 {
13611   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13612 }
13613
13614 void
13615 delete_command (char *arg, int from_tty)
13616 {
13617   struct breakpoint *b, *b_tmp;
13618
13619   dont_repeat ();
13620
13621   if (arg == 0)
13622     {
13623       int breaks_to_delete = 0;
13624
13625       /* Delete all breakpoints if no argument.  Do not delete
13626          internal breakpoints, these have to be deleted with an
13627          explicit breakpoint number argument.  */
13628       ALL_BREAKPOINTS (b)
13629         if (user_breakpoint_p (b))
13630           {
13631             breaks_to_delete = 1;
13632             break;
13633           }
13634
13635       /* Ask user only if there are some breakpoints to delete.  */
13636       if (!from_tty
13637           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13638         {
13639           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13640             if (user_breakpoint_p (b))
13641               delete_breakpoint (b);
13642         }
13643     }
13644   else
13645     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13646 }
13647
13648 static int
13649 all_locations_are_pending (struct bp_location *loc)
13650 {
13651   for (; loc; loc = loc->next)
13652     if (!loc->shlib_disabled
13653         && !loc->pspace->executing_startup)
13654       return 0;
13655   return 1;
13656 }
13657
13658 /* Subroutine of update_breakpoint_locations to simplify it.
13659    Return non-zero if multiple fns in list LOC have the same name.
13660    Null names are ignored.  */
13661
13662 static int
13663 ambiguous_names_p (struct bp_location *loc)
13664 {
13665   struct bp_location *l;
13666   htab_t htab = htab_create_alloc (13, htab_hash_string,
13667                                    (int (*) (const void *, 
13668                                              const void *)) streq,
13669                                    NULL, xcalloc, xfree);
13670
13671   for (l = loc; l != NULL; l = l->next)
13672     {
13673       const char **slot;
13674       const char *name = l->function_name;
13675
13676       /* Allow for some names to be NULL, ignore them.  */
13677       if (name == NULL)
13678         continue;
13679
13680       slot = (const char **) htab_find_slot (htab, (const void *) name,
13681                                              INSERT);
13682       /* NOTE: We can assume slot != NULL here because xcalloc never
13683          returns NULL.  */
13684       if (*slot != NULL)
13685         {
13686           htab_delete (htab);
13687           return 1;
13688         }
13689       *slot = name;
13690     }
13691
13692   htab_delete (htab);
13693   return 0;
13694 }
13695
13696 /* When symbols change, it probably means the sources changed as well,
13697    and it might mean the static tracepoint markers are no longer at
13698    the same address or line numbers they used to be at last we
13699    checked.  Losing your static tracepoints whenever you rebuild is
13700    undesirable.  This function tries to resync/rematch gdb static
13701    tracepoints with the markers on the target, for static tracepoints
13702    that have not been set by marker id.  Static tracepoint that have
13703    been set by marker id are reset by marker id in breakpoint_re_set.
13704    The heuristic is:
13705
13706    1) For a tracepoint set at a specific address, look for a marker at
13707    the old PC.  If one is found there, assume to be the same marker.
13708    If the name / string id of the marker found is different from the
13709    previous known name, assume that means the user renamed the marker
13710    in the sources, and output a warning.
13711
13712    2) For a tracepoint set at a given line number, look for a marker
13713    at the new address of the old line number.  If one is found there,
13714    assume to be the same marker.  If the name / string id of the
13715    marker found is different from the previous known name, assume that
13716    means the user renamed the marker in the sources, and output a
13717    warning.
13718
13719    3) If a marker is no longer found at the same address or line, it
13720    may mean the marker no longer exists.  But it may also just mean
13721    the code changed a bit.  Maybe the user added a few lines of code
13722    that made the marker move up or down (in line number terms).  Ask
13723    the target for info about the marker with the string id as we knew
13724    it.  If found, update line number and address in the matching
13725    static tracepoint.  This will get confused if there's more than one
13726    marker with the same ID (possible in UST, although unadvised
13727    precisely because it confuses tools).  */
13728
13729 static struct symtab_and_line
13730 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13731 {
13732   struct tracepoint *tp = (struct tracepoint *) b;
13733   struct static_tracepoint_marker marker;
13734   CORE_ADDR pc;
13735
13736   pc = sal.pc;
13737   if (sal.line)
13738     find_line_pc (sal.symtab, sal.line, &pc);
13739
13740   if (target_static_tracepoint_marker_at (pc, &marker))
13741     {
13742       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13743         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13744                  b->number,
13745                  tp->static_trace_marker_id, marker.str_id);
13746
13747       xfree (tp->static_trace_marker_id);
13748       tp->static_trace_marker_id = xstrdup (marker.str_id);
13749       release_static_tracepoint_marker (&marker);
13750
13751       return sal;
13752     }
13753
13754   /* Old marker wasn't found on target at lineno.  Try looking it up
13755      by string ID.  */
13756   if (!sal.explicit_pc
13757       && sal.line != 0
13758       && sal.symtab != NULL
13759       && tp->static_trace_marker_id != NULL)
13760     {
13761       VEC(static_tracepoint_marker_p) *markers;
13762
13763       markers
13764         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13765
13766       if (!VEC_empty(static_tracepoint_marker_p, markers))
13767         {
13768           struct symtab_and_line sal2;
13769           struct symbol *sym;
13770           struct static_tracepoint_marker *tpmarker;
13771           struct ui_out *uiout = current_uiout;
13772
13773           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13774
13775           xfree (tp->static_trace_marker_id);
13776           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13777
13778           warning (_("marker for static tracepoint %d (%s) not "
13779                      "found at previous line number"),
13780                    b->number, tp->static_trace_marker_id);
13781
13782           init_sal (&sal2);
13783
13784           sal2.pc = tpmarker->address;
13785
13786           sal2 = find_pc_line (tpmarker->address, 0);
13787           sym = find_pc_sect_function (tpmarker->address, NULL);
13788           ui_out_text (uiout, "Now in ");
13789           if (sym)
13790             {
13791               ui_out_field_string (uiout, "func",
13792                                    SYMBOL_PRINT_NAME (sym));
13793               ui_out_text (uiout, " at ");
13794             }
13795           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13796           ui_out_text (uiout, ":");
13797
13798           if (ui_out_is_mi_like_p (uiout))
13799             {
13800               char *fullname = symtab_to_fullname (sal2.symtab);
13801
13802               if (fullname)
13803                 ui_out_field_string (uiout, "fullname", fullname);
13804             }
13805
13806           ui_out_field_int (uiout, "line", sal2.line);
13807           ui_out_text (uiout, "\n");
13808
13809           b->loc->line_number = sal2.line;
13810
13811           xfree (b->loc->source_file);
13812           if (sym)
13813             b->loc->source_file = xstrdup (sal2.symtab->filename);
13814           else
13815             b->loc->source_file = NULL;
13816
13817           xfree (b->addr_string);
13818           b->addr_string = xstrprintf ("%s:%d",
13819                                        sal2.symtab->filename,
13820                                        b->loc->line_number);
13821
13822           /* Might be nice to check if function changed, and warn if
13823              so.  */
13824
13825           release_static_tracepoint_marker (tpmarker);
13826         }
13827     }
13828   return sal;
13829 }
13830
13831 /* Returns 1 iff locations A and B are sufficiently same that
13832    we don't need to report breakpoint as changed.  */
13833
13834 static int
13835 locations_are_equal (struct bp_location *a, struct bp_location *b)
13836 {
13837   while (a && b)
13838     {
13839       if (a->address != b->address)
13840         return 0;
13841
13842       if (a->shlib_disabled != b->shlib_disabled)
13843         return 0;
13844
13845       if (a->enabled != b->enabled)
13846         return 0;
13847
13848       a = a->next;
13849       b = b->next;
13850     }
13851
13852   if ((a == NULL) != (b == NULL))
13853     return 0;
13854
13855   return 1;
13856 }
13857
13858 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13859    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13860    a ranged breakpoint.  */
13861
13862 void
13863 update_breakpoint_locations (struct breakpoint *b,
13864                              struct symtabs_and_lines sals,
13865                              struct symtabs_and_lines sals_end)
13866 {
13867   int i;
13868   struct bp_location *existing_locations = b->loc;
13869
13870   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13871     {
13872       /* Ranged breakpoints have only one start location and one end
13873          location.  */
13874       b->enable_state = bp_disabled;
13875       update_global_location_list (1);
13876       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13877                            "multiple locations found\n"),
13878                          b->number);
13879       return;
13880     }
13881
13882   /* If there's no new locations, and all existing locations are
13883      pending, don't do anything.  This optimizes the common case where
13884      all locations are in the same shared library, that was unloaded.
13885      We'd like to retain the location, so that when the library is
13886      loaded again, we don't loose the enabled/disabled status of the
13887      individual locations.  */
13888   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13889     return;
13890
13891   b->loc = NULL;
13892
13893   for (i = 0; i < sals.nelts; ++i)
13894     {
13895       struct bp_location *new_loc;
13896
13897       switch_to_program_space_and_thread (sals.sals[i].pspace);
13898
13899       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13900
13901       /* Reparse conditions, they might contain references to the
13902          old symtab.  */
13903       if (b->cond_string != NULL)
13904         {
13905           char *s;
13906           volatile struct gdb_exception e;
13907
13908           s = b->cond_string;
13909           TRY_CATCH (e, RETURN_MASK_ERROR)
13910             {
13911               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
13912                                            block_for_pc (sals.sals[i].pc), 
13913                                            0);
13914             }
13915           if (e.reason < 0)
13916             {
13917               warning (_("failed to reevaluate condition "
13918                          "for breakpoint %d: %s"), 
13919                        b->number, e.message);
13920               new_loc->enabled = 0;
13921             }
13922         }
13923
13924       if (sals_end.nelts)
13925         {
13926           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13927
13928           new_loc->length = end - sals.sals[0].pc + 1;
13929         }
13930     }
13931
13932   /* Update locations of permanent breakpoints.  */
13933   if (b->enable_state == bp_permanent)
13934     make_breakpoint_permanent (b);
13935
13936   /* If possible, carry over 'disable' status from existing
13937      breakpoints.  */
13938   {
13939     struct bp_location *e = existing_locations;
13940     /* If there are multiple breakpoints with the same function name,
13941        e.g. for inline functions, comparing function names won't work.
13942        Instead compare pc addresses; this is just a heuristic as things
13943        may have moved, but in practice it gives the correct answer
13944        often enough until a better solution is found.  */
13945     int have_ambiguous_names = ambiguous_names_p (b->loc);
13946
13947     for (; e; e = e->next)
13948       {
13949         if (!e->enabled && e->function_name)
13950           {
13951             struct bp_location *l = b->loc;
13952             if (have_ambiguous_names)
13953               {
13954                 for (; l; l = l->next)
13955                   if (breakpoint_locations_match (e, l))
13956                     {
13957                       l->enabled = 0;
13958                       break;
13959                     }
13960               }
13961             else
13962               {
13963                 for (; l; l = l->next)
13964                   if (l->function_name
13965                       && strcmp (e->function_name, l->function_name) == 0)
13966                     {
13967                       l->enabled = 0;
13968                       break;
13969                     }
13970               }
13971           }
13972       }
13973   }
13974
13975   if (!locations_are_equal (existing_locations, b->loc))
13976     observer_notify_breakpoint_modified (b);
13977
13978   update_global_location_list (1);
13979 }
13980
13981 /* Find the SaL locations corresponding to the given ADDR_STRING.
13982    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13983
13984 static struct symtabs_and_lines
13985 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13986 {
13987   char *s;
13988   struct symtabs_and_lines sals = {0};
13989   volatile struct gdb_exception e;
13990
13991   gdb_assert (b->ops != NULL);
13992   s = addr_string;
13993
13994   TRY_CATCH (e, RETURN_MASK_ERROR)
13995     {
13996       b->ops->decode_linespec (b, &s, &sals);
13997     }
13998   if (e.reason < 0)
13999     {
14000       int not_found_and_ok = 0;
14001       /* For pending breakpoints, it's expected that parsing will
14002          fail until the right shared library is loaded.  User has
14003          already told to create pending breakpoints and don't need
14004          extra messages.  If breakpoint is in bp_shlib_disabled
14005          state, then user already saw the message about that
14006          breakpoint being disabled, and don't want to see more
14007          errors.  */
14008       if (e.error == NOT_FOUND_ERROR
14009           && (b->condition_not_parsed 
14010               || (b->loc && b->loc->shlib_disabled)
14011               || (b->loc && b->loc->pspace->executing_startup)
14012               || b->enable_state == bp_disabled))
14013         not_found_and_ok = 1;
14014
14015       if (!not_found_and_ok)
14016         {
14017           /* We surely don't want to warn about the same breakpoint
14018              10 times.  One solution, implemented here, is disable
14019              the breakpoint on error.  Another solution would be to
14020              have separate 'warning emitted' flag.  Since this
14021              happens only when a binary has changed, I don't know
14022              which approach is better.  */
14023           b->enable_state = bp_disabled;
14024           throw_exception (e);
14025         }
14026     }
14027
14028   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14029     {
14030       int i;
14031
14032       for (i = 0; i < sals.nelts; ++i)
14033         resolve_sal_pc (&sals.sals[i]);
14034       if (b->condition_not_parsed && s && s[0])
14035         {
14036           char *cond_string, *extra_string;
14037           int thread, task;
14038
14039           find_condition_and_thread (s, sals.sals[0].pc,
14040                                      &cond_string, &thread, &task,
14041                                      &extra_string);
14042           if (cond_string)
14043             b->cond_string = cond_string;
14044           b->thread = thread;
14045           b->task = task;
14046           if (extra_string)
14047             b->extra_string = extra_string;
14048           b->condition_not_parsed = 0;
14049         }
14050
14051       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14052         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14053
14054       *found = 1;
14055     }
14056   else
14057     *found = 0;
14058
14059   return sals;
14060 }
14061
14062 /* The default re_set method, for typical hardware or software
14063    breakpoints.  Reevaluate the breakpoint and recreate its
14064    locations.  */
14065
14066 static void
14067 breakpoint_re_set_default (struct breakpoint *b)
14068 {
14069   int found;
14070   struct symtabs_and_lines sals, sals_end;
14071   struct symtabs_and_lines expanded = {0};
14072   struct symtabs_and_lines expanded_end = {0};
14073
14074   sals = addr_string_to_sals (b, b->addr_string, &found);
14075   if (found)
14076     {
14077       make_cleanup (xfree, sals.sals);
14078       expanded = sals;
14079     }
14080
14081   if (b->addr_string_range_end)
14082     {
14083       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14084       if (found)
14085         {
14086           make_cleanup (xfree, sals_end.sals);
14087           expanded_end = sals_end;
14088         }
14089     }
14090
14091   update_breakpoint_locations (b, expanded, expanded_end);
14092 }
14093
14094 /* Default method for creating SALs from an address string.  It basically
14095    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14096
14097 static void
14098 create_sals_from_address_default (char **arg,
14099                                   struct linespec_result *canonical,
14100                                   enum bptype type_wanted,
14101                                   char *addr_start, char **copy_arg)
14102 {
14103   parse_breakpoint_sals (arg, canonical);
14104 }
14105
14106 /* Call create_breakpoints_sal for the given arguments.  This is the default
14107    function for the `create_breakpoints_sal' method of
14108    breakpoint_ops.  */
14109
14110 static void
14111 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14112                                 struct linespec_result *canonical,
14113                                 struct linespec_sals *lsal,
14114                                 char *cond_string,
14115                                 char *extra_string,
14116                                 enum bptype type_wanted,
14117                                 enum bpdisp disposition,
14118                                 int thread,
14119                                 int task, int ignore_count,
14120                                 const struct breakpoint_ops *ops,
14121                                 int from_tty, int enabled,
14122                                 int internal, unsigned flags)
14123 {
14124   create_breakpoints_sal (gdbarch, canonical, cond_string,
14125                           extra_string,
14126                           type_wanted, disposition,
14127                           thread, task, ignore_count, ops, from_tty,
14128                           enabled, internal, flags);
14129 }
14130
14131 /* Decode the line represented by S by calling decode_line_full.  This is the
14132    default function for the `decode_linespec' method of breakpoint_ops.  */
14133
14134 static void
14135 decode_linespec_default (struct breakpoint *b, char **s,
14136                          struct symtabs_and_lines *sals)
14137 {
14138   struct linespec_result canonical;
14139
14140   init_linespec_result (&canonical);
14141   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14142                     (struct symtab *) NULL, 0,
14143                     &canonical, multiple_symbols_all,
14144                     b->filter);
14145
14146   /* We should get 0 or 1 resulting SALs.  */
14147   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14148
14149   if (VEC_length (linespec_sals, canonical.sals) > 0)
14150     {
14151       struct linespec_sals *lsal;
14152
14153       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14154       *sals = lsal->sals;
14155       /* Arrange it so the destructor does not free the
14156          contents.  */
14157       lsal->sals.sals = NULL;
14158     }
14159
14160   destroy_linespec_result (&canonical);
14161 }
14162
14163 /* Prepare the global context for a re-set of breakpoint B.  */
14164
14165 static struct cleanup *
14166 prepare_re_set_context (struct breakpoint *b)
14167 {
14168   struct cleanup *cleanups;
14169
14170   input_radix = b->input_radix;
14171   cleanups = save_current_space_and_thread ();
14172   if (b->pspace != NULL)
14173     switch_to_program_space_and_thread (b->pspace);
14174   set_language (b->language);
14175
14176   return cleanups;
14177 }
14178
14179 /* Reset a breakpoint given it's struct breakpoint * BINT.
14180    The value we return ends up being the return value from catch_errors.
14181    Unused in this case.  */
14182
14183 static int
14184 breakpoint_re_set_one (void *bint)
14185 {
14186   /* Get past catch_errs.  */
14187   struct breakpoint *b = (struct breakpoint *) bint;
14188   struct cleanup *cleanups;
14189
14190   cleanups = prepare_re_set_context (b);
14191   b->ops->re_set (b);
14192   do_cleanups (cleanups);
14193   return 0;
14194 }
14195
14196 /* Re-set all breakpoints after symbols have been re-loaded.  */
14197 void
14198 breakpoint_re_set (void)
14199 {
14200   struct breakpoint *b, *b_tmp;
14201   enum language save_language;
14202   int save_input_radix;
14203   struct cleanup *old_chain;
14204
14205   save_language = current_language->la_language;
14206   save_input_radix = input_radix;
14207   old_chain = save_current_program_space ();
14208
14209   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14210   {
14211     /* Format possible error msg.  */
14212     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14213                                 b->number);
14214     struct cleanup *cleanups = make_cleanup (xfree, message);
14215     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14216     do_cleanups (cleanups);
14217   }
14218   set_language (save_language);
14219   input_radix = save_input_radix;
14220
14221   jit_breakpoint_re_set ();
14222
14223   do_cleanups (old_chain);
14224
14225   create_overlay_event_breakpoint ();
14226   create_longjmp_master_breakpoint ();
14227   create_std_terminate_master_breakpoint ();
14228   create_exception_master_breakpoint ();
14229
14230   /* While we're at it, reset the skip list too.  */
14231   skip_re_set ();
14232 }
14233 \f
14234 /* Reset the thread number of this breakpoint:
14235
14236    - If the breakpoint is for all threads, leave it as-is.
14237    - Else, reset it to the current thread for inferior_ptid.  */
14238 void
14239 breakpoint_re_set_thread (struct breakpoint *b)
14240 {
14241   if (b->thread != -1)
14242     {
14243       if (in_thread_list (inferior_ptid))
14244         b->thread = pid_to_thread_id (inferior_ptid);
14245
14246       /* We're being called after following a fork.  The new fork is
14247          selected as current, and unless this was a vfork will have a
14248          different program space from the original thread.  Reset that
14249          as well.  */
14250       b->loc->pspace = current_program_space;
14251     }
14252 }
14253
14254 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14255    If from_tty is nonzero, it prints a message to that effect,
14256    which ends with a period (no newline).  */
14257
14258 void
14259 set_ignore_count (int bptnum, int count, int from_tty)
14260 {
14261   struct breakpoint *b;
14262
14263   if (count < 0)
14264     count = 0;
14265
14266   ALL_BREAKPOINTS (b)
14267     if (b->number == bptnum)
14268     {
14269       if (is_tracepoint (b))
14270         {
14271           if (from_tty && count != 0)
14272             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14273                              bptnum);
14274           return;
14275         }
14276       
14277       b->ignore_count = count;
14278       if (from_tty)
14279         {
14280           if (count == 0)
14281             printf_filtered (_("Will stop next time "
14282                                "breakpoint %d is reached."),
14283                              bptnum);
14284           else if (count == 1)
14285             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14286                              bptnum);
14287           else
14288             printf_filtered (_("Will ignore next %d "
14289                                "crossings of breakpoint %d."),
14290                              count, bptnum);
14291         }
14292       breakpoints_changed ();
14293       observer_notify_breakpoint_modified (b);
14294       return;
14295     }
14296
14297   error (_("No breakpoint number %d."), bptnum);
14298 }
14299
14300 /* Command to set ignore-count of breakpoint N to COUNT.  */
14301
14302 static void
14303 ignore_command (char *args, int from_tty)
14304 {
14305   char *p = args;
14306   int num;
14307
14308   if (p == 0)
14309     error_no_arg (_("a breakpoint number"));
14310
14311   num = get_number (&p);
14312   if (num == 0)
14313     error (_("bad breakpoint number: '%s'"), args);
14314   if (*p == 0)
14315     error (_("Second argument (specified ignore-count) is missing."));
14316
14317   set_ignore_count (num,
14318                     longest_to_int (value_as_long (parse_and_eval (p))),
14319                     from_tty);
14320   if (from_tty)
14321     printf_filtered ("\n");
14322 }
14323 \f
14324 /* Call FUNCTION on each of the breakpoints
14325    whose numbers are given in ARGS.  */
14326
14327 static void
14328 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14329                                                       void *),
14330                         void *data)
14331 {
14332   int num;
14333   struct breakpoint *b, *tmp;
14334   int match;
14335   struct get_number_or_range_state state;
14336
14337   if (args == 0)
14338     error_no_arg (_("one or more breakpoint numbers"));
14339
14340   init_number_or_range (&state, args);
14341
14342   while (!state.finished)
14343     {
14344       char *p = state.string;
14345
14346       match = 0;
14347
14348       num = get_number_or_range (&state);
14349       if (num == 0)
14350         {
14351           warning (_("bad breakpoint number at or near '%s'"), p);
14352         }
14353       else
14354         {
14355           ALL_BREAKPOINTS_SAFE (b, tmp)
14356             if (b->number == num)
14357               {
14358                 match = 1;
14359                 function (b, data);
14360                 break;
14361               }
14362           if (match == 0)
14363             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14364         }
14365     }
14366 }
14367
14368 static struct bp_location *
14369 find_location_by_number (char *number)
14370 {
14371   char *dot = strchr (number, '.');
14372   char *p1;
14373   int bp_num;
14374   int loc_num;
14375   struct breakpoint *b;
14376   struct bp_location *loc;  
14377
14378   *dot = '\0';
14379
14380   p1 = number;
14381   bp_num = get_number (&p1);
14382   if (bp_num == 0)
14383     error (_("Bad breakpoint number '%s'"), number);
14384
14385   ALL_BREAKPOINTS (b)
14386     if (b->number == bp_num)
14387       {
14388         break;
14389       }
14390
14391   if (!b || b->number != bp_num)
14392     error (_("Bad breakpoint number '%s'"), number);
14393   
14394   p1 = dot+1;
14395   loc_num = get_number (&p1);
14396   if (loc_num == 0)
14397     error (_("Bad breakpoint location number '%s'"), number);
14398
14399   --loc_num;
14400   loc = b->loc;
14401   for (;loc_num && loc; --loc_num, loc = loc->next)
14402     ;
14403   if (!loc)
14404     error (_("Bad breakpoint location number '%s'"), dot+1);
14405     
14406   return loc;  
14407 }
14408
14409
14410 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14411    If from_tty is nonzero, it prints a message to that effect,
14412    which ends with a period (no newline).  */
14413
14414 void
14415 disable_breakpoint (struct breakpoint *bpt)
14416 {
14417   /* Never disable a watchpoint scope breakpoint; we want to
14418      hit them when we leave scope so we can delete both the
14419      watchpoint and its scope breakpoint at that time.  */
14420   if (bpt->type == bp_watchpoint_scope)
14421     return;
14422
14423   /* You can't disable permanent breakpoints.  */
14424   if (bpt->enable_state == bp_permanent)
14425     return;
14426
14427   bpt->enable_state = bp_disabled;
14428
14429   /* Mark breakpoint locations modified.  */
14430   mark_breakpoint_modified (bpt);
14431
14432   if (target_supports_enable_disable_tracepoint ()
14433       && current_trace_status ()->running && is_tracepoint (bpt))
14434     {
14435       struct bp_location *location;
14436      
14437       for (location = bpt->loc; location; location = location->next)
14438         target_disable_tracepoint (location);
14439     }
14440
14441   update_global_location_list (0);
14442
14443   observer_notify_breakpoint_modified (bpt);
14444 }
14445
14446 /* A callback for iterate_over_related_breakpoints.  */
14447
14448 static void
14449 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14450 {
14451   disable_breakpoint (b);
14452 }
14453
14454 /* A callback for map_breakpoint_numbers that calls
14455    disable_breakpoint.  */
14456
14457 static void
14458 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14459 {
14460   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14461 }
14462
14463 static void
14464 disable_command (char *args, int from_tty)
14465 {
14466   if (args == 0)
14467     {
14468       struct breakpoint *bpt;
14469
14470       ALL_BREAKPOINTS (bpt)
14471         if (user_breakpoint_p (bpt))
14472           disable_breakpoint (bpt);
14473     }
14474   else if (strchr (args, '.'))
14475     {
14476       struct bp_location *loc = find_location_by_number (args);
14477       if (loc)
14478         {
14479           if (loc->enabled)
14480             {
14481               loc->enabled = 0;
14482               mark_breakpoint_location_modified (loc);
14483             }
14484           if (target_supports_enable_disable_tracepoint ()
14485               && current_trace_status ()->running && loc->owner
14486               && is_tracepoint (loc->owner))
14487             target_disable_tracepoint (loc);
14488         }
14489       update_global_location_list (0);
14490     }
14491   else
14492     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14493 }
14494
14495 static void
14496 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14497                         int count)
14498 {
14499   int target_resources_ok;
14500
14501   if (bpt->type == bp_hardware_breakpoint)
14502     {
14503       int i;
14504       i = hw_breakpoint_used_count ();
14505       target_resources_ok = 
14506         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14507                                             i + 1, 0);
14508       if (target_resources_ok == 0)
14509         error (_("No hardware breakpoint support in the target."));
14510       else if (target_resources_ok < 0)
14511         error (_("Hardware breakpoints used exceeds limit."));
14512     }
14513
14514   if (is_watchpoint (bpt))
14515     {
14516       /* Initialize it just to avoid a GCC false warning.  */
14517       enum enable_state orig_enable_state = 0;
14518       volatile struct gdb_exception e;
14519
14520       TRY_CATCH (e, RETURN_MASK_ALL)
14521         {
14522           struct watchpoint *w = (struct watchpoint *) bpt;
14523
14524           orig_enable_state = bpt->enable_state;
14525           bpt->enable_state = bp_enabled;
14526           update_watchpoint (w, 1 /* reparse */);
14527         }
14528       if (e.reason < 0)
14529         {
14530           bpt->enable_state = orig_enable_state;
14531           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14532                              bpt->number);
14533           return;
14534         }
14535     }
14536
14537   if (bpt->enable_state != bp_permanent)
14538     bpt->enable_state = bp_enabled;
14539
14540   bpt->enable_state = bp_enabled;
14541
14542   /* Mark breakpoint locations modified.  */
14543   mark_breakpoint_modified (bpt);
14544
14545   if (target_supports_enable_disable_tracepoint ()
14546       && current_trace_status ()->running && is_tracepoint (bpt))
14547     {
14548       struct bp_location *location;
14549
14550       for (location = bpt->loc; location; location = location->next)
14551         target_enable_tracepoint (location);
14552     }
14553
14554   bpt->disposition = disposition;
14555   bpt->enable_count = count;
14556   update_global_location_list (1);
14557   breakpoints_changed ();
14558   
14559   observer_notify_breakpoint_modified (bpt);
14560 }
14561
14562
14563 void
14564 enable_breakpoint (struct breakpoint *bpt)
14565 {
14566   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14567 }
14568
14569 static void
14570 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14571 {
14572   enable_breakpoint (bpt);
14573 }
14574
14575 /* A callback for map_breakpoint_numbers that calls
14576    enable_breakpoint.  */
14577
14578 static void
14579 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14580 {
14581   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14582 }
14583
14584 /* The enable command enables the specified breakpoints (or all defined
14585    breakpoints) so they once again become (or continue to be) effective
14586    in stopping the inferior.  */
14587
14588 static void
14589 enable_command (char *args, int from_tty)
14590 {
14591   if (args == 0)
14592     {
14593       struct breakpoint *bpt;
14594
14595       ALL_BREAKPOINTS (bpt)
14596         if (user_breakpoint_p (bpt))
14597           enable_breakpoint (bpt);
14598     }
14599   else if (strchr (args, '.'))
14600     {
14601       struct bp_location *loc = find_location_by_number (args);
14602       if (loc)
14603         {
14604           if (!loc->enabled)
14605             {
14606               loc->enabled = 1;
14607               mark_breakpoint_location_modified (loc);
14608             }
14609           if (target_supports_enable_disable_tracepoint ()
14610               && current_trace_status ()->running && loc->owner
14611               && is_tracepoint (loc->owner))
14612             target_enable_tracepoint (loc);
14613         }
14614       update_global_location_list (1);
14615     }
14616   else
14617     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14618 }
14619
14620 /* This struct packages up disposition data for application to multiple
14621    breakpoints.  */
14622
14623 struct disp_data
14624 {
14625   enum bpdisp disp;
14626   int count;
14627 };
14628
14629 static void
14630 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14631 {
14632   struct disp_data disp_data = *(struct disp_data *) arg;
14633
14634   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14635 }
14636
14637 static void
14638 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14639 {
14640   struct disp_data disp = { disp_disable, 1 };
14641
14642   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14643 }
14644
14645 static void
14646 enable_once_command (char *args, int from_tty)
14647 {
14648   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14649 }
14650
14651 static void
14652 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14653 {
14654   struct disp_data disp = { disp_disable, *(int *) countptr };
14655
14656   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14657 }
14658
14659 static void
14660 enable_count_command (char *args, int from_tty)
14661 {
14662   int count = get_number (&args);
14663
14664   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14665 }
14666
14667 static void
14668 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14669 {
14670   struct disp_data disp = { disp_del, 1 };
14671
14672   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14673 }
14674
14675 static void
14676 enable_delete_command (char *args, int from_tty)
14677 {
14678   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14679 }
14680 \f
14681 static void
14682 set_breakpoint_cmd (char *args, int from_tty)
14683 {
14684 }
14685
14686 static void
14687 show_breakpoint_cmd (char *args, int from_tty)
14688 {
14689 }
14690
14691 /* Invalidate last known value of any hardware watchpoint if
14692    the memory which that value represents has been written to by
14693    GDB itself.  */
14694
14695 static void
14696 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
14697                                       const bfd_byte *data)
14698 {
14699   struct breakpoint *bp;
14700
14701   ALL_BREAKPOINTS (bp)
14702     if (bp->enable_state == bp_enabled
14703         && bp->type == bp_hardware_watchpoint)
14704       {
14705         struct watchpoint *wp = (struct watchpoint *) bp;
14706
14707         if (wp->val_valid && wp->val)
14708           {
14709             struct bp_location *loc;
14710
14711             for (loc = bp->loc; loc != NULL; loc = loc->next)
14712               if (loc->loc_type == bp_loc_hardware_watchpoint
14713                   && loc->address + loc->length > addr
14714                   && addr + len > loc->address)
14715                 {
14716                   value_free (wp->val);
14717                   wp->val = NULL;
14718                   wp->val_valid = 0;
14719                 }
14720           }
14721       }
14722 }
14723
14724 /* Create and insert a raw software breakpoint at PC.  Return an
14725    identifier, which should be used to remove the breakpoint later.
14726    In general, places which call this should be using something on the
14727    breakpoint chain instead; this function should be eliminated
14728    someday.  */
14729
14730 void *
14731 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14732                                   struct address_space *aspace, CORE_ADDR pc)
14733 {
14734   struct bp_target_info *bp_tgt;
14735
14736   bp_tgt = XZALLOC (struct bp_target_info);
14737
14738   bp_tgt->placed_address_space = aspace;
14739   bp_tgt->placed_address = pc;
14740
14741   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14742     {
14743       /* Could not insert the breakpoint.  */
14744       xfree (bp_tgt);
14745       return NULL;
14746     }
14747
14748   return bp_tgt;
14749 }
14750
14751 /* Remove a breakpoint BP inserted by
14752    deprecated_insert_raw_breakpoint.  */
14753
14754 int
14755 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14756 {
14757   struct bp_target_info *bp_tgt = bp;
14758   int ret;
14759
14760   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14761   xfree (bp_tgt);
14762
14763   return ret;
14764 }
14765
14766 /* One (or perhaps two) breakpoints used for software single
14767    stepping.  */
14768
14769 static void *single_step_breakpoints[2];
14770 static struct gdbarch *single_step_gdbarch[2];
14771
14772 /* Create and insert a breakpoint for software single step.  */
14773
14774 void
14775 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14776                                struct address_space *aspace, 
14777                                CORE_ADDR next_pc)
14778 {
14779   void **bpt_p;
14780
14781   if (single_step_breakpoints[0] == NULL)
14782     {
14783       bpt_p = &single_step_breakpoints[0];
14784       single_step_gdbarch[0] = gdbarch;
14785     }
14786   else
14787     {
14788       gdb_assert (single_step_breakpoints[1] == NULL);
14789       bpt_p = &single_step_breakpoints[1];
14790       single_step_gdbarch[1] = gdbarch;
14791     }
14792
14793   /* NOTE drow/2006-04-11: A future improvement to this function would
14794      be to only create the breakpoints once, and actually put them on
14795      the breakpoint chain.  That would let us use set_raw_breakpoint.
14796      We could adjust the addresses each time they were needed.  Doing
14797      this requires corresponding changes elsewhere where single step
14798      breakpoints are handled, however.  So, for now, we use this.  */
14799
14800   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14801   if (*bpt_p == NULL)
14802     error (_("Could not insert single-step breakpoint at %s"),
14803              paddress (gdbarch, next_pc));
14804 }
14805
14806 /* Check if the breakpoints used for software single stepping
14807    were inserted or not.  */
14808
14809 int
14810 single_step_breakpoints_inserted (void)
14811 {
14812   return (single_step_breakpoints[0] != NULL
14813           || single_step_breakpoints[1] != NULL);
14814 }
14815
14816 /* Remove and delete any breakpoints used for software single step.  */
14817
14818 void
14819 remove_single_step_breakpoints (void)
14820 {
14821   gdb_assert (single_step_breakpoints[0] != NULL);
14822
14823   /* See insert_single_step_breakpoint for more about this deprecated
14824      call.  */
14825   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14826                                     single_step_breakpoints[0]);
14827   single_step_gdbarch[0] = NULL;
14828   single_step_breakpoints[0] = NULL;
14829
14830   if (single_step_breakpoints[1] != NULL)
14831     {
14832       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14833                                         single_step_breakpoints[1]);
14834       single_step_gdbarch[1] = NULL;
14835       single_step_breakpoints[1] = NULL;
14836     }
14837 }
14838
14839 /* Delete software single step breakpoints without removing them from
14840    the inferior.  This is intended to be used if the inferior's address
14841    space where they were inserted is already gone, e.g. after exit or
14842    exec.  */
14843
14844 void
14845 cancel_single_step_breakpoints (void)
14846 {
14847   int i;
14848
14849   for (i = 0; i < 2; i++)
14850     if (single_step_breakpoints[i])
14851       {
14852         xfree (single_step_breakpoints[i]);
14853         single_step_breakpoints[i] = NULL;
14854         single_step_gdbarch[i] = NULL;
14855       }
14856 }
14857
14858 /* Detach software single-step breakpoints from INFERIOR_PTID without
14859    removing them.  */
14860
14861 static void
14862 detach_single_step_breakpoints (void)
14863 {
14864   int i;
14865
14866   for (i = 0; i < 2; i++)
14867     if (single_step_breakpoints[i])
14868       target_remove_breakpoint (single_step_gdbarch[i],
14869                                 single_step_breakpoints[i]);
14870 }
14871
14872 /* Check whether a software single-step breakpoint is inserted at
14873    PC.  */
14874
14875 static int
14876 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14877                                         CORE_ADDR pc)
14878 {
14879   int i;
14880
14881   for (i = 0; i < 2; i++)
14882     {
14883       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14884       if (bp_tgt
14885           && breakpoint_address_match (bp_tgt->placed_address_space,
14886                                        bp_tgt->placed_address,
14887                                        aspace, pc))
14888         return 1;
14889     }
14890
14891   return 0;
14892 }
14893
14894 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14895    non-zero otherwise.  */
14896 static int
14897 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14898 {
14899   if (syscall_catchpoint_p (bp)
14900       && bp->enable_state != bp_disabled
14901       && bp->enable_state != bp_call_disabled)
14902     return 1;
14903   else
14904     return 0;
14905 }
14906
14907 int
14908 catch_syscall_enabled (void)
14909 {
14910   struct catch_syscall_inferior_data *inf_data
14911     = get_catch_syscall_inferior_data (current_inferior ());
14912
14913   return inf_data->total_syscalls_count != 0;
14914 }
14915
14916 int
14917 catching_syscall_number (int syscall_number)
14918 {
14919   struct breakpoint *bp;
14920
14921   ALL_BREAKPOINTS (bp)
14922     if (is_syscall_catchpoint_enabled (bp))
14923       {
14924         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14925
14926         if (c->syscalls_to_be_caught)
14927           {
14928             int i, iter;
14929             for (i = 0;
14930                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14931                  i++)
14932               if (syscall_number == iter)
14933                 return 1;
14934           }
14935         else
14936           return 1;
14937       }
14938
14939   return 0;
14940 }
14941
14942 /* Complete syscall names.  Used by "catch syscall".  */
14943 static VEC (char_ptr) *
14944 catch_syscall_completer (struct cmd_list_element *cmd,
14945                          char *text, char *word)
14946 {
14947   const char **list = get_syscall_names ();
14948   VEC (char_ptr) *retlist
14949     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14950
14951   xfree (list);
14952   return retlist;
14953 }
14954
14955 /* Tracepoint-specific operations.  */
14956
14957 /* Set tracepoint count to NUM.  */
14958 static void
14959 set_tracepoint_count (int num)
14960 {
14961   tracepoint_count = num;
14962   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14963 }
14964
14965 static void
14966 trace_command (char *arg, int from_tty)
14967 {
14968   struct breakpoint_ops *ops;
14969   const char *arg_cp = arg;
14970
14971   if (arg && probe_linespec_to_ops (&arg_cp))
14972     ops = &tracepoint_probe_breakpoint_ops;
14973   else
14974     ops = &tracepoint_breakpoint_ops;
14975
14976   if (create_breakpoint (get_current_arch (),
14977                          arg,
14978                          NULL, 0, NULL, 1 /* parse arg */,
14979                          0 /* tempflag */,
14980                          bp_tracepoint /* type_wanted */,
14981                          0 /* Ignore count */,
14982                          pending_break_support,
14983                          ops,
14984                          from_tty,
14985                          1 /* enabled */,
14986                          0 /* internal */, 0))
14987     set_tracepoint_count (breakpoint_count);
14988 }
14989
14990 static void
14991 ftrace_command (char *arg, int from_tty)
14992 {
14993   if (create_breakpoint (get_current_arch (),
14994                          arg,
14995                          NULL, 0, NULL, 1 /* parse arg */,
14996                          0 /* tempflag */,
14997                          bp_fast_tracepoint /* type_wanted */,
14998                          0 /* Ignore count */,
14999                          pending_break_support,
15000                          &tracepoint_breakpoint_ops,
15001                          from_tty,
15002                          1 /* enabled */,
15003                          0 /* internal */, 0))
15004     set_tracepoint_count (breakpoint_count);
15005 }
15006
15007 /* strace command implementation.  Creates a static tracepoint.  */
15008
15009 static void
15010 strace_command (char *arg, int from_tty)
15011 {
15012   struct breakpoint_ops *ops;
15013
15014   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15015      or with a normal static tracepoint.  */
15016   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15017     ops = &strace_marker_breakpoint_ops;
15018   else
15019     ops = &tracepoint_breakpoint_ops;
15020
15021   if (create_breakpoint (get_current_arch (),
15022                          arg,
15023                          NULL, 0, NULL, 1 /* parse arg */,
15024                          0 /* tempflag */,
15025                          bp_static_tracepoint /* type_wanted */,
15026                          0 /* Ignore count */,
15027                          pending_break_support,
15028                          ops,
15029                          from_tty,
15030                          1 /* enabled */,
15031                          0 /* internal */, 0))
15032     set_tracepoint_count (breakpoint_count);
15033 }
15034
15035 /* Set up a fake reader function that gets command lines from a linked
15036    list that was acquired during tracepoint uploading.  */
15037
15038 static struct uploaded_tp *this_utp;
15039 static int next_cmd;
15040
15041 static char *
15042 read_uploaded_action (void)
15043 {
15044   char *rslt;
15045
15046   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15047
15048   next_cmd++;
15049
15050   return rslt;
15051 }
15052
15053 /* Given information about a tracepoint as recorded on a target (which
15054    can be either a live system or a trace file), attempt to create an
15055    equivalent GDB tracepoint.  This is not a reliable process, since
15056    the target does not necessarily have all the information used when
15057    the tracepoint was originally defined.  */
15058   
15059 struct tracepoint *
15060 create_tracepoint_from_upload (struct uploaded_tp *utp)
15061 {
15062   char *addr_str, small_buf[100];
15063   struct tracepoint *tp;
15064
15065   if (utp->at_string)
15066     addr_str = utp->at_string;
15067   else
15068     {
15069       /* In the absence of a source location, fall back to raw
15070          address.  Since there is no way to confirm that the address
15071          means the same thing as when the trace was started, warn the
15072          user.  */
15073       warning (_("Uploaded tracepoint %d has no "
15074                  "source location, using raw address"),
15075                utp->number);
15076       sprintf (small_buf, "*%s", hex_string (utp->addr));
15077       addr_str = small_buf;
15078     }
15079
15080   /* There's not much we can do with a sequence of bytecodes.  */
15081   if (utp->cond && !utp->cond_string)
15082     warning (_("Uploaded tracepoint %d condition "
15083                "has no source form, ignoring it"),
15084              utp->number);
15085
15086   if (!create_breakpoint (get_current_arch (),
15087                           addr_str,
15088                           utp->cond_string, -1, NULL,
15089                           0 /* parse cond/thread */,
15090                           0 /* tempflag */,
15091                           utp->type /* type_wanted */,
15092                           0 /* Ignore count */,
15093                           pending_break_support,
15094                           &tracepoint_breakpoint_ops,
15095                           0 /* from_tty */,
15096                           utp->enabled /* enabled */,
15097                           0 /* internal */,
15098                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15099     return NULL;
15100
15101   set_tracepoint_count (breakpoint_count);
15102   
15103   /* Get the tracepoint we just created.  */
15104   tp = get_tracepoint (tracepoint_count);
15105   gdb_assert (tp != NULL);
15106
15107   if (utp->pass > 0)
15108     {
15109       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
15110
15111       trace_pass_command (small_buf, 0);
15112     }
15113
15114   /* If we have uploaded versions of the original commands, set up a
15115      special-purpose "reader" function and call the usual command line
15116      reader, then pass the result to the breakpoint command-setting
15117      function.  */
15118   if (!VEC_empty (char_ptr, utp->cmd_strings))
15119     {
15120       struct command_line *cmd_list;
15121
15122       this_utp = utp;
15123       next_cmd = 0;
15124
15125       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15126
15127       breakpoint_set_commands (&tp->base, cmd_list);
15128     }
15129   else if (!VEC_empty (char_ptr, utp->actions)
15130            || !VEC_empty (char_ptr, utp->step_actions))
15131     warning (_("Uploaded tracepoint %d actions "
15132                "have no source form, ignoring them"),
15133              utp->number);
15134
15135   /* Copy any status information that might be available.  */
15136   tp->base.hit_count = utp->hit_count;
15137   tp->traceframe_usage = utp->traceframe_usage;
15138
15139   return tp;
15140 }
15141   
15142 /* Print information on tracepoint number TPNUM_EXP, or all if
15143    omitted.  */
15144
15145 static void
15146 tracepoints_info (char *args, int from_tty)
15147 {
15148   struct ui_out *uiout = current_uiout;
15149   int num_printed;
15150
15151   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15152
15153   if (num_printed == 0)
15154     {
15155       if (args == NULL || *args == '\0')
15156         ui_out_message (uiout, 0, "No tracepoints.\n");
15157       else
15158         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15159     }
15160
15161   default_collect_info ();
15162 }
15163
15164 /* The 'enable trace' command enables tracepoints.
15165    Not supported by all targets.  */
15166 static void
15167 enable_trace_command (char *args, int from_tty)
15168 {
15169   enable_command (args, from_tty);
15170 }
15171
15172 /* The 'disable trace' command disables tracepoints.
15173    Not supported by all targets.  */
15174 static void
15175 disable_trace_command (char *args, int from_tty)
15176 {
15177   disable_command (args, from_tty);
15178 }
15179
15180 /* Remove a tracepoint (or all if no argument).  */
15181 static void
15182 delete_trace_command (char *arg, int from_tty)
15183 {
15184   struct breakpoint *b, *b_tmp;
15185
15186   dont_repeat ();
15187
15188   if (arg == 0)
15189     {
15190       int breaks_to_delete = 0;
15191
15192       /* Delete all breakpoints if no argument.
15193          Do not delete internal or call-dummy breakpoints, these
15194          have to be deleted with an explicit breakpoint number 
15195          argument.  */
15196       ALL_TRACEPOINTS (b)
15197         if (is_tracepoint (b) && user_breakpoint_p (b))
15198           {
15199             breaks_to_delete = 1;
15200             break;
15201           }
15202
15203       /* Ask user only if there are some breakpoints to delete.  */
15204       if (!from_tty
15205           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15206         {
15207           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15208             if (is_tracepoint (b) && user_breakpoint_p (b))
15209               delete_breakpoint (b);
15210         }
15211     }
15212   else
15213     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15214 }
15215
15216 /* Helper function for trace_pass_command.  */
15217
15218 static void
15219 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15220 {
15221   tp->pass_count = count;
15222   observer_notify_tracepoint_modified (tp->base.number);
15223   if (from_tty)
15224     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15225                      tp->base.number, count);
15226 }
15227
15228 /* Set passcount for tracepoint.
15229
15230    First command argument is passcount, second is tracepoint number.
15231    If tracepoint number omitted, apply to most recently defined.
15232    Also accepts special argument "all".  */
15233
15234 static void
15235 trace_pass_command (char *args, int from_tty)
15236 {
15237   struct tracepoint *t1;
15238   unsigned int count;
15239
15240   if (args == 0 || *args == 0)
15241     error (_("passcount command requires an "
15242              "argument (count + optional TP num)"));
15243
15244   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15245
15246   while (*args && isspace ((int) *args))
15247     args++;
15248
15249   if (*args && strncasecmp (args, "all", 3) == 0)
15250     {
15251       struct breakpoint *b;
15252
15253       args += 3;                        /* Skip special argument "all".  */
15254       if (*args)
15255         error (_("Junk at end of arguments."));
15256
15257       ALL_TRACEPOINTS (b)
15258       {
15259         t1 = (struct tracepoint *) b;
15260         trace_pass_set_count (t1, count, from_tty);
15261       }
15262     }
15263   else if (*args == '\0')
15264     {
15265       t1 = get_tracepoint_by_number (&args, NULL, 1);
15266       if (t1)
15267         trace_pass_set_count (t1, count, from_tty);
15268     }
15269   else
15270     {
15271       struct get_number_or_range_state state;
15272
15273       init_number_or_range (&state, args);
15274       while (!state.finished)
15275         {
15276           t1 = get_tracepoint_by_number (&args, &state, 1);
15277           if (t1)
15278             trace_pass_set_count (t1, count, from_tty);
15279         }
15280     }
15281 }
15282
15283 struct tracepoint *
15284 get_tracepoint (int num)
15285 {
15286   struct breakpoint *t;
15287
15288   ALL_TRACEPOINTS (t)
15289     if (t->number == num)
15290       return (struct tracepoint *) t;
15291
15292   return NULL;
15293 }
15294
15295 /* Find the tracepoint with the given target-side number (which may be
15296    different from the tracepoint number after disconnecting and
15297    reconnecting).  */
15298
15299 struct tracepoint *
15300 get_tracepoint_by_number_on_target (int num)
15301 {
15302   struct breakpoint *b;
15303
15304   ALL_TRACEPOINTS (b)
15305     {
15306       struct tracepoint *t = (struct tracepoint *) b;
15307
15308       if (t->number_on_target == num)
15309         return t;
15310     }
15311
15312   return NULL;
15313 }
15314
15315 /* Utility: parse a tracepoint number and look it up in the list.
15316    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15317    If OPTIONAL_P is true, then if the argument is missing, the most
15318    recent tracepoint (tracepoint_count) is returned.  */
15319 struct tracepoint *
15320 get_tracepoint_by_number (char **arg,
15321                           struct get_number_or_range_state *state,
15322                           int optional_p)
15323 {
15324   extern int tracepoint_count;
15325   struct breakpoint *t;
15326   int tpnum;
15327   char *instring = arg == NULL ? NULL : *arg;
15328
15329   if (state)
15330     {
15331       gdb_assert (!state->finished);
15332       tpnum = get_number_or_range (state);
15333     }
15334   else if (arg == NULL || *arg == NULL || ! **arg)
15335     {
15336       if (optional_p)
15337         tpnum = tracepoint_count;
15338       else
15339         error_no_arg (_("tracepoint number"));
15340     }
15341   else
15342     tpnum = get_number (arg);
15343
15344   if (tpnum <= 0)
15345     {
15346       if (instring && *instring)
15347         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15348                          instring);
15349       else
15350         printf_filtered (_("Tracepoint argument missing "
15351                            "and no previous tracepoint\n"));
15352       return NULL;
15353     }
15354
15355   ALL_TRACEPOINTS (t)
15356     if (t->number == tpnum)
15357     {
15358       return (struct tracepoint *) t;
15359     }
15360
15361   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15362   return NULL;
15363 }
15364
15365 void
15366 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15367 {
15368   if (b->thread != -1)
15369     fprintf_unfiltered (fp, " thread %d", b->thread);
15370
15371   if (b->task != 0)
15372     fprintf_unfiltered (fp, " task %d", b->task);
15373
15374   fprintf_unfiltered (fp, "\n");
15375 }
15376
15377 /* Save information on user settable breakpoints (watchpoints, etc) to
15378    a new script file named FILENAME.  If FILTER is non-NULL, call it
15379    on each breakpoint and only include the ones for which it returns
15380    non-zero.  */
15381
15382 static void
15383 save_breakpoints (char *filename, int from_tty,
15384                   int (*filter) (const struct breakpoint *))
15385 {
15386   struct breakpoint *tp;
15387   int any = 0;
15388   char *pathname;
15389   struct cleanup *cleanup;
15390   struct ui_file *fp;
15391   int extra_trace_bits = 0;
15392
15393   if (filename == 0 || *filename == 0)
15394     error (_("Argument required (file name in which to save)"));
15395
15396   /* See if we have anything to save.  */
15397   ALL_BREAKPOINTS (tp)
15398   {
15399     /* Skip internal and momentary breakpoints.  */
15400     if (!user_breakpoint_p (tp))
15401       continue;
15402
15403     /* If we have a filter, only save the breakpoints it accepts.  */
15404     if (filter && !filter (tp))
15405       continue;
15406
15407     any = 1;
15408
15409     if (is_tracepoint (tp))
15410       {
15411         extra_trace_bits = 1;
15412
15413         /* We can stop searching.  */
15414         break;
15415       }
15416   }
15417
15418   if (!any)
15419     {
15420       warning (_("Nothing to save."));
15421       return;
15422     }
15423
15424   pathname = tilde_expand (filename);
15425   cleanup = make_cleanup (xfree, pathname);
15426   fp = gdb_fopen (pathname, "w");
15427   if (!fp)
15428     error (_("Unable to open file '%s' for saving (%s)"),
15429            filename, safe_strerror (errno));
15430   make_cleanup_ui_file_delete (fp);
15431
15432   if (extra_trace_bits)
15433     save_trace_state_variables (fp);
15434
15435   ALL_BREAKPOINTS (tp)
15436   {
15437     /* Skip internal and momentary breakpoints.  */
15438     if (!user_breakpoint_p (tp))
15439       continue;
15440
15441     /* If we have a filter, only save the breakpoints it accepts.  */
15442     if (filter && !filter (tp))
15443       continue;
15444
15445     tp->ops->print_recreate (tp, fp);
15446
15447     /* Note, we can't rely on tp->number for anything, as we can't
15448        assume the recreated breakpoint numbers will match.  Use $bpnum
15449        instead.  */
15450
15451     if (tp->cond_string)
15452       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15453
15454     if (tp->ignore_count)
15455       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15456
15457     if (tp->commands)
15458       {
15459         volatile struct gdb_exception ex;       
15460
15461         fprintf_unfiltered (fp, "  commands\n");
15462         
15463         ui_out_redirect (current_uiout, fp);
15464         TRY_CATCH (ex, RETURN_MASK_ALL)
15465           {
15466             print_command_lines (current_uiout, tp->commands->commands, 2);
15467           }
15468         ui_out_redirect (current_uiout, NULL);
15469
15470         if (ex.reason < 0)
15471           throw_exception (ex);
15472
15473         fprintf_unfiltered (fp, "  end\n");
15474       }
15475
15476     if (tp->enable_state == bp_disabled)
15477       fprintf_unfiltered (fp, "disable\n");
15478
15479     /* If this is a multi-location breakpoint, check if the locations
15480        should be individually disabled.  Watchpoint locations are
15481        special, and not user visible.  */
15482     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15483       {
15484         struct bp_location *loc;
15485         int n = 1;
15486
15487         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15488           if (!loc->enabled)
15489             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15490       }
15491   }
15492
15493   if (extra_trace_bits && *default_collect)
15494     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15495
15496   do_cleanups (cleanup);
15497   if (from_tty)
15498     printf_filtered (_("Saved to file '%s'.\n"), filename);
15499 }
15500
15501 /* The `save breakpoints' command.  */
15502
15503 static void
15504 save_breakpoints_command (char *args, int from_tty)
15505 {
15506   save_breakpoints (args, from_tty, NULL);
15507 }
15508
15509 /* The `save tracepoints' command.  */
15510
15511 static void
15512 save_tracepoints_command (char *args, int from_tty)
15513 {
15514   save_breakpoints (args, from_tty, is_tracepoint);
15515 }
15516
15517 /* Create a vector of all tracepoints.  */
15518
15519 VEC(breakpoint_p) *
15520 all_tracepoints (void)
15521 {
15522   VEC(breakpoint_p) *tp_vec = 0;
15523   struct breakpoint *tp;
15524
15525   ALL_TRACEPOINTS (tp)
15526   {
15527     VEC_safe_push (breakpoint_p, tp_vec, tp);
15528   }
15529
15530   return tp_vec;
15531 }
15532
15533 \f
15534 /* This help string is used for the break, hbreak, tbreak and thbreak
15535    commands.  It is defined as a macro to prevent duplication.
15536    COMMAND should be a string constant containing the name of the
15537    command.  */
15538 #define BREAK_ARGS_HELP(command) \
15539 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15540 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15541 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15542 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
15543 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15544 If a line number is specified, break at start of code for that line.\n\
15545 If a function is specified, break at start of code for that function.\n\
15546 If an address is specified, break at that exact address.\n\
15547 With no LOCATION, uses current execution address of the selected\n\
15548 stack frame.  This is useful for breaking on return to a stack frame.\n\
15549 \n\
15550 THREADNUM is the number from \"info threads\".\n\
15551 CONDITION is a boolean expression.\n\
15552 \n\
15553 Multiple breakpoints at one place are permitted, and useful if their\n\
15554 conditions are different.\n\
15555 \n\
15556 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15557
15558 /* List of subcommands for "catch".  */
15559 static struct cmd_list_element *catch_cmdlist;
15560
15561 /* List of subcommands for "tcatch".  */
15562 static struct cmd_list_element *tcatch_cmdlist;
15563
15564 void
15565 add_catch_command (char *name, char *docstring,
15566                    void (*sfunc) (char *args, int from_tty,
15567                                   struct cmd_list_element *command),
15568                    completer_ftype *completer,
15569                    void *user_data_catch,
15570                    void *user_data_tcatch)
15571 {
15572   struct cmd_list_element *command;
15573
15574   command = add_cmd (name, class_breakpoint, NULL, docstring,
15575                      &catch_cmdlist);
15576   set_cmd_sfunc (command, sfunc);
15577   set_cmd_context (command, user_data_catch);
15578   set_cmd_completer (command, completer);
15579
15580   command = add_cmd (name, class_breakpoint, NULL, docstring,
15581                      &tcatch_cmdlist);
15582   set_cmd_sfunc (command, sfunc);
15583   set_cmd_context (command, user_data_tcatch);
15584   set_cmd_completer (command, completer);
15585 }
15586
15587 static void
15588 clear_syscall_counts (struct inferior *inf)
15589 {
15590   struct catch_syscall_inferior_data *inf_data
15591     = get_catch_syscall_inferior_data (inf);
15592
15593   inf_data->total_syscalls_count = 0;
15594   inf_data->any_syscall_count = 0;
15595   VEC_free (int, inf_data->syscalls_counts);
15596 }
15597
15598 static void
15599 save_command (char *arg, int from_tty)
15600 {
15601   printf_unfiltered (_("\"save\" must be followed by "
15602                        "the name of a save subcommand.\n"));
15603   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15604 }
15605
15606 struct breakpoint *
15607 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15608                           void *data)
15609 {
15610   struct breakpoint *b, *b_tmp;
15611
15612   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15613     {
15614       if ((*callback) (b, data))
15615         return b;
15616     }
15617
15618   return NULL;
15619 }
15620
15621 /* Zero if any of the breakpoint's locations could be a location where
15622    functions have been inlined, nonzero otherwise.  */
15623
15624 static int
15625 is_non_inline_function (struct breakpoint *b)
15626 {
15627   /* The shared library event breakpoint is set on the address of a
15628      non-inline function.  */
15629   if (b->type == bp_shlib_event)
15630     return 1;
15631
15632   return 0;
15633 }
15634
15635 /* Nonzero if the specified PC cannot be a location where functions
15636    have been inlined.  */
15637
15638 int
15639 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15640                            const struct target_waitstatus *ws)
15641 {
15642   struct breakpoint *b;
15643   struct bp_location *bl;
15644
15645   ALL_BREAKPOINTS (b)
15646     {
15647       if (!is_non_inline_function (b))
15648         continue;
15649
15650       for (bl = b->loc; bl != NULL; bl = bl->next)
15651         {
15652           if (!bl->shlib_disabled
15653               && bpstat_check_location (bl, aspace, pc, ws))
15654             return 1;
15655         }
15656     }
15657
15658   return 0;
15659 }
15660
15661 void
15662 initialize_breakpoint_ops (void)
15663 {
15664   static int initialized = 0;
15665
15666   struct breakpoint_ops *ops;
15667
15668   if (initialized)
15669     return;
15670   initialized = 1;
15671
15672   /* The breakpoint_ops structure to be inherit by all kinds of
15673      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15674      internal and momentary breakpoints, etc.).  */
15675   ops = &bkpt_base_breakpoint_ops;
15676   *ops = base_breakpoint_ops;
15677   ops->re_set = bkpt_re_set;
15678   ops->insert_location = bkpt_insert_location;
15679   ops->remove_location = bkpt_remove_location;
15680   ops->breakpoint_hit = bkpt_breakpoint_hit;
15681   ops->create_sals_from_address = bkpt_create_sals_from_address;
15682   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15683   ops->decode_linespec = bkpt_decode_linespec;
15684
15685   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15686   ops = &bkpt_breakpoint_ops;
15687   *ops = bkpt_base_breakpoint_ops;
15688   ops->re_set = bkpt_re_set;
15689   ops->resources_needed = bkpt_resources_needed;
15690   ops->print_it = bkpt_print_it;
15691   ops->print_mention = bkpt_print_mention;
15692   ops->print_recreate = bkpt_print_recreate;
15693
15694   /* Ranged breakpoints.  */
15695   ops = &ranged_breakpoint_ops;
15696   *ops = bkpt_breakpoint_ops;
15697   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15698   ops->resources_needed = resources_needed_ranged_breakpoint;
15699   ops->print_it = print_it_ranged_breakpoint;
15700   ops->print_one = print_one_ranged_breakpoint;
15701   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15702   ops->print_mention = print_mention_ranged_breakpoint;
15703   ops->print_recreate = print_recreate_ranged_breakpoint;
15704
15705   /* Internal breakpoints.  */
15706   ops = &internal_breakpoint_ops;
15707   *ops = bkpt_base_breakpoint_ops;
15708   ops->re_set = internal_bkpt_re_set;
15709   ops->check_status = internal_bkpt_check_status;
15710   ops->print_it = internal_bkpt_print_it;
15711   ops->print_mention = internal_bkpt_print_mention;
15712
15713   /* Momentary breakpoints.  */
15714   ops = &momentary_breakpoint_ops;
15715   *ops = bkpt_base_breakpoint_ops;
15716   ops->re_set = momentary_bkpt_re_set;
15717   ops->check_status = momentary_bkpt_check_status;
15718   ops->print_it = momentary_bkpt_print_it;
15719   ops->print_mention = momentary_bkpt_print_mention;
15720
15721   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15722   ops = &longjmp_breakpoint_ops;
15723   *ops = momentary_breakpoint_ops;
15724   ops->dtor = longjmp_bkpt_dtor;
15725
15726   /* Probe breakpoints.  */
15727   ops = &bkpt_probe_breakpoint_ops;
15728   *ops = bkpt_breakpoint_ops;
15729   ops->insert_location = bkpt_probe_insert_location;
15730   ops->remove_location = bkpt_probe_remove_location;
15731   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15732   ops->decode_linespec = bkpt_probe_decode_linespec;
15733
15734   /* GNU v3 exception catchpoints.  */
15735   ops = &gnu_v3_exception_catchpoint_ops;
15736   *ops = bkpt_breakpoint_ops;
15737   ops->print_it = print_it_exception_catchpoint;
15738   ops->print_one = print_one_exception_catchpoint;
15739   ops->print_mention = print_mention_exception_catchpoint;
15740   ops->print_recreate = print_recreate_exception_catchpoint;
15741
15742   /* Watchpoints.  */
15743   ops = &watchpoint_breakpoint_ops;
15744   *ops = base_breakpoint_ops;
15745   ops->dtor = dtor_watchpoint;
15746   ops->re_set = re_set_watchpoint;
15747   ops->insert_location = insert_watchpoint;
15748   ops->remove_location = remove_watchpoint;
15749   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15750   ops->check_status = check_status_watchpoint;
15751   ops->resources_needed = resources_needed_watchpoint;
15752   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15753   ops->print_it = print_it_watchpoint;
15754   ops->print_mention = print_mention_watchpoint;
15755   ops->print_recreate = print_recreate_watchpoint;
15756
15757   /* Masked watchpoints.  */
15758   ops = &masked_watchpoint_breakpoint_ops;
15759   *ops = watchpoint_breakpoint_ops;
15760   ops->insert_location = insert_masked_watchpoint;
15761   ops->remove_location = remove_masked_watchpoint;
15762   ops->resources_needed = resources_needed_masked_watchpoint;
15763   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15764   ops->print_it = print_it_masked_watchpoint;
15765   ops->print_one_detail = print_one_detail_masked_watchpoint;
15766   ops->print_mention = print_mention_masked_watchpoint;
15767   ops->print_recreate = print_recreate_masked_watchpoint;
15768
15769   /* Tracepoints.  */
15770   ops = &tracepoint_breakpoint_ops;
15771   *ops = base_breakpoint_ops;
15772   ops->re_set = tracepoint_re_set;
15773   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15774   ops->print_one_detail = tracepoint_print_one_detail;
15775   ops->print_mention = tracepoint_print_mention;
15776   ops->print_recreate = tracepoint_print_recreate;
15777   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15778   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15779   ops->decode_linespec = tracepoint_decode_linespec;
15780
15781   /* Probe tracepoints.  */
15782   ops = &tracepoint_probe_breakpoint_ops;
15783   *ops = tracepoint_breakpoint_ops;
15784   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15785   ops->decode_linespec = tracepoint_probe_decode_linespec;
15786
15787   /* Static tracepoints with marker (`-m').  */
15788   ops = &strace_marker_breakpoint_ops;
15789   *ops = tracepoint_breakpoint_ops;
15790   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15791   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15792   ops->decode_linespec = strace_marker_decode_linespec;
15793
15794   /* Fork catchpoints.  */
15795   ops = &catch_fork_breakpoint_ops;
15796   *ops = base_breakpoint_ops;
15797   ops->insert_location = insert_catch_fork;
15798   ops->remove_location = remove_catch_fork;
15799   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15800   ops->print_it = print_it_catch_fork;
15801   ops->print_one = print_one_catch_fork;
15802   ops->print_mention = print_mention_catch_fork;
15803   ops->print_recreate = print_recreate_catch_fork;
15804
15805   /* Vfork catchpoints.  */
15806   ops = &catch_vfork_breakpoint_ops;
15807   *ops = base_breakpoint_ops;
15808   ops->insert_location = insert_catch_vfork;
15809   ops->remove_location = remove_catch_vfork;
15810   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15811   ops->print_it = print_it_catch_vfork;
15812   ops->print_one = print_one_catch_vfork;
15813   ops->print_mention = print_mention_catch_vfork;
15814   ops->print_recreate = print_recreate_catch_vfork;
15815
15816   /* Exec catchpoints.  */
15817   ops = &catch_exec_breakpoint_ops;
15818   *ops = base_breakpoint_ops;
15819   ops->dtor = dtor_catch_exec;
15820   ops->insert_location = insert_catch_exec;
15821   ops->remove_location = remove_catch_exec;
15822   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15823   ops->print_it = print_it_catch_exec;
15824   ops->print_one = print_one_catch_exec;
15825   ops->print_mention = print_mention_catch_exec;
15826   ops->print_recreate = print_recreate_catch_exec;
15827
15828   /* Syscall catchpoints.  */
15829   ops = &catch_syscall_breakpoint_ops;
15830   *ops = base_breakpoint_ops;
15831   ops->dtor = dtor_catch_syscall;
15832   ops->insert_location = insert_catch_syscall;
15833   ops->remove_location = remove_catch_syscall;
15834   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15835   ops->print_it = print_it_catch_syscall;
15836   ops->print_one = print_one_catch_syscall;
15837   ops->print_mention = print_mention_catch_syscall;
15838   ops->print_recreate = print_recreate_catch_syscall;
15839
15840   /* Solib-related catchpoints.  */
15841   ops = &catch_solib_breakpoint_ops;
15842   *ops = base_breakpoint_ops;
15843   ops->dtor = dtor_catch_solib;
15844   ops->insert_location = insert_catch_solib;
15845   ops->remove_location = remove_catch_solib;
15846   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15847   ops->check_status = check_status_catch_solib;
15848   ops->print_it = print_it_catch_solib;
15849   ops->print_one = print_one_catch_solib;
15850   ops->print_mention = print_mention_catch_solib;
15851   ops->print_recreate = print_recreate_catch_solib;
15852
15853   ops = &dprintf_breakpoint_ops;
15854   *ops = bkpt_base_breakpoint_ops;
15855   ops->re_set = bkpt_re_set;
15856   ops->resources_needed = bkpt_resources_needed;
15857   ops->print_it = bkpt_print_it;
15858   ops->print_mention = bkpt_print_mention;
15859   ops->print_recreate = bkpt_print_recreate;
15860 }
15861
15862 /* Chain containing all defined "enable breakpoint" subcommands.  */
15863
15864 static struct cmd_list_element *enablebreaklist = NULL;
15865
15866 void
15867 _initialize_breakpoint (void)
15868 {
15869   struct cmd_list_element *c;
15870
15871   initialize_breakpoint_ops ();
15872
15873   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15874   observer_attach_inferior_exit (clear_syscall_counts);
15875   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15876
15877   breakpoint_objfile_key
15878     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15879
15880   catch_syscall_inferior_data
15881     = register_inferior_data_with_cleanup (catch_syscall_inferior_data_cleanup);
15882
15883   breakpoint_chain = 0;
15884   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15885      before a breakpoint is set.  */
15886   breakpoint_count = 0;
15887
15888   tracepoint_count = 0;
15889
15890   add_com ("ignore", class_breakpoint, ignore_command, _("\
15891 Set ignore-count of breakpoint number N to COUNT.\n\
15892 Usage is `ignore N COUNT'."));
15893   if (xdb_commands)
15894     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15895
15896   add_com ("commands", class_breakpoint, commands_command, _("\
15897 Set commands to be executed when a breakpoint is hit.\n\
15898 Give breakpoint number as argument after \"commands\".\n\
15899 With no argument, the targeted breakpoint is the last one set.\n\
15900 The commands themselves follow starting on the next line.\n\
15901 Type a line containing \"end\" to indicate the end of them.\n\
15902 Give \"silent\" as the first line to make the breakpoint silent;\n\
15903 then no output is printed when it is hit, except what the commands print."));
15904
15905   c = add_com ("condition", class_breakpoint, condition_command, _("\
15906 Specify breakpoint number N to break only if COND is true.\n\
15907 Usage is `condition N COND', where N is an integer and COND is an\n\
15908 expression to be evaluated whenever breakpoint N is reached."));
15909   set_cmd_completer (c, condition_completer);
15910
15911   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15912 Set a temporary breakpoint.\n\
15913 Like \"break\" except the breakpoint is only temporary,\n\
15914 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15915 by using \"enable delete\" on the breakpoint number.\n\
15916 \n"
15917 BREAK_ARGS_HELP ("tbreak")));
15918   set_cmd_completer (c, location_completer);
15919
15920   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15921 Set a hardware assisted breakpoint.\n\
15922 Like \"break\" except the breakpoint requires hardware support,\n\
15923 some target hardware may not have this support.\n\
15924 \n"
15925 BREAK_ARGS_HELP ("hbreak")));
15926   set_cmd_completer (c, location_completer);
15927
15928   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15929 Set a temporary hardware assisted breakpoint.\n\
15930 Like \"hbreak\" except the breakpoint is only temporary,\n\
15931 so it will be deleted when hit.\n\
15932 \n"
15933 BREAK_ARGS_HELP ("thbreak")));
15934   set_cmd_completer (c, location_completer);
15935
15936   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15937 Enable some breakpoints.\n\
15938 Give breakpoint numbers (separated by spaces) as arguments.\n\
15939 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15940 This is used to cancel the effect of the \"disable\" command.\n\
15941 With a subcommand you can enable temporarily."),
15942                   &enablelist, "enable ", 1, &cmdlist);
15943   if (xdb_commands)
15944     add_com ("ab", class_breakpoint, enable_command, _("\
15945 Enable some breakpoints.\n\
15946 Give breakpoint numbers (separated by spaces) as arguments.\n\
15947 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15948 This is used to cancel the effect of the \"disable\" command.\n\
15949 With a subcommand you can enable temporarily."));
15950
15951   add_com_alias ("en", "enable", class_breakpoint, 1);
15952
15953   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15954 Enable some breakpoints.\n\
15955 Give breakpoint numbers (separated by spaces) as arguments.\n\
15956 This is used to cancel the effect of the \"disable\" command.\n\
15957 May be abbreviated to simply \"enable\".\n"),
15958                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15959
15960   add_cmd ("once", no_class, enable_once_command, _("\
15961 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15962 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15963            &enablebreaklist);
15964
15965   add_cmd ("delete", no_class, enable_delete_command, _("\
15966 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15967 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15968            &enablebreaklist);
15969
15970   add_cmd ("count", no_class, enable_count_command, _("\
15971 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15972 If a breakpoint is hit while enabled in this fashion,\n\
15973 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15974            &enablebreaklist);
15975
15976   add_cmd ("delete", no_class, enable_delete_command, _("\
15977 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15978 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15979            &enablelist);
15980
15981   add_cmd ("once", no_class, enable_once_command, _("\
15982 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15983 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15984            &enablelist);
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            &enablelist);
15991
15992   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15993 Disable some breakpoints.\n\
15994 Arguments are breakpoint numbers with spaces in between.\n\
15995 To disable all breakpoints, give no argument.\n\
15996 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15997                   &disablelist, "disable ", 1, &cmdlist);
15998   add_com_alias ("dis", "disable", class_breakpoint, 1);
15999   add_com_alias ("disa", "disable", class_breakpoint, 1);
16000   if (xdb_commands)
16001     add_com ("sb", class_breakpoint, disable_command, _("\
16002 Disable some breakpoints.\n\
16003 Arguments are breakpoint numbers with spaces in between.\n\
16004 To disable all breakpoints, give no argument.\n\
16005 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16006
16007   add_cmd ("breakpoints", class_alias, disable_command, _("\
16008 Disable some breakpoints.\n\
16009 Arguments are breakpoint numbers with spaces in between.\n\
16010 To disable all breakpoints, give no argument.\n\
16011 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16012 This command may be abbreviated \"disable\"."),
16013            &disablelist);
16014
16015   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16016 Delete some breakpoints or auto-display expressions.\n\
16017 Arguments are breakpoint numbers with spaces in between.\n\
16018 To delete all breakpoints, give no argument.\n\
16019 \n\
16020 Also a prefix command for deletion of other GDB objects.\n\
16021 The \"unset\" command is also an alias for \"delete\"."),
16022                   &deletelist, "delete ", 1, &cmdlist);
16023   add_com_alias ("d", "delete", class_breakpoint, 1);
16024   add_com_alias ("del", "delete", class_breakpoint, 1);
16025   if (xdb_commands)
16026     add_com ("db", class_breakpoint, delete_command, _("\
16027 Delete some breakpoints.\n\
16028 Arguments are breakpoint numbers with spaces in between.\n\
16029 To delete all breakpoints, give no argument.\n"));
16030
16031   add_cmd ("breakpoints", class_alias, 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 This command may be abbreviated \"delete\"."),
16036            &deletelist);
16037
16038   add_com ("clear", class_breakpoint, clear_command, _("\
16039 Clear breakpoint at specified line or function.\n\
16040 Argument may be line number, function name, or \"*\" and an address.\n\
16041 If line number is specified, all breakpoints in that line are cleared.\n\
16042 If function is specified, breakpoints at beginning of function are cleared.\n\
16043 If an address is specified, breakpoints at that address are cleared.\n\
16044 \n\
16045 With no argument, clears all breakpoints in the line that the selected frame\n\
16046 is executing in.\n\
16047 \n\
16048 See also the \"delete\" command which clears breakpoints by number."));
16049   add_com_alias ("cl", "clear", class_breakpoint, 1);
16050
16051   c = add_com ("break", class_breakpoint, break_command, _("\
16052 Set breakpoint at specified line or function.\n"
16053 BREAK_ARGS_HELP ("break")));
16054   set_cmd_completer (c, location_completer);
16055
16056   add_com_alias ("b", "break", class_run, 1);
16057   add_com_alias ("br", "break", class_run, 1);
16058   add_com_alias ("bre", "break", class_run, 1);
16059   add_com_alias ("brea", "break", class_run, 1);
16060
16061   if (xdb_commands)
16062    add_com_alias ("ba", "break", class_breakpoint, 1);
16063
16064   if (dbx_commands)
16065     {
16066       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16067 Break in function/address or break at a line in the current file."),
16068                              &stoplist, "stop ", 1, &cmdlist);
16069       add_cmd ("in", class_breakpoint, stopin_command,
16070                _("Break in function or address."), &stoplist);
16071       add_cmd ("at", class_breakpoint, stopat_command,
16072                _("Break at a line in the current file."), &stoplist);
16073       add_com ("status", class_info, breakpoints_info, _("\
16074 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16075 The \"Type\" column indicates one of:\n\
16076 \tbreakpoint     - normal breakpoint\n\
16077 \twatchpoint     - watchpoint\n\
16078 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16079 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16080 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16081 address and file/line number respectively.\n\
16082 \n\
16083 Convenience variable \"$_\" and default examine address for \"x\"\n\
16084 are set to the address of the last breakpoint listed unless the command\n\
16085 is prefixed with \"server \".\n\n\
16086 Convenience variable \"$bpnum\" contains the number of the last\n\
16087 breakpoint set."));
16088     }
16089
16090   add_info ("breakpoints", breakpoints_info, _("\
16091 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16092 The \"Type\" column indicates one of:\n\
16093 \tbreakpoint     - normal breakpoint\n\
16094 \twatchpoint     - watchpoint\n\
16095 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16096 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16097 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16098 address and file/line number respectively.\n\
16099 \n\
16100 Convenience variable \"$_\" and default examine address for \"x\"\n\
16101 are set to the address of the last breakpoint listed unless the command\n\
16102 is prefixed with \"server \".\n\n\
16103 Convenience variable \"$bpnum\" contains the number of the last\n\
16104 breakpoint set."));
16105
16106   add_info_alias ("b", "breakpoints", 1);
16107
16108   if (xdb_commands)
16109     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16110 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16111 The \"Type\" column indicates one of:\n\
16112 \tbreakpoint     - normal breakpoint\n\
16113 \twatchpoint     - watchpoint\n\
16114 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16115 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16116 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16117 address and file/line number respectively.\n\
16118 \n\
16119 Convenience variable \"$_\" and default examine address for \"x\"\n\
16120 are set to the address of the last breakpoint listed unless the command\n\
16121 is prefixed with \"server \".\n\n\
16122 Convenience variable \"$bpnum\" contains the number of the last\n\
16123 breakpoint set."));
16124
16125   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16126 Status of all breakpoints, or breakpoint number NUMBER.\n\
16127 The \"Type\" column indicates one of:\n\
16128 \tbreakpoint     - normal breakpoint\n\
16129 \twatchpoint     - watchpoint\n\
16130 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16131 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16132 \tuntil          - internal breakpoint used by the \"until\" command\n\
16133 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16134 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16135 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16136 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16137 address and file/line number respectively.\n\
16138 \n\
16139 Convenience variable \"$_\" and default examine address for \"x\"\n\
16140 are set to the address of the last breakpoint listed unless the command\n\
16141 is prefixed with \"server \".\n\n\
16142 Convenience variable \"$bpnum\" contains the number of the last\n\
16143 breakpoint set."),
16144            &maintenanceinfolist);
16145
16146   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16147 Set catchpoints to catch events."),
16148                   &catch_cmdlist, "catch ",
16149                   0/*allow-unknown*/, &cmdlist);
16150
16151   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16152 Set temporary catchpoints to catch events."),
16153                   &tcatch_cmdlist, "tcatch ",
16154                   0/*allow-unknown*/, &cmdlist);
16155
16156   /* Add catch and tcatch sub-commands.  */
16157   add_catch_command ("catch", _("\
16158 Catch an exception, when caught."),
16159                      catch_catch_command,
16160                      NULL,
16161                      CATCH_PERMANENT,
16162                      CATCH_TEMPORARY);
16163   add_catch_command ("throw", _("\
16164 Catch an exception, when thrown."),
16165                      catch_throw_command,
16166                      NULL,
16167                      CATCH_PERMANENT,
16168                      CATCH_TEMPORARY);
16169   add_catch_command ("fork", _("Catch calls to fork."),
16170                      catch_fork_command_1,
16171                      NULL,
16172                      (void *) (uintptr_t) catch_fork_permanent,
16173                      (void *) (uintptr_t) catch_fork_temporary);
16174   add_catch_command ("vfork", _("Catch calls to vfork."),
16175                      catch_fork_command_1,
16176                      NULL,
16177                      (void *) (uintptr_t) catch_vfork_permanent,
16178                      (void *) (uintptr_t) catch_vfork_temporary);
16179   add_catch_command ("exec", _("Catch calls to exec."),
16180                      catch_exec_command_1,
16181                      NULL,
16182                      CATCH_PERMANENT,
16183                      CATCH_TEMPORARY);
16184   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16185 Usage: catch load [REGEX]\n\
16186 If REGEX is given, only stop for libraries matching the regular expression."),
16187                      catch_load_command_1,
16188                      NULL,
16189                      CATCH_PERMANENT,
16190                      CATCH_TEMPORARY);
16191   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16192 Usage: catch unload [REGEX]\n\
16193 If REGEX is given, only stop for libraries matching the regular expression."),
16194                      catch_unload_command_1,
16195                      NULL,
16196                      CATCH_PERMANENT,
16197                      CATCH_TEMPORARY);
16198   add_catch_command ("syscall", _("\
16199 Catch system calls by their names and/or numbers.\n\
16200 Arguments say which system calls to catch.  If no arguments\n\
16201 are given, every system call will be caught.\n\
16202 Arguments, if given, should be one or more system call names\n\
16203 (if your system supports that), or system call numbers."),
16204                      catch_syscall_command_1,
16205                      catch_syscall_completer,
16206                      CATCH_PERMANENT,
16207                      CATCH_TEMPORARY);
16208
16209   c = add_com ("watch", class_breakpoint, watch_command, _("\
16210 Set a watchpoint for an expression.\n\
16211 Usage: watch [-l|-location] EXPRESSION\n\
16212 A watchpoint stops execution of your program whenever the value of\n\
16213 an expression changes.\n\
16214 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16215 the memory to which it refers."));
16216   set_cmd_completer (c, expression_completer);
16217
16218   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16219 Set a read watchpoint for an expression.\n\
16220 Usage: rwatch [-l|-location] EXPRESSION\n\
16221 A watchpoint stops execution of your program whenever the value of\n\
16222 an expression is read.\n\
16223 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16224 the memory to which it refers."));
16225   set_cmd_completer (c, expression_completer);
16226
16227   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16228 Set a watchpoint for an expression.\n\
16229 Usage: awatch [-l|-location] EXPRESSION\n\
16230 A watchpoint stops execution of your program whenever the value of\n\
16231 an expression is either read or written.\n\
16232 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16233 the memory to which it refers."));
16234   set_cmd_completer (c, expression_completer);
16235
16236   add_info ("watchpoints", watchpoints_info, _("\
16237 Status of specified watchpoints (all watchpoints if no argument)."));
16238
16239   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16240      respond to changes - contrary to the description.  */
16241   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16242                             &can_use_hw_watchpoints, _("\
16243 Set debugger's willingness to use watchpoint hardware."), _("\
16244 Show debugger's willingness to use watchpoint hardware."), _("\
16245 If zero, gdb will not use hardware for new watchpoints, even if\n\
16246 such is available.  (However, any hardware watchpoints that were\n\
16247 created before setting this to nonzero, will continue to use watchpoint\n\
16248 hardware.)"),
16249                             NULL,
16250                             show_can_use_hw_watchpoints,
16251                             &setlist, &showlist);
16252
16253   can_use_hw_watchpoints = 1;
16254
16255   /* Tracepoint manipulation commands.  */
16256
16257   c = add_com ("trace", class_breakpoint, trace_command, _("\
16258 Set a tracepoint at specified line or function.\n\
16259 \n"
16260 BREAK_ARGS_HELP ("trace") "\n\
16261 Do \"help tracepoints\" for info on other tracepoint commands."));
16262   set_cmd_completer (c, location_completer);
16263
16264   add_com_alias ("tp", "trace", class_alias, 0);
16265   add_com_alias ("tr", "trace", class_alias, 1);
16266   add_com_alias ("tra", "trace", class_alias, 1);
16267   add_com_alias ("trac", "trace", class_alias, 1);
16268
16269   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16270 Set a fast tracepoint at specified line or function.\n\
16271 \n"
16272 BREAK_ARGS_HELP ("ftrace") "\n\
16273 Do \"help tracepoints\" for info on other tracepoint commands."));
16274   set_cmd_completer (c, location_completer);
16275
16276   c = add_com ("strace", class_breakpoint, strace_command, _("\
16277 Set a static tracepoint at specified line, function or marker.\n\
16278 \n\
16279 strace [LOCATION] [if CONDITION]\n\
16280 LOCATION may be a line number, function name, \"*\" and an address,\n\
16281 or -m MARKER_ID.\n\
16282 If a line number is specified, probe the marker at start of code\n\
16283 for that line.  If a function is specified, probe the marker at start\n\
16284 of code for that function.  If an address is specified, probe the marker\n\
16285 at that exact address.  If a marker id is specified, probe the marker\n\
16286 with that name.  With no LOCATION, uses current execution address of\n\
16287 the selected stack frame.\n\
16288 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16289 This collects arbitrary user data passed in the probe point call to the\n\
16290 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16291 by printing the $_sdata variable like any other convenience variable.\n\
16292 \n\
16293 CONDITION is a boolean expression.\n\
16294 \n\
16295 Multiple tracepoints at one place are permitted, and useful if their\n\
16296 conditions are different.\n\
16297 \n\
16298 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16299 Do \"help tracepoints\" for info on other tracepoint commands."));
16300   set_cmd_completer (c, location_completer);
16301
16302   add_info ("tracepoints", tracepoints_info, _("\
16303 Status of specified tracepoints (all tracepoints if no argument).\n\
16304 Convenience variable \"$tpnum\" contains the number of the\n\
16305 last tracepoint set."));
16306
16307   add_info_alias ("tp", "tracepoints", 1);
16308
16309   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16310 Delete specified tracepoints.\n\
16311 Arguments are tracepoint numbers, separated by spaces.\n\
16312 No argument means delete all tracepoints."),
16313            &deletelist);
16314
16315   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16316 Disable specified tracepoints.\n\
16317 Arguments are tracepoint numbers, separated by spaces.\n\
16318 No argument means disable all tracepoints."),
16319            &disablelist);
16320   deprecate_cmd (c, "disable");
16321
16322   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16323 Enable specified tracepoints.\n\
16324 Arguments are tracepoint numbers, separated by spaces.\n\
16325 No argument means enable all tracepoints."),
16326            &enablelist);
16327   deprecate_cmd (c, "enable");
16328
16329   add_com ("passcount", class_trace, trace_pass_command, _("\
16330 Set the passcount for a tracepoint.\n\
16331 The trace will end when the tracepoint has been passed 'count' times.\n\
16332 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16333 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16334
16335   add_prefix_cmd ("save", class_breakpoint, save_command,
16336                   _("Save breakpoint definitions as a script."),
16337                   &save_cmdlist, "save ",
16338                   0/*allow-unknown*/, &cmdlist);
16339
16340   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16341 Save current breakpoint definitions as a script.\n\
16342 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16343 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16344 session to restore them."),
16345                &save_cmdlist);
16346   set_cmd_completer (c, filename_completer);
16347
16348   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16349 Save current tracepoint definitions as a script.\n\
16350 Use the 'source' command in another debug session to restore them."),
16351                &save_cmdlist);
16352   set_cmd_completer (c, filename_completer);
16353
16354   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16355   deprecate_cmd (c, "save tracepoints");
16356
16357   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16358 Breakpoint specific settings\n\
16359 Configure various breakpoint-specific variables such as\n\
16360 pending breakpoint behavior"),
16361                   &breakpoint_set_cmdlist, "set breakpoint ",
16362                   0/*allow-unknown*/, &setlist);
16363   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16364 Breakpoint specific settings\n\
16365 Configure various breakpoint-specific variables such as\n\
16366 pending breakpoint behavior"),
16367                   &breakpoint_show_cmdlist, "show breakpoint ",
16368                   0/*allow-unknown*/, &showlist);
16369
16370   add_setshow_auto_boolean_cmd ("pending", no_class,
16371                                 &pending_break_support, _("\
16372 Set debugger's behavior regarding pending breakpoints."), _("\
16373 Show debugger's behavior regarding pending breakpoints."), _("\
16374 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16375 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16376 an error.  If auto, an unrecognized breakpoint location results in a\n\
16377 user-query to see if a pending breakpoint should be created."),
16378                                 NULL,
16379                                 show_pending_break_support,
16380                                 &breakpoint_set_cmdlist,
16381                                 &breakpoint_show_cmdlist);
16382
16383   pending_break_support = AUTO_BOOLEAN_AUTO;
16384
16385   add_setshow_boolean_cmd ("auto-hw", no_class,
16386                            &automatic_hardware_breakpoints, _("\
16387 Set automatic usage of hardware breakpoints."), _("\
16388 Show automatic usage of hardware breakpoints."), _("\
16389 If set, the debugger will automatically use hardware breakpoints for\n\
16390 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16391 a warning will be emitted for such breakpoints."),
16392                            NULL,
16393                            show_automatic_hardware_breakpoints,
16394                            &breakpoint_set_cmdlist,
16395                            &breakpoint_show_cmdlist);
16396
16397   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16398                                 &always_inserted_mode, _("\
16399 Set mode for inserting breakpoints."), _("\
16400 Show mode for inserting breakpoints."), _("\
16401 When this mode is off, breakpoints are inserted in inferior when it is\n\
16402 resumed, and removed when execution stops.  When this mode is on,\n\
16403 breakpoints are inserted immediately and removed only when the user\n\
16404 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16405 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16406 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16407 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16408 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16409                                 NULL,
16410                                 &show_always_inserted_mode,
16411                                 &breakpoint_set_cmdlist,
16412                                 &breakpoint_show_cmdlist);
16413
16414   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16415                         condition_evaluation_enums,
16416                         &condition_evaluation_mode_1, _("\
16417 Set mode of breakpoint condition evaluation."), _("\
16418 Show mode of breakpoint condition evaluation."), _("\
16419 When this is set to \"host\", breakpoint conditions will be\n\
16420 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16421 breakpoint conditions will be downloaded to the target (if the target\n\
16422 supports such feature) and conditions will be evaluated on the target's side.\n\
16423 If this is set to \"auto\" (default), this will be automatically set to\n\
16424 \"target\" if it supports condition evaluation, otherwise it will\n\
16425 be set to \"gdb\""),
16426                            &set_condition_evaluation_mode,
16427                            &show_condition_evaluation_mode,
16428                            &breakpoint_set_cmdlist,
16429                            &breakpoint_show_cmdlist);
16430
16431   add_com ("break-range", class_breakpoint, break_range_command, _("\
16432 Set a breakpoint for an address range.\n\
16433 break-range START-LOCATION, END-LOCATION\n\
16434 where START-LOCATION and END-LOCATION can be one of the following:\n\
16435   LINENUM, for that line in the current file,\n\
16436   FILE:LINENUM, for that line in that file,\n\
16437   +OFFSET, for that number of lines after the current line\n\
16438            or the start of the range\n\
16439   FUNCTION, for the first line in that function,\n\
16440   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16441   *ADDRESS, for the instruction at that address.\n\
16442 \n\
16443 The breakpoint will stop execution of the inferior whenever it executes\n\
16444 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16445 range (including START-LOCATION and END-LOCATION)."));
16446
16447   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16448 Set a dynamic printf at specified line or function.\n\
16449 dprintf location,format string,arg1,arg2,...\n\
16450 location may be a line number, function name, or \"*\" and an address.\n\
16451 If a line number is specified, break at start of code for that line.\n\
16452 If a function is specified, break at start of code for that function.\n\
16453 "));
16454   set_cmd_completer (c, location_completer);
16455
16456   add_setshow_enum_cmd ("dprintf-style", class_support,
16457                         dprintf_style_enums, &dprintf_style, _("\
16458 Set the style of usage for dynamic printf."), _("\
16459 Show the style of usage for dynamic printf."), _("\
16460 This setting chooses how GDB will do a dynamic printf.\n\
16461 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16462 console, as with the \"printf\" command.\n\
16463 If the value is \"call\", the print is done by calling a function in your\n\
16464 program; by default printf(), but you can choose a different function or\n\
16465 output stream by setting dprintf-function and dprintf-channel."),
16466                         update_dprintf_commands, NULL,
16467                         &setlist, &showlist);
16468
16469   dprintf_function = xstrdup ("printf");
16470   add_setshow_string_cmd ("dprintf-function", class_support,
16471                           &dprintf_function, _("\
16472 Set the function to use for dynamic printf"), _("\
16473 Show the function to use for dynamic printf"), NULL,
16474                           update_dprintf_commands, NULL,
16475                           &setlist, &showlist);
16476
16477   dprintf_channel = xstrdup ("");
16478   add_setshow_string_cmd ("dprintf-channel", class_support,
16479                           &dprintf_channel, _("\
16480 Set the channel to use for dynamic printf"), _("\
16481 Show the channel to use for dynamic printf"), NULL,
16482                           update_dprintf_commands, NULL,
16483                           &setlist, &showlist);
16484
16485   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16486                            &disconnected_dprintf, _("\
16487 Set whether dprintf continues after GDB disconnects."), _("\
16488 Show whether dprintf continues after GDB disconnects."), _("\
16489 Use this to let dprintf commands continue to hit and produce output\n\
16490 even if GDB disconnects or detaches from the target."),
16491                            NULL,
16492                            NULL,
16493                            &setlist, &showlist);
16494
16495   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16496 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16497 (target agent only) This is useful for formatted output in user-defined commands."));
16498
16499   automatic_hardware_breakpoints = 1;
16500
16501   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16502 }