2012-06-05 Pedro Alves <palves@redhat.com>
[platform/upstream/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
72 /* readline include files */
73 #include "readline/readline.h"
74 #include "readline/history.h"
75
76 /* readline defines this.  */
77 #undef savestring
78
79 #include "mi/mi-common.h"
80 #include "python/python.h"
81
82 /* Prototypes for local functions.  */
83
84 static void enable_delete_command (char *, int);
85
86 static void enable_once_command (char *, int);
87
88 static void enable_count_command (char *, int);
89
90 static void disable_command (char *, int);
91
92 static void enable_command (char *, int);
93
94 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
95                                                       void *),
96                                     void *);
97
98 static void ignore_command (char *, int);
99
100 static int breakpoint_re_set_one (void *);
101
102 static void breakpoint_re_set_default (struct breakpoint *);
103
104 static void create_sals_from_address_default (char **,
105                                               struct linespec_result *,
106                                               enum bptype, char *,
107                                               char **);
108
109 static void create_breakpoints_sal_default (struct gdbarch *,
110                                             struct linespec_result *,
111                                             struct linespec_sals *,
112                                             char *, char *, enum bptype,
113                                             enum bpdisp, int, int,
114                                             int,
115                                             const struct breakpoint_ops *,
116                                             int, int, int, unsigned);
117
118 static void decode_linespec_default (struct breakpoint *, char **,
119                                      struct symtabs_and_lines *);
120
121 static void clear_command (char *, int);
122
123 static void catch_command (char *, int);
124
125 static int can_use_hardware_watchpoint (struct value *);
126
127 static void break_command_1 (char *, int, int);
128
129 static void mention (struct breakpoint *);
130
131 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
132                                                                enum bptype,
133                                                                const struct breakpoint_ops *);
134 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
135                                                        const struct symtab_and_line *);
136
137 /* This function is used in gdbtk sources and thus can not be made
138    static.  */
139 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
140                                        struct symtab_and_line,
141                                        enum bptype,
142                                        const struct breakpoint_ops *);
143
144 static struct breakpoint *
145   momentary_breakpoint_from_master (struct breakpoint *orig,
146                                     enum bptype type,
147                                     const struct breakpoint_ops *ops);
148
149 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
150
151 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
152                                             CORE_ADDR bpaddr,
153                                             enum bptype bptype);
154
155 static void describe_other_breakpoints (struct gdbarch *,
156                                         struct program_space *, CORE_ADDR,
157                                         struct obj_section *, int);
158
159 static int breakpoint_address_match (struct address_space *aspace1,
160                                      CORE_ADDR addr1,
161                                      struct address_space *aspace2,
162                                      CORE_ADDR addr2);
163
164 static int watchpoint_locations_match (struct bp_location *loc1,
165                                        struct bp_location *loc2);
166
167 static int breakpoint_location_address_match (struct bp_location *bl,
168                                               struct address_space *aspace,
169                                               CORE_ADDR addr);
170
171 static void breakpoints_info (char *, int);
172
173 static void watchpoints_info (char *, int);
174
175 static int breakpoint_1 (char *, int, 
176                          int (*) (const struct breakpoint *));
177
178 static int breakpoint_cond_eval (void *);
179
180 static void cleanup_executing_breakpoints (void *);
181
182 static void commands_command (char *, int);
183
184 static void condition_command (char *, int);
185
186 typedef enum
187   {
188     mark_inserted,
189     mark_uninserted
190   }
191 insertion_state_t;
192
193 static int remove_breakpoint (struct bp_location *, insertion_state_t);
194 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
195
196 static enum print_stop_action print_bp_stop_message (bpstat bs);
197
198 static int watchpoint_check (void *);
199
200 static void maintenance_info_breakpoints (char *, int);
201
202 static int hw_breakpoint_used_count (void);
203
204 static int hw_watchpoint_use_count (struct breakpoint *);
205
206 static int hw_watchpoint_used_count_others (struct breakpoint *except,
207                                             enum bptype type,
208                                             int *other_type_used);
209
210 static void hbreak_command (char *, int);
211
212 static void thbreak_command (char *, int);
213
214 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
215                                     int count);
216
217 static void stop_command (char *arg, int from_tty);
218
219 static void stopin_command (char *arg, int from_tty);
220
221 static void stopat_command (char *arg, int from_tty);
222
223 static char *ep_parse_optional_if_clause (char **arg);
224
225 static void catch_exception_command_1 (enum exception_event_kind ex_event, 
226                                        char *arg, int tempflag, int from_tty);
227
228 static void tcatch_command (char *arg, int from_tty);
229
230 static void detach_single_step_breakpoints (void);
231
232 static int single_step_breakpoint_inserted_here_p (struct address_space *,
233                                                    CORE_ADDR pc);
234
235 static void free_bp_location (struct bp_location *loc);
236 static void incref_bp_location (struct bp_location *loc);
237 static void decref_bp_location (struct bp_location **loc);
238
239 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
240
241 static void update_global_location_list (int);
242
243 static void update_global_location_list_nothrow (int);
244
245 static int is_hardware_watchpoint (const struct breakpoint *bpt);
246
247 static void insert_breakpoint_locations (void);
248
249 static int syscall_catchpoint_p (struct breakpoint *b);
250
251 static void tracepoints_info (char *, int);
252
253 static void delete_trace_command (char *, int);
254
255 static void enable_trace_command (char *, int);
256
257 static void disable_trace_command (char *, int);
258
259 static void trace_pass_command (char *, int);
260
261 static int is_masked_watchpoint (const struct breakpoint *b);
262
263 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
264
265 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
266    otherwise.  */
267
268 static int strace_marker_p (struct breakpoint *b);
269
270 static void init_catchpoint (struct breakpoint *b,
271                              struct gdbarch *gdbarch, int tempflag,
272                              char *cond_string,
273                              const struct breakpoint_ops *ops);
274
275 /* The abstract base class all breakpoint_ops structures inherit
276    from.  */
277 static struct breakpoint_ops base_breakpoint_ops;
278
279 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
280    that are implemented on top of software or hardware breakpoints
281    (user breakpoints, internal and momentary breakpoints, etc.).  */
282 static struct breakpoint_ops bkpt_base_breakpoint_ops;
283
284 /* Internal breakpoints class type.  */
285 static struct breakpoint_ops internal_breakpoint_ops;
286
287 /* Momentary breakpoints class type.  */
288 static struct breakpoint_ops momentary_breakpoint_ops;
289
290 /* The breakpoint_ops structure to be used in regular user created
291    breakpoints.  */
292 struct breakpoint_ops bkpt_breakpoint_ops;
293
294 /* Breakpoints set on probes.  */
295 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
296
297 /* Dynamic printf class type.  */
298 static struct breakpoint_ops dprintf_breakpoint_ops;
299
300 /* A reference-counted struct command_line.  This lets multiple
301    breakpoints share a single command list.  */
302 struct counted_command_line
303 {
304   /* The reference count.  */
305   int refc;
306
307   /* The command list.  */
308   struct command_line *commands;
309 };
310
311 struct command_line *
312 breakpoint_commands (struct breakpoint *b)
313 {
314   return b->commands ? b->commands->commands : NULL;
315 }
316
317 /* Flag indicating that a command has proceeded the inferior past the
318    current breakpoint.  */
319
320 static int breakpoint_proceeded;
321
322 const char *
323 bpdisp_text (enum bpdisp disp)
324 {
325   /* NOTE: the following values are a part of MI protocol and
326      represent values of 'disp' field returned when inferior stops at
327      a breakpoint.  */
328   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
329
330   return bpdisps[(int) disp];
331 }
332
333 /* Prototypes for exported functions.  */
334 /* If FALSE, gdb will not use hardware support for watchpoints, even
335    if such is available.  */
336 static int can_use_hw_watchpoints;
337
338 static void
339 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
340                              struct cmd_list_element *c,
341                              const char *value)
342 {
343   fprintf_filtered (file,
344                     _("Debugger's willingness to use "
345                       "watchpoint hardware is %s.\n"),
346                     value);
347 }
348
349 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
350    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
351    for unrecognized breakpoint locations.
352    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
353 static enum auto_boolean pending_break_support;
354 static void
355 show_pending_break_support (struct ui_file *file, int from_tty,
356                             struct cmd_list_element *c,
357                             const char *value)
358 {
359   fprintf_filtered (file,
360                     _("Debugger's behavior regarding "
361                       "pending breakpoints is %s.\n"),
362                     value);
363 }
364
365 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
366    set with "break" but falling in read-only memory.
367    If 0, gdb will warn about such breakpoints, but won't automatically
368    use hardware breakpoints.  */
369 static int automatic_hardware_breakpoints;
370 static void
371 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
372                                      struct cmd_list_element *c,
373                                      const char *value)
374 {
375   fprintf_filtered (file,
376                     _("Automatic usage of hardware breakpoints is %s.\n"),
377                     value);
378 }
379
380 /* If on, gdb will keep breakpoints inserted even as inferior is
381    stopped, and immediately insert any new breakpoints.  If off, gdb
382    will insert breakpoints into inferior only when resuming it, and
383    will remove breakpoints upon stop.  If auto, GDB will behave as ON
384    if in non-stop mode, and as OFF if all-stop mode.*/
385
386 static const char always_inserted_auto[] = "auto";
387 static const char always_inserted_on[] = "on";
388 static const char always_inserted_off[] = "off";
389 static const char *const always_inserted_enums[] = {
390   always_inserted_auto,
391   always_inserted_off,
392   always_inserted_on,
393   NULL
394 };
395 static const char *always_inserted_mode = always_inserted_auto;
396 static void
397 show_always_inserted_mode (struct ui_file *file, int from_tty,
398                      struct cmd_list_element *c, const char *value)
399 {
400   if (always_inserted_mode == always_inserted_auto)
401     fprintf_filtered (file,
402                       _("Always inserted breakpoint "
403                         "mode is %s (currently %s).\n"),
404                       value,
405                       breakpoints_always_inserted_mode () ? "on" : "off");
406   else
407     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
408                       value);
409 }
410
411 int
412 breakpoints_always_inserted_mode (void)
413 {
414   return (always_inserted_mode == always_inserted_on
415           || (always_inserted_mode == always_inserted_auto && non_stop));
416 }
417
418 static const char condition_evaluation_both[] = "host or target";
419
420 /* Modes for breakpoint condition evaluation.  */
421 static const char condition_evaluation_auto[] = "auto";
422 static const char condition_evaluation_host[] = "host";
423 static const char condition_evaluation_target[] = "target";
424 static const char *const condition_evaluation_enums[] = {
425   condition_evaluation_auto,
426   condition_evaluation_host,
427   condition_evaluation_target,
428   NULL
429 };
430
431 /* Global that holds the current mode for breakpoint condition evaluation.  */
432 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
433
434 /* Global that we use to display information to the user (gets its value from
435    condition_evaluation_mode_1.  */
436 static const char *condition_evaluation_mode = condition_evaluation_auto;
437
438 /* Translate a condition evaluation mode MODE into either "host"
439    or "target".  This is used mostly to translate from "auto" to the
440    real setting that is being used.  It returns the translated
441    evaluation mode.  */
442
443 static const char *
444 translate_condition_evaluation_mode (const char *mode)
445 {
446   if (mode == condition_evaluation_auto)
447     {
448       if (target_supports_evaluation_of_breakpoint_conditions ())
449         return condition_evaluation_target;
450       else
451         return condition_evaluation_host;
452     }
453   else
454     return mode;
455 }
456
457 /* Discovers what condition_evaluation_auto translates to.  */
458
459 static const char *
460 breakpoint_condition_evaluation_mode (void)
461 {
462   return translate_condition_evaluation_mode (condition_evaluation_mode);
463 }
464
465 /* Return true if GDB should evaluate breakpoint conditions or false
466    otherwise.  */
467
468 static int
469 gdb_evaluates_breakpoint_condition_p (void)
470 {
471   const char *mode = breakpoint_condition_evaluation_mode ();
472
473   return (mode == condition_evaluation_host);
474 }
475
476 void _initialize_breakpoint (void);
477
478 /* Are we executing breakpoint commands?  */
479 static int executing_breakpoint_commands;
480
481 /* Are overlay event breakpoints enabled? */
482 static int overlay_events_enabled;
483
484 /* See description in breakpoint.h. */
485 int target_exact_watchpoints = 0;
486
487 /* Walk the following statement or block through all breakpoints.
488    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
489    current breakpoint.  */
490
491 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
492
493 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
494         for (B = breakpoint_chain;      \
495              B ? (TMP=B->next, 1): 0;   \
496              B = TMP)
497
498 /* Similar iterator for the low-level breakpoints.  SAFE variant is
499    not provided so update_global_location_list must not be called
500    while executing the block of ALL_BP_LOCATIONS.  */
501
502 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
503         for (BP_TMP = bp_location;                                      \
504              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
505              BP_TMP++)
506
507 /* Iterates through locations with address ADDRESS for the currently selected
508    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
509    to where the loop should start from.
510    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
511    appropriate location to start with.  */
512
513 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
514         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
515              BP_LOCP_TMP = BP_LOCP_START;                               \
516              BP_LOCP_START                                              \
517              && (BP_LOCP_TMP < bp_location + bp_location_count          \
518              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
519              BP_LOCP_TMP++)
520
521 /* Iterator for tracepoints only.  */
522
523 #define ALL_TRACEPOINTS(B)  \
524   for (B = breakpoint_chain; B; B = B->next)  \
525     if (is_tracepoint (B))
526
527 /* Chains of all breakpoints defined.  */
528
529 struct breakpoint *breakpoint_chain;
530
531 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
532
533 static struct bp_location **bp_location;
534
535 /* Number of elements of BP_LOCATION.  */
536
537 static unsigned bp_location_count;
538
539 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
540    ADDRESS for the current elements of BP_LOCATION which get a valid
541    result from bp_location_has_shadow.  You can use it for roughly
542    limiting the subrange of BP_LOCATION to scan for shadow bytes for
543    an address you need to read.  */
544
545 static CORE_ADDR bp_location_placed_address_before_address_max;
546
547 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
548    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
549    BP_LOCATION which get a valid result from bp_location_has_shadow.
550    You can use it for roughly limiting the subrange of BP_LOCATION to
551    scan for shadow bytes for an address you need to read.  */
552
553 static CORE_ADDR bp_location_shadow_len_after_address_max;
554
555 /* The locations that no longer correspond to any breakpoint, unlinked
556    from bp_location array, but for which a hit may still be reported
557    by a target.  */
558 VEC(bp_location_p) *moribund_locations = NULL;
559
560 /* Number of last breakpoint made.  */
561
562 static int breakpoint_count;
563
564 /* The value of `breakpoint_count' before the last command that
565    created breakpoints.  If the last (break-like) command created more
566    than one breakpoint, then the difference between BREAKPOINT_COUNT
567    and PREV_BREAKPOINT_COUNT is more than one.  */
568 static int prev_breakpoint_count;
569
570 /* Number of last tracepoint made.  */
571
572 static int tracepoint_count;
573
574 static struct cmd_list_element *breakpoint_set_cmdlist;
575 static struct cmd_list_element *breakpoint_show_cmdlist;
576 struct cmd_list_element *save_cmdlist;
577
578 /* Return whether a breakpoint is an active enabled breakpoint.  */
579 static int
580 breakpoint_enabled (struct breakpoint *b)
581 {
582   return (b->enable_state == bp_enabled);
583 }
584
585 /* Set breakpoint count to NUM.  */
586
587 static void
588 set_breakpoint_count (int num)
589 {
590   prev_breakpoint_count = breakpoint_count;
591   breakpoint_count = num;
592   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
593 }
594
595 /* Used by `start_rbreak_breakpoints' below, to record the current
596    breakpoint count before "rbreak" creates any breakpoint.  */
597 static int rbreak_start_breakpoint_count;
598
599 /* Called at the start an "rbreak" command to record the first
600    breakpoint made.  */
601
602 void
603 start_rbreak_breakpoints (void)
604 {
605   rbreak_start_breakpoint_count = breakpoint_count;
606 }
607
608 /* Called at the end of an "rbreak" command to record the last
609    breakpoint made.  */
610
611 void
612 end_rbreak_breakpoints (void)
613 {
614   prev_breakpoint_count = rbreak_start_breakpoint_count;
615 }
616
617 /* Used in run_command to zero the hit count when a new run starts.  */
618
619 void
620 clear_breakpoint_hit_counts (void)
621 {
622   struct breakpoint *b;
623
624   ALL_BREAKPOINTS (b)
625     b->hit_count = 0;
626 }
627
628 /* Allocate a new counted_command_line with reference count of 1.
629    The new structure owns COMMANDS.  */
630
631 static struct counted_command_line *
632 alloc_counted_command_line (struct command_line *commands)
633 {
634   struct counted_command_line *result
635     = xmalloc (sizeof (struct counted_command_line));
636
637   result->refc = 1;
638   result->commands = commands;
639   return result;
640 }
641
642 /* Increment reference count.  This does nothing if CMD is NULL.  */
643
644 static void
645 incref_counted_command_line (struct counted_command_line *cmd)
646 {
647   if (cmd)
648     ++cmd->refc;
649 }
650
651 /* Decrement reference count.  If the reference count reaches 0,
652    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
653    nothing if *CMDP is NULL.  */
654
655 static void
656 decref_counted_command_line (struct counted_command_line **cmdp)
657 {
658   if (*cmdp)
659     {
660       if (--(*cmdp)->refc == 0)
661         {
662           free_command_lines (&(*cmdp)->commands);
663           xfree (*cmdp);
664         }
665       *cmdp = NULL;
666     }
667 }
668
669 /* A cleanup function that calls decref_counted_command_line.  */
670
671 static void
672 do_cleanup_counted_command_line (void *arg)
673 {
674   decref_counted_command_line (arg);
675 }
676
677 /* Create a cleanup that calls decref_counted_command_line on the
678    argument.  */
679
680 static struct cleanup *
681 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
682 {
683   return make_cleanup (do_cleanup_counted_command_line, cmdp);
684 }
685
686 \f
687 /* Return the breakpoint with the specified number, or NULL
688    if the number does not refer to an existing breakpoint.  */
689
690 struct breakpoint *
691 get_breakpoint (int num)
692 {
693   struct breakpoint *b;
694
695   ALL_BREAKPOINTS (b)
696     if (b->number == num)
697       return b;
698   
699   return NULL;
700 }
701
702 \f
703
704 /* Mark locations as "conditions have changed" in case the target supports
705    evaluating conditions on its side.  */
706
707 static void
708 mark_breakpoint_modified (struct breakpoint *b)
709 {
710   struct bp_location *loc;
711
712   /* This is only meaningful if the target is
713      evaluating conditions and if the user has
714      opted for condition evaluation on the target's
715      side.  */
716   if (gdb_evaluates_breakpoint_condition_p ()
717       || !target_supports_evaluation_of_breakpoint_conditions ())
718     return;
719
720   if (!is_breakpoint (b))
721     return;
722
723   for (loc = b->loc; loc; loc = loc->next)
724     loc->condition_changed = condition_modified;
725 }
726
727 /* Mark location as "conditions have changed" in case the target supports
728    evaluating conditions on its side.  */
729
730 static void
731 mark_breakpoint_location_modified (struct bp_location *loc)
732 {
733   /* This is only meaningful if the target is
734      evaluating conditions and if the user has
735      opted for condition evaluation on the target's
736      side.  */
737   if (gdb_evaluates_breakpoint_condition_p ()
738       || !target_supports_evaluation_of_breakpoint_conditions ())
739
740     return;
741
742   if (!is_breakpoint (loc->owner))
743     return;
744
745   loc->condition_changed = condition_modified;
746 }
747
748 /* Sets the condition-evaluation mode using the static global
749    condition_evaluation_mode.  */
750
751 static void
752 set_condition_evaluation_mode (char *args, int from_tty,
753                                struct cmd_list_element *c)
754 {
755   const char *old_mode, *new_mode;
756
757   if ((condition_evaluation_mode_1 == condition_evaluation_target)
758       && !target_supports_evaluation_of_breakpoint_conditions ())
759     {
760       condition_evaluation_mode_1 = condition_evaluation_mode;
761       warning (_("Target does not support breakpoint condition evaluation.\n"
762                  "Using host evaluation mode instead."));
763       return;
764     }
765
766   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
767   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
768
769   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
770      settings was "auto".  */
771   condition_evaluation_mode = condition_evaluation_mode_1;
772
773   /* Only update the mode if the user picked a different one.  */
774   if (new_mode != old_mode)
775     {
776       struct bp_location *loc, **loc_tmp;
777       /* If the user switched to a different evaluation mode, we
778          need to synch the changes with the target as follows:
779
780          "host" -> "target": Send all (valid) conditions to the target.
781          "target" -> "host": Remove all the conditions from the target.
782       */
783
784       if (new_mode == condition_evaluation_target)
785         {
786           /* Mark everything modified and synch conditions with the
787              target.  */
788           ALL_BP_LOCATIONS (loc, loc_tmp)
789             mark_breakpoint_location_modified (loc);
790         }
791       else
792         {
793           /* Manually mark non-duplicate locations to synch conditions
794              with the target.  We do this to remove all the conditions the
795              target knows about.  */
796           ALL_BP_LOCATIONS (loc, loc_tmp)
797             if (is_breakpoint (loc->owner) && loc->inserted)
798               loc->needs_update = 1;
799         }
800
801       /* Do the update.  */
802       update_global_location_list (1);
803     }
804
805   return;
806 }
807
808 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
809    what "auto" is translating to.  */
810
811 static void
812 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
813                                 struct cmd_list_element *c, const char *value)
814 {
815   if (condition_evaluation_mode == condition_evaluation_auto)
816     fprintf_filtered (file,
817                       _("Breakpoint condition evaluation "
818                         "mode is %s (currently %s).\n"),
819                       value,
820                       breakpoint_condition_evaluation_mode ());
821   else
822     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
823                       value);
824 }
825
826 /* A comparison function for bp_location AP and BP that is used by
827    bsearch.  This comparison function only cares about addresses, unlike
828    the more general bp_location_compare function.  */
829
830 static int
831 bp_location_compare_addrs (const void *ap, const void *bp)
832 {
833   struct bp_location *a = *(void **) ap;
834   struct bp_location *b = *(void **) bp;
835
836   if (a->address == b->address)
837     return 0;
838   else
839     return ((a->address > b->address) - (a->address < b->address));
840 }
841
842 /* Helper function to skip all bp_locations with addresses
843    less than ADDRESS.  It returns the first bp_location that
844    is greater than or equal to ADDRESS.  If none is found, just
845    return NULL.  */
846
847 static struct bp_location **
848 get_first_locp_gte_addr (CORE_ADDR address)
849 {
850   struct bp_location dummy_loc;
851   struct bp_location *dummy_locp = &dummy_loc;
852   struct bp_location **locp_found = NULL;
853
854   /* Initialize the dummy location's address field.  */
855   memset (&dummy_loc, 0, sizeof (struct bp_location));
856   dummy_loc.address = address;
857
858   /* Find a close match to the first location at ADDRESS.  */
859   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
860                         sizeof (struct bp_location **),
861                         bp_location_compare_addrs);
862
863   /* Nothing was found, nothing left to do.  */
864   if (locp_found == NULL)
865     return NULL;
866
867   /* We may have found a location that is at ADDRESS but is not the first in the
868      location's list.  Go backwards (if possible) and locate the first one.  */
869   while ((locp_found - 1) >= bp_location
870          && (*(locp_found - 1))->address == address)
871     locp_found--;
872
873   return locp_found;
874 }
875
876 void
877 set_breakpoint_condition (struct breakpoint *b, char *exp,
878                           int from_tty)
879 {
880   xfree (b->cond_string);
881   b->cond_string = NULL;
882
883   if (is_watchpoint (b))
884     {
885       struct watchpoint *w = (struct watchpoint *) b;
886
887       xfree (w->cond_exp);
888       w->cond_exp = NULL;
889     }
890   else
891     {
892       struct bp_location *loc;
893
894       for (loc = b->loc; loc; loc = loc->next)
895         {
896           xfree (loc->cond);
897           loc->cond = NULL;
898
899           /* No need to free the condition agent expression
900              bytecode (if we have one).  We will handle this
901              when we go through update_global_location_list.  */
902         }
903     }
904
905   if (*exp == 0)
906     {
907       if (from_tty)
908         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
909     }
910   else
911     {
912       char *arg = exp;
913
914       /* I don't know if it matters whether this is the string the user
915          typed in or the decompiled expression.  */
916       b->cond_string = xstrdup (arg);
917       b->condition_not_parsed = 0;
918
919       if (is_watchpoint (b))
920         {
921           struct watchpoint *w = (struct watchpoint *) b;
922
923           innermost_block = NULL;
924           arg = exp;
925           w->cond_exp = parse_exp_1 (&arg, 0, 0);
926           if (*arg)
927             error (_("Junk at end of expression"));
928           w->cond_exp_valid_block = innermost_block;
929         }
930       else
931         {
932           struct bp_location *loc;
933
934           for (loc = b->loc; loc; loc = loc->next)
935             {
936               arg = exp;
937               loc->cond =
938                 parse_exp_1 (&arg, block_for_pc (loc->address), 0);
939               if (*arg)
940                 error (_("Junk at end of expression"));
941             }
942         }
943     }
944   mark_breakpoint_modified (b);
945
946   breakpoints_changed ();
947   observer_notify_breakpoint_modified (b);
948 }
949
950 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
951
952 static void
953 condition_command (char *arg, int from_tty)
954 {
955   struct breakpoint *b;
956   char *p;
957   int bnum;
958
959   if (arg == 0)
960     error_no_arg (_("breakpoint number"));
961
962   p = arg;
963   bnum = get_number (&p);
964   if (bnum == 0)
965     error (_("Bad breakpoint argument: '%s'"), arg);
966
967   ALL_BREAKPOINTS (b)
968     if (b->number == bnum)
969       {
970         /* Check if this breakpoint has a Python object assigned to
971            it, and if it has a definition of the "stop"
972            method.  This method and conditions entered into GDB from
973            the CLI are mutually exclusive.  */
974         if (b->py_bp_object
975             && gdbpy_breakpoint_has_py_cond (b->py_bp_object))
976           error (_("Cannot set a condition where a Python 'stop' "
977                    "method has been defined in the breakpoint."));
978         set_breakpoint_condition (b, p, from_tty);
979
980         if (is_breakpoint (b))
981           update_global_location_list (1);
982
983         return;
984       }
985
986   error (_("No breakpoint number %d."), bnum);
987 }
988
989 /* Check that COMMAND do not contain commands that are suitable
990    only for tracepoints and not suitable for ordinary breakpoints.
991    Throw if any such commands is found.  */
992
993 static void
994 check_no_tracepoint_commands (struct command_line *commands)
995 {
996   struct command_line *c;
997
998   for (c = commands; c; c = c->next)
999     {
1000       int i;
1001
1002       if (c->control_type == while_stepping_control)
1003         error (_("The 'while-stepping' command can "
1004                  "only be used for tracepoints"));
1005
1006       for (i = 0; i < c->body_count; ++i)
1007         check_no_tracepoint_commands ((c->body_list)[i]);
1008
1009       /* Not that command parsing removes leading whitespace and comment
1010          lines and also empty lines.  So, we only need to check for
1011          command directly.  */
1012       if (strstr (c->line, "collect ") == c->line)
1013         error (_("The 'collect' command can only be used for tracepoints"));
1014
1015       if (strstr (c->line, "teval ") == c->line)
1016         error (_("The 'teval' command can only be used for tracepoints"));
1017     }
1018 }
1019
1020 /* Encapsulate tests for different types of tracepoints.  */
1021
1022 static int
1023 is_tracepoint_type (enum bptype type)
1024 {
1025   return (type == bp_tracepoint
1026           || type == bp_fast_tracepoint
1027           || type == bp_static_tracepoint);
1028 }
1029
1030 int
1031 is_tracepoint (const struct breakpoint *b)
1032 {
1033   return is_tracepoint_type (b->type);
1034 }
1035
1036 /* A helper function that validates that COMMANDS are valid for a
1037    breakpoint.  This function will throw an exception if a problem is
1038    found.  */
1039
1040 static void
1041 validate_commands_for_breakpoint (struct breakpoint *b,
1042                                   struct command_line *commands)
1043 {
1044   if (is_tracepoint (b))
1045     {
1046       /* We need to verify that each top-level element of commands is
1047          valid for tracepoints, that there's at most one
1048          while-stepping element, and that while-stepping's body has
1049          valid tracing commands excluding nested while-stepping.  */
1050       struct command_line *c;
1051       struct command_line *while_stepping = 0;
1052       for (c = commands; c; c = c->next)
1053         {
1054           if (c->control_type == while_stepping_control)
1055             {
1056               if (b->type == bp_fast_tracepoint)
1057                 error (_("The 'while-stepping' command "
1058                          "cannot be used for fast tracepoint"));
1059               else if (b->type == bp_static_tracepoint)
1060                 error (_("The 'while-stepping' command "
1061                          "cannot be used for static tracepoint"));
1062
1063               if (while_stepping)
1064                 error (_("The 'while-stepping' command "
1065                          "can be used only once"));
1066               else
1067                 while_stepping = c;
1068             }
1069         }
1070       if (while_stepping)
1071         {
1072           struct command_line *c2;
1073
1074           gdb_assert (while_stepping->body_count == 1);
1075           c2 = while_stepping->body_list[0];
1076           for (; c2; c2 = c2->next)
1077             {
1078               if (c2->control_type == while_stepping_control)
1079                 error (_("The 'while-stepping' command cannot be nested"));
1080             }
1081         }
1082     }
1083   else
1084     {
1085       check_no_tracepoint_commands (commands);
1086     }
1087 }
1088
1089 /* Return a vector of all the static tracepoints set at ADDR.  The
1090    caller is responsible for releasing the vector.  */
1091
1092 VEC(breakpoint_p) *
1093 static_tracepoints_here (CORE_ADDR addr)
1094 {
1095   struct breakpoint *b;
1096   VEC(breakpoint_p) *found = 0;
1097   struct bp_location *loc;
1098
1099   ALL_BREAKPOINTS (b)
1100     if (b->type == bp_static_tracepoint)
1101       {
1102         for (loc = b->loc; loc; loc = loc->next)
1103           if (loc->address == addr)
1104             VEC_safe_push(breakpoint_p, found, b);
1105       }
1106
1107   return found;
1108 }
1109
1110 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1111    validate that only allowed commands are included.  */
1112
1113 void
1114 breakpoint_set_commands (struct breakpoint *b, 
1115                          struct command_line *commands)
1116 {
1117   validate_commands_for_breakpoint (b, commands);
1118
1119   decref_counted_command_line (&b->commands);
1120   b->commands = alloc_counted_command_line (commands);
1121   breakpoints_changed ();
1122   observer_notify_breakpoint_modified (b);
1123 }
1124
1125 /* Set the internal `silent' flag on the breakpoint.  Note that this
1126    is not the same as the "silent" that may appear in the breakpoint's
1127    commands.  */
1128
1129 void
1130 breakpoint_set_silent (struct breakpoint *b, int silent)
1131 {
1132   int old_silent = b->silent;
1133
1134   b->silent = silent;
1135   if (old_silent != silent)
1136     observer_notify_breakpoint_modified (b);
1137 }
1138
1139 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1140    breakpoint work for any thread.  */
1141
1142 void
1143 breakpoint_set_thread (struct breakpoint *b, int thread)
1144 {
1145   int old_thread = b->thread;
1146
1147   b->thread = thread;
1148   if (old_thread != thread)
1149     observer_notify_breakpoint_modified (b);
1150 }
1151
1152 /* Set the task for this breakpoint.  If TASK is 0, make the
1153    breakpoint work for any task.  */
1154
1155 void
1156 breakpoint_set_task (struct breakpoint *b, int task)
1157 {
1158   int old_task = b->task;
1159
1160   b->task = task;
1161   if (old_task != task)
1162     observer_notify_breakpoint_modified (b);
1163 }
1164
1165 void
1166 check_tracepoint_command (char *line, void *closure)
1167 {
1168   struct breakpoint *b = closure;
1169
1170   validate_actionline (&line, b);
1171 }
1172
1173 /* A structure used to pass information through
1174    map_breakpoint_numbers.  */
1175
1176 struct commands_info
1177 {
1178   /* True if the command was typed at a tty.  */
1179   int from_tty;
1180
1181   /* The breakpoint range spec.  */
1182   char *arg;
1183
1184   /* Non-NULL if the body of the commands are being read from this
1185      already-parsed command.  */
1186   struct command_line *control;
1187
1188   /* The command lines read from the user, or NULL if they have not
1189      yet been read.  */
1190   struct counted_command_line *cmd;
1191 };
1192
1193 /* A callback for map_breakpoint_numbers that sets the commands for
1194    commands_command.  */
1195
1196 static void
1197 do_map_commands_command (struct breakpoint *b, void *data)
1198 {
1199   struct commands_info *info = data;
1200
1201   if (info->cmd == NULL)
1202     {
1203       struct command_line *l;
1204
1205       if (info->control != NULL)
1206         l = copy_command_lines (info->control->body_list[0]);
1207       else
1208         {
1209           struct cleanup *old_chain;
1210           char *str;
1211
1212           str = xstrprintf (_("Type commands for breakpoint(s) "
1213                               "%s, one per line."),
1214                             info->arg);
1215
1216           old_chain = make_cleanup (xfree, str);
1217
1218           l = read_command_lines (str,
1219                                   info->from_tty, 1,
1220                                   (is_tracepoint (b)
1221                                    ? check_tracepoint_command : 0),
1222                                   b);
1223
1224           do_cleanups (old_chain);
1225         }
1226
1227       info->cmd = alloc_counted_command_line (l);
1228     }
1229
1230   /* If a breakpoint was on the list more than once, we don't need to
1231      do anything.  */
1232   if (b->commands != info->cmd)
1233     {
1234       validate_commands_for_breakpoint (b, info->cmd->commands);
1235       incref_counted_command_line (info->cmd);
1236       decref_counted_command_line (&b->commands);
1237       b->commands = info->cmd;
1238       breakpoints_changed ();
1239       observer_notify_breakpoint_modified (b);
1240     }
1241 }
1242
1243 static void
1244 commands_command_1 (char *arg, int from_tty, 
1245                     struct command_line *control)
1246 {
1247   struct cleanup *cleanups;
1248   struct commands_info info;
1249
1250   info.from_tty = from_tty;
1251   info.control = control;
1252   info.cmd = NULL;
1253   /* If we read command lines from the user, then `info' will hold an
1254      extra reference to the commands that we must clean up.  */
1255   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1256
1257   if (arg == NULL || !*arg)
1258     {
1259       if (breakpoint_count - prev_breakpoint_count > 1)
1260         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1261                           breakpoint_count);
1262       else if (breakpoint_count > 0)
1263         arg = xstrprintf ("%d", breakpoint_count);
1264       else
1265         {
1266           /* So that we don't try to free the incoming non-NULL
1267              argument in the cleanup below.  Mapping breakpoint
1268              numbers will fail in this case.  */
1269           arg = NULL;
1270         }
1271     }
1272   else
1273     /* The command loop has some static state, so we need to preserve
1274        our argument.  */
1275     arg = xstrdup (arg);
1276
1277   if (arg != NULL)
1278     make_cleanup (xfree, arg);
1279
1280   info.arg = arg;
1281
1282   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1283
1284   if (info.cmd == NULL)
1285     error (_("No breakpoints specified."));
1286
1287   do_cleanups (cleanups);
1288 }
1289
1290 static void
1291 commands_command (char *arg, int from_tty)
1292 {
1293   commands_command_1 (arg, from_tty, NULL);
1294 }
1295
1296 /* Like commands_command, but instead of reading the commands from
1297    input stream, takes them from an already parsed command structure.
1298
1299    This is used by cli-script.c to DTRT with breakpoint commands
1300    that are part of if and while bodies.  */
1301 enum command_control_type
1302 commands_from_control_command (char *arg, struct command_line *cmd)
1303 {
1304   commands_command_1 (arg, 0, cmd);
1305   return simple_control;
1306 }
1307
1308 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1309
1310 static int
1311 bp_location_has_shadow (struct bp_location *bl)
1312 {
1313   if (bl->loc_type != bp_loc_software_breakpoint)
1314     return 0;
1315   if (!bl->inserted)
1316     return 0;
1317   if (bl->target_info.shadow_len == 0)
1318     /* BL isn't valid, or doesn't shadow memory.  */
1319     return 0;
1320   return 1;
1321 }
1322
1323 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1324    by replacing any memory breakpoints with their shadowed contents.
1325
1326    If READBUF is not NULL, this buffer must not overlap with any of
1327    the breakpoint location's shadow_contents buffers.  Otherwise,
1328    a failed assertion internal error will be raised.
1329
1330    The range of shadowed area by each bp_location is:
1331      bl->address - bp_location_placed_address_before_address_max
1332      up to bl->address + bp_location_shadow_len_after_address_max
1333    The range we were requested to resolve shadows for is:
1334      memaddr ... memaddr + len
1335    Thus the safe cutoff boundaries for performance optimization are
1336      memaddr + len <= (bl->address
1337                        - bp_location_placed_address_before_address_max)
1338    and:
1339      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1340
1341 void
1342 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1343                         const gdb_byte *writebuf_org,
1344                         ULONGEST memaddr, LONGEST len)
1345 {
1346   /* Left boundary, right boundary and median element of our binary
1347      search.  */
1348   unsigned bc_l, bc_r, bc;
1349
1350   /* Find BC_L which is a leftmost element which may affect BUF
1351      content.  It is safe to report lower value but a failure to
1352      report higher one.  */
1353
1354   bc_l = 0;
1355   bc_r = bp_location_count;
1356   while (bc_l + 1 < bc_r)
1357     {
1358       struct bp_location *bl;
1359
1360       bc = (bc_l + bc_r) / 2;
1361       bl = bp_location[bc];
1362
1363       /* Check first BL->ADDRESS will not overflow due to the added
1364          constant.  Then advance the left boundary only if we are sure
1365          the BC element can in no way affect the BUF content (MEMADDR
1366          to MEMADDR + LEN range).
1367
1368          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1369          offset so that we cannot miss a breakpoint with its shadow
1370          range tail still reaching MEMADDR.  */
1371
1372       if ((bl->address + bp_location_shadow_len_after_address_max
1373            >= bl->address)
1374           && (bl->address + bp_location_shadow_len_after_address_max
1375               <= memaddr))
1376         bc_l = bc;
1377       else
1378         bc_r = bc;
1379     }
1380
1381   /* Due to the binary search above, we need to make sure we pick the
1382      first location that's at BC_L's address.  E.g., if there are
1383      multiple locations at the same address, BC_L may end up pointing
1384      at a duplicate location, and miss the "master"/"inserted"
1385      location.  Say, given locations L1, L2 and L3 at addresses A and
1386      B:
1387
1388       L1@A, L2@A, L3@B, ...
1389
1390      BC_L could end up pointing at location L2, while the "master"
1391      location could be L1.  Since the `loc->inserted' flag is only set
1392      on "master" locations, we'd forget to restore the shadow of L1
1393      and L2.  */
1394   while (bc_l > 0
1395          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1396     bc_l--;
1397
1398   /* Now do full processing of the found relevant range of elements.  */
1399
1400   for (bc = bc_l; bc < bp_location_count; bc++)
1401   {
1402     struct bp_location *bl = bp_location[bc];
1403     CORE_ADDR bp_addr = 0;
1404     int bp_size = 0;
1405     int bptoffset = 0;
1406
1407     /* bp_location array has BL->OWNER always non-NULL.  */
1408     if (bl->owner->type == bp_none)
1409       warning (_("reading through apparently deleted breakpoint #%d?"),
1410                bl->owner->number);
1411
1412     /* Performance optimization: any further element can no longer affect BUF
1413        content.  */
1414
1415     if (bl->address >= bp_location_placed_address_before_address_max
1416         && memaddr + len <= (bl->address
1417                              - bp_location_placed_address_before_address_max))
1418       break;
1419
1420     if (!bp_location_has_shadow (bl))
1421       continue;
1422     if (!breakpoint_address_match (bl->target_info.placed_address_space, 0,
1423                                    current_program_space->aspace, 0))
1424       continue;
1425
1426     /* Addresses and length of the part of the breakpoint that
1427        we need to copy.  */
1428     bp_addr = bl->target_info.placed_address;
1429     bp_size = bl->target_info.shadow_len;
1430
1431     if (bp_addr + bp_size <= memaddr)
1432       /* The breakpoint is entirely before the chunk of memory we
1433          are reading.  */
1434       continue;
1435
1436     if (bp_addr >= memaddr + len)
1437       /* The breakpoint is entirely after the chunk of memory we are
1438          reading.  */
1439       continue;
1440
1441     /* Offset within shadow_contents.  */
1442     if (bp_addr < memaddr)
1443       {
1444         /* Only copy the second part of the breakpoint.  */
1445         bp_size -= memaddr - bp_addr;
1446         bptoffset = memaddr - bp_addr;
1447         bp_addr = memaddr;
1448       }
1449
1450     if (bp_addr + bp_size > memaddr + len)
1451       {
1452         /* Only copy the first part of the breakpoint.  */
1453         bp_size -= (bp_addr + bp_size) - (memaddr + len);
1454       }
1455
1456     if (readbuf != NULL)
1457       {
1458         /* Verify that the readbuf buffer does not overlap with
1459            the shadow_contents buffer.  */
1460         gdb_assert (bl->target_info.shadow_contents >= readbuf + len
1461                     || readbuf >= (bl->target_info.shadow_contents
1462                                    + bl->target_info.shadow_len));
1463
1464         /* Update the read buffer with this inserted breakpoint's
1465            shadow.  */
1466         memcpy (readbuf + bp_addr - memaddr,
1467                 bl->target_info.shadow_contents + bptoffset, bp_size);
1468       }
1469     else
1470       {
1471         struct gdbarch *gdbarch = bl->gdbarch;
1472         const unsigned char *bp;
1473         CORE_ADDR placed_address = bl->target_info.placed_address;
1474         unsigned placed_size = bl->target_info.placed_size;
1475
1476         /* Update the shadow with what we want to write to memory.  */
1477         memcpy (bl->target_info.shadow_contents + bptoffset,
1478                 writebuf_org + bp_addr - memaddr, bp_size);
1479
1480         /* Determine appropriate breakpoint contents and size for this
1481            address.  */
1482         bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1483
1484         /* Update the final write buffer with this inserted
1485            breakpoint's INSN.  */
1486         memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1487       }
1488   }
1489 }
1490 \f
1491
1492 /* Return true if BPT is either a software breakpoint or a hardware
1493    breakpoint.  */
1494
1495 int
1496 is_breakpoint (const struct breakpoint *bpt)
1497 {
1498   return (bpt->type == bp_breakpoint
1499           || bpt->type == bp_hardware_breakpoint
1500           || bpt->type == bp_dprintf);
1501 }
1502
1503 /* Return true if BPT is of any hardware watchpoint kind.  */
1504
1505 static int
1506 is_hardware_watchpoint (const struct breakpoint *bpt)
1507 {
1508   return (bpt->type == bp_hardware_watchpoint
1509           || bpt->type == bp_read_watchpoint
1510           || bpt->type == bp_access_watchpoint);
1511 }
1512
1513 /* Return true if BPT is of any watchpoint kind, hardware or
1514    software.  */
1515
1516 int
1517 is_watchpoint (const struct breakpoint *bpt)
1518 {
1519   return (is_hardware_watchpoint (bpt)
1520           || bpt->type == bp_watchpoint);
1521 }
1522
1523 /* Returns true if the current thread and its running state are safe
1524    to evaluate or update watchpoint B.  Watchpoints on local
1525    expressions need to be evaluated in the context of the thread that
1526    was current when the watchpoint was created, and, that thread needs
1527    to be stopped to be able to select the correct frame context.
1528    Watchpoints on global expressions can be evaluated on any thread,
1529    and in any state.  It is presently left to the target allowing
1530    memory accesses when threads are running.  */
1531
1532 static int
1533 watchpoint_in_thread_scope (struct watchpoint *b)
1534 {
1535   return (b->base.pspace == current_program_space
1536           && (ptid_equal (b->watchpoint_thread, null_ptid)
1537               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1538                   && !is_executing (inferior_ptid))));
1539 }
1540
1541 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1542    associated bp_watchpoint_scope breakpoint.  */
1543
1544 static void
1545 watchpoint_del_at_next_stop (struct watchpoint *w)
1546 {
1547   struct breakpoint *b = &w->base;
1548
1549   if (b->related_breakpoint != b)
1550     {
1551       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1552       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1553       b->related_breakpoint->disposition = disp_del_at_next_stop;
1554       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1555       b->related_breakpoint = b;
1556     }
1557   b->disposition = disp_del_at_next_stop;
1558 }
1559
1560 /* Assuming that B is a watchpoint:
1561    - Reparse watchpoint expression, if REPARSE is non-zero
1562    - Evaluate expression and store the result in B->val
1563    - Evaluate the condition if there is one, and store the result
1564      in b->loc->cond.
1565    - Update the list of values that must be watched in B->loc.
1566
1567    If the watchpoint disposition is disp_del_at_next_stop, then do
1568    nothing.  If this is local watchpoint that is out of scope, delete
1569    it.
1570
1571    Even with `set breakpoint always-inserted on' the watchpoints are
1572    removed + inserted on each stop here.  Normal breakpoints must
1573    never be removed because they might be missed by a running thread
1574    when debugging in non-stop mode.  On the other hand, hardware
1575    watchpoints (is_hardware_watchpoint; processed here) are specific
1576    to each LWP since they are stored in each LWP's hardware debug
1577    registers.  Therefore, such LWP must be stopped first in order to
1578    be able to modify its hardware watchpoints.
1579
1580    Hardware watchpoints must be reset exactly once after being
1581    presented to the user.  It cannot be done sooner, because it would
1582    reset the data used to present the watchpoint hit to the user.  And
1583    it must not be done later because it could display the same single
1584    watchpoint hit during multiple GDB stops.  Note that the latter is
1585    relevant only to the hardware watchpoint types bp_read_watchpoint
1586    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1587    not user-visible - its hit is suppressed if the memory content has
1588    not changed.
1589
1590    The following constraints influence the location where we can reset
1591    hardware watchpoints:
1592
1593    * target_stopped_by_watchpoint and target_stopped_data_address are
1594      called several times when GDB stops.
1595
1596    [linux] 
1597    * Multiple hardware watchpoints can be hit at the same time,
1598      causing GDB to stop.  GDB only presents one hardware watchpoint
1599      hit at a time as the reason for stopping, and all the other hits
1600      are presented later, one after the other, each time the user
1601      requests the execution to be resumed.  Execution is not resumed
1602      for the threads still having pending hit event stored in
1603      LWP_INFO->STATUS.  While the watchpoint is already removed from
1604      the inferior on the first stop the thread hit event is kept being
1605      reported from its cached value by linux_nat_stopped_data_address
1606      until the real thread resume happens after the watchpoint gets
1607      presented and thus its LWP_INFO->STATUS gets reset.
1608
1609    Therefore the hardware watchpoint hit can get safely reset on the
1610    watchpoint removal from inferior.  */
1611
1612 static void
1613 update_watchpoint (struct watchpoint *b, int reparse)
1614 {
1615   int within_current_scope;
1616   struct frame_id saved_frame_id;
1617   int frame_saved;
1618
1619   /* If this is a local watchpoint, we only want to check if the
1620      watchpoint frame is in scope if the current thread is the thread
1621      that was used to create the watchpoint.  */
1622   if (!watchpoint_in_thread_scope (b))
1623     return;
1624
1625   if (b->base.disposition == disp_del_at_next_stop)
1626     return;
1627  
1628   frame_saved = 0;
1629
1630   /* Determine if the watchpoint is within scope.  */
1631   if (b->exp_valid_block == NULL)
1632     within_current_scope = 1;
1633   else
1634     {
1635       struct frame_info *fi = get_current_frame ();
1636       struct gdbarch *frame_arch = get_frame_arch (fi);
1637       CORE_ADDR frame_pc = get_frame_pc (fi);
1638
1639       /* If we're in a function epilogue, unwinding may not work
1640          properly, so do not attempt to recreate locations at this
1641          point.  See similar comments in watchpoint_check.  */
1642       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1643         return;
1644
1645       /* Save the current frame's ID so we can restore it after
1646          evaluating the watchpoint expression on its own frame.  */
1647       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1648          took a frame parameter, so that we didn't have to change the
1649          selected frame.  */
1650       frame_saved = 1;
1651       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1652
1653       fi = frame_find_by_id (b->watchpoint_frame);
1654       within_current_scope = (fi != NULL);
1655       if (within_current_scope)
1656         select_frame (fi);
1657     }
1658
1659   /* We don't free locations.  They are stored in the bp_location array
1660      and update_global_location_list will eventually delete them and
1661      remove breakpoints if needed.  */
1662   b->base.loc = NULL;
1663
1664   if (within_current_scope && reparse)
1665     {
1666       char *s;
1667
1668       if (b->exp)
1669         {
1670           xfree (b->exp);
1671           b->exp = NULL;
1672         }
1673       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1674       b->exp = parse_exp_1 (&s, b->exp_valid_block, 0);
1675       /* If the meaning of expression itself changed, the old value is
1676          no longer relevant.  We don't want to report a watchpoint hit
1677          to the user when the old value and the new value may actually
1678          be completely different objects.  */
1679       value_free (b->val);
1680       b->val = NULL;
1681       b->val_valid = 0;
1682
1683       /* Note that unlike with breakpoints, the watchpoint's condition
1684          expression is stored in the breakpoint object, not in the
1685          locations (re)created below.  */
1686       if (b->base.cond_string != NULL)
1687         {
1688           if (b->cond_exp != NULL)
1689             {
1690               xfree (b->cond_exp);
1691               b->cond_exp = NULL;
1692             }
1693
1694           s = b->base.cond_string;
1695           b->cond_exp = parse_exp_1 (&s, b->cond_exp_valid_block, 0);
1696         }
1697     }
1698
1699   /* If we failed to parse the expression, for example because
1700      it refers to a global variable in a not-yet-loaded shared library,
1701      don't try to insert watchpoint.  We don't automatically delete
1702      such watchpoint, though, since failure to parse expression
1703      is different from out-of-scope watchpoint.  */
1704   if ( !target_has_execution)
1705     {
1706       /* Without execution, memory can't change.  No use to try and
1707          set watchpoint locations.  The watchpoint will be reset when
1708          the target gains execution, through breakpoint_re_set.  */
1709     }
1710   else if (within_current_scope && b->exp)
1711     {
1712       int pc = 0;
1713       struct value *val_chain, *v, *result, *next;
1714       struct program_space *frame_pspace;
1715
1716       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain);
1717
1718       /* Avoid setting b->val if it's already set.  The meaning of
1719          b->val is 'the last value' user saw, and we should update
1720          it only if we reported that last value to user.  As it
1721          happens, the code that reports it updates b->val directly.
1722          We don't keep track of the memory value for masked
1723          watchpoints.  */
1724       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1725         {
1726           b->val = v;
1727           b->val_valid = 1;
1728         }
1729
1730       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1731
1732       /* Look at each value on the value chain.  */
1733       for (v = val_chain; v; v = value_next (v))
1734         {
1735           /* If it's a memory location, and GDB actually needed
1736              its contents to evaluate the expression, then we
1737              must watch it.  If the first value returned is
1738              still lazy, that means an error occurred reading it;
1739              watch it anyway in case it becomes readable.  */
1740           if (VALUE_LVAL (v) == lval_memory
1741               && (v == val_chain || ! value_lazy (v)))
1742             {
1743               struct type *vtype = check_typedef (value_type (v));
1744
1745               /* We only watch structs and arrays if user asked
1746                  for it explicitly, never if they just happen to
1747                  appear in the middle of some value chain.  */
1748               if (v == result
1749                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1750                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1751                 {
1752                   CORE_ADDR addr;
1753                   int len, type;
1754                   struct bp_location *loc, **tmp;
1755
1756                   addr = value_address (v);
1757                   len = TYPE_LENGTH (value_type (v));
1758                   type = hw_write;
1759                   if (b->base.type == bp_read_watchpoint)
1760                     type = hw_read;
1761                   else if (b->base.type == bp_access_watchpoint)
1762                     type = hw_access;
1763
1764                   loc = allocate_bp_location (&b->base);
1765                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1766                     ;
1767                   *tmp = loc;
1768                   loc->gdbarch = get_type_arch (value_type (v));
1769
1770                   loc->pspace = frame_pspace;
1771                   loc->address = addr;
1772                   loc->length = len;
1773                   loc->watchpoint_type = type;
1774                 }
1775             }
1776         }
1777
1778       /* Change the type of breakpoint between hardware assisted or
1779          an ordinary watchpoint depending on the hardware support
1780          and free hardware slots.  REPARSE is set when the inferior
1781          is started.  */
1782       if (reparse)
1783         {
1784           int reg_cnt;
1785           enum bp_loc_type loc_type;
1786           struct bp_location *bl;
1787
1788           reg_cnt = can_use_hardware_watchpoint (val_chain);
1789
1790           if (reg_cnt)
1791             {
1792               int i, target_resources_ok, other_type_used;
1793               enum bptype type;
1794
1795               /* Use an exact watchpoint when there's only one memory region to be
1796                  watched, and only one debug register is needed to watch it.  */
1797               b->exact = target_exact_watchpoints && reg_cnt == 1;
1798
1799               /* We need to determine how many resources are already
1800                  used for all other hardware watchpoints plus this one
1801                  to see if we still have enough resources to also fit
1802                  this watchpoint in as well.  */
1803
1804               /* If this is a software watchpoint, we try to turn it
1805                  to a hardware one -- count resources as if B was of
1806                  hardware watchpoint type.  */
1807               type = b->base.type;
1808               if (type == bp_watchpoint)
1809                 type = bp_hardware_watchpoint;
1810
1811               /* This watchpoint may or may not have been placed on
1812                  the list yet at this point (it won't be in the list
1813                  if we're trying to create it for the first time,
1814                  through watch_command), so always account for it
1815                  manually.  */
1816
1817               /* Count resources used by all watchpoints except B.  */
1818               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1819
1820               /* Add in the resources needed for B.  */
1821               i += hw_watchpoint_use_count (&b->base);
1822
1823               target_resources_ok
1824                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1825               if (target_resources_ok <= 0)
1826                 {
1827                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1828
1829                   if (target_resources_ok == 0 && !sw_mode)
1830                     error (_("Target does not support this type of "
1831                              "hardware watchpoint."));
1832                   else if (target_resources_ok < 0 && !sw_mode)
1833                     error (_("There are not enough available hardware "
1834                              "resources for this watchpoint."));
1835
1836                   /* Downgrade to software watchpoint.  */
1837                   b->base.type = bp_watchpoint;
1838                 }
1839               else
1840                 {
1841                   /* If this was a software watchpoint, we've just
1842                      found we have enough resources to turn it to a
1843                      hardware watchpoint.  Otherwise, this is a
1844                      nop.  */
1845                   b->base.type = type;
1846                 }
1847             }
1848           else if (!b->base.ops->works_in_software_mode (&b->base))
1849             error (_("Expression cannot be implemented with "
1850                      "read/access watchpoint."));
1851           else
1852             b->base.type = bp_watchpoint;
1853
1854           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
1855                       : bp_loc_hardware_watchpoint);
1856           for (bl = b->base.loc; bl; bl = bl->next)
1857             bl->loc_type = loc_type;
1858         }
1859
1860       for (v = val_chain; v; v = next)
1861         {
1862           next = value_next (v);
1863           if (v != b->val)
1864             value_free (v);
1865         }
1866
1867       /* If a software watchpoint is not watching any memory, then the
1868          above left it without any location set up.  But,
1869          bpstat_stop_status requires a location to be able to report
1870          stops, so make sure there's at least a dummy one.  */
1871       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
1872         {
1873           struct breakpoint *base = &b->base;
1874           base->loc = allocate_bp_location (base);
1875           base->loc->pspace = frame_pspace;
1876           base->loc->address = -1;
1877           base->loc->length = -1;
1878           base->loc->watchpoint_type = -1;
1879         }
1880     }
1881   else if (!within_current_scope)
1882     {
1883       printf_filtered (_("\
1884 Watchpoint %d deleted because the program has left the block\n\
1885 in which its expression is valid.\n"),
1886                        b->base.number);
1887       watchpoint_del_at_next_stop (b);
1888     }
1889
1890   /* Restore the selected frame.  */
1891   if (frame_saved)
1892     select_frame (frame_find_by_id (saved_frame_id));
1893 }
1894
1895
1896 /* Returns 1 iff breakpoint location should be
1897    inserted in the inferior.  We don't differentiate the type of BL's owner
1898    (breakpoint vs. tracepoint), although insert_location in tracepoint's
1899    breakpoint_ops is not defined, because in insert_bp_location,
1900    tracepoint's insert_location will not be called.  */
1901 static int
1902 should_be_inserted (struct bp_location *bl)
1903 {
1904   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
1905     return 0;
1906
1907   if (bl->owner->disposition == disp_del_at_next_stop)
1908     return 0;
1909
1910   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
1911     return 0;
1912
1913   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
1914     return 0;
1915
1916   /* This is set for example, when we're attached to the parent of a
1917      vfork, and have detached from the child.  The child is running
1918      free, and we expect it to do an exec or exit, at which point the
1919      OS makes the parent schedulable again (and the target reports
1920      that the vfork is done).  Until the child is done with the shared
1921      memory region, do not insert breakpoints in the parent, otherwise
1922      the child could still trip on the parent's breakpoints.  Since
1923      the parent is blocked anyway, it won't miss any breakpoint.  */
1924   if (bl->pspace->breakpoints_not_allowed)
1925     return 0;
1926
1927   return 1;
1928 }
1929
1930 /* Same as should_be_inserted but does the check assuming
1931    that the location is not duplicated.  */
1932
1933 static int
1934 unduplicated_should_be_inserted (struct bp_location *bl)
1935 {
1936   int result;
1937   const int save_duplicate = bl->duplicate;
1938
1939   bl->duplicate = 0;
1940   result = should_be_inserted (bl);
1941   bl->duplicate = save_duplicate;
1942   return result;
1943 }
1944
1945 /* Parses a conditional described by an expression COND into an
1946    agent expression bytecode suitable for evaluation
1947    by the bytecode interpreter.  Return NULL if there was
1948    any error during parsing.  */
1949
1950 static struct agent_expr *
1951 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
1952 {
1953   struct agent_expr *aexpr = NULL;
1954   struct cleanup *old_chain = NULL;
1955   volatile struct gdb_exception ex;
1956
1957   if (!cond)
1958     return NULL;
1959
1960   /* We don't want to stop processing, so catch any errors
1961      that may show up.  */
1962   TRY_CATCH (ex, RETURN_MASK_ERROR)
1963     {
1964       aexpr = gen_eval_for_expr (scope, cond);
1965     }
1966
1967   if (ex.reason < 0)
1968     {
1969       /* If we got here, it means the condition could not be parsed to a valid
1970          bytecode expression and thus can't be evaluated on the target's side.
1971          It's no use iterating through the conditions.  */
1972       return NULL;
1973     }
1974
1975   /* We have a valid agent expression.  */
1976   return aexpr;
1977 }
1978
1979 /* Based on location BL, create a list of breakpoint conditions to be
1980    passed on to the target.  If we have duplicated locations with different
1981    conditions, we will add such conditions to the list.  The idea is that the
1982    target will evaluate the list of conditions and will only notify GDB when
1983    one of them is true.  */
1984
1985 static void
1986 build_target_condition_list (struct bp_location *bl)
1987 {
1988   struct bp_location **locp = NULL, **loc2p;
1989   int null_condition_or_parse_error = 0;
1990   int modified = bl->needs_update;
1991   struct bp_location *loc;
1992
1993   /* This is only meaningful if the target is
1994      evaluating conditions and if the user has
1995      opted for condition evaluation on the target's
1996      side.  */
1997   if (gdb_evaluates_breakpoint_condition_p ()
1998       || !target_supports_evaluation_of_breakpoint_conditions ())
1999     return;
2000
2001   /* Do a first pass to check for locations with no assigned
2002      conditions or conditions that fail to parse to a valid agent expression
2003      bytecode.  If any of these happen, then it's no use to send conditions
2004      to the target since this location will always trigger and generate a
2005      response back to GDB.  */
2006   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2007     {
2008       loc = (*loc2p);
2009       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2010         {
2011           if (modified)
2012             {
2013               struct agent_expr *aexpr;
2014
2015               /* Re-parse the conditions since something changed.  In that
2016                  case we already freed the condition bytecodes (see
2017                  force_breakpoint_reinsertion).  We just
2018                  need to parse the condition to bytecodes again.  */
2019               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2020               loc->cond_bytecode = aexpr;
2021
2022               /* Check if we managed to parse the conditional expression
2023                  correctly.  If not, we will not send this condition
2024                  to the target.  */
2025               if (aexpr)
2026                 continue;
2027             }
2028
2029           /* If we have a NULL bytecode expression, it means something
2030              went wrong or we have a null condition expression.  */
2031           if (!loc->cond_bytecode)
2032             {
2033               null_condition_or_parse_error = 1;
2034               break;
2035             }
2036         }
2037     }
2038
2039   /* If any of these happened, it means we will have to evaluate the conditions
2040      for the location's address on gdb's side.  It is no use keeping bytecodes
2041      for all the other duplicate locations, thus we free all of them here.
2042
2043      This is so we have a finer control over which locations' conditions are
2044      being evaluated by GDB or the remote stub.  */
2045   if (null_condition_or_parse_error)
2046     {
2047       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2048         {
2049           loc = (*loc2p);
2050           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2051             {
2052               /* Only go as far as the first NULL bytecode is
2053                  located.  */
2054               if (!loc->cond_bytecode)
2055                 return;
2056
2057               free_agent_expr (loc->cond_bytecode);
2058               loc->cond_bytecode = NULL;
2059             }
2060         }
2061     }
2062
2063   /* No NULL conditions or failed bytecode generation.  Build a condition list
2064      for this location's address.  */
2065   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2066     {
2067       loc = (*loc2p);
2068       if (loc->cond
2069           && is_breakpoint (loc->owner)
2070           && loc->pspace->num == bl->pspace->num
2071           && loc->owner->enable_state == bp_enabled
2072           && loc->enabled)
2073         /* Add the condition to the vector.  This will be used later to send the
2074            conditions to the target.  */
2075         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2076                        loc->cond_bytecode);
2077     }
2078
2079   return;
2080 }
2081
2082 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2083    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2084    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2085    Returns 0 for success, 1 if the bp_location type is not supported or
2086    -1 for failure.
2087
2088    NOTE drow/2003-09-09: This routine could be broken down to an
2089    object-style method for each breakpoint or catchpoint type.  */
2090 static int
2091 insert_bp_location (struct bp_location *bl,
2092                     struct ui_file *tmp_error_stream,
2093                     int *disabled_breaks,
2094                     int *hw_breakpoint_error)
2095 {
2096   int val = 0;
2097
2098   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2099     return 0;
2100
2101   /* Note we don't initialize bl->target_info, as that wipes out
2102      the breakpoint location's shadow_contents if the breakpoint
2103      is still inserted at that location.  This in turn breaks
2104      target_read_memory which depends on these buffers when
2105      a memory read is requested at the breakpoint location:
2106      Once the target_info has been wiped, we fail to see that
2107      we have a breakpoint inserted at that address and thus
2108      read the breakpoint instead of returning the data saved in
2109      the breakpoint location's shadow contents.  */
2110   bl->target_info.placed_address = bl->address;
2111   bl->target_info.placed_address_space = bl->pspace->aspace;
2112   bl->target_info.length = bl->length;
2113
2114   /* When working with target-side conditions, we must pass all the conditions
2115      for the same breakpoint address down to the target since GDB will not
2116      insert those locations.  With a list of breakpoint conditions, the target
2117      can decide when to stop and notify GDB.  */
2118
2119   if (is_breakpoint (bl->owner))
2120     {
2121       build_target_condition_list (bl);
2122       /* Reset the condition modification marker.  */
2123       bl->needs_update = 0;
2124     }
2125
2126   if (bl->loc_type == bp_loc_software_breakpoint
2127       || bl->loc_type == bp_loc_hardware_breakpoint)
2128     {
2129       if (bl->owner->type != bp_hardware_breakpoint)
2130         {
2131           /* If the explicitly specified breakpoint type
2132              is not hardware breakpoint, check the memory map to see
2133              if the breakpoint address is in read only memory or not.
2134
2135              Two important cases are:
2136              - location type is not hardware breakpoint, memory
2137              is readonly.  We change the type of the location to
2138              hardware breakpoint.
2139              - location type is hardware breakpoint, memory is
2140              read-write.  This means we've previously made the
2141              location hardware one, but then the memory map changed,
2142              so we undo.
2143              
2144              When breakpoints are removed, remove_breakpoints will use
2145              location types we've just set here, the only possible
2146              problem is that memory map has changed during running
2147              program, but it's not going to work anyway with current
2148              gdb.  */
2149           struct mem_region *mr 
2150             = lookup_mem_region (bl->target_info.placed_address);
2151           
2152           if (mr)
2153             {
2154               if (automatic_hardware_breakpoints)
2155                 {
2156                   enum bp_loc_type new_type;
2157                   
2158                   if (mr->attrib.mode != MEM_RW)
2159                     new_type = bp_loc_hardware_breakpoint;
2160                   else 
2161                     new_type = bp_loc_software_breakpoint;
2162                   
2163                   if (new_type != bl->loc_type)
2164                     {
2165                       static int said = 0;
2166
2167                       bl->loc_type = new_type;
2168                       if (!said)
2169                         {
2170                           fprintf_filtered (gdb_stdout,
2171                                             _("Note: automatically using "
2172                                               "hardware breakpoints for "
2173                                               "read-only addresses.\n"));
2174                           said = 1;
2175                         }
2176                     }
2177                 }
2178               else if (bl->loc_type == bp_loc_software_breakpoint
2179                        && mr->attrib.mode != MEM_RW)        
2180                 warning (_("cannot set software breakpoint "
2181                            "at readonly address %s"),
2182                          paddress (bl->gdbarch, bl->address));
2183             }
2184         }
2185         
2186       /* First check to see if we have to handle an overlay.  */
2187       if (overlay_debugging == ovly_off
2188           || bl->section == NULL
2189           || !(section_is_overlay (bl->section)))
2190         {
2191           /* No overlay handling: just set the breakpoint.  */
2192
2193           val = bl->owner->ops->insert_location (bl);
2194         }
2195       else
2196         {
2197           /* This breakpoint is in an overlay section.
2198              Shall we set a breakpoint at the LMA?  */
2199           if (!overlay_events_enabled)
2200             {
2201               /* Yes -- overlay event support is not active, 
2202                  so we must try to set a breakpoint at the LMA.
2203                  This will not work for a hardware breakpoint.  */
2204               if (bl->loc_type == bp_loc_hardware_breakpoint)
2205                 warning (_("hardware breakpoint %d not supported in overlay!"),
2206                          bl->owner->number);
2207               else
2208                 {
2209                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2210                                                              bl->section);
2211                   /* Set a software (trap) breakpoint at the LMA.  */
2212                   bl->overlay_target_info = bl->target_info;
2213                   bl->overlay_target_info.placed_address = addr;
2214                   val = target_insert_breakpoint (bl->gdbarch,
2215                                                   &bl->overlay_target_info);
2216                   if (val != 0)
2217                     fprintf_unfiltered (tmp_error_stream,
2218                                         "Overlay breakpoint %d "
2219                                         "failed: in ROM?\n",
2220                                         bl->owner->number);
2221                 }
2222             }
2223           /* Shall we set a breakpoint at the VMA? */
2224           if (section_is_mapped (bl->section))
2225             {
2226               /* Yes.  This overlay section is mapped into memory.  */
2227               val = bl->owner->ops->insert_location (bl);
2228             }
2229           else
2230             {
2231               /* No.  This breakpoint will not be inserted.  
2232                  No error, but do not mark the bp as 'inserted'.  */
2233               return 0;
2234             }
2235         }
2236
2237       if (val)
2238         {
2239           /* Can't set the breakpoint.  */
2240           if (solib_name_from_address (bl->pspace, bl->address))
2241             {
2242               /* See also: disable_breakpoints_in_shlibs.  */
2243               val = 0;
2244               bl->shlib_disabled = 1;
2245               observer_notify_breakpoint_modified (bl->owner);
2246               if (!*disabled_breaks)
2247                 {
2248                   fprintf_unfiltered (tmp_error_stream, 
2249                                       "Cannot insert breakpoint %d.\n", 
2250                                       bl->owner->number);
2251                   fprintf_unfiltered (tmp_error_stream, 
2252                                       "Temporarily disabling shared "
2253                                       "library breakpoints:\n");
2254                 }
2255               *disabled_breaks = 1;
2256               fprintf_unfiltered (tmp_error_stream,
2257                                   "breakpoint #%d\n", bl->owner->number);
2258             }
2259           else
2260             {
2261               if (bl->loc_type == bp_loc_hardware_breakpoint)
2262                 {
2263                   *hw_breakpoint_error = 1;
2264                   fprintf_unfiltered (tmp_error_stream,
2265                                       "Cannot insert hardware "
2266                                       "breakpoint %d.\n",
2267                                       bl->owner->number);
2268                 }
2269               else
2270                 {
2271                   fprintf_unfiltered (tmp_error_stream, 
2272                                       "Cannot insert breakpoint %d.\n", 
2273                                       bl->owner->number);
2274                   fprintf_filtered (tmp_error_stream, 
2275                                     "Error accessing memory address ");
2276                   fputs_filtered (paddress (bl->gdbarch, bl->address),
2277                                   tmp_error_stream);
2278                   fprintf_filtered (tmp_error_stream, ": %s.\n",
2279                                     safe_strerror (val));
2280                 }
2281
2282             }
2283         }
2284       else
2285         bl->inserted = 1;
2286
2287       return val;
2288     }
2289
2290   else if (bl->loc_type == bp_loc_hardware_watchpoint
2291            /* NOTE drow/2003-09-08: This state only exists for removing
2292               watchpoints.  It's not clear that it's necessary...  */
2293            && bl->owner->disposition != disp_del_at_next_stop)
2294     {
2295       gdb_assert (bl->owner->ops != NULL
2296                   && bl->owner->ops->insert_location != NULL);
2297
2298       val = bl->owner->ops->insert_location (bl);
2299
2300       /* If trying to set a read-watchpoint, and it turns out it's not
2301          supported, try emulating one with an access watchpoint.  */
2302       if (val == 1 && bl->watchpoint_type == hw_read)
2303         {
2304           struct bp_location *loc, **loc_temp;
2305
2306           /* But don't try to insert it, if there's already another
2307              hw_access location that would be considered a duplicate
2308              of this one.  */
2309           ALL_BP_LOCATIONS (loc, loc_temp)
2310             if (loc != bl
2311                 && loc->watchpoint_type == hw_access
2312                 && watchpoint_locations_match (bl, loc))
2313               {
2314                 bl->duplicate = 1;
2315                 bl->inserted = 1;
2316                 bl->target_info = loc->target_info;
2317                 bl->watchpoint_type = hw_access;
2318                 val = 0;
2319                 break;
2320               }
2321
2322           if (val == 1)
2323             {
2324               bl->watchpoint_type = hw_access;
2325               val = bl->owner->ops->insert_location (bl);
2326
2327               if (val)
2328                 /* Back to the original value.  */
2329                 bl->watchpoint_type = hw_read;
2330             }
2331         }
2332
2333       bl->inserted = (val == 0);
2334     }
2335
2336   else if (bl->owner->type == bp_catchpoint)
2337     {
2338       gdb_assert (bl->owner->ops != NULL
2339                   && bl->owner->ops->insert_location != NULL);
2340
2341       val = bl->owner->ops->insert_location (bl);
2342       if (val)
2343         {
2344           bl->owner->enable_state = bp_disabled;
2345
2346           if (val == 1)
2347             warning (_("\
2348 Error inserting catchpoint %d: Your system does not support this type\n\
2349 of catchpoint."), bl->owner->number);
2350           else
2351             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2352         }
2353
2354       bl->inserted = (val == 0);
2355
2356       /* We've already printed an error message if there was a problem
2357          inserting this catchpoint, and we've disabled the catchpoint,
2358          so just return success.  */
2359       return 0;
2360     }
2361
2362   return 0;
2363 }
2364
2365 /* This function is called when program space PSPACE is about to be
2366    deleted.  It takes care of updating breakpoints to not reference
2367    PSPACE anymore.  */
2368
2369 void
2370 breakpoint_program_space_exit (struct program_space *pspace)
2371 {
2372   struct breakpoint *b, *b_temp;
2373   struct bp_location *loc, **loc_temp;
2374
2375   /* Remove any breakpoint that was set through this program space.  */
2376   ALL_BREAKPOINTS_SAFE (b, b_temp)
2377     {
2378       if (b->pspace == pspace)
2379         delete_breakpoint (b);
2380     }
2381
2382   /* Breakpoints set through other program spaces could have locations
2383      bound to PSPACE as well.  Remove those.  */
2384   ALL_BP_LOCATIONS (loc, loc_temp)
2385     {
2386       struct bp_location *tmp;
2387
2388       if (loc->pspace == pspace)
2389         {
2390           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2391           if (loc->owner->loc == loc)
2392             loc->owner->loc = loc->next;
2393           else
2394             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2395               if (tmp->next == loc)
2396                 {
2397                   tmp->next = loc->next;
2398                   break;
2399                 }
2400         }
2401     }
2402
2403   /* Now update the global location list to permanently delete the
2404      removed locations above.  */
2405   update_global_location_list (0);
2406 }
2407
2408 /* Make sure all breakpoints are inserted in inferior.
2409    Throws exception on any error.
2410    A breakpoint that is already inserted won't be inserted
2411    again, so calling this function twice is safe.  */
2412 void
2413 insert_breakpoints (void)
2414 {
2415   struct breakpoint *bpt;
2416
2417   ALL_BREAKPOINTS (bpt)
2418     if (is_hardware_watchpoint (bpt))
2419       {
2420         struct watchpoint *w = (struct watchpoint *) bpt;
2421
2422         update_watchpoint (w, 0 /* don't reparse.  */);
2423       }
2424
2425   update_global_location_list (1);
2426
2427   /* update_global_location_list does not insert breakpoints when
2428      always_inserted_mode is not enabled.  Explicitly insert them
2429      now.  */
2430   if (!breakpoints_always_inserted_mode ())
2431     insert_breakpoint_locations ();
2432 }
2433
2434 /* Invoke CALLBACK for each of bp_location.  */
2435
2436 void
2437 iterate_over_bp_locations (walk_bp_location_callback callback)
2438 {
2439   struct bp_location *loc, **loc_tmp;
2440
2441   ALL_BP_LOCATIONS (loc, loc_tmp)
2442     {
2443       callback (loc, NULL);
2444     }
2445 }
2446
2447 /* This is used when we need to synch breakpoint conditions between GDB and the
2448    target.  It is the case with deleting and disabling of breakpoints when using
2449    always-inserted mode.  */
2450
2451 static void
2452 update_inserted_breakpoint_locations (void)
2453 {
2454   struct bp_location *bl, **blp_tmp;
2455   int error_flag = 0;
2456   int val = 0;
2457   int disabled_breaks = 0;
2458   int hw_breakpoint_error = 0;
2459
2460   struct ui_file *tmp_error_stream = mem_fileopen ();
2461   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2462
2463   /* Explicitly mark the warning -- this will only be printed if
2464      there was an error.  */
2465   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2466
2467   save_current_space_and_thread ();
2468
2469   ALL_BP_LOCATIONS (bl, blp_tmp)
2470     {
2471       /* We only want to update software breakpoints and hardware
2472          breakpoints.  */
2473       if (!is_breakpoint (bl->owner))
2474         continue;
2475
2476       /* We only want to update locations that are already inserted
2477          and need updating.  This is to avoid unwanted insertion during
2478          deletion of breakpoints.  */
2479       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2480         continue;
2481
2482       switch_to_program_space_and_thread (bl->pspace);
2483
2484       /* For targets that support global breakpoints, there's no need
2485          to select an inferior to insert breakpoint to.  In fact, even
2486          if we aren't attached to any process yet, we should still
2487          insert breakpoints.  */
2488       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2489           && ptid_equal (inferior_ptid, null_ptid))
2490         continue;
2491
2492       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2493                                     &hw_breakpoint_error);
2494       if (val)
2495         error_flag = val;
2496     }
2497
2498   if (error_flag)
2499     {
2500       target_terminal_ours_for_output ();
2501       error_stream (tmp_error_stream);
2502     }
2503
2504   do_cleanups (cleanups);
2505 }
2506
2507 /* Used when starting or continuing the program.  */
2508
2509 static void
2510 insert_breakpoint_locations (void)
2511 {
2512   struct breakpoint *bpt;
2513   struct bp_location *bl, **blp_tmp;
2514   int error_flag = 0;
2515   int val = 0;
2516   int disabled_breaks = 0;
2517   int hw_breakpoint_error = 0;
2518
2519   struct ui_file *tmp_error_stream = mem_fileopen ();
2520   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2521   
2522   /* Explicitly mark the warning -- this will only be printed if
2523      there was an error.  */
2524   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2525
2526   save_current_space_and_thread ();
2527
2528   ALL_BP_LOCATIONS (bl, blp_tmp)
2529     {
2530       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2531         continue;
2532
2533       /* There is no point inserting thread-specific breakpoints if
2534          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2535          has BL->OWNER always non-NULL.  */
2536       if (bl->owner->thread != -1
2537           && !valid_thread_id (bl->owner->thread))
2538         continue;
2539
2540       switch_to_program_space_and_thread (bl->pspace);
2541
2542       /* For targets that support global breakpoints, there's no need
2543          to select an inferior to insert breakpoint to.  In fact, even
2544          if we aren't attached to any process yet, we should still
2545          insert breakpoints.  */
2546       if (!gdbarch_has_global_breakpoints (target_gdbarch)
2547           && ptid_equal (inferior_ptid, null_ptid))
2548         continue;
2549
2550       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2551                                     &hw_breakpoint_error);
2552       if (val)
2553         error_flag = val;
2554     }
2555
2556   /* If we failed to insert all locations of a watchpoint, remove
2557      them, as half-inserted watchpoint is of limited use.  */
2558   ALL_BREAKPOINTS (bpt)  
2559     {
2560       int some_failed = 0;
2561       struct bp_location *loc;
2562
2563       if (!is_hardware_watchpoint (bpt))
2564         continue;
2565
2566       if (!breakpoint_enabled (bpt))
2567         continue;
2568
2569       if (bpt->disposition == disp_del_at_next_stop)
2570         continue;
2571       
2572       for (loc = bpt->loc; loc; loc = loc->next)
2573         if (!loc->inserted && should_be_inserted (loc))
2574           {
2575             some_failed = 1;
2576             break;
2577           }
2578       if (some_failed)
2579         {
2580           for (loc = bpt->loc; loc; loc = loc->next)
2581             if (loc->inserted)
2582               remove_breakpoint (loc, mark_uninserted);
2583
2584           hw_breakpoint_error = 1;
2585           fprintf_unfiltered (tmp_error_stream,
2586                               "Could not insert hardware watchpoint %d.\n", 
2587                               bpt->number);
2588           error_flag = -1;
2589         }
2590     }
2591
2592   if (error_flag)
2593     {
2594       /* If a hardware breakpoint or watchpoint was inserted, add a
2595          message about possibly exhausted resources.  */
2596       if (hw_breakpoint_error)
2597         {
2598           fprintf_unfiltered (tmp_error_stream, 
2599                               "Could not insert hardware breakpoints:\n\
2600 You may have requested too many hardware breakpoints/watchpoints.\n");
2601         }
2602       target_terminal_ours_for_output ();
2603       error_stream (tmp_error_stream);
2604     }
2605
2606   do_cleanups (cleanups);
2607 }
2608
2609 /* Used when the program stops.
2610    Returns zero if successful, or non-zero if there was a problem
2611    removing a breakpoint location.  */
2612
2613 int
2614 remove_breakpoints (void)
2615 {
2616   struct bp_location *bl, **blp_tmp;
2617   int val = 0;
2618
2619   ALL_BP_LOCATIONS (bl, blp_tmp)
2620   {
2621     if (bl->inserted && !is_tracepoint (bl->owner))
2622       val |= remove_breakpoint (bl, mark_uninserted);
2623   }
2624   return val;
2625 }
2626
2627 /* Remove breakpoints of process PID.  */
2628
2629 int
2630 remove_breakpoints_pid (int pid)
2631 {
2632   struct bp_location *bl, **blp_tmp;
2633   int val;
2634   struct inferior *inf = find_inferior_pid (pid);
2635
2636   ALL_BP_LOCATIONS (bl, blp_tmp)
2637   {
2638     if (bl->pspace != inf->pspace)
2639       continue;
2640
2641     if (bl->inserted)
2642       {
2643         val = remove_breakpoint (bl, mark_uninserted);
2644         if (val != 0)
2645           return val;
2646       }
2647   }
2648   return 0;
2649 }
2650
2651 int
2652 reattach_breakpoints (int pid)
2653 {
2654   struct cleanup *old_chain;
2655   struct bp_location *bl, **blp_tmp;
2656   int val;
2657   struct ui_file *tmp_error_stream;
2658   int dummy1 = 0, dummy2 = 0;
2659   struct inferior *inf;
2660   struct thread_info *tp;
2661
2662   tp = any_live_thread_of_process (pid);
2663   if (tp == NULL)
2664     return 1;
2665
2666   inf = find_inferior_pid (pid);
2667   old_chain = save_inferior_ptid ();
2668
2669   inferior_ptid = tp->ptid;
2670
2671   tmp_error_stream = mem_fileopen ();
2672   make_cleanup_ui_file_delete (tmp_error_stream);
2673
2674   ALL_BP_LOCATIONS (bl, blp_tmp)
2675   {
2676     if (bl->pspace != inf->pspace)
2677       continue;
2678
2679     if (bl->inserted)
2680       {
2681         bl->inserted = 0;
2682         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2);
2683         if (val != 0)
2684           {
2685             do_cleanups (old_chain);
2686             return val;
2687           }
2688       }
2689   }
2690   do_cleanups (old_chain);
2691   return 0;
2692 }
2693
2694 static int internal_breakpoint_number = -1;
2695
2696 /* Set the breakpoint number of B, depending on the value of INTERNAL.
2697    If INTERNAL is non-zero, the breakpoint number will be populated
2698    from internal_breakpoint_number and that variable decremented.
2699    Otherwise the breakpoint number will be populated from
2700    breakpoint_count and that value incremented.  Internal breakpoints
2701    do not set the internal var bpnum.  */
2702 static void
2703 set_breakpoint_number (int internal, struct breakpoint *b)
2704 {
2705   if (internal)
2706     b->number = internal_breakpoint_number--;
2707   else
2708     {
2709       set_breakpoint_count (breakpoint_count + 1);
2710       b->number = breakpoint_count;
2711     }
2712 }
2713
2714 static struct breakpoint *
2715 create_internal_breakpoint (struct gdbarch *gdbarch,
2716                             CORE_ADDR address, enum bptype type,
2717                             const struct breakpoint_ops *ops)
2718 {
2719   struct symtab_and_line sal;
2720   struct breakpoint *b;
2721
2722   init_sal (&sal);              /* Initialize to zeroes.  */
2723
2724   sal.pc = address;
2725   sal.section = find_pc_overlay (sal.pc);
2726   sal.pspace = current_program_space;
2727
2728   b = set_raw_breakpoint (gdbarch, sal, type, ops);
2729   b->number = internal_breakpoint_number--;
2730   b->disposition = disp_donttouch;
2731
2732   return b;
2733 }
2734
2735 static const char *const longjmp_names[] =
2736   {
2737     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
2738   };
2739 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
2740
2741 /* Per-objfile data private to breakpoint.c.  */
2742 struct breakpoint_objfile_data
2743 {
2744   /* Minimal symbol for "_ovly_debug_event" (if any).  */
2745   struct minimal_symbol *overlay_msym;
2746
2747   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
2748   struct minimal_symbol *longjmp_msym[NUM_LONGJMP_NAMES];
2749
2750   /* True if we have looked for longjmp probes.  */
2751   int longjmp_searched;
2752
2753   /* SystemTap probe points for longjmp (if any).  */
2754   VEC (probe_p) *longjmp_probes;
2755
2756   /* Minimal symbol for "std::terminate()" (if any).  */
2757   struct minimal_symbol *terminate_msym;
2758
2759   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
2760   struct minimal_symbol *exception_msym;
2761
2762   /* True if we have looked for exception probes.  */
2763   int exception_searched;
2764
2765   /* SystemTap probe points for unwinding (if any).  */
2766   VEC (probe_p) *exception_probes;
2767 };
2768
2769 static const struct objfile_data *breakpoint_objfile_key;
2770
2771 /* Minimal symbol not found sentinel.  */
2772 static struct minimal_symbol msym_not_found;
2773
2774 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
2775
2776 static int
2777 msym_not_found_p (const struct minimal_symbol *msym)
2778 {
2779   return msym == &msym_not_found;
2780 }
2781
2782 /* Return per-objfile data needed by breakpoint.c.
2783    Allocate the data if necessary.  */
2784
2785 static struct breakpoint_objfile_data *
2786 get_breakpoint_objfile_data (struct objfile *objfile)
2787 {
2788   struct breakpoint_objfile_data *bp_objfile_data;
2789
2790   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
2791   if (bp_objfile_data == NULL)
2792     {
2793       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
2794                                        sizeof (*bp_objfile_data));
2795
2796       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
2797       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
2798     }
2799   return bp_objfile_data;
2800 }
2801
2802 static void
2803 free_breakpoint_probes (struct objfile *obj, void *data)
2804 {
2805   struct breakpoint_objfile_data *bp_objfile_data = data;
2806
2807   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
2808   VEC_free (probe_p, bp_objfile_data->exception_probes);
2809 }
2810
2811 static void
2812 create_overlay_event_breakpoint (void)
2813 {
2814   struct objfile *objfile;
2815   const char *const func_name = "_ovly_debug_event";
2816
2817   ALL_OBJFILES (objfile)
2818     {
2819       struct breakpoint *b;
2820       struct breakpoint_objfile_data *bp_objfile_data;
2821       CORE_ADDR addr;
2822
2823       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2824
2825       if (msym_not_found_p (bp_objfile_data->overlay_msym))
2826         continue;
2827
2828       if (bp_objfile_data->overlay_msym == NULL)
2829         {
2830           struct minimal_symbol *m;
2831
2832           m = lookup_minimal_symbol_text (func_name, objfile);
2833           if (m == NULL)
2834             {
2835               /* Avoid future lookups in this objfile.  */
2836               bp_objfile_data->overlay_msym = &msym_not_found;
2837               continue;
2838             }
2839           bp_objfile_data->overlay_msym = m;
2840         }
2841
2842       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
2843       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
2844                                       bp_overlay_event,
2845                                       &internal_breakpoint_ops);
2846       b->addr_string = xstrdup (func_name);
2847
2848       if (overlay_debugging == ovly_auto)
2849         {
2850           b->enable_state = bp_enabled;
2851           overlay_events_enabled = 1;
2852         }
2853       else
2854        {
2855          b->enable_state = bp_disabled;
2856          overlay_events_enabled = 0;
2857        }
2858     }
2859   update_global_location_list (1);
2860 }
2861
2862 static void
2863 create_longjmp_master_breakpoint (void)
2864 {
2865   struct program_space *pspace;
2866   struct cleanup *old_chain;
2867
2868   old_chain = save_current_program_space ();
2869
2870   ALL_PSPACES (pspace)
2871   {
2872     struct objfile *objfile;
2873
2874     set_current_program_space (pspace);
2875
2876     ALL_OBJFILES (objfile)
2877     {
2878       int i;
2879       struct gdbarch *gdbarch;
2880       struct breakpoint_objfile_data *bp_objfile_data;
2881
2882       gdbarch = get_objfile_arch (objfile);
2883       if (!gdbarch_get_longjmp_target_p (gdbarch))
2884         continue;
2885
2886       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2887
2888       if (!bp_objfile_data->longjmp_searched)
2889         {
2890           bp_objfile_data->longjmp_probes
2891             = find_probes_in_objfile (objfile, "libc", "longjmp");
2892           bp_objfile_data->longjmp_searched = 1;
2893         }
2894
2895       if (bp_objfile_data->longjmp_probes != NULL)
2896         {
2897           int i;
2898           struct probe *probe;
2899           struct gdbarch *gdbarch = get_objfile_arch (objfile);
2900
2901           for (i = 0;
2902                VEC_iterate (probe_p,
2903                             bp_objfile_data->longjmp_probes,
2904                             i, probe);
2905                ++i)
2906             {
2907               struct breakpoint *b;
2908
2909               b = create_internal_breakpoint (gdbarch, probe->address,
2910                                               bp_longjmp_master,
2911                                               &internal_breakpoint_ops);
2912               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
2913               b->enable_state = bp_disabled;
2914             }
2915
2916           continue;
2917         }
2918
2919       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
2920         {
2921           struct breakpoint *b;
2922           const char *func_name;
2923           CORE_ADDR addr;
2924
2925           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i]))
2926             continue;
2927
2928           func_name = longjmp_names[i];
2929           if (bp_objfile_data->longjmp_msym[i] == NULL)
2930             {
2931               struct minimal_symbol *m;
2932
2933               m = lookup_minimal_symbol_text (func_name, objfile);
2934               if (m == NULL)
2935                 {
2936                   /* Prevent future lookups in this objfile.  */
2937                   bp_objfile_data->longjmp_msym[i] = &msym_not_found;
2938                   continue;
2939                 }
2940               bp_objfile_data->longjmp_msym[i] = m;
2941             }
2942
2943           addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
2944           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
2945                                           &internal_breakpoint_ops);
2946           b->addr_string = xstrdup (func_name);
2947           b->enable_state = bp_disabled;
2948         }
2949     }
2950   }
2951   update_global_location_list (1);
2952
2953   do_cleanups (old_chain);
2954 }
2955
2956 /* Create a master std::terminate breakpoint.  */
2957 static void
2958 create_std_terminate_master_breakpoint (void)
2959 {
2960   struct program_space *pspace;
2961   struct cleanup *old_chain;
2962   const char *const func_name = "std::terminate()";
2963
2964   old_chain = save_current_program_space ();
2965
2966   ALL_PSPACES (pspace)
2967   {
2968     struct objfile *objfile;
2969     CORE_ADDR addr;
2970
2971     set_current_program_space (pspace);
2972
2973     ALL_OBJFILES (objfile)
2974     {
2975       struct breakpoint *b;
2976       struct breakpoint_objfile_data *bp_objfile_data;
2977
2978       bp_objfile_data = get_breakpoint_objfile_data (objfile);
2979
2980       if (msym_not_found_p (bp_objfile_data->terminate_msym))
2981         continue;
2982
2983       if (bp_objfile_data->terminate_msym == NULL)
2984         {
2985           struct minimal_symbol *m;
2986
2987           m = lookup_minimal_symbol (func_name, NULL, objfile);
2988           if (m == NULL || (MSYMBOL_TYPE (m) != mst_text
2989                             && MSYMBOL_TYPE (m) != mst_file_text))
2990             {
2991               /* Prevent future lookups in this objfile.  */
2992               bp_objfile_data->terminate_msym = &msym_not_found;
2993               continue;
2994             }
2995           bp_objfile_data->terminate_msym = m;
2996         }
2997
2998       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
2999       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3000                                       bp_std_terminate_master,
3001                                       &internal_breakpoint_ops);
3002       b->addr_string = xstrdup (func_name);
3003       b->enable_state = bp_disabled;
3004     }
3005   }
3006
3007   update_global_location_list (1);
3008
3009   do_cleanups (old_chain);
3010 }
3011
3012 /* Install a master breakpoint on the unwinder's debug hook.  */
3013
3014 static void
3015 create_exception_master_breakpoint (void)
3016 {
3017   struct objfile *objfile;
3018   const char *const func_name = "_Unwind_DebugHook";
3019
3020   ALL_OBJFILES (objfile)
3021     {
3022       struct breakpoint *b;
3023       struct gdbarch *gdbarch;
3024       struct breakpoint_objfile_data *bp_objfile_data;
3025       CORE_ADDR addr;
3026
3027       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3028
3029       /* We prefer the SystemTap probe point if it exists.  */
3030       if (!bp_objfile_data->exception_searched)
3031         {
3032           bp_objfile_data->exception_probes
3033             = find_probes_in_objfile (objfile, "libgcc", "unwind");
3034           bp_objfile_data->exception_searched = 1;
3035         }
3036
3037       if (bp_objfile_data->exception_probes != NULL)
3038         {
3039           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3040           int i;
3041           struct probe *probe;
3042
3043           for (i = 0;
3044                VEC_iterate (probe_p,
3045                             bp_objfile_data->exception_probes,
3046                             i, probe);
3047                ++i)
3048             {
3049               struct breakpoint *b;
3050
3051               b = create_internal_breakpoint (gdbarch, probe->address,
3052                                               bp_exception_master,
3053                                               &internal_breakpoint_ops);
3054               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3055               b->enable_state = bp_disabled;
3056             }
3057
3058           continue;
3059         }
3060
3061       /* Otherwise, try the hook function.  */
3062
3063       if (msym_not_found_p (bp_objfile_data->exception_msym))
3064         continue;
3065
3066       gdbarch = get_objfile_arch (objfile);
3067
3068       if (bp_objfile_data->exception_msym == NULL)
3069         {
3070           struct minimal_symbol *debug_hook;
3071
3072           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3073           if (debug_hook == NULL)
3074             {
3075               bp_objfile_data->exception_msym = &msym_not_found;
3076               continue;
3077             }
3078
3079           bp_objfile_data->exception_msym = debug_hook;
3080         }
3081
3082       addr = SYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3083       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3084                                                  &current_target);
3085       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3086                                       &internal_breakpoint_ops);
3087       b->addr_string = xstrdup (func_name);
3088       b->enable_state = bp_disabled;
3089     }
3090
3091   update_global_location_list (1);
3092 }
3093
3094 void
3095 update_breakpoints_after_exec (void)
3096 {
3097   struct breakpoint *b, *b_tmp;
3098   struct bp_location *bploc, **bplocp_tmp;
3099
3100   /* We're about to delete breakpoints from GDB's lists.  If the
3101      INSERTED flag is true, GDB will try to lift the breakpoints by
3102      writing the breakpoints' "shadow contents" back into memory.  The
3103      "shadow contents" are NOT valid after an exec, so GDB should not
3104      do that.  Instead, the target is responsible from marking
3105      breakpoints out as soon as it detects an exec.  We don't do that
3106      here instead, because there may be other attempts to delete
3107      breakpoints after detecting an exec and before reaching here.  */
3108   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3109     if (bploc->pspace == current_program_space)
3110       gdb_assert (!bploc->inserted);
3111
3112   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3113   {
3114     if (b->pspace != current_program_space)
3115       continue;
3116
3117     /* Solib breakpoints must be explicitly reset after an exec().  */
3118     if (b->type == bp_shlib_event)
3119       {
3120         delete_breakpoint (b);
3121         continue;
3122       }
3123
3124     /* JIT breakpoints must be explicitly reset after an exec().  */
3125     if (b->type == bp_jit_event)
3126       {
3127         delete_breakpoint (b);
3128         continue;
3129       }
3130
3131     /* Thread event breakpoints must be set anew after an exec(),
3132        as must overlay event and longjmp master breakpoints.  */
3133     if (b->type == bp_thread_event || b->type == bp_overlay_event
3134         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3135         || b->type == bp_exception_master)
3136       {
3137         delete_breakpoint (b);
3138         continue;
3139       }
3140
3141     /* Step-resume breakpoints are meaningless after an exec().  */
3142     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3143       {
3144         delete_breakpoint (b);
3145         continue;
3146       }
3147
3148     /* Longjmp and longjmp-resume breakpoints are also meaningless
3149        after an exec.  */
3150     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3151         || b->type == bp_exception || b->type == bp_exception_resume)
3152       {
3153         delete_breakpoint (b);
3154         continue;
3155       }
3156
3157     if (b->type == bp_catchpoint)
3158       {
3159         /* For now, none of the bp_catchpoint breakpoints need to
3160            do anything at this point.  In the future, if some of
3161            the catchpoints need to something, we will need to add
3162            a new method, and call this method from here.  */
3163         continue;
3164       }
3165
3166     /* bp_finish is a special case.  The only way we ought to be able
3167        to see one of these when an exec() has happened, is if the user
3168        caught a vfork, and then said "finish".  Ordinarily a finish just
3169        carries them to the call-site of the current callee, by setting
3170        a temporary bp there and resuming.  But in this case, the finish
3171        will carry them entirely through the vfork & exec.
3172
3173        We don't want to allow a bp_finish to remain inserted now.  But
3174        we can't safely delete it, 'cause finish_command has a handle to
3175        the bp on a bpstat, and will later want to delete it.  There's a
3176        chance (and I've seen it happen) that if we delete the bp_finish
3177        here, that its storage will get reused by the time finish_command
3178        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3179        We really must allow finish_command to delete a bp_finish.
3180
3181        In the absence of a general solution for the "how do we know
3182        it's safe to delete something others may have handles to?"
3183        problem, what we'll do here is just uninsert the bp_finish, and
3184        let finish_command delete it.
3185
3186        (We know the bp_finish is "doomed" in the sense that it's
3187        momentary, and will be deleted as soon as finish_command sees
3188        the inferior stopped.  So it doesn't matter that the bp's
3189        address is probably bogus in the new a.out, unlike e.g., the
3190        solib breakpoints.)  */
3191
3192     if (b->type == bp_finish)
3193       {
3194         continue;
3195       }
3196
3197     /* Without a symbolic address, we have little hope of the
3198        pre-exec() address meaning the same thing in the post-exec()
3199        a.out.  */
3200     if (b->addr_string == NULL)
3201       {
3202         delete_breakpoint (b);
3203         continue;
3204       }
3205   }
3206   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3207   create_overlay_event_breakpoint ();
3208   create_longjmp_master_breakpoint ();
3209   create_std_terminate_master_breakpoint ();
3210   create_exception_master_breakpoint ();
3211 }
3212
3213 int
3214 detach_breakpoints (int pid)
3215 {
3216   struct bp_location *bl, **blp_tmp;
3217   int val = 0;
3218   struct cleanup *old_chain = save_inferior_ptid ();
3219   struct inferior *inf = current_inferior ();
3220
3221   if (pid == PIDGET (inferior_ptid))
3222     error (_("Cannot detach breakpoints of inferior_ptid"));
3223
3224   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3225   inferior_ptid = pid_to_ptid (pid);
3226   ALL_BP_LOCATIONS (bl, blp_tmp)
3227   {
3228     if (bl->pspace != inf->pspace)
3229       continue;
3230
3231     if (bl->inserted)
3232       val |= remove_breakpoint_1 (bl, mark_inserted);
3233   }
3234
3235   /* Detach single-step breakpoints as well.  */
3236   detach_single_step_breakpoints ();
3237
3238   do_cleanups (old_chain);
3239   return val;
3240 }
3241
3242 /* Remove the breakpoint location BL from the current address space.
3243    Note that this is used to detach breakpoints from a child fork.
3244    When we get here, the child isn't in the inferior list, and neither
3245    do we have objects to represent its address space --- we should
3246    *not* look at bl->pspace->aspace here.  */
3247
3248 static int
3249 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3250 {
3251   int val;
3252
3253   /* BL is never in moribund_locations by our callers.  */
3254   gdb_assert (bl->owner != NULL);
3255
3256   if (bl->owner->enable_state == bp_permanent)
3257     /* Permanent breakpoints cannot be inserted or removed.  */
3258     return 0;
3259
3260   /* The type of none suggests that owner is actually deleted.
3261      This should not ever happen.  */
3262   gdb_assert (bl->owner->type != bp_none);
3263
3264   if (bl->loc_type == bp_loc_software_breakpoint
3265       || bl->loc_type == bp_loc_hardware_breakpoint)
3266     {
3267       /* "Normal" instruction breakpoint: either the standard
3268          trap-instruction bp (bp_breakpoint), or a
3269          bp_hardware_breakpoint.  */
3270
3271       /* First check to see if we have to handle an overlay.  */
3272       if (overlay_debugging == ovly_off
3273           || bl->section == NULL
3274           || !(section_is_overlay (bl->section)))
3275         {
3276           /* No overlay handling: just remove the breakpoint.  */
3277           val = bl->owner->ops->remove_location (bl);
3278         }
3279       else
3280         {
3281           /* This breakpoint is in an overlay section.
3282              Did we set a breakpoint at the LMA?  */
3283           if (!overlay_events_enabled)
3284               {
3285                 /* Yes -- overlay event support is not active, so we
3286                    should have set a breakpoint at the LMA.  Remove it.  
3287                 */
3288                 /* Ignore any failures: if the LMA is in ROM, we will
3289                    have already warned when we failed to insert it.  */
3290                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3291                   target_remove_hw_breakpoint (bl->gdbarch,
3292                                                &bl->overlay_target_info);
3293                 else
3294                   target_remove_breakpoint (bl->gdbarch,
3295                                             &bl->overlay_target_info);
3296               }
3297           /* Did we set a breakpoint at the VMA? 
3298              If so, we will have marked the breakpoint 'inserted'.  */
3299           if (bl->inserted)
3300             {
3301               /* Yes -- remove it.  Previously we did not bother to
3302                  remove the breakpoint if the section had been
3303                  unmapped, but let's not rely on that being safe.  We
3304                  don't know what the overlay manager might do.  */
3305
3306               /* However, we should remove *software* breakpoints only
3307                  if the section is still mapped, or else we overwrite
3308                  wrong code with the saved shadow contents.  */
3309               if (bl->loc_type == bp_loc_hardware_breakpoint
3310                   || section_is_mapped (bl->section))
3311                 val = bl->owner->ops->remove_location (bl);
3312               else
3313                 val = 0;
3314             }
3315           else
3316             {
3317               /* No -- not inserted, so no need to remove.  No error.  */
3318               val = 0;
3319             }
3320         }
3321
3322       /* In some cases, we might not be able to remove a breakpoint
3323          in a shared library that has already been removed, but we
3324          have not yet processed the shlib unload event.  */
3325       if (val && solib_name_from_address (bl->pspace, bl->address))
3326         val = 0;
3327
3328       if (val)
3329         return val;
3330       bl->inserted = (is == mark_inserted);
3331     }
3332   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3333     {
3334       gdb_assert (bl->owner->ops != NULL
3335                   && bl->owner->ops->remove_location != NULL);
3336
3337       bl->inserted = (is == mark_inserted);
3338       bl->owner->ops->remove_location (bl);
3339
3340       /* Failure to remove any of the hardware watchpoints comes here.  */
3341       if ((is == mark_uninserted) && (bl->inserted))
3342         warning (_("Could not remove hardware watchpoint %d."),
3343                  bl->owner->number);
3344     }
3345   else if (bl->owner->type == bp_catchpoint
3346            && breakpoint_enabled (bl->owner)
3347            && !bl->duplicate)
3348     {
3349       gdb_assert (bl->owner->ops != NULL
3350                   && bl->owner->ops->remove_location != NULL);
3351
3352       val = bl->owner->ops->remove_location (bl);
3353       if (val)
3354         return val;
3355
3356       bl->inserted = (is == mark_inserted);
3357     }
3358
3359   return 0;
3360 }
3361
3362 static int
3363 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3364 {
3365   int ret;
3366   struct cleanup *old_chain;
3367
3368   /* BL is never in moribund_locations by our callers.  */
3369   gdb_assert (bl->owner != NULL);
3370
3371   if (bl->owner->enable_state == bp_permanent)
3372     /* Permanent breakpoints cannot be inserted or removed.  */
3373     return 0;
3374
3375   /* The type of none suggests that owner is actually deleted.
3376      This should not ever happen.  */
3377   gdb_assert (bl->owner->type != bp_none);
3378
3379   old_chain = save_current_space_and_thread ();
3380
3381   switch_to_program_space_and_thread (bl->pspace);
3382
3383   ret = remove_breakpoint_1 (bl, is);
3384
3385   do_cleanups (old_chain);
3386   return ret;
3387 }
3388
3389 /* Clear the "inserted" flag in all breakpoints.  */
3390
3391 void
3392 mark_breakpoints_out (void)
3393 {
3394   struct bp_location *bl, **blp_tmp;
3395
3396   ALL_BP_LOCATIONS (bl, blp_tmp)
3397     if (bl->pspace == current_program_space)
3398       bl->inserted = 0;
3399 }
3400
3401 /* Clear the "inserted" flag in all breakpoints and delete any
3402    breakpoints which should go away between runs of the program.
3403
3404    Plus other such housekeeping that has to be done for breakpoints
3405    between runs.
3406
3407    Note: this function gets called at the end of a run (by
3408    generic_mourn_inferior) and when a run begins (by
3409    init_wait_for_inferior).  */
3410
3411
3412
3413 void
3414 breakpoint_init_inferior (enum inf_context context)
3415 {
3416   struct breakpoint *b, *b_tmp;
3417   struct bp_location *bl, **blp_tmp;
3418   int ix;
3419   struct program_space *pspace = current_program_space;
3420
3421   /* If breakpoint locations are shared across processes, then there's
3422      nothing to do.  */
3423   if (gdbarch_has_global_breakpoints (target_gdbarch))
3424     return;
3425
3426   ALL_BP_LOCATIONS (bl, blp_tmp)
3427   {
3428     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3429     if (bl->pspace == pspace
3430         && bl->owner->enable_state != bp_permanent)
3431       bl->inserted = 0;
3432   }
3433
3434   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3435   {
3436     if (b->loc && b->loc->pspace != pspace)
3437       continue;
3438
3439     switch (b->type)
3440       {
3441       case bp_call_dummy:
3442
3443         /* If the call dummy breakpoint is at the entry point it will
3444            cause problems when the inferior is rerun, so we better get
3445            rid of it.  */
3446
3447       case bp_watchpoint_scope:
3448
3449         /* Also get rid of scope breakpoints.  */
3450
3451       case bp_shlib_event:
3452
3453         /* Also remove solib event breakpoints.  Their addresses may
3454            have changed since the last time we ran the program.
3455            Actually we may now be debugging against different target;
3456            and so the solib backend that installed this breakpoint may
3457            not be used in by the target.  E.g.,
3458
3459            (gdb) file prog-linux
3460            (gdb) run               # native linux target
3461            ...
3462            (gdb) kill
3463            (gdb) file prog-win.exe
3464            (gdb) tar rem :9999     # remote Windows gdbserver.
3465         */
3466
3467       case bp_step_resume:
3468
3469         /* Also remove step-resume breakpoints.  */
3470
3471         delete_breakpoint (b);
3472         break;
3473
3474       case bp_watchpoint:
3475       case bp_hardware_watchpoint:
3476       case bp_read_watchpoint:
3477       case bp_access_watchpoint:
3478         {
3479           struct watchpoint *w = (struct watchpoint *) b;
3480
3481           /* Likewise for watchpoints on local expressions.  */
3482           if (w->exp_valid_block != NULL)
3483             delete_breakpoint (b);
3484           else if (context == inf_starting)
3485             {
3486               /* Reset val field to force reread of starting value in
3487                  insert_breakpoints.  */
3488               if (w->val)
3489                 value_free (w->val);
3490               w->val = NULL;
3491               w->val_valid = 0;
3492           }
3493         }
3494         break;
3495       default:
3496         break;
3497       }
3498   }
3499
3500   /* Get rid of the moribund locations.  */
3501   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
3502     decref_bp_location (&bl);
3503   VEC_free (bp_location_p, moribund_locations);
3504 }
3505
3506 /* These functions concern about actual breakpoints inserted in the
3507    target --- to e.g. check if we need to do decr_pc adjustment or if
3508    we need to hop over the bkpt --- so we check for address space
3509    match, not program space.  */
3510
3511 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
3512    exists at PC.  It returns ordinary_breakpoint_here if it's an
3513    ordinary breakpoint, or permanent_breakpoint_here if it's a
3514    permanent breakpoint.
3515    - When continuing from a location with an ordinary breakpoint, we
3516      actually single step once before calling insert_breakpoints.
3517    - When continuing from a location with a permanent breakpoint, we
3518      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
3519      the target, to advance the PC past the breakpoint.  */
3520
3521 enum breakpoint_here
3522 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3523 {
3524   struct bp_location *bl, **blp_tmp;
3525   int any_breakpoint_here = 0;
3526
3527   ALL_BP_LOCATIONS (bl, blp_tmp)
3528     {
3529       if (bl->loc_type != bp_loc_software_breakpoint
3530           && bl->loc_type != bp_loc_hardware_breakpoint)
3531         continue;
3532
3533       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3534       if ((breakpoint_enabled (bl->owner)
3535            || bl->owner->enable_state == bp_permanent)
3536           && breakpoint_location_address_match (bl, aspace, pc))
3537         {
3538           if (overlay_debugging 
3539               && section_is_overlay (bl->section)
3540               && !section_is_mapped (bl->section))
3541             continue;           /* unmapped overlay -- can't be a match */
3542           else if (bl->owner->enable_state == bp_permanent)
3543             return permanent_breakpoint_here;
3544           else
3545             any_breakpoint_here = 1;
3546         }
3547     }
3548
3549   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
3550 }
3551
3552 /* Return true if there's a moribund breakpoint at PC.  */
3553
3554 int
3555 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
3556 {
3557   struct bp_location *loc;
3558   int ix;
3559
3560   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
3561     if (breakpoint_location_address_match (loc, aspace, pc))
3562       return 1;
3563
3564   return 0;
3565 }
3566
3567 /* Returns non-zero if there's a breakpoint inserted at PC, which is
3568    inserted using regular breakpoint_chain / bp_location array
3569    mechanism.  This does not check for single-step breakpoints, which
3570    are inserted and removed using direct target manipulation.  */
3571
3572 int
3573 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
3574                                     CORE_ADDR pc)
3575 {
3576   struct bp_location *bl, **blp_tmp;
3577
3578   ALL_BP_LOCATIONS (bl, blp_tmp)
3579     {
3580       if (bl->loc_type != bp_loc_software_breakpoint
3581           && bl->loc_type != bp_loc_hardware_breakpoint)
3582         continue;
3583
3584       if (bl->inserted
3585           && breakpoint_location_address_match (bl, aspace, pc))
3586         {
3587           if (overlay_debugging 
3588               && section_is_overlay (bl->section)
3589               && !section_is_mapped (bl->section))
3590             continue;           /* unmapped overlay -- can't be a match */
3591           else
3592             return 1;
3593         }
3594     }
3595   return 0;
3596 }
3597
3598 /* Returns non-zero iff there's either regular breakpoint
3599    or a single step breakpoint inserted at PC.  */
3600
3601 int
3602 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
3603 {
3604   if (regular_breakpoint_inserted_here_p (aspace, pc))
3605     return 1;
3606
3607   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3608     return 1;
3609
3610   return 0;
3611 }
3612
3613 /* This function returns non-zero iff there is a software breakpoint
3614    inserted at PC.  */
3615
3616 int
3617 software_breakpoint_inserted_here_p (struct address_space *aspace,
3618                                      CORE_ADDR pc)
3619 {
3620   struct bp_location *bl, **blp_tmp;
3621
3622   ALL_BP_LOCATIONS (bl, blp_tmp)
3623     {
3624       if (bl->loc_type != bp_loc_software_breakpoint)
3625         continue;
3626
3627       if (bl->inserted
3628           && breakpoint_address_match (bl->pspace->aspace, bl->address,
3629                                        aspace, pc))
3630         {
3631           if (overlay_debugging 
3632               && section_is_overlay (bl->section)
3633               && !section_is_mapped (bl->section))
3634             continue;           /* unmapped overlay -- can't be a match */
3635           else
3636             return 1;
3637         }
3638     }
3639
3640   /* Also check for software single-step breakpoints.  */
3641   if (single_step_breakpoint_inserted_here_p (aspace, pc))
3642     return 1;
3643
3644   return 0;
3645 }
3646
3647 int
3648 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
3649                                        CORE_ADDR addr, ULONGEST len)
3650 {
3651   struct breakpoint *bpt;
3652
3653   ALL_BREAKPOINTS (bpt)
3654     {
3655       struct bp_location *loc;
3656
3657       if (bpt->type != bp_hardware_watchpoint
3658           && bpt->type != bp_access_watchpoint)
3659         continue;
3660
3661       if (!breakpoint_enabled (bpt))
3662         continue;
3663
3664       for (loc = bpt->loc; loc; loc = loc->next)
3665         if (loc->pspace->aspace == aspace && loc->inserted)
3666           {
3667             CORE_ADDR l, h;
3668
3669             /* Check for intersection.  */
3670             l = max (loc->address, addr);
3671             h = min (loc->address + loc->length, addr + len);
3672             if (l < h)
3673               return 1;
3674           }
3675     }
3676   return 0;
3677 }
3678
3679 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
3680    PC is valid for process/thread PTID.  */
3681
3682 int
3683 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
3684                          ptid_t ptid)
3685 {
3686   struct bp_location *bl, **blp_tmp;
3687   /* The thread and task IDs associated to PTID, computed lazily.  */
3688   int thread = -1;
3689   int task = 0;
3690   
3691   ALL_BP_LOCATIONS (bl, blp_tmp)
3692     {
3693       if (bl->loc_type != bp_loc_software_breakpoint
3694           && bl->loc_type != bp_loc_hardware_breakpoint)
3695         continue;
3696
3697       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
3698       if (!breakpoint_enabled (bl->owner)
3699           && bl->owner->enable_state != bp_permanent)
3700         continue;
3701
3702       if (!breakpoint_location_address_match (bl, aspace, pc))
3703         continue;
3704
3705       if (bl->owner->thread != -1)
3706         {
3707           /* This is a thread-specific breakpoint.  Check that ptid
3708              matches that thread.  If thread hasn't been computed yet,
3709              it is now time to do so.  */
3710           if (thread == -1)
3711             thread = pid_to_thread_id (ptid);
3712           if (bl->owner->thread != thread)
3713             continue;
3714         }
3715
3716       if (bl->owner->task != 0)
3717         {
3718           /* This is a task-specific breakpoint.  Check that ptid
3719              matches that task.  If task hasn't been computed yet,
3720              it is now time to do so.  */
3721           if (task == 0)
3722             task = ada_get_task_number (ptid);
3723           if (bl->owner->task != task)
3724             continue;
3725         }
3726
3727       if (overlay_debugging 
3728           && section_is_overlay (bl->section)
3729           && !section_is_mapped (bl->section))
3730         continue;           /* unmapped overlay -- can't be a match */
3731
3732       return 1;
3733     }
3734
3735   return 0;
3736 }
3737 \f
3738
3739 /* bpstat stuff.  External routines' interfaces are documented
3740    in breakpoint.h.  */
3741
3742 int
3743 is_catchpoint (struct breakpoint *ep)
3744 {
3745   return (ep->type == bp_catchpoint);
3746 }
3747
3748 /* Frees any storage that is part of a bpstat.  Does not walk the
3749    'next' chain.  */
3750
3751 static void
3752 bpstat_free (bpstat bs)
3753 {
3754   if (bs->old_val != NULL)
3755     value_free (bs->old_val);
3756   decref_counted_command_line (&bs->commands);
3757   decref_bp_location (&bs->bp_location_at);
3758   xfree (bs);
3759 }
3760
3761 /* Clear a bpstat so that it says we are not at any breakpoint.
3762    Also free any storage that is part of a bpstat.  */
3763
3764 void
3765 bpstat_clear (bpstat *bsp)
3766 {
3767   bpstat p;
3768   bpstat q;
3769
3770   if (bsp == 0)
3771     return;
3772   p = *bsp;
3773   while (p != NULL)
3774     {
3775       q = p->next;
3776       bpstat_free (p);
3777       p = q;
3778     }
3779   *bsp = NULL;
3780 }
3781
3782 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
3783    is part of the bpstat is copied as well.  */
3784
3785 bpstat
3786 bpstat_copy (bpstat bs)
3787 {
3788   bpstat p = NULL;
3789   bpstat tmp;
3790   bpstat retval = NULL;
3791
3792   if (bs == NULL)
3793     return bs;
3794
3795   for (; bs != NULL; bs = bs->next)
3796     {
3797       tmp = (bpstat) xmalloc (sizeof (*tmp));
3798       memcpy (tmp, bs, sizeof (*tmp));
3799       incref_counted_command_line (tmp->commands);
3800       incref_bp_location (tmp->bp_location_at);
3801       if (bs->old_val != NULL)
3802         {
3803           tmp->old_val = value_copy (bs->old_val);
3804           release_value (tmp->old_val);
3805         }
3806
3807       if (p == NULL)
3808         /* This is the first thing in the chain.  */
3809         retval = tmp;
3810       else
3811         p->next = tmp;
3812       p = tmp;
3813     }
3814   p->next = NULL;
3815   return retval;
3816 }
3817
3818 /* Find the bpstat associated with this breakpoint.  */
3819
3820 bpstat
3821 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
3822 {
3823   if (bsp == NULL)
3824     return NULL;
3825
3826   for (; bsp != NULL; bsp = bsp->next)
3827     {
3828       if (bsp->breakpoint_at == breakpoint)
3829         return bsp;
3830     }
3831   return NULL;
3832 }
3833
3834 /* Put in *NUM the breakpoint number of the first breakpoint we are
3835    stopped at.  *BSP upon return is a bpstat which points to the
3836    remaining breakpoints stopped at (but which is not guaranteed to be
3837    good for anything but further calls to bpstat_num).
3838
3839    Return 0 if passed a bpstat which does not indicate any breakpoints.
3840    Return -1 if stopped at a breakpoint that has been deleted since
3841    we set it.
3842    Return 1 otherwise.  */
3843
3844 int
3845 bpstat_num (bpstat *bsp, int *num)
3846 {
3847   struct breakpoint *b;
3848
3849   if ((*bsp) == NULL)
3850     return 0;                   /* No more breakpoint values */
3851
3852   /* We assume we'll never have several bpstats that correspond to a
3853      single breakpoint -- otherwise, this function might return the
3854      same number more than once and this will look ugly.  */
3855   b = (*bsp)->breakpoint_at;
3856   *bsp = (*bsp)->next;
3857   if (b == NULL)
3858     return -1;                  /* breakpoint that's been deleted since */
3859
3860   *num = b->number;             /* We have its number */
3861   return 1;
3862 }
3863
3864 /* See breakpoint.h.  */
3865
3866 void
3867 bpstat_clear_actions (void)
3868 {
3869   struct thread_info *tp;
3870   bpstat bs;
3871
3872   if (ptid_equal (inferior_ptid, null_ptid))
3873     return;
3874
3875   tp = find_thread_ptid (inferior_ptid);
3876   if (tp == NULL)
3877     return;
3878
3879   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
3880     {
3881       decref_counted_command_line (&bs->commands);
3882
3883       if (bs->old_val != NULL)
3884         {
3885           value_free (bs->old_val);
3886           bs->old_val = NULL;
3887         }
3888     }
3889 }
3890
3891 /* Called when a command is about to proceed the inferior.  */
3892
3893 static void
3894 breakpoint_about_to_proceed (void)
3895 {
3896   if (!ptid_equal (inferior_ptid, null_ptid))
3897     {
3898       struct thread_info *tp = inferior_thread ();
3899
3900       /* Allow inferior function calls in breakpoint commands to not
3901          interrupt the command list.  When the call finishes
3902          successfully, the inferior will be standing at the same
3903          breakpoint as if nothing happened.  */
3904       if (tp->control.in_infcall)
3905         return;
3906     }
3907
3908   breakpoint_proceeded = 1;
3909 }
3910
3911 /* Stub for cleaning up our state if we error-out of a breakpoint
3912    command.  */
3913 static void
3914 cleanup_executing_breakpoints (void *ignore)
3915 {
3916   executing_breakpoint_commands = 0;
3917 }
3918
3919 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
3920    or its equivalent.  */
3921
3922 static int
3923 command_line_is_silent (struct command_line *cmd)
3924 {
3925   return cmd && (strcmp ("silent", cmd->line) == 0
3926                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
3927 }
3928
3929 /* Execute all the commands associated with all the breakpoints at
3930    this location.  Any of these commands could cause the process to
3931    proceed beyond this point, etc.  We look out for such changes by
3932    checking the global "breakpoint_proceeded" after each command.
3933
3934    Returns true if a breakpoint command resumed the inferior.  In that
3935    case, it is the caller's responsibility to recall it again with the
3936    bpstat of the current thread.  */
3937
3938 static int
3939 bpstat_do_actions_1 (bpstat *bsp)
3940 {
3941   bpstat bs;
3942   struct cleanup *old_chain;
3943   int again = 0;
3944
3945   /* Avoid endless recursion if a `source' command is contained
3946      in bs->commands.  */
3947   if (executing_breakpoint_commands)
3948     return 0;
3949
3950   executing_breakpoint_commands = 1;
3951   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
3952
3953   prevent_dont_repeat ();
3954
3955   /* This pointer will iterate over the list of bpstat's.  */
3956   bs = *bsp;
3957
3958   breakpoint_proceeded = 0;
3959   for (; bs != NULL; bs = bs->next)
3960     {
3961       struct counted_command_line *ccmd;
3962       struct command_line *cmd;
3963       struct cleanup *this_cmd_tree_chain;
3964
3965       /* Take ownership of the BSP's command tree, if it has one.
3966
3967          The command tree could legitimately contain commands like
3968          'step' and 'next', which call clear_proceed_status, which
3969          frees stop_bpstat's command tree.  To make sure this doesn't
3970          free the tree we're executing out from under us, we need to
3971          take ownership of the tree ourselves.  Since a given bpstat's
3972          commands are only executed once, we don't need to copy it; we
3973          can clear the pointer in the bpstat, and make sure we free
3974          the tree when we're done.  */
3975       ccmd = bs->commands;
3976       bs->commands = NULL;
3977       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
3978       cmd = ccmd ? ccmd->commands : NULL;
3979       if (command_line_is_silent (cmd))
3980         {
3981           /* The action has been already done by bpstat_stop_status.  */
3982           cmd = cmd->next;
3983         }
3984
3985       while (cmd != NULL)
3986         {
3987           execute_control_command (cmd);
3988
3989           if (breakpoint_proceeded)
3990             break;
3991           else
3992             cmd = cmd->next;
3993         }
3994
3995       /* We can free this command tree now.  */
3996       do_cleanups (this_cmd_tree_chain);
3997
3998       if (breakpoint_proceeded)
3999         {
4000           if (target_can_async_p ())
4001             /* If we are in async mode, then the target might be still
4002                running, not stopped at any breakpoint, so nothing for
4003                us to do here -- just return to the event loop.  */
4004             ;
4005           else
4006             /* In sync mode, when execute_control_command returns
4007                we're already standing on the next breakpoint.
4008                Breakpoint commands for that stop were not run, since
4009                execute_command does not run breakpoint commands --
4010                only command_line_handler does, but that one is not
4011                involved in execution of breakpoint commands.  So, we
4012                can now execute breakpoint commands.  It should be
4013                noted that making execute_command do bpstat actions is
4014                not an option -- in this case we'll have recursive
4015                invocation of bpstat for each breakpoint with a
4016                command, and can easily blow up GDB stack.  Instead, we
4017                return true, which will trigger the caller to recall us
4018                with the new stop_bpstat.  */
4019             again = 1;
4020           break;
4021         }
4022     }
4023   do_cleanups (old_chain);
4024   return again;
4025 }
4026
4027 void
4028 bpstat_do_actions (void)
4029 {
4030   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4031
4032   /* Do any commands attached to breakpoint we are stopped at.  */
4033   while (!ptid_equal (inferior_ptid, null_ptid)
4034          && target_has_execution
4035          && !is_exited (inferior_ptid)
4036          && !is_executing (inferior_ptid))
4037     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4038        and only return when it is stopped at the next breakpoint, we
4039        keep doing breakpoint actions until it returns false to
4040        indicate the inferior was not resumed.  */
4041     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4042       break;
4043
4044   discard_cleanups (cleanup_if_error);
4045 }
4046
4047 /* Print out the (old or new) value associated with a watchpoint.  */
4048
4049 static void
4050 watchpoint_value_print (struct value *val, struct ui_file *stream)
4051 {
4052   if (val == NULL)
4053     fprintf_unfiltered (stream, _("<unreadable>"));
4054   else
4055     {
4056       struct value_print_options opts;
4057       get_user_print_options (&opts);
4058       value_print (val, stream, &opts);
4059     }
4060 }
4061
4062 /* Generic routine for printing messages indicating why we
4063    stopped.  The behavior of this function depends on the value
4064    'print_it' in the bpstat structure.  Under some circumstances we
4065    may decide not to print anything here and delegate the task to
4066    normal_stop().  */
4067
4068 static enum print_stop_action
4069 print_bp_stop_message (bpstat bs)
4070 {
4071   switch (bs->print_it)
4072     {
4073     case print_it_noop:
4074       /* Nothing should be printed for this bpstat entry.  */
4075       return PRINT_UNKNOWN;
4076       break;
4077
4078     case print_it_done:
4079       /* We still want to print the frame, but we already printed the
4080          relevant messages.  */
4081       return PRINT_SRC_AND_LOC;
4082       break;
4083
4084     case print_it_normal:
4085       {
4086         struct breakpoint *b = bs->breakpoint_at;
4087
4088         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4089            which has since been deleted.  */
4090         if (b == NULL)
4091           return PRINT_UNKNOWN;
4092
4093         /* Normal case.  Call the breakpoint's print_it method.  */
4094         return b->ops->print_it (bs);
4095       }
4096       break;
4097
4098     default:
4099       internal_error (__FILE__, __LINE__,
4100                       _("print_bp_stop_message: unrecognized enum value"));
4101       break;
4102     }
4103 }
4104
4105 /* A helper function that prints a shared library stopped event.  */
4106
4107 static void
4108 print_solib_event (int is_catchpoint)
4109 {
4110   int any_deleted
4111     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4112   int any_added
4113     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4114
4115   if (!is_catchpoint)
4116     {
4117       if (any_added || any_deleted)
4118         ui_out_text (current_uiout,
4119                      _("Stopped due to shared library event:\n"));
4120       else
4121         ui_out_text (current_uiout,
4122                      _("Stopped due to shared library event (no "
4123                        "libraries added or removed)\n"));
4124     }
4125
4126   if (ui_out_is_mi_like_p (current_uiout))
4127     ui_out_field_string (current_uiout, "reason",
4128                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4129
4130   if (any_deleted)
4131     {
4132       struct cleanup *cleanup;
4133       char *name;
4134       int ix;
4135
4136       ui_out_text (current_uiout, _("  Inferior unloaded "));
4137       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4138                                                     "removed");
4139       for (ix = 0;
4140            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4141                         ix, name);
4142            ++ix)
4143         {
4144           if (ix > 0)
4145             ui_out_text (current_uiout, "    ");
4146           ui_out_field_string (current_uiout, "library", name);
4147           ui_out_text (current_uiout, "\n");
4148         }
4149
4150       do_cleanups (cleanup);
4151     }
4152
4153   if (any_added)
4154     {
4155       struct so_list *iter;
4156       int ix;
4157       struct cleanup *cleanup;
4158
4159       ui_out_text (current_uiout, _("  Inferior loaded "));
4160       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4161                                                     "added");
4162       for (ix = 0;
4163            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4164                         ix, iter);
4165            ++ix)
4166         {
4167           if (ix > 0)
4168             ui_out_text (current_uiout, "    ");
4169           ui_out_field_string (current_uiout, "library", iter->so_name);
4170           ui_out_text (current_uiout, "\n");
4171         }
4172
4173       do_cleanups (cleanup);
4174     }
4175 }
4176
4177 /* Print a message indicating what happened.  This is called from
4178    normal_stop().  The input to this routine is the head of the bpstat
4179    list - a list of the eventpoints that caused this stop.  KIND is
4180    the target_waitkind for the stopping event.  This
4181    routine calls the generic print routine for printing a message
4182    about reasons for stopping.  This will print (for example) the
4183    "Breakpoint n," part of the output.  The return value of this
4184    routine is one of:
4185
4186    PRINT_UNKNOWN: Means we printed nothing.
4187    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4188    code to print the location.  An example is 
4189    "Breakpoint 1, " which should be followed by
4190    the location.
4191    PRINT_SRC_ONLY: Means we printed something, but there is no need
4192    to also print the location part of the message.
4193    An example is the catch/throw messages, which
4194    don't require a location appended to the end.
4195    PRINT_NOTHING: We have done some printing and we don't need any 
4196    further info to be printed.  */
4197
4198 enum print_stop_action
4199 bpstat_print (bpstat bs, int kind)
4200 {
4201   int val;
4202
4203   /* Maybe another breakpoint in the chain caused us to stop.
4204      (Currently all watchpoints go on the bpstat whether hit or not.
4205      That probably could (should) be changed, provided care is taken
4206      with respect to bpstat_explains_signal).  */
4207   for (; bs; bs = bs->next)
4208     {
4209       val = print_bp_stop_message (bs);
4210       if (val == PRINT_SRC_ONLY 
4211           || val == PRINT_SRC_AND_LOC 
4212           || val == PRINT_NOTHING)
4213         return val;
4214     }
4215
4216   /* If we had hit a shared library event breakpoint,
4217      print_bp_stop_message would print out this message.  If we hit an
4218      OS-level shared library event, do the same thing.  */
4219   if (kind == TARGET_WAITKIND_LOADED)
4220     {
4221       print_solib_event (0);
4222       return PRINT_NOTHING;
4223     }
4224
4225   /* We reached the end of the chain, or we got a null BS to start
4226      with and nothing was printed.  */
4227   return PRINT_UNKNOWN;
4228 }
4229
4230 /* Evaluate the expression EXP and return 1 if value is zero.  This is
4231    used inside a catch_errors to evaluate the breakpoint condition.
4232    The argument is a "struct expression *" that has been cast to a
4233    "char *" to make it pass through catch_errors.  */
4234
4235 static int
4236 breakpoint_cond_eval (void *exp)
4237 {
4238   struct value *mark = value_mark ();
4239   int i = !value_true (evaluate_expression ((struct expression *) exp));
4240
4241   value_free_to_mark (mark);
4242   return i;
4243 }
4244
4245 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4246
4247 static bpstat
4248 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4249 {
4250   bpstat bs;
4251
4252   bs = (bpstat) xmalloc (sizeof (*bs));
4253   bs->next = NULL;
4254   **bs_link_pointer = bs;
4255   *bs_link_pointer = &bs->next;
4256   bs->breakpoint_at = bl->owner;
4257   bs->bp_location_at = bl;
4258   incref_bp_location (bl);
4259   /* If the condition is false, etc., don't do the commands.  */
4260   bs->commands = NULL;
4261   bs->old_val = NULL;
4262   bs->print_it = print_it_normal;
4263   return bs;
4264 }
4265 \f
4266 /* The target has stopped with waitstatus WS.  Check if any hardware
4267    watchpoints have triggered, according to the target.  */
4268
4269 int
4270 watchpoints_triggered (struct target_waitstatus *ws)
4271 {
4272   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4273   CORE_ADDR addr;
4274   struct breakpoint *b;
4275
4276   if (!stopped_by_watchpoint)
4277     {
4278       /* We were not stopped by a watchpoint.  Mark all watchpoints
4279          as not triggered.  */
4280       ALL_BREAKPOINTS (b)
4281         if (is_hardware_watchpoint (b))
4282           {
4283             struct watchpoint *w = (struct watchpoint *) b;
4284
4285             w->watchpoint_triggered = watch_triggered_no;
4286           }
4287
4288       return 0;
4289     }
4290
4291   if (!target_stopped_data_address (&current_target, &addr))
4292     {
4293       /* We were stopped by a watchpoint, but we don't know where.
4294          Mark all watchpoints as unknown.  */
4295       ALL_BREAKPOINTS (b)
4296         if (is_hardware_watchpoint (b))
4297           {
4298             struct watchpoint *w = (struct watchpoint *) b;
4299
4300             w->watchpoint_triggered = watch_triggered_unknown;
4301           }
4302
4303       return stopped_by_watchpoint;
4304     }
4305
4306   /* The target could report the data address.  Mark watchpoints
4307      affected by this data address as triggered, and all others as not
4308      triggered.  */
4309
4310   ALL_BREAKPOINTS (b)
4311     if (is_hardware_watchpoint (b))
4312       {
4313         struct watchpoint *w = (struct watchpoint *) b;
4314         struct bp_location *loc;
4315
4316         w->watchpoint_triggered = watch_triggered_no;
4317         for (loc = b->loc; loc; loc = loc->next)
4318           {
4319             if (is_masked_watchpoint (b))
4320               {
4321                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4322                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4323
4324                 if (newaddr == start)
4325                   {
4326                     w->watchpoint_triggered = watch_triggered_yes;
4327                     break;
4328                   }
4329               }
4330             /* Exact match not required.  Within range is sufficient.  */
4331             else if (target_watchpoint_addr_within_range (&current_target,
4332                                                          addr, loc->address,
4333                                                          loc->length))
4334               {
4335                 w->watchpoint_triggered = watch_triggered_yes;
4336                 break;
4337               }
4338           }
4339       }
4340
4341   return 1;
4342 }
4343
4344 /* Possible return values for watchpoint_check (this can't be an enum
4345    because of check_errors).  */
4346 /* The watchpoint has been deleted.  */
4347 #define WP_DELETED 1
4348 /* The value has changed.  */
4349 #define WP_VALUE_CHANGED 2
4350 /* The value has not changed.  */
4351 #define WP_VALUE_NOT_CHANGED 3
4352 /* Ignore this watchpoint, no matter if the value changed or not.  */
4353 #define WP_IGNORE 4
4354
4355 #define BP_TEMPFLAG 1
4356 #define BP_HARDWAREFLAG 2
4357
4358 /* Evaluate watchpoint condition expression and check if its value
4359    changed.
4360
4361    P should be a pointer to struct bpstat, but is defined as a void *
4362    in order for this function to be usable with catch_errors.  */
4363
4364 static int
4365 watchpoint_check (void *p)
4366 {
4367   bpstat bs = (bpstat) p;
4368   struct watchpoint *b;
4369   struct frame_info *fr;
4370   int within_current_scope;
4371
4372   /* BS is built from an existing struct breakpoint.  */
4373   gdb_assert (bs->breakpoint_at != NULL);
4374   b = (struct watchpoint *) bs->breakpoint_at;
4375
4376   /* If this is a local watchpoint, we only want to check if the
4377      watchpoint frame is in scope if the current thread is the thread
4378      that was used to create the watchpoint.  */
4379   if (!watchpoint_in_thread_scope (b))
4380     return WP_IGNORE;
4381
4382   if (b->exp_valid_block == NULL)
4383     within_current_scope = 1;
4384   else
4385     {
4386       struct frame_info *frame = get_current_frame ();
4387       struct gdbarch *frame_arch = get_frame_arch (frame);
4388       CORE_ADDR frame_pc = get_frame_pc (frame);
4389
4390       /* in_function_epilogue_p() returns a non-zero value if we're
4391          still in the function but the stack frame has already been
4392          invalidated.  Since we can't rely on the values of local
4393          variables after the stack has been destroyed, we are treating
4394          the watchpoint in that state as `not changed' without further
4395          checking.  Don't mark watchpoints as changed if the current
4396          frame is in an epilogue - even if they are in some other
4397          frame, our view of the stack is likely to be wrong and
4398          frame_find_by_id could error out.  */
4399       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4400         return WP_IGNORE;
4401
4402       fr = frame_find_by_id (b->watchpoint_frame);
4403       within_current_scope = (fr != NULL);
4404
4405       /* If we've gotten confused in the unwinder, we might have
4406          returned a frame that can't describe this variable.  */
4407       if (within_current_scope)
4408         {
4409           struct symbol *function;
4410
4411           function = get_frame_function (fr);
4412           if (function == NULL
4413               || !contained_in (b->exp_valid_block,
4414                                 SYMBOL_BLOCK_VALUE (function)))
4415             within_current_scope = 0;
4416         }
4417
4418       if (within_current_scope)
4419         /* If we end up stopping, the current frame will get selected
4420            in normal_stop.  So this call to select_frame won't affect
4421            the user.  */
4422         select_frame (fr);
4423     }
4424
4425   if (within_current_scope)
4426     {
4427       /* We use value_{,free_to_}mark because it could be a *long*
4428          time before we return to the command level and call
4429          free_all_values.  We can't call free_all_values because we
4430          might be in the middle of evaluating a function call.  */
4431
4432       int pc = 0;
4433       struct value *mark;
4434       struct value *new_val;
4435
4436       if (is_masked_watchpoint (&b->base))
4437         /* Since we don't know the exact trigger address (from
4438            stopped_data_address), just tell the user we've triggered
4439            a mask watchpoint.  */
4440         return WP_VALUE_CHANGED;
4441
4442       mark = value_mark ();
4443       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL);
4444
4445       /* We use value_equal_contents instead of value_equal because
4446          the latter coerces an array to a pointer, thus comparing just
4447          the address of the array instead of its contents.  This is
4448          not what we want.  */
4449       if ((b->val != NULL) != (new_val != NULL)
4450           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
4451         {
4452           if (new_val != NULL)
4453             {
4454               release_value (new_val);
4455               value_free_to_mark (mark);
4456             }
4457           bs->old_val = b->val;
4458           b->val = new_val;
4459           b->val_valid = 1;
4460           return WP_VALUE_CHANGED;
4461         }
4462       else
4463         {
4464           /* Nothing changed.  */
4465           value_free_to_mark (mark);
4466           return WP_VALUE_NOT_CHANGED;
4467         }
4468     }
4469   else
4470     {
4471       struct ui_out *uiout = current_uiout;
4472
4473       /* This seems like the only logical thing to do because
4474          if we temporarily ignored the watchpoint, then when
4475          we reenter the block in which it is valid it contains
4476          garbage (in the case of a function, it may have two
4477          garbage values, one before and one after the prologue).
4478          So we can't even detect the first assignment to it and
4479          watch after that (since the garbage may or may not equal
4480          the first value assigned).  */
4481       /* We print all the stop information in
4482          breakpoint_ops->print_it, but in this case, by the time we
4483          call breakpoint_ops->print_it this bp will be deleted
4484          already.  So we have no choice but print the information
4485          here.  */
4486       if (ui_out_is_mi_like_p (uiout))
4487         ui_out_field_string
4488           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
4489       ui_out_text (uiout, "\nWatchpoint ");
4490       ui_out_field_int (uiout, "wpnum", b->base.number);
4491       ui_out_text (uiout,
4492                    " deleted because the program has left the block in\n\
4493 which its expression is valid.\n");     
4494
4495       /* Make sure the watchpoint's commands aren't executed.  */
4496       decref_counted_command_line (&b->base.commands);
4497       watchpoint_del_at_next_stop (b);
4498
4499       return WP_DELETED;
4500     }
4501 }
4502
4503 /* Return true if it looks like target has stopped due to hitting
4504    breakpoint location BL.  This function does not check if we should
4505    stop, only if BL explains the stop.  */
4506
4507 static int
4508 bpstat_check_location (const struct bp_location *bl,
4509                        struct address_space *aspace, CORE_ADDR bp_addr,
4510                        const struct target_waitstatus *ws)
4511 {
4512   struct breakpoint *b = bl->owner;
4513
4514   /* BL is from an existing breakpoint.  */
4515   gdb_assert (b != NULL);
4516
4517   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
4518 }
4519
4520 /* Determine if the watched values have actually changed, and we
4521    should stop.  If not, set BS->stop to 0.  */
4522
4523 static void
4524 bpstat_check_watchpoint (bpstat bs)
4525 {
4526   const struct bp_location *bl;
4527   struct watchpoint *b;
4528
4529   /* BS is built for existing struct breakpoint.  */
4530   bl = bs->bp_location_at;
4531   gdb_assert (bl != NULL);
4532   b = (struct watchpoint *) bs->breakpoint_at;
4533   gdb_assert (b != NULL);
4534
4535     {
4536       int must_check_value = 0;
4537       
4538       if (b->base.type == bp_watchpoint)
4539         /* For a software watchpoint, we must always check the
4540            watched value.  */
4541         must_check_value = 1;
4542       else if (b->watchpoint_triggered == watch_triggered_yes)
4543         /* We have a hardware watchpoint (read, write, or access)
4544            and the target earlier reported an address watched by
4545            this watchpoint.  */
4546         must_check_value = 1;
4547       else if (b->watchpoint_triggered == watch_triggered_unknown
4548                && b->base.type == bp_hardware_watchpoint)
4549         /* We were stopped by a hardware watchpoint, but the target could
4550            not report the data address.  We must check the watchpoint's
4551            value.  Access and read watchpoints are out of luck; without
4552            a data address, we can't figure it out.  */
4553         must_check_value = 1;
4554
4555       if (must_check_value)
4556         {
4557           char *message
4558             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
4559                           b->base.number);
4560           struct cleanup *cleanups = make_cleanup (xfree, message);
4561           int e = catch_errors (watchpoint_check, bs, message,
4562                                 RETURN_MASK_ALL);
4563           do_cleanups (cleanups);
4564           switch (e)
4565             {
4566             case WP_DELETED:
4567               /* We've already printed what needs to be printed.  */
4568               bs->print_it = print_it_done;
4569               /* Stop.  */
4570               break;
4571             case WP_IGNORE:
4572               bs->print_it = print_it_noop;
4573               bs->stop = 0;
4574               break;
4575             case WP_VALUE_CHANGED:
4576               if (b->base.type == bp_read_watchpoint)
4577                 {
4578                   /* There are two cases to consider here:
4579
4580                      1. We're watching the triggered memory for reads.
4581                      In that case, trust the target, and always report
4582                      the watchpoint hit to the user.  Even though
4583                      reads don't cause value changes, the value may
4584                      have changed since the last time it was read, and
4585                      since we're not trapping writes, we will not see
4586                      those, and as such we should ignore our notion of
4587                      old value.
4588
4589                      2. We're watching the triggered memory for both
4590                      reads and writes.  There are two ways this may
4591                      happen:
4592
4593                      2.1. This is a target that can't break on data
4594                      reads only, but can break on accesses (reads or
4595                      writes), such as e.g., x86.  We detect this case
4596                      at the time we try to insert read watchpoints.
4597
4598                      2.2. Otherwise, the target supports read
4599                      watchpoints, but, the user set an access or write
4600                      watchpoint watching the same memory as this read
4601                      watchpoint.
4602
4603                      If we're watching memory writes as well as reads,
4604                      ignore watchpoint hits when we find that the
4605                      value hasn't changed, as reads don't cause
4606                      changes.  This still gives false positives when
4607                      the program writes the same value to memory as
4608                      what there was already in memory (we will confuse
4609                      it for a read), but it's much better than
4610                      nothing.  */
4611
4612                   int other_write_watchpoint = 0;
4613
4614                   if (bl->watchpoint_type == hw_read)
4615                     {
4616                       struct breakpoint *other_b;
4617
4618                       ALL_BREAKPOINTS (other_b)
4619                         if (other_b->type == bp_hardware_watchpoint
4620                             || other_b->type == bp_access_watchpoint)
4621                           {
4622                             struct watchpoint *other_w =
4623                               (struct watchpoint *) other_b;
4624
4625                             if (other_w->watchpoint_triggered
4626                                 == watch_triggered_yes)
4627                               {
4628                                 other_write_watchpoint = 1;
4629                                 break;
4630                               }
4631                           }
4632                     }
4633
4634                   if (other_write_watchpoint
4635                       || bl->watchpoint_type == hw_access)
4636                     {
4637                       /* We're watching the same memory for writes,
4638                          and the value changed since the last time we
4639                          updated it, so this trap must be for a write.
4640                          Ignore it.  */
4641                       bs->print_it = print_it_noop;
4642                       bs->stop = 0;
4643                     }
4644                 }
4645               break;
4646             case WP_VALUE_NOT_CHANGED:
4647               if (b->base.type == bp_hardware_watchpoint
4648                   || b->base.type == bp_watchpoint)
4649                 {
4650                   /* Don't stop: write watchpoints shouldn't fire if
4651                      the value hasn't changed.  */
4652                   bs->print_it = print_it_noop;
4653                   bs->stop = 0;
4654                 }
4655               /* Stop.  */
4656               break;
4657             default:
4658               /* Can't happen.  */
4659             case 0:
4660               /* Error from catch_errors.  */
4661               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
4662               watchpoint_del_at_next_stop (b);
4663               /* We've already printed what needs to be printed.  */
4664               bs->print_it = print_it_done;
4665               break;
4666             }
4667         }
4668       else      /* must_check_value == 0 */
4669         {
4670           /* This is a case where some watchpoint(s) triggered, but
4671              not at the address of this watchpoint, or else no
4672              watchpoint triggered after all.  So don't print
4673              anything for this watchpoint.  */
4674           bs->print_it = print_it_noop;
4675           bs->stop = 0;
4676         }
4677     }
4678 }
4679
4680
4681 /* Check conditions (condition proper, frame, thread and ignore count)
4682    of breakpoint referred to by BS.  If we should not stop for this
4683    breakpoint, set BS->stop to 0.  */
4684
4685 static void
4686 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
4687 {
4688   int thread_id = pid_to_thread_id (ptid);
4689   const struct bp_location *bl;
4690   struct breakpoint *b;
4691
4692   /* BS is built for existing struct breakpoint.  */
4693   bl = bs->bp_location_at;
4694   gdb_assert (bl != NULL);
4695   b = bs->breakpoint_at;
4696   gdb_assert (b != NULL);
4697
4698   /* Even if the target evaluated the condition on its end and notified GDB, we
4699      need to do so again since GDB does not know if we stopped due to a
4700      breakpoint or a single step breakpoint.  */
4701
4702   if (frame_id_p (b->frame_id)
4703       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
4704     bs->stop = 0;
4705   else if (bs->stop)
4706     {
4707       int value_is_zero = 0;
4708       struct expression *cond;
4709
4710       /* Evaluate Python breakpoints that have a "stop"
4711          method implemented.  */
4712       if (b->py_bp_object)
4713         bs->stop = gdbpy_should_stop (b->py_bp_object);
4714
4715       if (is_watchpoint (b))
4716         {
4717           struct watchpoint *w = (struct watchpoint *) b;
4718
4719           cond = w->cond_exp;
4720         }
4721       else
4722         cond = bl->cond;
4723
4724       if (cond && b->disposition != disp_del_at_next_stop)
4725         {
4726           int within_current_scope = 1;
4727           struct watchpoint * w;
4728
4729           /* We use value_mark and value_free_to_mark because it could
4730              be a long time before we return to the command level and
4731              call free_all_values.  We can't call free_all_values
4732              because we might be in the middle of evaluating a
4733              function call.  */
4734           struct value *mark = value_mark ();
4735
4736           if (is_watchpoint (b))
4737             w = (struct watchpoint *) b;
4738           else
4739             w = NULL;
4740
4741           /* Need to select the frame, with all that implies so that
4742              the conditions will have the right context.  Because we
4743              use the frame, we will not see an inlined function's
4744              variables when we arrive at a breakpoint at the start
4745              of the inlined function; the current frame will be the
4746              call site.  */
4747           if (w == NULL || w->cond_exp_valid_block == NULL)
4748             select_frame (get_current_frame ());
4749           else
4750             {
4751               struct frame_info *frame;
4752
4753               /* For local watchpoint expressions, which particular
4754                  instance of a local is being watched matters, so we
4755                  keep track of the frame to evaluate the expression
4756                  in.  To evaluate the condition however, it doesn't
4757                  really matter which instantiation of the function
4758                  where the condition makes sense triggers the
4759                  watchpoint.  This allows an expression like "watch
4760                  global if q > 10" set in `func', catch writes to
4761                  global on all threads that call `func', or catch
4762                  writes on all recursive calls of `func' by a single
4763                  thread.  We simply always evaluate the condition in
4764                  the innermost frame that's executing where it makes
4765                  sense to evaluate the condition.  It seems
4766                  intuitive.  */
4767               frame = block_innermost_frame (w->cond_exp_valid_block);
4768               if (frame != NULL)
4769                 select_frame (frame);
4770               else
4771                 within_current_scope = 0;
4772             }
4773           if (within_current_scope)
4774             value_is_zero
4775               = catch_errors (breakpoint_cond_eval, cond,
4776                               "Error in testing breakpoint condition:\n",
4777                               RETURN_MASK_ALL);
4778           else
4779             {
4780               warning (_("Watchpoint condition cannot be tested "
4781                          "in the current scope"));
4782               /* If we failed to set the right context for this
4783                  watchpoint, unconditionally report it.  */
4784               value_is_zero = 0;
4785             }
4786           /* FIXME-someday, should give breakpoint #.  */
4787           value_free_to_mark (mark);
4788         }
4789
4790       if (cond && value_is_zero)
4791         {
4792           bs->stop = 0;
4793         }
4794       else if (b->thread != -1 && b->thread != thread_id)
4795         {
4796           bs->stop = 0;
4797         }
4798       else if (b->ignore_count > 0)
4799         {
4800           b->ignore_count--;
4801           annotate_ignore_count_change ();
4802           bs->stop = 0;
4803           /* Increase the hit count even though we don't stop.  */
4804           ++(b->hit_count);
4805           observer_notify_breakpoint_modified (b);
4806         }       
4807     }
4808 }
4809
4810
4811 /* Get a bpstat associated with having just stopped at address
4812    BP_ADDR in thread PTID.
4813
4814    Determine whether we stopped at a breakpoint, etc, or whether we
4815    don't understand this stop.  Result is a chain of bpstat's such
4816    that:
4817
4818    if we don't understand the stop, the result is a null pointer.
4819
4820    if we understand why we stopped, the result is not null.
4821
4822    Each element of the chain refers to a particular breakpoint or
4823    watchpoint at which we have stopped.  (We may have stopped for
4824    several reasons concurrently.)
4825
4826    Each element of the chain has valid next, breakpoint_at,
4827    commands, FIXME??? fields.  */
4828
4829 bpstat
4830 bpstat_stop_status (struct address_space *aspace,
4831                     CORE_ADDR bp_addr, ptid_t ptid,
4832                     const struct target_waitstatus *ws)
4833 {
4834   struct breakpoint *b = NULL;
4835   struct bp_location *bl;
4836   struct bp_location *loc;
4837   /* First item of allocated bpstat's.  */
4838   bpstat bs_head = NULL, *bs_link = &bs_head;
4839   /* Pointer to the last thing in the chain currently.  */
4840   bpstat bs;
4841   int ix;
4842   int need_remove_insert;
4843   int removed_any;
4844
4845   /* First, build the bpstat chain with locations that explain a
4846      target stop, while being careful to not set the target running,
4847      as that may invalidate locations (in particular watchpoint
4848      locations are recreated).  Resuming will happen here with
4849      breakpoint conditions or watchpoint expressions that include
4850      inferior function calls.  */
4851
4852   ALL_BREAKPOINTS (b)
4853     {
4854       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
4855         continue;
4856
4857       for (bl = b->loc; bl != NULL; bl = bl->next)
4858         {
4859           /* For hardware watchpoints, we look only at the first
4860              location.  The watchpoint_check function will work on the
4861              entire expression, not the individual locations.  For
4862              read watchpoints, the watchpoints_triggered function has
4863              checked all locations already.  */
4864           if (b->type == bp_hardware_watchpoint && bl != b->loc)
4865             break;
4866
4867           if (bl->shlib_disabled)
4868             continue;
4869
4870           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
4871             continue;
4872
4873           /* Come here if it's a watchpoint, or if the break address
4874              matches.  */
4875
4876           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
4877                                                    explain stop.  */
4878
4879           /* Assume we stop.  Should we find a watchpoint that is not
4880              actually triggered, or if the condition of the breakpoint
4881              evaluates as false, we'll reset 'stop' to 0.  */
4882           bs->stop = 1;
4883           bs->print = 1;
4884
4885           /* If this is a scope breakpoint, mark the associated
4886              watchpoint as triggered so that we will handle the
4887              out-of-scope event.  We'll get to the watchpoint next
4888              iteration.  */
4889           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
4890             {
4891               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
4892
4893               w->watchpoint_triggered = watch_triggered_yes;
4894             }
4895         }
4896     }
4897
4898   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4899     {
4900       if (breakpoint_location_address_match (loc, aspace, bp_addr))
4901         {
4902           bs = bpstat_alloc (loc, &bs_link);
4903           /* For hits of moribund locations, we should just proceed.  */
4904           bs->stop = 0;
4905           bs->print = 0;
4906           bs->print_it = print_it_noop;
4907         }
4908     }
4909
4910   /* A bit of special processing for shlib breakpoints.  We need to
4911      process solib loading here, so that the lists of loaded and
4912      unloaded libraries are correct before we handle "catch load" and
4913      "catch unload".  */
4914   for (bs = bs_head; bs != NULL; bs = bs->next)
4915     {
4916       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
4917         {
4918           handle_solib_event ();
4919           break;
4920         }
4921     }
4922
4923   /* Now go through the locations that caused the target to stop, and
4924      check whether we're interested in reporting this stop to higher
4925      layers, or whether we should resume the target transparently.  */
4926
4927   removed_any = 0;
4928
4929   for (bs = bs_head; bs != NULL; bs = bs->next)
4930     {
4931       if (!bs->stop)
4932         continue;
4933
4934       b = bs->breakpoint_at;
4935       b->ops->check_status (bs);
4936       if (bs->stop)
4937         {
4938           bpstat_check_breakpoint_conditions (bs, ptid);
4939
4940           if (bs->stop)
4941             {
4942               ++(b->hit_count);
4943               observer_notify_breakpoint_modified (b);
4944
4945               /* We will stop here.  */
4946               if (b->disposition == disp_disable)
4947                 {
4948                   --(b->enable_count);
4949                   if (b->enable_count <= 0
4950                       && b->enable_state != bp_permanent)
4951                     b->enable_state = bp_disabled;
4952                   removed_any = 1;
4953                 }
4954               if (b->silent)
4955                 bs->print = 0;
4956               bs->commands = b->commands;
4957               incref_counted_command_line (bs->commands);
4958               if (command_line_is_silent (bs->commands
4959                                           ? bs->commands->commands : NULL))
4960                 bs->print = 0;
4961             }
4962
4963         }
4964
4965       /* Print nothing for this entry if we don't stop or don't
4966          print.  */
4967       if (!bs->stop || !bs->print)
4968         bs->print_it = print_it_noop;
4969     }
4970
4971   /* If we aren't stopping, the value of some hardware watchpoint may
4972      not have changed, but the intermediate memory locations we are
4973      watching may have.  Don't bother if we're stopping; this will get
4974      done later.  */
4975   need_remove_insert = 0;
4976   if (! bpstat_causes_stop (bs_head))
4977     for (bs = bs_head; bs != NULL; bs = bs->next)
4978       if (!bs->stop
4979           && bs->breakpoint_at
4980           && is_hardware_watchpoint (bs->breakpoint_at))
4981         {
4982           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
4983
4984           update_watchpoint (w, 0 /* don't reparse.  */);
4985           need_remove_insert = 1;
4986         }
4987
4988   if (need_remove_insert)
4989     update_global_location_list (1);
4990   else if (removed_any)
4991     update_global_location_list (0);
4992
4993   return bs_head;
4994 }
4995
4996 static void
4997 handle_jit_event (void)
4998 {
4999   struct frame_info *frame;
5000   struct gdbarch *gdbarch;
5001
5002   /* Switch terminal for any messages produced by
5003      breakpoint_re_set.  */
5004   target_terminal_ours_for_output ();
5005
5006   frame = get_current_frame ();
5007   gdbarch = get_frame_arch (frame);
5008
5009   jit_event_handler (gdbarch);
5010
5011   target_terminal_inferior ();
5012 }
5013
5014 /* Handle an solib event by calling solib_add.  */
5015
5016 void
5017 handle_solib_event (void)
5018 {
5019   clear_program_space_solib_cache (current_inferior ()->pspace);
5020
5021   /* Check for any newly added shared libraries if we're supposed to
5022      be adding them automatically.  Switch terminal for any messages
5023      produced by breakpoint_re_set.  */
5024   target_terminal_ours_for_output ();
5025 #ifdef SOLIB_ADD
5026   SOLIB_ADD (NULL, 0, &current_target, auto_solib_add);
5027 #else
5028   solib_add (NULL, 0, &current_target, auto_solib_add);
5029 #endif
5030   target_terminal_inferior ();
5031 }
5032
5033 /* Prepare WHAT final decision for infrun.  */
5034
5035 /* Decide what infrun needs to do with this bpstat.  */
5036
5037 struct bpstat_what
5038 bpstat_what (bpstat bs_head)
5039 {
5040   struct bpstat_what retval;
5041   int jit_event = 0;
5042   bpstat bs;
5043
5044   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5045   retval.call_dummy = STOP_NONE;
5046   retval.is_longjmp = 0;
5047
5048   for (bs = bs_head; bs != NULL; bs = bs->next)
5049     {
5050       /* Extract this BS's action.  After processing each BS, we check
5051          if its action overrides all we've seem so far.  */
5052       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5053       enum bptype bptype;
5054
5055       if (bs->breakpoint_at == NULL)
5056         {
5057           /* I suspect this can happen if it was a momentary
5058              breakpoint which has since been deleted.  */
5059           bptype = bp_none;
5060         }
5061       else
5062         bptype = bs->breakpoint_at->type;
5063
5064       switch (bptype)
5065         {
5066         case bp_none:
5067           break;
5068         case bp_breakpoint:
5069         case bp_hardware_breakpoint:
5070         case bp_until:
5071         case bp_finish:
5072         case bp_shlib_event:
5073           if (bs->stop)
5074             {
5075               if (bs->print)
5076                 this_action = BPSTAT_WHAT_STOP_NOISY;
5077               else
5078                 this_action = BPSTAT_WHAT_STOP_SILENT;
5079             }
5080           else
5081             this_action = BPSTAT_WHAT_SINGLE;
5082           break;
5083         case bp_watchpoint:
5084         case bp_hardware_watchpoint:
5085         case bp_read_watchpoint:
5086         case bp_access_watchpoint:
5087           if (bs->stop)
5088             {
5089               if (bs->print)
5090                 this_action = BPSTAT_WHAT_STOP_NOISY;
5091               else
5092                 this_action = BPSTAT_WHAT_STOP_SILENT;
5093             }
5094           else
5095             {
5096               /* There was a watchpoint, but we're not stopping.
5097                  This requires no further action.  */
5098             }
5099           break;
5100         case bp_longjmp:
5101         case bp_exception:
5102           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5103           retval.is_longjmp = bptype == bp_longjmp;
5104           break;
5105         case bp_longjmp_resume:
5106         case bp_exception_resume:
5107           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5108           retval.is_longjmp = bptype == bp_longjmp_resume;
5109           break;
5110         case bp_step_resume:
5111           if (bs->stop)
5112             this_action = BPSTAT_WHAT_STEP_RESUME;
5113           else
5114             {
5115               /* It is for the wrong frame.  */
5116               this_action = BPSTAT_WHAT_SINGLE;
5117             }
5118           break;
5119         case bp_hp_step_resume:
5120           if (bs->stop)
5121             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5122           else
5123             {
5124               /* It is for the wrong frame.  */
5125               this_action = BPSTAT_WHAT_SINGLE;
5126             }
5127           break;
5128         case bp_watchpoint_scope:
5129         case bp_thread_event:
5130         case bp_overlay_event:
5131         case bp_longjmp_master:
5132         case bp_std_terminate_master:
5133         case bp_exception_master:
5134           this_action = BPSTAT_WHAT_SINGLE;
5135           break;
5136         case bp_catchpoint:
5137           if (bs->stop)
5138             {
5139               if (bs->print)
5140                 this_action = BPSTAT_WHAT_STOP_NOISY;
5141               else
5142                 this_action = BPSTAT_WHAT_STOP_SILENT;
5143             }
5144           else
5145             {
5146               /* There was a catchpoint, but we're not stopping.
5147                  This requires no further action.  */
5148             }
5149           break;
5150         case bp_jit_event:
5151           jit_event = 1;
5152           this_action = BPSTAT_WHAT_SINGLE;
5153           break;
5154         case bp_call_dummy:
5155           /* Make sure the action is stop (silent or noisy),
5156              so infrun.c pops the dummy frame.  */
5157           retval.call_dummy = STOP_STACK_DUMMY;
5158           this_action = BPSTAT_WHAT_STOP_SILENT;
5159           break;
5160         case bp_std_terminate:
5161           /* Make sure the action is stop (silent or noisy),
5162              so infrun.c pops the dummy frame.  */
5163           retval.call_dummy = STOP_STD_TERMINATE;
5164           this_action = BPSTAT_WHAT_STOP_SILENT;
5165           break;
5166         case bp_tracepoint:
5167         case bp_fast_tracepoint:
5168         case bp_static_tracepoint:
5169           /* Tracepoint hits should not be reported back to GDB, and
5170              if one got through somehow, it should have been filtered
5171              out already.  */
5172           internal_error (__FILE__, __LINE__,
5173                           _("bpstat_what: tracepoint encountered"));
5174           break;
5175         case bp_gnu_ifunc_resolver:
5176           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5177           this_action = BPSTAT_WHAT_SINGLE;
5178           break;
5179         case bp_gnu_ifunc_resolver_return:
5180           /* The breakpoint will be removed, execution will restart from the
5181              PC of the former breakpoint.  */
5182           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5183           break;
5184
5185         case bp_dprintf:
5186           this_action = BPSTAT_WHAT_STOP_SILENT;
5187           break;
5188
5189         default:
5190           internal_error (__FILE__, __LINE__,
5191                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5192         }
5193
5194       retval.main_action = max (retval.main_action, this_action);
5195     }
5196
5197   /* These operations may affect the bs->breakpoint_at state so they are
5198      delayed after MAIN_ACTION is decided above.  */
5199
5200   if (jit_event)
5201     {
5202       if (debug_infrun)
5203         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5204
5205       handle_jit_event ();
5206     }
5207
5208   for (bs = bs_head; bs != NULL; bs = bs->next)
5209     {
5210       struct breakpoint *b = bs->breakpoint_at;
5211
5212       if (b == NULL)
5213         continue;
5214       switch (b->type)
5215         {
5216         case bp_gnu_ifunc_resolver:
5217           gnu_ifunc_resolver_stop (b);
5218           break;
5219         case bp_gnu_ifunc_resolver_return:
5220           gnu_ifunc_resolver_return_stop (b);
5221           break;
5222         }
5223     }
5224
5225   return retval;
5226 }
5227
5228 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5229    without hardware support).  This isn't related to a specific bpstat,
5230    just to things like whether watchpoints are set.  */
5231
5232 int
5233 bpstat_should_step (void)
5234 {
5235   struct breakpoint *b;
5236
5237   ALL_BREAKPOINTS (b)
5238     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5239       return 1;
5240   return 0;
5241 }
5242
5243 int
5244 bpstat_causes_stop (bpstat bs)
5245 {
5246   for (; bs != NULL; bs = bs->next)
5247     if (bs->stop)
5248       return 1;
5249
5250   return 0;
5251 }
5252
5253 \f
5254
5255 /* Compute a string of spaces suitable to indent the next line
5256    so it starts at the position corresponding to the table column
5257    named COL_NAME in the currently active table of UIOUT.  */
5258
5259 static char *
5260 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5261 {
5262   static char wrap_indent[80];
5263   int i, total_width, width, align;
5264   char *text;
5265
5266   total_width = 0;
5267   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5268     {
5269       if (strcmp (text, col_name) == 0)
5270         {
5271           gdb_assert (total_width < sizeof wrap_indent);
5272           memset (wrap_indent, ' ', total_width);
5273           wrap_indent[total_width] = 0;
5274
5275           return wrap_indent;
5276         }
5277
5278       total_width += width + 1;
5279     }
5280
5281   return NULL;
5282 }
5283
5284 /* Determine if the locations of this breakpoint will have their conditions
5285    evaluated by the target, host or a mix of both.  Returns the following:
5286
5287     "host": Host evals condition.
5288     "host or target": Host or Target evals condition.
5289     "target": Target evals condition.
5290 */
5291
5292 static const char *
5293 bp_condition_evaluator (struct breakpoint *b)
5294 {
5295   struct bp_location *bl;
5296   char host_evals = 0;
5297   char target_evals = 0;
5298
5299   if (!b)
5300     return NULL;
5301
5302   if (!is_breakpoint (b))
5303     return NULL;
5304
5305   if (gdb_evaluates_breakpoint_condition_p ()
5306       || !target_supports_evaluation_of_breakpoint_conditions ())
5307     return condition_evaluation_host;
5308
5309   for (bl = b->loc; bl; bl = bl->next)
5310     {
5311       if (bl->cond_bytecode)
5312         target_evals++;
5313       else
5314         host_evals++;
5315     }
5316
5317   if (host_evals && target_evals)
5318     return condition_evaluation_both;
5319   else if (target_evals)
5320     return condition_evaluation_target;
5321   else
5322     return condition_evaluation_host;
5323 }
5324
5325 /* Determine the breakpoint location's condition evaluator.  This is
5326    similar to bp_condition_evaluator, but for locations.  */
5327
5328 static const char *
5329 bp_location_condition_evaluator (struct bp_location *bl)
5330 {
5331   if (bl && !is_breakpoint (bl->owner))
5332     return NULL;
5333
5334   if (gdb_evaluates_breakpoint_condition_p ()
5335       || !target_supports_evaluation_of_breakpoint_conditions ())
5336     return condition_evaluation_host;
5337
5338   if (bl && bl->cond_bytecode)
5339     return condition_evaluation_target;
5340   else
5341     return condition_evaluation_host;
5342 }
5343
5344 /* Print the LOC location out of the list of B->LOC locations.  */
5345
5346 static void
5347 print_breakpoint_location (struct breakpoint *b,
5348                            struct bp_location *loc)
5349 {
5350   struct ui_out *uiout = current_uiout;
5351   struct cleanup *old_chain = save_current_program_space ();
5352
5353   if (loc != NULL && loc->shlib_disabled)
5354     loc = NULL;
5355
5356   if (loc != NULL)
5357     set_current_program_space (loc->pspace);
5358
5359   if (b->display_canonical)
5360     ui_out_field_string (uiout, "what", b->addr_string);
5361   else if (loc && loc->source_file)
5362     {
5363       struct symbol *sym 
5364         = find_pc_sect_function (loc->address, loc->section);
5365       if (sym)
5366         {
5367           ui_out_text (uiout, "in ");
5368           ui_out_field_string (uiout, "func",
5369                                SYMBOL_PRINT_NAME (sym));
5370           ui_out_text (uiout, " ");
5371           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5372           ui_out_text (uiout, "at ");
5373         }
5374       ui_out_field_string (uiout, "file", loc->source_file);
5375       ui_out_text (uiout, ":");
5376       
5377       if (ui_out_is_mi_like_p (uiout))
5378         {
5379           struct symtab_and_line sal = find_pc_line (loc->address, 0);
5380           char *fullname = symtab_to_fullname (sal.symtab);
5381           
5382           if (fullname)
5383             ui_out_field_string (uiout, "fullname", fullname);
5384         }
5385       
5386       ui_out_field_int (uiout, "line", loc->line_number);
5387     }
5388   else if (loc)
5389     {
5390       struct ui_file *stb = mem_fileopen ();
5391       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5392
5393       print_address_symbolic (loc->gdbarch, loc->address, stb,
5394                               demangle, "");
5395       ui_out_field_stream (uiout, "at", stb);
5396
5397       do_cleanups (stb_chain);
5398     }
5399   else
5400     ui_out_field_string (uiout, "pending", b->addr_string);
5401
5402   if (loc && is_breakpoint (b)
5403       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5404       && bp_condition_evaluator (b) == condition_evaluation_both)
5405     {
5406       ui_out_text (uiout, " (");
5407       ui_out_field_string (uiout, "evaluated-by",
5408                            bp_location_condition_evaluator (loc));
5409       ui_out_text (uiout, ")");
5410     }
5411
5412   do_cleanups (old_chain);
5413 }
5414
5415 static const char *
5416 bptype_string (enum bptype type)
5417 {
5418   struct ep_type_description
5419     {
5420       enum bptype type;
5421       char *description;
5422     };
5423   static struct ep_type_description bptypes[] =
5424   {
5425     {bp_none, "?deleted?"},
5426     {bp_breakpoint, "breakpoint"},
5427     {bp_hardware_breakpoint, "hw breakpoint"},
5428     {bp_until, "until"},
5429     {bp_finish, "finish"},
5430     {bp_watchpoint, "watchpoint"},
5431     {bp_hardware_watchpoint, "hw watchpoint"},
5432     {bp_read_watchpoint, "read watchpoint"},
5433     {bp_access_watchpoint, "acc watchpoint"},
5434     {bp_longjmp, "longjmp"},
5435     {bp_longjmp_resume, "longjmp resume"},
5436     {bp_exception, "exception"},
5437     {bp_exception_resume, "exception resume"},
5438     {bp_step_resume, "step resume"},
5439     {bp_hp_step_resume, "high-priority step resume"},
5440     {bp_watchpoint_scope, "watchpoint scope"},
5441     {bp_call_dummy, "call dummy"},
5442     {bp_std_terminate, "std::terminate"},
5443     {bp_shlib_event, "shlib events"},
5444     {bp_thread_event, "thread events"},
5445     {bp_overlay_event, "overlay events"},
5446     {bp_longjmp_master, "longjmp master"},
5447     {bp_std_terminate_master, "std::terminate master"},
5448     {bp_exception_master, "exception master"},
5449     {bp_catchpoint, "catchpoint"},
5450     {bp_tracepoint, "tracepoint"},
5451     {bp_fast_tracepoint, "fast tracepoint"},
5452     {bp_static_tracepoint, "static tracepoint"},
5453     {bp_dprintf, "dprintf"},
5454     {bp_jit_event, "jit events"},
5455     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
5456     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
5457   };
5458
5459   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
5460       || ((int) type != bptypes[(int) type].type))
5461     internal_error (__FILE__, __LINE__,
5462                     _("bptypes table does not describe type #%d."),
5463                     (int) type);
5464
5465   return bptypes[(int) type].description;
5466 }
5467
5468 /* Print B to gdb_stdout.  */
5469
5470 static void
5471 print_one_breakpoint_location (struct breakpoint *b,
5472                                struct bp_location *loc,
5473                                int loc_number,
5474                                struct bp_location **last_loc,
5475                                int allflag)
5476 {
5477   struct command_line *l;
5478   static char bpenables[] = "nynny";
5479
5480   struct ui_out *uiout = current_uiout;
5481   int header_of_multiple = 0;
5482   int part_of_multiple = (loc != NULL);
5483   struct value_print_options opts;
5484
5485   get_user_print_options (&opts);
5486
5487   gdb_assert (!loc || loc_number != 0);
5488   /* See comment in print_one_breakpoint concerning treatment of
5489      breakpoints with single disabled location.  */
5490   if (loc == NULL 
5491       && (b->loc != NULL 
5492           && (b->loc->next != NULL || !b->loc->enabled)))
5493     header_of_multiple = 1;
5494   if (loc == NULL)
5495     loc = b->loc;
5496
5497   annotate_record ();
5498
5499   /* 1 */
5500   annotate_field (0);
5501   if (part_of_multiple)
5502     {
5503       char *formatted;
5504       formatted = xstrprintf ("%d.%d", b->number, loc_number);
5505       ui_out_field_string (uiout, "number", formatted);
5506       xfree (formatted);
5507     }
5508   else
5509     {
5510       ui_out_field_int (uiout, "number", b->number);
5511     }
5512
5513   /* 2 */
5514   annotate_field (1);
5515   if (part_of_multiple)
5516     ui_out_field_skip (uiout, "type");
5517   else
5518     ui_out_field_string (uiout, "type", bptype_string (b->type));
5519
5520   /* 3 */
5521   annotate_field (2);
5522   if (part_of_multiple)
5523     ui_out_field_skip (uiout, "disp");
5524   else
5525     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
5526
5527
5528   /* 4 */
5529   annotate_field (3);
5530   if (part_of_multiple)
5531     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
5532   else
5533     ui_out_field_fmt (uiout, "enabled", "%c", 
5534                       bpenables[(int) b->enable_state]);
5535   ui_out_spaces (uiout, 2);
5536
5537   
5538   /* 5 and 6 */
5539   if (b->ops != NULL && b->ops->print_one != NULL)
5540     {
5541       /* Although the print_one can possibly print all locations,
5542          calling it here is not likely to get any nice result.  So,
5543          make sure there's just one location.  */
5544       gdb_assert (b->loc == NULL || b->loc->next == NULL);
5545       b->ops->print_one (b, last_loc);
5546     }
5547   else
5548     switch (b->type)
5549       {
5550       case bp_none:
5551         internal_error (__FILE__, __LINE__,
5552                         _("print_one_breakpoint: bp_none encountered\n"));
5553         break;
5554
5555       case bp_watchpoint:
5556       case bp_hardware_watchpoint:
5557       case bp_read_watchpoint:
5558       case bp_access_watchpoint:
5559         {
5560           struct watchpoint *w = (struct watchpoint *) b;
5561
5562           /* Field 4, the address, is omitted (which makes the columns
5563              not line up too nicely with the headers, but the effect
5564              is relatively readable).  */
5565           if (opts.addressprint)
5566             ui_out_field_skip (uiout, "addr");
5567           annotate_field (5);
5568           ui_out_field_string (uiout, "what", w->exp_string);
5569         }
5570         break;
5571
5572       case bp_breakpoint:
5573       case bp_hardware_breakpoint:
5574       case bp_until:
5575       case bp_finish:
5576       case bp_longjmp:
5577       case bp_longjmp_resume:
5578       case bp_exception:
5579       case bp_exception_resume:
5580       case bp_step_resume:
5581       case bp_hp_step_resume:
5582       case bp_watchpoint_scope:
5583       case bp_call_dummy:
5584       case bp_std_terminate:
5585       case bp_shlib_event:
5586       case bp_thread_event:
5587       case bp_overlay_event:
5588       case bp_longjmp_master:
5589       case bp_std_terminate_master:
5590       case bp_exception_master:
5591       case bp_tracepoint:
5592       case bp_fast_tracepoint:
5593       case bp_static_tracepoint:
5594       case bp_dprintf:
5595       case bp_jit_event:
5596       case bp_gnu_ifunc_resolver:
5597       case bp_gnu_ifunc_resolver_return:
5598         if (opts.addressprint)
5599           {
5600             annotate_field (4);
5601             if (header_of_multiple)
5602               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
5603             else if (b->loc == NULL || loc->shlib_disabled)
5604               ui_out_field_string (uiout, "addr", "<PENDING>");
5605             else
5606               ui_out_field_core_addr (uiout, "addr",
5607                                       loc->gdbarch, loc->address);
5608           }
5609         annotate_field (5);
5610         if (!header_of_multiple)
5611           print_breakpoint_location (b, loc);
5612         if (b->loc)
5613           *last_loc = b->loc;
5614         break;
5615       }
5616
5617
5618   /* For backward compatibility, don't display inferiors unless there
5619      are several.  */
5620   if (loc != NULL
5621       && !header_of_multiple
5622       && (allflag
5623           || (!gdbarch_has_global_breakpoints (target_gdbarch)
5624               && (number_of_program_spaces () > 1
5625                   || number_of_inferiors () > 1)
5626               /* LOC is for existing B, it cannot be in
5627                  moribund_locations and thus having NULL OWNER.  */
5628               && loc->owner->type != bp_catchpoint)))
5629     {
5630       struct inferior *inf;
5631       int first = 1;
5632
5633       for (inf = inferior_list; inf != NULL; inf = inf->next)
5634         {
5635           if (inf->pspace == loc->pspace)
5636             {
5637               if (first)
5638                 {
5639                   first = 0;
5640                   ui_out_text (uiout, " inf ");
5641                 }
5642               else
5643                 ui_out_text (uiout, ", ");
5644               ui_out_text (uiout, plongest (inf->num));
5645             }
5646         }
5647     }
5648
5649   if (!part_of_multiple)
5650     {
5651       if (b->thread != -1)
5652         {
5653           /* FIXME: This seems to be redundant and lost here; see the
5654              "stop only in" line a little further down.  */
5655           ui_out_text (uiout, " thread ");
5656           ui_out_field_int (uiout, "thread", b->thread);
5657         }
5658       else if (b->task != 0)
5659         {
5660           ui_out_text (uiout, " task ");
5661           ui_out_field_int (uiout, "task", b->task);
5662         }
5663     }
5664
5665   ui_out_text (uiout, "\n");
5666
5667   if (!part_of_multiple)
5668     b->ops->print_one_detail (b, uiout);
5669
5670   if (part_of_multiple && frame_id_p (b->frame_id))
5671     {
5672       annotate_field (6);
5673       ui_out_text (uiout, "\tstop only in stack frame at ");
5674       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
5675          the frame ID.  */
5676       ui_out_field_core_addr (uiout, "frame",
5677                               b->gdbarch, b->frame_id.stack_addr);
5678       ui_out_text (uiout, "\n");
5679     }
5680   
5681   if (!part_of_multiple && b->cond_string)
5682     {
5683       annotate_field (7);
5684       if (is_tracepoint (b))
5685         ui_out_text (uiout, "\ttrace only if ");
5686       else
5687         ui_out_text (uiout, "\tstop only if ");
5688       ui_out_field_string (uiout, "cond", b->cond_string);
5689
5690       /* Print whether the target is doing the breakpoint's condition
5691          evaluation.  If GDB is doing the evaluation, don't print anything.  */
5692       if (is_breakpoint (b)
5693           && breakpoint_condition_evaluation_mode ()
5694           == condition_evaluation_target)
5695         {
5696           ui_out_text (uiout, " (");
5697           ui_out_field_string (uiout, "evaluated-by",
5698                                bp_condition_evaluator (b));
5699           ui_out_text (uiout, " evals)");
5700         }
5701       ui_out_text (uiout, "\n");
5702     }
5703
5704   if (!part_of_multiple && b->thread != -1)
5705     {
5706       /* FIXME should make an annotation for this.  */
5707       ui_out_text (uiout, "\tstop only in thread ");
5708       ui_out_field_int (uiout, "thread", b->thread);
5709       ui_out_text (uiout, "\n");
5710     }
5711   
5712   if (!part_of_multiple && b->hit_count)
5713     {
5714       /* FIXME should make an annotation for this.  */
5715       if (is_catchpoint (b))
5716         ui_out_text (uiout, "\tcatchpoint");
5717       else if (is_tracepoint (b))
5718         ui_out_text (uiout, "\ttracepoint");
5719       else
5720         ui_out_text (uiout, "\tbreakpoint");
5721       ui_out_text (uiout, " already hit ");
5722       ui_out_field_int (uiout, "times", b->hit_count);
5723       if (b->hit_count == 1)
5724         ui_out_text (uiout, " time\n");
5725       else
5726         ui_out_text (uiout, " times\n");
5727     }
5728   
5729   /* Output the count also if it is zero, but only if this is mi.
5730      FIXME: Should have a better test for this.  */
5731   if (ui_out_is_mi_like_p (uiout))
5732     if (!part_of_multiple && b->hit_count == 0)
5733       ui_out_field_int (uiout, "times", b->hit_count);
5734
5735   if (!part_of_multiple && b->ignore_count)
5736     {
5737       annotate_field (8);
5738       ui_out_text (uiout, "\tignore next ");
5739       ui_out_field_int (uiout, "ignore", b->ignore_count);
5740       ui_out_text (uiout, " hits\n");
5741     }
5742
5743   /* Note that an enable count of 1 corresponds to "enable once"
5744      behavior, which is reported by the combination of enablement and
5745      disposition, so we don't need to mention it here.  */
5746   if (!part_of_multiple && b->enable_count > 1)
5747     {
5748       annotate_field (8);
5749       ui_out_text (uiout, "\tdisable after ");
5750       /* Tweak the wording to clarify that ignore and enable counts
5751          are distinct, and have additive effect.  */
5752       if (b->ignore_count)
5753         ui_out_text (uiout, "additional ");
5754       else
5755         ui_out_text (uiout, "next ");
5756       ui_out_field_int (uiout, "enable", b->enable_count);
5757       ui_out_text (uiout, " hits\n");
5758     }
5759
5760   if (!part_of_multiple && is_tracepoint (b))
5761     {
5762       struct tracepoint *tp = (struct tracepoint *) b;
5763
5764       if (tp->traceframe_usage)
5765         {
5766           ui_out_text (uiout, "\ttrace buffer usage ");
5767           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
5768           ui_out_text (uiout, " bytes\n");
5769         }
5770     }
5771   
5772   l = b->commands ? b->commands->commands : NULL;
5773   if (!part_of_multiple && l)
5774     {
5775       struct cleanup *script_chain;
5776
5777       annotate_field (9);
5778       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
5779       print_command_lines (uiout, l, 4);
5780       do_cleanups (script_chain);
5781     }
5782
5783   if (is_tracepoint (b))
5784     {
5785       struct tracepoint *t = (struct tracepoint *) b;
5786
5787       if (!part_of_multiple && t->pass_count)
5788         {
5789           annotate_field (10);
5790           ui_out_text (uiout, "\tpass count ");
5791           ui_out_field_int (uiout, "pass", t->pass_count);
5792           ui_out_text (uiout, " \n");
5793         }
5794     }
5795
5796   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
5797     {
5798       if (is_watchpoint (b))
5799         {
5800           struct watchpoint *w = (struct watchpoint *) b;
5801
5802           ui_out_field_string (uiout, "original-location", w->exp_string);
5803         }
5804       else if (b->addr_string)
5805         ui_out_field_string (uiout, "original-location", b->addr_string);
5806     }
5807 }
5808
5809 static void
5810 print_one_breakpoint (struct breakpoint *b,
5811                       struct bp_location **last_loc, 
5812                       int allflag)
5813 {
5814   struct cleanup *bkpt_chain;
5815   struct ui_out *uiout = current_uiout;
5816
5817   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
5818
5819   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
5820   do_cleanups (bkpt_chain);
5821
5822   /* If this breakpoint has custom print function,
5823      it's already printed.  Otherwise, print individual
5824      locations, if any.  */
5825   if (b->ops == NULL || b->ops->print_one == NULL)
5826     {
5827       /* If breakpoint has a single location that is disabled, we
5828          print it as if it had several locations, since otherwise it's
5829          hard to represent "breakpoint enabled, location disabled"
5830          situation.
5831
5832          Note that while hardware watchpoints have several locations
5833          internally, that's not a property exposed to user.  */
5834       if (b->loc 
5835           && !is_hardware_watchpoint (b)
5836           && (b->loc->next || !b->loc->enabled))
5837         {
5838           struct bp_location *loc;
5839           int n = 1;
5840
5841           for (loc = b->loc; loc; loc = loc->next, ++n)
5842             {
5843               struct cleanup *inner2 =
5844                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
5845               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
5846               do_cleanups (inner2);
5847             }
5848         }
5849     }
5850 }
5851
5852 static int
5853 breakpoint_address_bits (struct breakpoint *b)
5854 {
5855   int print_address_bits = 0;
5856   struct bp_location *loc;
5857
5858   for (loc = b->loc; loc; loc = loc->next)
5859     {
5860       int addr_bit;
5861
5862       /* Software watchpoints that aren't watching memory don't have
5863          an address to print.  */
5864       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
5865         continue;
5866
5867       addr_bit = gdbarch_addr_bit (loc->gdbarch);
5868       if (addr_bit > print_address_bits)
5869         print_address_bits = addr_bit;
5870     }
5871
5872   return print_address_bits;
5873 }
5874
5875 struct captured_breakpoint_query_args
5876   {
5877     int bnum;
5878   };
5879
5880 static int
5881 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
5882 {
5883   struct captured_breakpoint_query_args *args = data;
5884   struct breakpoint *b;
5885   struct bp_location *dummy_loc = NULL;
5886
5887   ALL_BREAKPOINTS (b)
5888     {
5889       if (args->bnum == b->number)
5890         {
5891           print_one_breakpoint (b, &dummy_loc, 0);
5892           return GDB_RC_OK;
5893         }
5894     }
5895   return GDB_RC_NONE;
5896 }
5897
5898 enum gdb_rc
5899 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
5900                       char **error_message)
5901 {
5902   struct captured_breakpoint_query_args args;
5903
5904   args.bnum = bnum;
5905   /* For the moment we don't trust print_one_breakpoint() to not throw
5906      an error.  */
5907   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
5908                                  error_message, RETURN_MASK_ALL) < 0)
5909     return GDB_RC_FAIL;
5910   else
5911     return GDB_RC_OK;
5912 }
5913
5914 /* Return true if this breakpoint was set by the user, false if it is
5915    internal or momentary.  */
5916
5917 int
5918 user_breakpoint_p (struct breakpoint *b)
5919 {
5920   return b->number > 0;
5921 }
5922
5923 /* Print information on user settable breakpoint (watchpoint, etc)
5924    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
5925    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
5926    FILTER is non-NULL, call it on each breakpoint and only include the
5927    ones for which it returns non-zero.  Return the total number of
5928    breakpoints listed.  */
5929
5930 static int
5931 breakpoint_1 (char *args, int allflag, 
5932               int (*filter) (const struct breakpoint *))
5933 {
5934   struct breakpoint *b;
5935   struct bp_location *last_loc = NULL;
5936   int nr_printable_breakpoints;
5937   struct cleanup *bkpttbl_chain;
5938   struct value_print_options opts;
5939   int print_address_bits = 0;
5940   int print_type_col_width = 14;
5941   struct ui_out *uiout = current_uiout;
5942
5943   get_user_print_options (&opts);
5944
5945   /* Compute the number of rows in the table, as well as the size
5946      required for address fields.  */
5947   nr_printable_breakpoints = 0;
5948   ALL_BREAKPOINTS (b)
5949     {
5950       /* If we have a filter, only list the breakpoints it accepts.  */
5951       if (filter && !filter (b))
5952         continue;
5953
5954       /* If we have an "args" string, it is a list of breakpoints to 
5955          accept.  Skip the others.  */
5956       if (args != NULL && *args != '\0')
5957         {
5958           if (allflag && parse_and_eval_long (args) != b->number)
5959             continue;
5960           if (!allflag && !number_is_in_list (args, b->number))
5961             continue;
5962         }
5963
5964       if (allflag || user_breakpoint_p (b))
5965         {
5966           int addr_bit, type_len;
5967
5968           addr_bit = breakpoint_address_bits (b);
5969           if (addr_bit > print_address_bits)
5970             print_address_bits = addr_bit;
5971
5972           type_len = strlen (bptype_string (b->type));
5973           if (type_len > print_type_col_width)
5974             print_type_col_width = type_len;
5975
5976           nr_printable_breakpoints++;
5977         }
5978     }
5979
5980   if (opts.addressprint)
5981     bkpttbl_chain 
5982       = make_cleanup_ui_out_table_begin_end (uiout, 6,
5983                                              nr_printable_breakpoints,
5984                                              "BreakpointTable");
5985   else
5986     bkpttbl_chain 
5987       = make_cleanup_ui_out_table_begin_end (uiout, 5,
5988                                              nr_printable_breakpoints,
5989                                              "BreakpointTable");
5990
5991   if (nr_printable_breakpoints > 0)
5992     annotate_breakpoints_headers ();
5993   if (nr_printable_breakpoints > 0)
5994     annotate_field (0);
5995   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
5996   if (nr_printable_breakpoints > 0)
5997     annotate_field (1);
5998   ui_out_table_header (uiout, print_type_col_width, ui_left,
5999                        "type", "Type");                         /* 2 */
6000   if (nr_printable_breakpoints > 0)
6001     annotate_field (2);
6002   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6003   if (nr_printable_breakpoints > 0)
6004     annotate_field (3);
6005   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6006   if (opts.addressprint)
6007     {
6008       if (nr_printable_breakpoints > 0)
6009         annotate_field (4);
6010       if (print_address_bits <= 32)
6011         ui_out_table_header (uiout, 10, ui_left, 
6012                              "addr", "Address");                /* 5 */
6013       else
6014         ui_out_table_header (uiout, 18, ui_left, 
6015                              "addr", "Address");                /* 5 */
6016     }
6017   if (nr_printable_breakpoints > 0)
6018     annotate_field (5);
6019   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6020   ui_out_table_body (uiout);
6021   if (nr_printable_breakpoints > 0)
6022     annotate_breakpoints_table ();
6023
6024   ALL_BREAKPOINTS (b)
6025     {
6026       QUIT;
6027       /* If we have a filter, only list the breakpoints it accepts.  */
6028       if (filter && !filter (b))
6029         continue;
6030
6031       /* If we have an "args" string, it is a list of breakpoints to 
6032          accept.  Skip the others.  */
6033
6034       if (args != NULL && *args != '\0')
6035         {
6036           if (allflag)  /* maintenance info breakpoint */
6037             {
6038               if (parse_and_eval_long (args) != b->number)
6039                 continue;
6040             }
6041           else          /* all others */
6042             {
6043               if (!number_is_in_list (args, b->number))
6044                 continue;
6045             }
6046         }
6047       /* We only print out user settable breakpoints unless the
6048          allflag is set.  */
6049       if (allflag || user_breakpoint_p (b))
6050         print_one_breakpoint (b, &last_loc, allflag);
6051     }
6052
6053   do_cleanups (bkpttbl_chain);
6054
6055   if (nr_printable_breakpoints == 0)
6056     {
6057       /* If there's a filter, let the caller decide how to report
6058          empty list.  */
6059       if (!filter)
6060         {
6061           if (args == NULL || *args == '\0')
6062             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6063           else
6064             ui_out_message (uiout, 0, 
6065                             "No breakpoint or watchpoint matching '%s'.\n",
6066                             args);
6067         }
6068     }
6069   else
6070     {
6071       if (last_loc && !server_command)
6072         set_next_address (last_loc->gdbarch, last_loc->address);
6073     }
6074
6075   /* FIXME?  Should this be moved up so that it is only called when
6076      there have been breakpoints? */
6077   annotate_breakpoints_table_end ();
6078
6079   return nr_printable_breakpoints;
6080 }
6081
6082 /* Display the value of default-collect in a way that is generally
6083    compatible with the breakpoint list.  */
6084
6085 static void
6086 default_collect_info (void)
6087 {
6088   struct ui_out *uiout = current_uiout;
6089
6090   /* If it has no value (which is frequently the case), say nothing; a
6091      message like "No default-collect." gets in user's face when it's
6092      not wanted.  */
6093   if (!*default_collect)
6094     return;
6095
6096   /* The following phrase lines up nicely with per-tracepoint collect
6097      actions.  */
6098   ui_out_text (uiout, "default collect ");
6099   ui_out_field_string (uiout, "default-collect", default_collect);
6100   ui_out_text (uiout, " \n");
6101 }
6102   
6103 static void
6104 breakpoints_info (char *args, int from_tty)
6105 {
6106   breakpoint_1 (args, 0, NULL);
6107
6108   default_collect_info ();
6109 }
6110
6111 static void
6112 watchpoints_info (char *args, int from_tty)
6113 {
6114   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6115   struct ui_out *uiout = current_uiout;
6116
6117   if (num_printed == 0)
6118     {
6119       if (args == NULL || *args == '\0')
6120         ui_out_message (uiout, 0, "No watchpoints.\n");
6121       else
6122         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6123     }
6124 }
6125
6126 static void
6127 maintenance_info_breakpoints (char *args, int from_tty)
6128 {
6129   breakpoint_1 (args, 1, NULL);
6130
6131   default_collect_info ();
6132 }
6133
6134 static int
6135 breakpoint_has_pc (struct breakpoint *b,
6136                    struct program_space *pspace,
6137                    CORE_ADDR pc, struct obj_section *section)
6138 {
6139   struct bp_location *bl = b->loc;
6140
6141   for (; bl; bl = bl->next)
6142     {
6143       if (bl->pspace == pspace
6144           && bl->address == pc
6145           && (!overlay_debugging || bl->section == section))
6146         return 1;         
6147     }
6148   return 0;
6149 }
6150
6151 /* Print a message describing any user-breakpoints set at PC.  This
6152    concerns with logical breakpoints, so we match program spaces, not
6153    address spaces.  */
6154
6155 static void
6156 describe_other_breakpoints (struct gdbarch *gdbarch,
6157                             struct program_space *pspace, CORE_ADDR pc,
6158                             struct obj_section *section, int thread)
6159 {
6160   int others = 0;
6161   struct breakpoint *b;
6162
6163   ALL_BREAKPOINTS (b)
6164     others += (user_breakpoint_p (b)
6165                && breakpoint_has_pc (b, pspace, pc, section));
6166   if (others > 0)
6167     {
6168       if (others == 1)
6169         printf_filtered (_("Note: breakpoint "));
6170       else /* if (others == ???) */
6171         printf_filtered (_("Note: breakpoints "));
6172       ALL_BREAKPOINTS (b)
6173         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6174           {
6175             others--;
6176             printf_filtered ("%d", b->number);
6177             if (b->thread == -1 && thread != -1)
6178               printf_filtered (" (all threads)");
6179             else if (b->thread != -1)
6180               printf_filtered (" (thread %d)", b->thread);
6181             printf_filtered ("%s%s ",
6182                              ((b->enable_state == bp_disabled
6183                                || b->enable_state == bp_call_disabled)
6184                               ? " (disabled)"
6185                               : b->enable_state == bp_permanent 
6186                               ? " (permanent)"
6187                               : ""),
6188                              (others > 1) ? "," 
6189                              : ((others == 1) ? " and" : ""));
6190           }
6191       printf_filtered (_("also set at pc "));
6192       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6193       printf_filtered (".\n");
6194     }
6195 }
6196 \f
6197
6198 /* Return true iff it is meaningful to use the address member of
6199    BPT.  For some breakpoint types, the address member is irrelevant
6200    and it makes no sense to attempt to compare it to other addresses
6201    (or use it for any other purpose either).
6202
6203    More specifically, each of the following breakpoint types will
6204    always have a zero valued address and we don't want to mark
6205    breakpoints of any of these types to be a duplicate of an actual
6206    breakpoint at address zero:
6207
6208       bp_watchpoint
6209       bp_catchpoint
6210
6211 */
6212
6213 static int
6214 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6215 {
6216   enum bptype type = bpt->type;
6217
6218   return (type != bp_watchpoint && type != bp_catchpoint);
6219 }
6220
6221 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6222    true if LOC1 and LOC2 represent the same watchpoint location.  */
6223
6224 static int
6225 watchpoint_locations_match (struct bp_location *loc1, 
6226                             struct bp_location *loc2)
6227 {
6228   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6229   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6230
6231   /* Both of them must exist.  */
6232   gdb_assert (w1 != NULL);
6233   gdb_assert (w2 != NULL);
6234
6235   /* If the target can evaluate the condition expression in hardware,
6236      then we we need to insert both watchpoints even if they are at
6237      the same place.  Otherwise the watchpoint will only trigger when
6238      the condition of whichever watchpoint was inserted evaluates to
6239      true, not giving a chance for GDB to check the condition of the
6240      other watchpoint.  */
6241   if ((w1->cond_exp
6242        && target_can_accel_watchpoint_condition (loc1->address, 
6243                                                  loc1->length,
6244                                                  loc1->watchpoint_type,
6245                                                  w1->cond_exp))
6246       || (w2->cond_exp
6247           && target_can_accel_watchpoint_condition (loc2->address, 
6248                                                     loc2->length,
6249                                                     loc2->watchpoint_type,
6250                                                     w2->cond_exp)))
6251     return 0;
6252
6253   /* Note that this checks the owner's type, not the location's.  In
6254      case the target does not support read watchpoints, but does
6255      support access watchpoints, we'll have bp_read_watchpoint
6256      watchpoints with hw_access locations.  Those should be considered
6257      duplicates of hw_read locations.  The hw_read locations will
6258      become hw_access locations later.  */
6259   return (loc1->owner->type == loc2->owner->type
6260           && loc1->pspace->aspace == loc2->pspace->aspace
6261           && loc1->address == loc2->address
6262           && loc1->length == loc2->length);
6263 }
6264
6265 /* Returns true if {ASPACE1,ADDR1} and {ASPACE2,ADDR2} represent the
6266    same breakpoint location.  In most targets, this can only be true
6267    if ASPACE1 matches ASPACE2.  On targets that have global
6268    breakpoints, the address space doesn't really matter.  */
6269
6270 static int
6271 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6272                           struct address_space *aspace2, CORE_ADDR addr2)
6273 {
6274   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6275            || aspace1 == aspace2)
6276           && addr1 == addr2);
6277 }
6278
6279 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6280    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6281    matches ASPACE2.  On targets that have global breakpoints, the address
6282    space doesn't really matter.  */
6283
6284 static int
6285 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6286                                 int len1, struct address_space *aspace2,
6287                                 CORE_ADDR addr2)
6288 {
6289   return ((gdbarch_has_global_breakpoints (target_gdbarch)
6290            || aspace1 == aspace2)
6291           && addr2 >= addr1 && addr2 < addr1 + len1);
6292 }
6293
6294 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6295    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6296    matches the breakpoint's address space.  On targets that have global
6297    breakpoints, the address space doesn't really matter.  */
6298
6299 static int
6300 breakpoint_location_address_match (struct bp_location *bl,
6301                                    struct address_space *aspace,
6302                                    CORE_ADDR addr)
6303 {
6304   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6305                                     aspace, addr)
6306           || (bl->length
6307               && breakpoint_address_match_range (bl->pspace->aspace,
6308                                                  bl->address, bl->length,
6309                                                  aspace, addr)));
6310 }
6311
6312 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6313    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6314    true, otherwise returns false.  */
6315
6316 static int
6317 tracepoint_locations_match (struct bp_location *loc1,
6318                             struct bp_location *loc2)
6319 {
6320   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6321     /* Since tracepoint locations are never duplicated with others', tracepoint
6322        locations at the same address of different tracepoints are regarded as
6323        different locations.  */
6324     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6325   else
6326     return 0;
6327 }
6328
6329 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6330    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6331    represent the same location.  */
6332
6333 static int
6334 breakpoint_locations_match (struct bp_location *loc1, 
6335                             struct bp_location *loc2)
6336 {
6337   int hw_point1, hw_point2;
6338
6339   /* Both of them must not be in moribund_locations.  */
6340   gdb_assert (loc1->owner != NULL);
6341   gdb_assert (loc2->owner != NULL);
6342
6343   hw_point1 = is_hardware_watchpoint (loc1->owner);
6344   hw_point2 = is_hardware_watchpoint (loc2->owner);
6345
6346   if (hw_point1 != hw_point2)
6347     return 0;
6348   else if (hw_point1)
6349     return watchpoint_locations_match (loc1, loc2);
6350   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6351     return tracepoint_locations_match (loc1, loc2);
6352   else
6353     /* We compare bp_location.length in order to cover ranged breakpoints.  */
6354     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
6355                                      loc2->pspace->aspace, loc2->address)
6356             && loc1->length == loc2->length);
6357 }
6358
6359 static void
6360 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
6361                                int bnum, int have_bnum)
6362 {
6363   /* The longest string possibly returned by hex_string_custom
6364      is 50 chars.  These must be at least that big for safety.  */
6365   char astr1[64];
6366   char astr2[64];
6367
6368   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
6369   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
6370   if (have_bnum)
6371     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
6372              bnum, astr1, astr2);
6373   else
6374     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
6375 }
6376
6377 /* Adjust a breakpoint's address to account for architectural
6378    constraints on breakpoint placement.  Return the adjusted address.
6379    Note: Very few targets require this kind of adjustment.  For most
6380    targets, this function is simply the identity function.  */
6381
6382 static CORE_ADDR
6383 adjust_breakpoint_address (struct gdbarch *gdbarch,
6384                            CORE_ADDR bpaddr, enum bptype bptype)
6385 {
6386   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
6387     {
6388       /* Very few targets need any kind of breakpoint adjustment.  */
6389       return bpaddr;
6390     }
6391   else if (bptype == bp_watchpoint
6392            || bptype == bp_hardware_watchpoint
6393            || bptype == bp_read_watchpoint
6394            || bptype == bp_access_watchpoint
6395            || bptype == bp_catchpoint)
6396     {
6397       /* Watchpoints and the various bp_catch_* eventpoints should not
6398          have their addresses modified.  */
6399       return bpaddr;
6400     }
6401   else
6402     {
6403       CORE_ADDR adjusted_bpaddr;
6404
6405       /* Some targets have architectural constraints on the placement
6406          of breakpoint instructions.  Obtain the adjusted address.  */
6407       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
6408
6409       /* An adjusted breakpoint address can significantly alter
6410          a user's expectations.  Print a warning if an adjustment
6411          is required.  */
6412       if (adjusted_bpaddr != bpaddr)
6413         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
6414
6415       return adjusted_bpaddr;
6416     }
6417 }
6418
6419 void
6420 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
6421                   struct breakpoint *owner)
6422 {
6423   memset (loc, 0, sizeof (*loc));
6424
6425   gdb_assert (ops != NULL);
6426
6427   loc->ops = ops;
6428   loc->owner = owner;
6429   loc->cond = NULL;
6430   loc->cond_bytecode = NULL;
6431   loc->shlib_disabled = 0;
6432   loc->enabled = 1;
6433
6434   switch (owner->type)
6435     {
6436     case bp_breakpoint:
6437     case bp_until:
6438     case bp_finish:
6439     case bp_longjmp:
6440     case bp_longjmp_resume:
6441     case bp_exception:
6442     case bp_exception_resume:
6443     case bp_step_resume:
6444     case bp_hp_step_resume:
6445     case bp_watchpoint_scope:
6446     case bp_call_dummy:
6447     case bp_std_terminate:
6448     case bp_shlib_event:
6449     case bp_thread_event:
6450     case bp_overlay_event:
6451     case bp_jit_event:
6452     case bp_longjmp_master:
6453     case bp_std_terminate_master:
6454     case bp_exception_master:
6455     case bp_gnu_ifunc_resolver:
6456     case bp_gnu_ifunc_resolver_return:
6457     case bp_dprintf:
6458       loc->loc_type = bp_loc_software_breakpoint;
6459       mark_breakpoint_location_modified (loc);
6460       break;
6461     case bp_hardware_breakpoint:
6462       loc->loc_type = bp_loc_hardware_breakpoint;
6463       mark_breakpoint_location_modified (loc);
6464       break;
6465     case bp_hardware_watchpoint:
6466     case bp_read_watchpoint:
6467     case bp_access_watchpoint:
6468       loc->loc_type = bp_loc_hardware_watchpoint;
6469       break;
6470     case bp_watchpoint:
6471     case bp_catchpoint:
6472     case bp_tracepoint:
6473     case bp_fast_tracepoint:
6474     case bp_static_tracepoint:
6475       loc->loc_type = bp_loc_other;
6476       break;
6477     default:
6478       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
6479     }
6480
6481   loc->refc = 1;
6482 }
6483
6484 /* Allocate a struct bp_location.  */
6485
6486 static struct bp_location *
6487 allocate_bp_location (struct breakpoint *bpt)
6488 {
6489   return bpt->ops->allocate_location (bpt);
6490 }
6491
6492 static void
6493 free_bp_location (struct bp_location *loc)
6494 {
6495   loc->ops->dtor (loc);
6496   xfree (loc);
6497 }
6498
6499 /* Increment reference count.  */
6500
6501 static void
6502 incref_bp_location (struct bp_location *bl)
6503 {
6504   ++bl->refc;
6505 }
6506
6507 /* Decrement reference count.  If the reference count reaches 0,
6508    destroy the bp_location.  Sets *BLP to NULL.  */
6509
6510 static void
6511 decref_bp_location (struct bp_location **blp)
6512 {
6513   gdb_assert ((*blp)->refc > 0);
6514
6515   if (--(*blp)->refc == 0)
6516     free_bp_location (*blp);
6517   *blp = NULL;
6518 }
6519
6520 /* Add breakpoint B at the end of the global breakpoint chain.  */
6521
6522 static void
6523 add_to_breakpoint_chain (struct breakpoint *b)
6524 {
6525   struct breakpoint *b1;
6526
6527   /* Add this breakpoint to the end of the chain so that a list of
6528      breakpoints will come out in order of increasing numbers.  */
6529
6530   b1 = breakpoint_chain;
6531   if (b1 == 0)
6532     breakpoint_chain = b;
6533   else
6534     {
6535       while (b1->next)
6536         b1 = b1->next;
6537       b1->next = b;
6538     }
6539 }
6540
6541 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
6542
6543 static void
6544 init_raw_breakpoint_without_location (struct breakpoint *b,
6545                                       struct gdbarch *gdbarch,
6546                                       enum bptype bptype,
6547                                       const struct breakpoint_ops *ops)
6548 {
6549   memset (b, 0, sizeof (*b));
6550
6551   gdb_assert (ops != NULL);
6552
6553   b->ops = ops;
6554   b->type = bptype;
6555   b->gdbarch = gdbarch;
6556   b->language = current_language->la_language;
6557   b->input_radix = input_radix;
6558   b->thread = -1;
6559   b->enable_state = bp_enabled;
6560   b->next = 0;
6561   b->silent = 0;
6562   b->ignore_count = 0;
6563   b->commands = NULL;
6564   b->frame_id = null_frame_id;
6565   b->condition_not_parsed = 0;
6566   b->py_bp_object = NULL;
6567   b->related_breakpoint = b;
6568 }
6569
6570 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
6571    that has type BPTYPE and has no locations as yet.  */
6572
6573 static struct breakpoint *
6574 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
6575                                      enum bptype bptype,
6576                                      const struct breakpoint_ops *ops)
6577 {
6578   struct breakpoint *b = XNEW (struct breakpoint);
6579
6580   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6581   add_to_breakpoint_chain (b);
6582   return b;
6583 }
6584
6585 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
6586    resolutions should be made as the user specified the location explicitly
6587    enough.  */
6588
6589 static void
6590 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
6591 {
6592   gdb_assert (loc->owner != NULL);
6593
6594   if (loc->owner->type == bp_breakpoint
6595       || loc->owner->type == bp_hardware_breakpoint
6596       || is_tracepoint (loc->owner))
6597     {
6598       int is_gnu_ifunc;
6599       const char *function_name;
6600       CORE_ADDR func_addr;
6601
6602       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
6603                                           &func_addr, NULL, &is_gnu_ifunc);
6604
6605       if (is_gnu_ifunc && !explicit_loc)
6606         {
6607           struct breakpoint *b = loc->owner;
6608
6609           gdb_assert (loc->pspace == current_program_space);
6610           if (gnu_ifunc_resolve_name (function_name,
6611                                       &loc->requested_address))
6612             {
6613               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
6614               loc->address = adjust_breakpoint_address (loc->gdbarch,
6615                                                         loc->requested_address,
6616                                                         b->type);
6617             }
6618           else if (b->type == bp_breakpoint && b->loc == loc
6619                    && loc->next == NULL && b->related_breakpoint == b)
6620             {
6621               /* Create only the whole new breakpoint of this type but do not
6622                  mess more complicated breakpoints with multiple locations.  */
6623               b->type = bp_gnu_ifunc_resolver;
6624               /* Remember the resolver's address for use by the return
6625                  breakpoint.  */
6626               loc->related_address = func_addr;
6627             }
6628         }
6629
6630       if (function_name)
6631         loc->function_name = xstrdup (function_name);
6632     }
6633 }
6634
6635 /* Attempt to determine architecture of location identified by SAL.  */
6636 struct gdbarch *
6637 get_sal_arch (struct symtab_and_line sal)
6638 {
6639   if (sal.section)
6640     return get_objfile_arch (sal.section->objfile);
6641   if (sal.symtab)
6642     return get_objfile_arch (sal.symtab->objfile);
6643
6644   return NULL;
6645 }
6646
6647 /* Low level routine for partially initializing a breakpoint of type
6648    BPTYPE.  The newly created breakpoint's address, section, source
6649    file name, and line number are provided by SAL.
6650
6651    It is expected that the caller will complete the initialization of
6652    the newly created breakpoint struct as well as output any status
6653    information regarding the creation of a new breakpoint.  */
6654
6655 static void
6656 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
6657                      struct symtab_and_line sal, enum bptype bptype,
6658                      const struct breakpoint_ops *ops)
6659 {
6660   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
6661
6662   add_location_to_breakpoint (b, &sal);
6663
6664   if (bptype != bp_catchpoint)
6665     gdb_assert (sal.pspace != NULL);
6666
6667   /* Store the program space that was used to set the breakpoint,
6668      except for ordinary breakpoints, which are independent of the
6669      program space.  */
6670   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
6671     b->pspace = sal.pspace;
6672
6673   breakpoints_changed ();
6674 }
6675
6676 /* set_raw_breakpoint is a low level routine for allocating and
6677    partially initializing a breakpoint of type BPTYPE.  The newly
6678    created breakpoint's address, section, source file name, and line
6679    number are provided by SAL.  The newly created and partially
6680    initialized breakpoint is added to the breakpoint chain and
6681    is also returned as the value of this function.
6682
6683    It is expected that the caller will complete the initialization of
6684    the newly created breakpoint struct as well as output any status
6685    information regarding the creation of a new breakpoint.  In
6686    particular, set_raw_breakpoint does NOT set the breakpoint
6687    number!  Care should be taken to not allow an error to occur
6688    prior to completing the initialization of the breakpoint.  If this
6689    should happen, a bogus breakpoint will be left on the chain.  */
6690
6691 struct breakpoint *
6692 set_raw_breakpoint (struct gdbarch *gdbarch,
6693                     struct symtab_and_line sal, enum bptype bptype,
6694                     const struct breakpoint_ops *ops)
6695 {
6696   struct breakpoint *b = XNEW (struct breakpoint);
6697
6698   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
6699   add_to_breakpoint_chain (b);
6700   return b;
6701 }
6702
6703
6704 /* Note that the breakpoint object B describes a permanent breakpoint
6705    instruction, hard-wired into the inferior's code.  */
6706 void
6707 make_breakpoint_permanent (struct breakpoint *b)
6708 {
6709   struct bp_location *bl;
6710
6711   b->enable_state = bp_permanent;
6712
6713   /* By definition, permanent breakpoints are already present in the
6714      code.  Mark all locations as inserted.  For now,
6715      make_breakpoint_permanent is called in just one place, so it's
6716      hard to say if it's reasonable to have permanent breakpoint with
6717      multiple locations or not, but it's easy to implement.  */
6718   for (bl = b->loc; bl; bl = bl->next)
6719     bl->inserted = 1;
6720 }
6721
6722 /* Call this routine when stepping and nexting to enable a breakpoint
6723    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
6724    initiated the operation.  */
6725
6726 void
6727 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
6728 {
6729   struct breakpoint *b, *b_tmp;
6730   int thread = tp->num;
6731
6732   /* To avoid having to rescan all objfile symbols at every step,
6733      we maintain a list of continually-inserted but always disabled
6734      longjmp "master" breakpoints.  Here, we simply create momentary
6735      clones of those and enable them for the requested thread.  */
6736   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6737     if (b->pspace == current_program_space
6738         && (b->type == bp_longjmp_master
6739             || b->type == bp_exception_master))
6740       {
6741         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
6742         struct breakpoint *clone;
6743
6744         clone = momentary_breakpoint_from_master (b, type,
6745                                                   &momentary_breakpoint_ops);
6746         clone->thread = thread;
6747       }
6748
6749   tp->initiating_frame = frame;
6750 }
6751
6752 /* Delete all longjmp breakpoints from THREAD.  */
6753 void
6754 delete_longjmp_breakpoint (int thread)
6755 {
6756   struct breakpoint *b, *b_tmp;
6757
6758   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6759     if (b->type == bp_longjmp || b->type == bp_exception)
6760       {
6761         if (b->thread == thread)
6762           delete_breakpoint (b);
6763       }
6764 }
6765
6766 void
6767 delete_longjmp_breakpoint_at_next_stop (int thread)
6768 {
6769   struct breakpoint *b, *b_tmp;
6770
6771   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6772     if (b->type == bp_longjmp || b->type == bp_exception)
6773       {
6774         if (b->thread == thread)
6775           b->disposition = disp_del_at_next_stop;
6776       }
6777 }
6778
6779 void
6780 enable_overlay_breakpoints (void)
6781 {
6782   struct breakpoint *b;
6783
6784   ALL_BREAKPOINTS (b)
6785     if (b->type == bp_overlay_event)
6786     {
6787       b->enable_state = bp_enabled;
6788       update_global_location_list (1);
6789       overlay_events_enabled = 1;
6790     }
6791 }
6792
6793 void
6794 disable_overlay_breakpoints (void)
6795 {
6796   struct breakpoint *b;
6797
6798   ALL_BREAKPOINTS (b)
6799     if (b->type == bp_overlay_event)
6800     {
6801       b->enable_state = bp_disabled;
6802       update_global_location_list (0);
6803       overlay_events_enabled = 0;
6804     }
6805 }
6806
6807 /* Set an active std::terminate breakpoint for each std::terminate
6808    master breakpoint.  */
6809 void
6810 set_std_terminate_breakpoint (void)
6811 {
6812   struct breakpoint *b, *b_tmp;
6813
6814   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6815     if (b->pspace == current_program_space
6816         && b->type == bp_std_terminate_master)
6817       {
6818         momentary_breakpoint_from_master (b, bp_std_terminate,
6819                                           &momentary_breakpoint_ops);
6820       }
6821 }
6822
6823 /* Delete all the std::terminate breakpoints.  */
6824 void
6825 delete_std_terminate_breakpoint (void)
6826 {
6827   struct breakpoint *b, *b_tmp;
6828
6829   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6830     if (b->type == bp_std_terminate)
6831       delete_breakpoint (b);
6832 }
6833
6834 struct breakpoint *
6835 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6836 {
6837   struct breakpoint *b;
6838
6839   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
6840                                   &internal_breakpoint_ops);
6841
6842   b->enable_state = bp_enabled;
6843   /* addr_string has to be used or breakpoint_re_set will delete me.  */
6844   b->addr_string
6845     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
6846
6847   update_global_location_list_nothrow (1);
6848
6849   return b;
6850 }
6851
6852 void
6853 remove_thread_event_breakpoints (void)
6854 {
6855   struct breakpoint *b, *b_tmp;
6856
6857   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6858     if (b->type == bp_thread_event
6859         && b->loc->pspace == current_program_space)
6860       delete_breakpoint (b);
6861 }
6862
6863 struct lang_and_radix
6864   {
6865     enum language lang;
6866     int radix;
6867   };
6868
6869 /* Create a breakpoint for JIT code registration and unregistration.  */
6870
6871 struct breakpoint *
6872 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6873 {
6874   struct breakpoint *b;
6875
6876   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
6877                                   &internal_breakpoint_ops);
6878   update_global_location_list_nothrow (1);
6879   return b;
6880 }
6881
6882 /* Remove JIT code registration and unregistration breakpoint(s).  */
6883
6884 void
6885 remove_jit_event_breakpoints (void)
6886 {
6887   struct breakpoint *b, *b_tmp;
6888
6889   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6890     if (b->type == bp_jit_event
6891         && b->loc->pspace == current_program_space)
6892       delete_breakpoint (b);
6893 }
6894
6895 void
6896 remove_solib_event_breakpoints (void)
6897 {
6898   struct breakpoint *b, *b_tmp;
6899
6900   ALL_BREAKPOINTS_SAFE (b, b_tmp)
6901     if (b->type == bp_shlib_event
6902         && b->loc->pspace == current_program_space)
6903       delete_breakpoint (b);
6904 }
6905
6906 struct breakpoint *
6907 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
6908 {
6909   struct breakpoint *b;
6910
6911   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
6912                                   &internal_breakpoint_ops);
6913   update_global_location_list_nothrow (1);
6914   return b;
6915 }
6916
6917 /* Disable any breakpoints that are on code in shared libraries.  Only
6918    apply to enabled breakpoints, disabled ones can just stay disabled.  */
6919
6920 void
6921 disable_breakpoints_in_shlibs (void)
6922 {
6923   struct bp_location *loc, **locp_tmp;
6924
6925   ALL_BP_LOCATIONS (loc, locp_tmp)
6926   {
6927     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6928     struct breakpoint *b = loc->owner;
6929
6930     /* We apply the check to all breakpoints, including disabled for
6931        those with loc->duplicate set.  This is so that when breakpoint
6932        becomes enabled, or the duplicate is removed, gdb will try to
6933        insert all breakpoints.  If we don't set shlib_disabled here,
6934        we'll try to insert those breakpoints and fail.  */
6935     if (((b->type == bp_breakpoint)
6936          || (b->type == bp_jit_event)
6937          || (b->type == bp_hardware_breakpoint)
6938          || (is_tracepoint (b)))
6939         && loc->pspace == current_program_space
6940         && !loc->shlib_disabled
6941 #ifdef PC_SOLIB
6942         && PC_SOLIB (loc->address)
6943 #else
6944         && solib_name_from_address (loc->pspace, loc->address)
6945 #endif
6946         )
6947       {
6948         loc->shlib_disabled = 1;
6949       }
6950   }
6951 }
6952
6953 /* Disable any breakpoints and tracepoints that are in an unloaded shared
6954    library.  Only apply to enabled breakpoints, disabled ones can just stay
6955    disabled.  */
6956
6957 static void
6958 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
6959 {
6960   struct bp_location *loc, **locp_tmp;
6961   int disabled_shlib_breaks = 0;
6962
6963   /* SunOS a.out shared libraries are always mapped, so do not
6964      disable breakpoints; they will only be reported as unloaded
6965      through clear_solib when GDB discards its shared library
6966      list.  See clear_solib for more information.  */
6967   if (exec_bfd != NULL
6968       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
6969     return;
6970
6971   ALL_BP_LOCATIONS (loc, locp_tmp)
6972   {
6973     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
6974     struct breakpoint *b = loc->owner;
6975
6976     if (solib->pspace == loc->pspace
6977         && !loc->shlib_disabled
6978         && (((b->type == bp_breakpoint
6979               || b->type == bp_jit_event
6980               || b->type == bp_hardware_breakpoint)
6981              && (loc->loc_type == bp_loc_hardware_breakpoint
6982                  || loc->loc_type == bp_loc_software_breakpoint))
6983             || is_tracepoint (b))
6984         && solib_contains_address_p (solib, loc->address))
6985       {
6986         loc->shlib_disabled = 1;
6987         /* At this point, we cannot rely on remove_breakpoint
6988            succeeding so we must mark the breakpoint as not inserted
6989            to prevent future errors occurring in remove_breakpoints.  */
6990         loc->inserted = 0;
6991
6992         /* This may cause duplicate notifications for the same breakpoint.  */
6993         observer_notify_breakpoint_modified (b);
6994
6995         if (!disabled_shlib_breaks)
6996           {
6997             target_terminal_ours_for_output ();
6998             warning (_("Temporarily disabling breakpoints "
6999                        "for unloaded shared library \"%s\""),
7000                      solib->so_name);
7001           }
7002         disabled_shlib_breaks = 1;
7003       }
7004   }
7005 }
7006
7007 /* FORK & VFORK catchpoints.  */
7008
7009 /* An instance of this type is used to represent a fork or vfork
7010    catchpoint.  It includes a "struct breakpoint" as a kind of base
7011    class; users downcast to "struct breakpoint *" when needed.  A
7012    breakpoint is really of this type iff its ops pointer points to
7013    CATCH_FORK_BREAKPOINT_OPS.  */
7014
7015 struct fork_catchpoint
7016 {
7017   /* The base class.  */
7018   struct breakpoint base;
7019
7020   /* Process id of a child process whose forking triggered this
7021      catchpoint.  This field is only valid immediately after this
7022      catchpoint has triggered.  */
7023   ptid_t forked_inferior_pid;
7024 };
7025
7026 /* Implement the "insert" breakpoint_ops method for fork
7027    catchpoints.  */
7028
7029 static int
7030 insert_catch_fork (struct bp_location *bl)
7031 {
7032   return target_insert_fork_catchpoint (PIDGET (inferior_ptid));
7033 }
7034
7035 /* Implement the "remove" breakpoint_ops method for fork
7036    catchpoints.  */
7037
7038 static int
7039 remove_catch_fork (struct bp_location *bl)
7040 {
7041   return target_remove_fork_catchpoint (PIDGET (inferior_ptid));
7042 }
7043
7044 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7045    catchpoints.  */
7046
7047 static int
7048 breakpoint_hit_catch_fork (const struct bp_location *bl,
7049                            struct address_space *aspace, CORE_ADDR bp_addr,
7050                            const struct target_waitstatus *ws)
7051 {
7052   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7053
7054   if (ws->kind != TARGET_WAITKIND_FORKED)
7055     return 0;
7056
7057   c->forked_inferior_pid = ws->value.related_pid;
7058   return 1;
7059 }
7060
7061 /* Implement the "print_it" breakpoint_ops method for fork
7062    catchpoints.  */
7063
7064 static enum print_stop_action
7065 print_it_catch_fork (bpstat bs)
7066 {
7067   struct ui_out *uiout = current_uiout;
7068   struct breakpoint *b = bs->breakpoint_at;
7069   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7070
7071   annotate_catchpoint (b->number);
7072   if (b->disposition == disp_del)
7073     ui_out_text (uiout, "\nTemporary catchpoint ");
7074   else
7075     ui_out_text (uiout, "\nCatchpoint ");
7076   if (ui_out_is_mi_like_p (uiout))
7077     {
7078       ui_out_field_string (uiout, "reason",
7079                            async_reason_lookup (EXEC_ASYNC_FORK));
7080       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7081     }
7082   ui_out_field_int (uiout, "bkptno", b->number);
7083   ui_out_text (uiout, " (forked process ");
7084   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7085   ui_out_text (uiout, "), ");
7086   return PRINT_SRC_AND_LOC;
7087 }
7088
7089 /* Implement the "print_one" breakpoint_ops method for fork
7090    catchpoints.  */
7091
7092 static void
7093 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7094 {
7095   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7096   struct value_print_options opts;
7097   struct ui_out *uiout = current_uiout;
7098
7099   get_user_print_options (&opts);
7100
7101   /* Field 4, the address, is omitted (which makes the columns not
7102      line up too nicely with the headers, but the effect is relatively
7103      readable).  */
7104   if (opts.addressprint)
7105     ui_out_field_skip (uiout, "addr");
7106   annotate_field (5);
7107   ui_out_text (uiout, "fork");
7108   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7109     {
7110       ui_out_text (uiout, ", process ");
7111       ui_out_field_int (uiout, "what",
7112                         ptid_get_pid (c->forked_inferior_pid));
7113       ui_out_spaces (uiout, 1);
7114     }
7115 }
7116
7117 /* Implement the "print_mention" breakpoint_ops method for fork
7118    catchpoints.  */
7119
7120 static void
7121 print_mention_catch_fork (struct breakpoint *b)
7122 {
7123   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7124 }
7125
7126 /* Implement the "print_recreate" breakpoint_ops method for fork
7127    catchpoints.  */
7128
7129 static void
7130 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7131 {
7132   fprintf_unfiltered (fp, "catch fork");
7133   print_recreate_thread (b, fp);
7134 }
7135
7136 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7137
7138 static struct breakpoint_ops catch_fork_breakpoint_ops;
7139
7140 /* Implement the "insert" breakpoint_ops method for vfork
7141    catchpoints.  */
7142
7143 static int
7144 insert_catch_vfork (struct bp_location *bl)
7145 {
7146   return target_insert_vfork_catchpoint (PIDGET (inferior_ptid));
7147 }
7148
7149 /* Implement the "remove" breakpoint_ops method for vfork
7150    catchpoints.  */
7151
7152 static int
7153 remove_catch_vfork (struct bp_location *bl)
7154 {
7155   return target_remove_vfork_catchpoint (PIDGET (inferior_ptid));
7156 }
7157
7158 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7159    catchpoints.  */
7160
7161 static int
7162 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7163                             struct address_space *aspace, CORE_ADDR bp_addr,
7164                             const struct target_waitstatus *ws)
7165 {
7166   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7167
7168   if (ws->kind != TARGET_WAITKIND_VFORKED)
7169     return 0;
7170
7171   c->forked_inferior_pid = ws->value.related_pid;
7172   return 1;
7173 }
7174
7175 /* Implement the "print_it" breakpoint_ops method for vfork
7176    catchpoints.  */
7177
7178 static enum print_stop_action
7179 print_it_catch_vfork (bpstat bs)
7180 {
7181   struct ui_out *uiout = current_uiout;
7182   struct breakpoint *b = bs->breakpoint_at;
7183   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7184
7185   annotate_catchpoint (b->number);
7186   if (b->disposition == disp_del)
7187     ui_out_text (uiout, "\nTemporary catchpoint ");
7188   else
7189     ui_out_text (uiout, "\nCatchpoint ");
7190   if (ui_out_is_mi_like_p (uiout))
7191     {
7192       ui_out_field_string (uiout, "reason",
7193                            async_reason_lookup (EXEC_ASYNC_VFORK));
7194       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7195     }
7196   ui_out_field_int (uiout, "bkptno", b->number);
7197   ui_out_text (uiout, " (vforked process ");
7198   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7199   ui_out_text (uiout, "), ");
7200   return PRINT_SRC_AND_LOC;
7201 }
7202
7203 /* Implement the "print_one" breakpoint_ops method for vfork
7204    catchpoints.  */
7205
7206 static void
7207 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7208 {
7209   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7210   struct value_print_options opts;
7211   struct ui_out *uiout = current_uiout;
7212
7213   get_user_print_options (&opts);
7214   /* Field 4, the address, is omitted (which makes the columns not
7215      line up too nicely with the headers, but the effect is relatively
7216      readable).  */
7217   if (opts.addressprint)
7218     ui_out_field_skip (uiout, "addr");
7219   annotate_field (5);
7220   ui_out_text (uiout, "vfork");
7221   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7222     {
7223       ui_out_text (uiout, ", process ");
7224       ui_out_field_int (uiout, "what",
7225                         ptid_get_pid (c->forked_inferior_pid));
7226       ui_out_spaces (uiout, 1);
7227     }
7228 }
7229
7230 /* Implement the "print_mention" breakpoint_ops method for vfork
7231    catchpoints.  */
7232
7233 static void
7234 print_mention_catch_vfork (struct breakpoint *b)
7235 {
7236   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
7237 }
7238
7239 /* Implement the "print_recreate" breakpoint_ops method for vfork
7240    catchpoints.  */
7241
7242 static void
7243 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
7244 {
7245   fprintf_unfiltered (fp, "catch vfork");
7246   print_recreate_thread (b, fp);
7247 }
7248
7249 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
7250
7251 static struct breakpoint_ops catch_vfork_breakpoint_ops;
7252
7253 /* An instance of this type is used to represent an solib catchpoint.
7254    It includes a "struct breakpoint" as a kind of base class; users
7255    downcast to "struct breakpoint *" when needed.  A breakpoint is
7256    really of this type iff its ops pointer points to
7257    CATCH_SOLIB_BREAKPOINT_OPS.  */
7258
7259 struct solib_catchpoint
7260 {
7261   /* The base class.  */
7262   struct breakpoint base;
7263
7264   /* True for "catch load", false for "catch unload".  */
7265   unsigned char is_load;
7266
7267   /* Regular expression to match, if any.  COMPILED is only valid when
7268      REGEX is non-NULL.  */
7269   char *regex;
7270   regex_t compiled;
7271 };
7272
7273 static void
7274 dtor_catch_solib (struct breakpoint *b)
7275 {
7276   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7277
7278   if (self->regex)
7279     regfree (&self->compiled);
7280   xfree (self->regex);
7281
7282   base_breakpoint_ops.dtor (b);
7283 }
7284
7285 static int
7286 insert_catch_solib (struct bp_location *ignore)
7287 {
7288   return 0;
7289 }
7290
7291 static int
7292 remove_catch_solib (struct bp_location *ignore)
7293 {
7294   return 0;
7295 }
7296
7297 static int
7298 breakpoint_hit_catch_solib (const struct bp_location *bl,
7299                             struct address_space *aspace,
7300                             CORE_ADDR bp_addr,
7301                             const struct target_waitstatus *ws)
7302 {
7303   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
7304   struct breakpoint *other;
7305
7306   if (ws->kind == TARGET_WAITKIND_LOADED)
7307     return 1;
7308
7309   ALL_BREAKPOINTS (other)
7310   {
7311     struct bp_location *other_bl;
7312
7313     if (other == bl->owner)
7314       continue;
7315
7316     if (other->type != bp_shlib_event)
7317       continue;
7318
7319     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
7320       continue;
7321
7322     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
7323       {
7324         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
7325           return 1;
7326       }
7327   }
7328
7329   return 0;
7330 }
7331
7332 static void
7333 check_status_catch_solib (struct bpstats *bs)
7334 {
7335   struct solib_catchpoint *self
7336     = (struct solib_catchpoint *) bs->breakpoint_at;
7337   int ix;
7338
7339   if (self->is_load)
7340     {
7341       struct so_list *iter;
7342
7343       for (ix = 0;
7344            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
7345                         ix, iter);
7346            ++ix)
7347         {
7348           if (!self->regex
7349               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
7350             return;
7351         }
7352     }
7353   else
7354     {
7355       char *iter;
7356
7357       for (ix = 0;
7358            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
7359                         ix, iter);
7360            ++ix)
7361         {
7362           if (!self->regex
7363               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
7364             return;
7365         }
7366     }
7367
7368   bs->stop = 0;
7369   bs->print_it = print_it_noop;
7370 }
7371
7372 static enum print_stop_action
7373 print_it_catch_solib (bpstat bs)
7374 {
7375   struct breakpoint *b = bs->breakpoint_at;
7376   struct ui_out *uiout = current_uiout;
7377
7378   annotate_catchpoint (b->number);
7379   if (b->disposition == disp_del)
7380     ui_out_text (uiout, "\nTemporary catchpoint ");
7381   else
7382     ui_out_text (uiout, "\nCatchpoint ");
7383   ui_out_field_int (uiout, "bkptno", b->number);
7384   ui_out_text (uiout, "\n");
7385   if (ui_out_is_mi_like_p (uiout))
7386     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7387   print_solib_event (1);
7388   return PRINT_SRC_AND_LOC;
7389 }
7390
7391 static void
7392 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
7393 {
7394   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7395   struct value_print_options opts;
7396   struct ui_out *uiout = current_uiout;
7397   char *msg;
7398
7399   get_user_print_options (&opts);
7400   /* Field 4, the address, is omitted (which makes the columns not
7401      line up too nicely with the headers, but the effect is relatively
7402      readable).  */
7403   if (opts.addressprint)
7404     {
7405       annotate_field (4);
7406       ui_out_field_skip (uiout, "addr");
7407     }
7408
7409   annotate_field (5);
7410   if (self->is_load)
7411     {
7412       if (self->regex)
7413         msg = xstrprintf (_("load of library matching %s"), self->regex);
7414       else
7415         msg = xstrdup (_("load of library"));
7416     }
7417   else
7418     {
7419       if (self->regex)
7420         msg = xstrprintf (_("unload of library matching %s"), self->regex);
7421       else
7422         msg = xstrdup (_("unload of library"));
7423     }
7424   ui_out_field_string (uiout, "what", msg);
7425   xfree (msg);
7426 }
7427
7428 static void
7429 print_mention_catch_solib (struct breakpoint *b)
7430 {
7431   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7432
7433   printf_filtered (_("Catchpoint %d (%s)"), b->number,
7434                    self->is_load ? "load" : "unload");
7435 }
7436
7437 static void
7438 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
7439 {
7440   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
7441
7442   fprintf_unfiltered (fp, "%s %s",
7443                       b->disposition == disp_del ? "tcatch" : "catch",
7444                       self->is_load ? "load" : "unload");
7445   if (self->regex)
7446     fprintf_unfiltered (fp, " %s", self->regex);
7447   fprintf_unfiltered (fp, "\n");
7448 }
7449
7450 static struct breakpoint_ops catch_solib_breakpoint_ops;
7451
7452 /* A helper function that does all the work for "catch load" and
7453    "catch unload".  */
7454
7455 static void
7456 catch_load_or_unload (char *arg, int from_tty, int is_load,
7457                       struct cmd_list_element *command)
7458 {
7459   struct solib_catchpoint *c;
7460   struct gdbarch *gdbarch = get_current_arch ();
7461   int tempflag;
7462   struct cleanup *cleanup;
7463
7464   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
7465
7466   if (!arg)
7467     arg = "";
7468   arg = skip_spaces (arg);
7469
7470   c = XCNEW (struct solib_catchpoint);
7471   cleanup = make_cleanup (xfree, c);
7472
7473   if (*arg != '\0')
7474     {
7475       int errcode;
7476
7477       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
7478       if (errcode != 0)
7479         {
7480           char *err = get_regcomp_error (errcode, &c->compiled);
7481
7482           make_cleanup (xfree, err);
7483           error (_("Invalid regexp (%s): %s"), err, arg);
7484         }
7485       c->regex = xstrdup (arg);
7486     }
7487
7488   c->is_load = is_load;
7489   init_catchpoint (&c->base, gdbarch, tempflag, NULL,
7490                    &catch_solib_breakpoint_ops);
7491
7492   discard_cleanups (cleanup);
7493   install_breakpoint (0, &c->base, 1);
7494 }
7495
7496 static void
7497 catch_load_command_1 (char *arg, int from_tty,
7498                       struct cmd_list_element *command)
7499 {
7500   catch_load_or_unload (arg, from_tty, 1, command);
7501 }
7502
7503 static void
7504 catch_unload_command_1 (char *arg, int from_tty,
7505                         struct cmd_list_element *command)
7506 {
7507   catch_load_or_unload (arg, from_tty, 0, command);
7508 }
7509
7510 DEF_VEC_I(int);
7511
7512 /* An instance of this type is used to represent a syscall catchpoint.
7513    It includes a "struct breakpoint" as a kind of base class; users
7514    downcast to "struct breakpoint *" when needed.  A breakpoint is
7515    really of this type iff its ops pointer points to
7516    CATCH_SYSCALL_BREAKPOINT_OPS.  */
7517
7518 struct syscall_catchpoint
7519 {
7520   /* The base class.  */
7521   struct breakpoint base;
7522
7523   /* Syscall numbers used for the 'catch syscall' feature.  If no
7524      syscall has been specified for filtering, its value is NULL.
7525      Otherwise, it holds a list of all syscalls to be caught.  The
7526      list elements are allocated with xmalloc.  */
7527   VEC(int) *syscalls_to_be_caught;
7528 };
7529
7530 /* Implement the "dtor" breakpoint_ops method for syscall
7531    catchpoints.  */
7532
7533 static void
7534 dtor_catch_syscall (struct breakpoint *b)
7535 {
7536   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7537
7538   VEC_free (int, c->syscalls_to_be_caught);
7539
7540   base_breakpoint_ops.dtor (b);
7541 }
7542
7543 static const struct inferior_data *catch_syscall_inferior_data = NULL;
7544
7545 struct catch_syscall_inferior_data
7546 {
7547   /* We keep a count of the number of times the user has requested a
7548      particular syscall to be tracked, and pass this information to the
7549      target.  This lets capable targets implement filtering directly.  */
7550
7551   /* Number of times that "any" syscall is requested.  */
7552   int any_syscall_count;
7553
7554   /* Count of each system call.  */
7555   VEC(int) *syscalls_counts;
7556
7557   /* This counts all syscall catch requests, so we can readily determine
7558      if any catching is necessary.  */
7559   int total_syscalls_count;
7560 };
7561
7562 static struct catch_syscall_inferior_data*
7563 get_catch_syscall_inferior_data (struct inferior *inf)
7564 {
7565   struct catch_syscall_inferior_data *inf_data;
7566
7567   inf_data = inferior_data (inf, catch_syscall_inferior_data);
7568   if (inf_data == NULL)
7569     {
7570       inf_data = XZALLOC (struct catch_syscall_inferior_data);
7571       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
7572     }
7573
7574   return inf_data;
7575 }
7576
7577 static void
7578 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
7579 {
7580   xfree (arg);
7581 }
7582
7583
7584 /* Implement the "insert" breakpoint_ops method for syscall
7585    catchpoints.  */
7586
7587 static int
7588 insert_catch_syscall (struct bp_location *bl)
7589 {
7590   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7591   struct inferior *inf = current_inferior ();
7592   struct catch_syscall_inferior_data *inf_data
7593     = get_catch_syscall_inferior_data (inf);
7594
7595   ++inf_data->total_syscalls_count;
7596   if (!c->syscalls_to_be_caught)
7597     ++inf_data->any_syscall_count;
7598   else
7599     {
7600       int i, iter;
7601
7602       for (i = 0;
7603            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7604            i++)
7605         {
7606           int elem;
7607
7608           if (iter >= VEC_length (int, inf_data->syscalls_counts))
7609             {
7610               int old_size = VEC_length (int, inf_data->syscalls_counts);
7611               uintptr_t vec_addr_offset
7612                 = old_size * ((uintptr_t) sizeof (int));
7613               uintptr_t vec_addr;
7614               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
7615               vec_addr = ((uintptr_t) VEC_address (int,
7616                                                   inf_data->syscalls_counts)
7617                           + vec_addr_offset);
7618               memset ((void *) vec_addr, 0,
7619                       (iter + 1 - old_size) * sizeof (int));
7620             }
7621           elem = VEC_index (int, inf_data->syscalls_counts, iter);
7622           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
7623         }
7624     }
7625
7626   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7627                                         inf_data->total_syscalls_count != 0,
7628                                         inf_data->any_syscall_count,
7629                                         VEC_length (int,
7630                                                     inf_data->syscalls_counts),
7631                                         VEC_address (int,
7632                                                      inf_data->syscalls_counts));
7633 }
7634
7635 /* Implement the "remove" breakpoint_ops method for syscall
7636    catchpoints.  */
7637
7638 static int
7639 remove_catch_syscall (struct bp_location *bl)
7640 {
7641   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
7642   struct inferior *inf = current_inferior ();
7643   struct catch_syscall_inferior_data *inf_data
7644     = get_catch_syscall_inferior_data (inf);
7645
7646   --inf_data->total_syscalls_count;
7647   if (!c->syscalls_to_be_caught)
7648     --inf_data->any_syscall_count;
7649   else
7650     {
7651       int i, iter;
7652
7653       for (i = 0;
7654            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7655            i++)
7656         {
7657           int elem;
7658           if (iter >= VEC_length (int, inf_data->syscalls_counts))
7659             /* Shouldn't happen.  */
7660             continue;
7661           elem = VEC_index (int, inf_data->syscalls_counts, iter);
7662           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
7663         }
7664     }
7665
7666   return target_set_syscall_catchpoint (PIDGET (inferior_ptid),
7667                                         inf_data->total_syscalls_count != 0,
7668                                         inf_data->any_syscall_count,
7669                                         VEC_length (int,
7670                                                     inf_data->syscalls_counts),
7671                                         VEC_address (int,
7672                                                      inf_data->syscalls_counts));
7673 }
7674
7675 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
7676    catchpoints.  */
7677
7678 static int
7679 breakpoint_hit_catch_syscall (const struct bp_location *bl,
7680                               struct address_space *aspace, CORE_ADDR bp_addr,
7681                               const struct target_waitstatus *ws)
7682 {
7683   /* We must check if we are catching specific syscalls in this
7684      breakpoint.  If we are, then we must guarantee that the called
7685      syscall is the same syscall we are catching.  */
7686   int syscall_number = 0;
7687   const struct syscall_catchpoint *c
7688     = (const struct syscall_catchpoint *) bl->owner;
7689
7690   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
7691       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
7692     return 0;
7693
7694   syscall_number = ws->value.syscall_number;
7695
7696   /* Now, checking if the syscall is the same.  */
7697   if (c->syscalls_to_be_caught)
7698     {
7699       int i, iter;
7700
7701       for (i = 0;
7702            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7703            i++)
7704         if (syscall_number == iter)
7705           break;
7706       /* Not the same.  */
7707       if (!iter)
7708         return 0;
7709     }
7710
7711   return 1;
7712 }
7713
7714 /* Implement the "print_it" breakpoint_ops method for syscall
7715    catchpoints.  */
7716
7717 static enum print_stop_action
7718 print_it_catch_syscall (bpstat bs)
7719 {
7720   struct ui_out *uiout = current_uiout;
7721   struct breakpoint *b = bs->breakpoint_at;
7722   /* These are needed because we want to know in which state a
7723      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
7724      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
7725      must print "called syscall" or "returned from syscall".  */
7726   ptid_t ptid;
7727   struct target_waitstatus last;
7728   struct syscall s;
7729
7730   get_last_target_status (&ptid, &last);
7731
7732   get_syscall_by_number (last.value.syscall_number, &s);
7733
7734   annotate_catchpoint (b->number);
7735
7736   if (b->disposition == disp_del)
7737     ui_out_text (uiout, "\nTemporary catchpoint ");
7738   else
7739     ui_out_text (uiout, "\nCatchpoint ");
7740   if (ui_out_is_mi_like_p (uiout))
7741     {
7742       ui_out_field_string (uiout, "reason",
7743                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
7744                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
7745                                                 : EXEC_ASYNC_SYSCALL_RETURN));
7746       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7747     }
7748   ui_out_field_int (uiout, "bkptno", b->number);
7749
7750   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
7751     ui_out_text (uiout, " (call to syscall ");
7752   else
7753     ui_out_text (uiout, " (returned from syscall ");
7754
7755   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
7756     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
7757   if (s.name != NULL)
7758     ui_out_field_string (uiout, "syscall-name", s.name);
7759
7760   ui_out_text (uiout, "), ");
7761
7762   return PRINT_SRC_AND_LOC;
7763 }
7764
7765 /* Implement the "print_one" breakpoint_ops method for syscall
7766    catchpoints.  */
7767
7768 static void
7769 print_one_catch_syscall (struct breakpoint *b,
7770                          struct bp_location **last_loc)
7771 {
7772   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7773   struct value_print_options opts;
7774   struct ui_out *uiout = current_uiout;
7775
7776   get_user_print_options (&opts);
7777   /* Field 4, the address, is omitted (which makes the columns not
7778      line up too nicely with the headers, but the effect is relatively
7779      readable).  */
7780   if (opts.addressprint)
7781     ui_out_field_skip (uiout, "addr");
7782   annotate_field (5);
7783
7784   if (c->syscalls_to_be_caught
7785       && VEC_length (int, c->syscalls_to_be_caught) > 1)
7786     ui_out_text (uiout, "syscalls \"");
7787   else
7788     ui_out_text (uiout, "syscall \"");
7789
7790   if (c->syscalls_to_be_caught)
7791     {
7792       int i, iter;
7793       char *text = xstrprintf ("%s", "");
7794
7795       for (i = 0;
7796            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7797            i++)
7798         {
7799           char *x = text;
7800           struct syscall s;
7801           get_syscall_by_number (iter, &s);
7802
7803           if (s.name != NULL)
7804             text = xstrprintf ("%s%s, ", text, s.name);
7805           else
7806             text = xstrprintf ("%s%d, ", text, iter);
7807
7808           /* We have to xfree the last 'text' (now stored at 'x')
7809              because xstrprintf dynamically allocates new space for it
7810              on every call.  */
7811           xfree (x);
7812         }
7813       /* Remove the last comma.  */
7814       text[strlen (text) - 2] = '\0';
7815       ui_out_field_string (uiout, "what", text);
7816     }
7817   else
7818     ui_out_field_string (uiout, "what", "<any syscall>");
7819   ui_out_text (uiout, "\" ");
7820 }
7821
7822 /* Implement the "print_mention" breakpoint_ops method for syscall
7823    catchpoints.  */
7824
7825 static void
7826 print_mention_catch_syscall (struct breakpoint *b)
7827 {
7828   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7829
7830   if (c->syscalls_to_be_caught)
7831     {
7832       int i, iter;
7833
7834       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
7835         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
7836       else
7837         printf_filtered (_("Catchpoint %d (syscall"), b->number);
7838
7839       for (i = 0;
7840            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7841            i++)
7842         {
7843           struct syscall s;
7844           get_syscall_by_number (iter, &s);
7845
7846           if (s.name)
7847             printf_filtered (" '%s' [%d]", s.name, s.number);
7848           else
7849             printf_filtered (" %d", s.number);
7850         }
7851       printf_filtered (")");
7852     }
7853   else
7854     printf_filtered (_("Catchpoint %d (any syscall)"),
7855                      b->number);
7856 }
7857
7858 /* Implement the "print_recreate" breakpoint_ops method for syscall
7859    catchpoints.  */
7860
7861 static void
7862 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
7863 {
7864   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
7865
7866   fprintf_unfiltered (fp, "catch syscall");
7867
7868   if (c->syscalls_to_be_caught)
7869     {
7870       int i, iter;
7871
7872       for (i = 0;
7873            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
7874            i++)
7875         {
7876           struct syscall s;
7877
7878           get_syscall_by_number (iter, &s);
7879           if (s.name)
7880             fprintf_unfiltered (fp, " %s", s.name);
7881           else
7882             fprintf_unfiltered (fp, " %d", s.number);
7883         }
7884     }
7885   print_recreate_thread (b, fp);
7886 }
7887
7888 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
7889
7890 static struct breakpoint_ops catch_syscall_breakpoint_ops;
7891
7892 /* Returns non-zero if 'b' is a syscall catchpoint.  */
7893
7894 static int
7895 syscall_catchpoint_p (struct breakpoint *b)
7896 {
7897   return (b->ops == &catch_syscall_breakpoint_ops);
7898 }
7899
7900 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
7901    is non-zero, then make the breakpoint temporary.  If COND_STRING is
7902    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
7903    the breakpoint_ops structure associated to the catchpoint.  */
7904
7905 static void
7906 init_catchpoint (struct breakpoint *b,
7907                  struct gdbarch *gdbarch, int tempflag,
7908                  char *cond_string,
7909                  const struct breakpoint_ops *ops)
7910 {
7911   struct symtab_and_line sal;
7912
7913   init_sal (&sal);
7914   sal.pspace = current_program_space;
7915
7916   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
7917
7918   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
7919   b->disposition = tempflag ? disp_del : disp_donttouch;
7920 }
7921
7922 void
7923 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
7924 {
7925   add_to_breakpoint_chain (b);
7926   set_breakpoint_number (internal, b);
7927   if (!internal)
7928     mention (b);
7929   observer_notify_breakpoint_created (b);
7930
7931   if (update_gll)
7932     update_global_location_list (1);
7933 }
7934
7935 static void
7936 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
7937                                     int tempflag, char *cond_string,
7938                                     const struct breakpoint_ops *ops)
7939 {
7940   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
7941
7942   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
7943
7944   c->forked_inferior_pid = null_ptid;
7945
7946   install_breakpoint (0, &c->base, 1);
7947 }
7948
7949 /* Exec catchpoints.  */
7950
7951 /* An instance of this type is used to represent an exec catchpoint.
7952    It includes a "struct breakpoint" as a kind of base class; users
7953    downcast to "struct breakpoint *" when needed.  A breakpoint is
7954    really of this type iff its ops pointer points to
7955    CATCH_EXEC_BREAKPOINT_OPS.  */
7956
7957 struct exec_catchpoint
7958 {
7959   /* The base class.  */
7960   struct breakpoint base;
7961
7962   /* Filename of a program whose exec triggered this catchpoint.
7963      This field is only valid immediately after this catchpoint has
7964      triggered.  */
7965   char *exec_pathname;
7966 };
7967
7968 /* Implement the "dtor" breakpoint_ops method for exec
7969    catchpoints.  */
7970
7971 static void
7972 dtor_catch_exec (struct breakpoint *b)
7973 {
7974   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
7975
7976   xfree (c->exec_pathname);
7977
7978   base_breakpoint_ops.dtor (b);
7979 }
7980
7981 static int
7982 insert_catch_exec (struct bp_location *bl)
7983 {
7984   return target_insert_exec_catchpoint (PIDGET (inferior_ptid));
7985 }
7986
7987 static int
7988 remove_catch_exec (struct bp_location *bl)
7989 {
7990   return target_remove_exec_catchpoint (PIDGET (inferior_ptid));
7991 }
7992
7993 static int
7994 breakpoint_hit_catch_exec (const struct bp_location *bl,
7995                            struct address_space *aspace, CORE_ADDR bp_addr,
7996                            const struct target_waitstatus *ws)
7997 {
7998   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
7999
8000   if (ws->kind != TARGET_WAITKIND_EXECD)
8001     return 0;
8002
8003   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8004   return 1;
8005 }
8006
8007 static enum print_stop_action
8008 print_it_catch_exec (bpstat bs)
8009 {
8010   struct ui_out *uiout = current_uiout;
8011   struct breakpoint *b = bs->breakpoint_at;
8012   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8013
8014   annotate_catchpoint (b->number);
8015   if (b->disposition == disp_del)
8016     ui_out_text (uiout, "\nTemporary catchpoint ");
8017   else
8018     ui_out_text (uiout, "\nCatchpoint ");
8019   if (ui_out_is_mi_like_p (uiout))
8020     {
8021       ui_out_field_string (uiout, "reason",
8022                            async_reason_lookup (EXEC_ASYNC_EXEC));
8023       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8024     }
8025   ui_out_field_int (uiout, "bkptno", b->number);
8026   ui_out_text (uiout, " (exec'd ");
8027   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8028   ui_out_text (uiout, "), ");
8029
8030   return PRINT_SRC_AND_LOC;
8031 }
8032
8033 static void
8034 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8035 {
8036   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8037   struct value_print_options opts;
8038   struct ui_out *uiout = current_uiout;
8039
8040   get_user_print_options (&opts);
8041
8042   /* Field 4, the address, is omitted (which makes the columns
8043      not line up too nicely with the headers, but the effect
8044      is relatively readable).  */
8045   if (opts.addressprint)
8046     ui_out_field_skip (uiout, "addr");
8047   annotate_field (5);
8048   ui_out_text (uiout, "exec");
8049   if (c->exec_pathname != NULL)
8050     {
8051       ui_out_text (uiout, ", program \"");
8052       ui_out_field_string (uiout, "what", c->exec_pathname);
8053       ui_out_text (uiout, "\" ");
8054     }
8055 }
8056
8057 static void
8058 print_mention_catch_exec (struct breakpoint *b)
8059 {
8060   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8061 }
8062
8063 /* Implement the "print_recreate" breakpoint_ops method for exec
8064    catchpoints.  */
8065
8066 static void
8067 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8068 {
8069   fprintf_unfiltered (fp, "catch exec");
8070   print_recreate_thread (b, fp);
8071 }
8072
8073 static struct breakpoint_ops catch_exec_breakpoint_ops;
8074
8075 static void
8076 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8077                                  const struct breakpoint_ops *ops)
8078 {
8079   struct syscall_catchpoint *c;
8080   struct gdbarch *gdbarch = get_current_arch ();
8081
8082   c = XNEW (struct syscall_catchpoint);
8083   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8084   c->syscalls_to_be_caught = filter;
8085
8086   install_breakpoint (0, &c->base, 1);
8087 }
8088
8089 static int
8090 hw_breakpoint_used_count (void)
8091 {
8092   int i = 0;
8093   struct breakpoint *b;
8094   struct bp_location *bl;
8095
8096   ALL_BREAKPOINTS (b)
8097   {
8098     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8099       for (bl = b->loc; bl; bl = bl->next)
8100         {
8101           /* Special types of hardware breakpoints may use more than
8102              one register.  */
8103           i += b->ops->resources_needed (bl);
8104         }
8105   }
8106
8107   return i;
8108 }
8109
8110 /* Returns the resources B would use if it were a hardware
8111    watchpoint.  */
8112
8113 static int
8114 hw_watchpoint_use_count (struct breakpoint *b)
8115 {
8116   int i = 0;
8117   struct bp_location *bl;
8118
8119   if (!breakpoint_enabled (b))
8120     return 0;
8121
8122   for (bl = b->loc; bl; bl = bl->next)
8123     {
8124       /* Special types of hardware watchpoints may use more than
8125          one register.  */
8126       i += b->ops->resources_needed (bl);
8127     }
8128
8129   return i;
8130 }
8131
8132 /* Returns the sum the used resources of all hardware watchpoints of
8133    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8134    the sum of the used resources of all hardware watchpoints of other
8135    types _not_ TYPE.  */
8136
8137 static int
8138 hw_watchpoint_used_count_others (struct breakpoint *except,
8139                                  enum bptype type, int *other_type_used)
8140 {
8141   int i = 0;
8142   struct breakpoint *b;
8143
8144   *other_type_used = 0;
8145   ALL_BREAKPOINTS (b)
8146     {
8147       if (b == except)
8148         continue;
8149       if (!breakpoint_enabled (b))
8150         continue;
8151
8152       if (b->type == type)
8153         i += hw_watchpoint_use_count (b);
8154       else if (is_hardware_watchpoint (b))
8155         *other_type_used = 1;
8156     }
8157
8158   return i;
8159 }
8160
8161 void
8162 disable_watchpoints_before_interactive_call_start (void)
8163 {
8164   struct breakpoint *b;
8165
8166   ALL_BREAKPOINTS (b)
8167   {
8168     if (is_watchpoint (b) && breakpoint_enabled (b))
8169       {
8170         b->enable_state = bp_call_disabled;
8171         update_global_location_list (0);
8172       }
8173   }
8174 }
8175
8176 void
8177 enable_watchpoints_after_interactive_call_stop (void)
8178 {
8179   struct breakpoint *b;
8180
8181   ALL_BREAKPOINTS (b)
8182   {
8183     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8184       {
8185         b->enable_state = bp_enabled;
8186         update_global_location_list (1);
8187       }
8188   }
8189 }
8190
8191 void
8192 disable_breakpoints_before_startup (void)
8193 {
8194   current_program_space->executing_startup = 1;
8195   update_global_location_list (0);
8196 }
8197
8198 void
8199 enable_breakpoints_after_startup (void)
8200 {
8201   current_program_space->executing_startup = 0;
8202   breakpoint_re_set ();
8203 }
8204
8205
8206 /* Set a breakpoint that will evaporate an end of command
8207    at address specified by SAL.
8208    Restrict it to frame FRAME if FRAME is nonzero.  */
8209
8210 struct breakpoint *
8211 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8212                           struct frame_id frame_id, enum bptype type)
8213 {
8214   struct breakpoint *b;
8215
8216   /* If FRAME_ID is valid, it should be a real frame, not an inlined
8217      one.  */
8218   gdb_assert (!frame_id_inlined_p (frame_id));
8219
8220   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8221   b->enable_state = bp_enabled;
8222   b->disposition = disp_donttouch;
8223   b->frame_id = frame_id;
8224
8225   /* If we're debugging a multi-threaded program, then we want
8226      momentary breakpoints to be active in only a single thread of
8227      control.  */
8228   if (in_thread_list (inferior_ptid))
8229     b->thread = pid_to_thread_id (inferior_ptid);
8230
8231   update_global_location_list_nothrow (1);
8232
8233   return b;
8234 }
8235
8236 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8237    The new breakpoint will have type TYPE, and use OPS as it
8238    breakpoint_ops.  */
8239
8240 static struct breakpoint *
8241 momentary_breakpoint_from_master (struct breakpoint *orig,
8242                                   enum bptype type,
8243                                   const struct breakpoint_ops *ops)
8244 {
8245   struct breakpoint *copy;
8246
8247   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8248   copy->loc = allocate_bp_location (copy);
8249   set_breakpoint_location_function (copy->loc, 1);
8250
8251   copy->loc->gdbarch = orig->loc->gdbarch;
8252   copy->loc->requested_address = orig->loc->requested_address;
8253   copy->loc->address = orig->loc->address;
8254   copy->loc->section = orig->loc->section;
8255   copy->loc->pspace = orig->loc->pspace;
8256   copy->loc->probe = orig->loc->probe;
8257
8258   if (orig->loc->source_file != NULL)
8259     copy->loc->source_file = xstrdup (orig->loc->source_file);
8260
8261   copy->loc->line_number = orig->loc->line_number;
8262   copy->frame_id = orig->frame_id;
8263   copy->thread = orig->thread;
8264   copy->pspace = orig->pspace;
8265
8266   copy->enable_state = bp_enabled;
8267   copy->disposition = disp_donttouch;
8268   copy->number = internal_breakpoint_number--;
8269
8270   update_global_location_list_nothrow (0);
8271   return copy;
8272 }
8273
8274 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8275    ORIG is NULL.  */
8276
8277 struct breakpoint *
8278 clone_momentary_breakpoint (struct breakpoint *orig)
8279 {
8280   /* If there's nothing to clone, then return nothing.  */
8281   if (orig == NULL)
8282     return NULL;
8283
8284   return momentary_breakpoint_from_master (orig, orig->type, orig->ops);
8285 }
8286
8287 struct breakpoint *
8288 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8289                                 enum bptype type)
8290 {
8291   struct symtab_and_line sal;
8292
8293   sal = find_pc_line (pc, 0);
8294   sal.pc = pc;
8295   sal.section = find_pc_overlay (pc);
8296   sal.explicit_pc = 1;
8297
8298   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8299 }
8300 \f
8301
8302 /* Tell the user we have just set a breakpoint B.  */
8303
8304 static void
8305 mention (struct breakpoint *b)
8306 {
8307   b->ops->print_mention (b);
8308   if (ui_out_is_mi_like_p (current_uiout))
8309     return;
8310   printf_filtered ("\n");
8311 }
8312 \f
8313
8314 static struct bp_location *
8315 add_location_to_breakpoint (struct breakpoint *b,
8316                             const struct symtab_and_line *sal)
8317 {
8318   struct bp_location *loc, **tmp;
8319   CORE_ADDR adjusted_address;
8320   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8321
8322   if (loc_gdbarch == NULL)
8323     loc_gdbarch = b->gdbarch;
8324
8325   /* Adjust the breakpoint's address prior to allocating a location.
8326      Once we call allocate_bp_location(), that mostly uninitialized
8327      location will be placed on the location chain.  Adjustment of the
8328      breakpoint may cause target_read_memory() to be called and we do
8329      not want its scan of the location chain to find a breakpoint and
8330      location that's only been partially initialized.  */
8331   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8332                                                 sal->pc, b->type);
8333
8334   loc = allocate_bp_location (b);
8335   for (tmp = &(b->loc); *tmp != NULL; tmp = &((*tmp)->next))
8336     ;
8337   *tmp = loc;
8338
8339   loc->requested_address = sal->pc;
8340   loc->address = adjusted_address;
8341   loc->pspace = sal->pspace;
8342   loc->probe = sal->probe;
8343   gdb_assert (loc->pspace != NULL);
8344   loc->section = sal->section;
8345   loc->gdbarch = loc_gdbarch;
8346
8347   if (sal->symtab != NULL)
8348     loc->source_file = xstrdup (sal->symtab->filename);
8349   loc->line_number = sal->line;
8350
8351   set_breakpoint_location_function (loc,
8352                                     sal->explicit_pc || sal->explicit_line);
8353   return loc;
8354 }
8355 \f
8356
8357 /* Return 1 if LOC is pointing to a permanent breakpoint, 
8358    return 0 otherwise.  */
8359
8360 static int
8361 bp_loc_is_permanent (struct bp_location *loc)
8362 {
8363   int len;
8364   CORE_ADDR addr;
8365   const gdb_byte *bpoint;
8366   gdb_byte *target_mem;
8367   struct cleanup *cleanup;
8368   int retval = 0;
8369
8370   gdb_assert (loc != NULL);
8371
8372   addr = loc->address;
8373   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
8374
8375   /* Software breakpoints unsupported?  */
8376   if (bpoint == NULL)
8377     return 0;
8378
8379   target_mem = alloca (len);
8380
8381   /* Enable the automatic memory restoration from breakpoints while
8382      we read the memory.  Otherwise we could say about our temporary
8383      breakpoints they are permanent.  */
8384   cleanup = save_current_space_and_thread ();
8385
8386   switch_to_program_space_and_thread (loc->pspace);
8387   make_show_memory_breakpoints_cleanup (0);
8388
8389   if (target_read_memory (loc->address, target_mem, len) == 0
8390       && memcmp (target_mem, bpoint, len) == 0)
8391     retval = 1;
8392
8393   do_cleanups (cleanup);
8394
8395   return retval;
8396 }
8397
8398 /* The style in which to perform a dynamic printf.  This is a user
8399    option because different output options have different tradeoffs;
8400    if GDB does the printing, there is better error handling if there
8401    is a problem with any of the arguments, but using an inferior
8402    function lets you have special-purpose printers and sending of
8403    output to the same place as compiled-in print functions.  (Future
8404    styles may include the ability to do a target-side printf.)  */
8405
8406 static const char dprintf_style_gdb[] = "gdb";
8407 static const char dprintf_style_call[] = "call";
8408 static const char *const dprintf_style_enums[] = {
8409   dprintf_style_gdb,
8410   dprintf_style_call,
8411   NULL
8412 };
8413 static const char *dprintf_style = dprintf_style_gdb;
8414
8415 /* The function to use for dynamic printf if the preferred style is to
8416    call into the inferior.  The value is simply a string that is
8417    copied into the command, so it can be anything that GDB can
8418    evaluate to a callable address, not necessarily a function name.  */
8419
8420 static char *dprintf_function = "";
8421
8422 /* The channel to use for dynamic printf if the preferred style is to
8423    call into the inferior; if a nonempty string, it will be passed to
8424    the call as the first argument, with the format string as the
8425    second.  As with the dprintf function, this can be anything that
8426    GDB knows how to evaluate, so in addition to common choices like
8427    "stderr", this could be an app-specific expression like
8428    "mystreams[curlogger]".  */
8429
8430 static char *dprintf_channel = "";
8431
8432 /* Build a command list for the dprintf corresponding to the current
8433    settings of the dprintf style options.  */
8434
8435 static void
8436 update_dprintf_command_list (struct breakpoint *b)
8437 {
8438   char *dprintf_args = b->extra_string;
8439   char *printf_line = NULL;
8440
8441   if (!dprintf_args)
8442     return;
8443
8444   dprintf_args = skip_spaces (dprintf_args);
8445
8446   /* Allow a comma, as it may have terminated a location, but don't
8447      insist on it.  */
8448   if (*dprintf_args == ',')
8449     ++dprintf_args;
8450   dprintf_args = skip_spaces (dprintf_args);
8451
8452   if (*dprintf_args != '"')
8453     error (_("Bad format string, missing '\"'."));
8454
8455   if (strcmp (dprintf_style, "gdb") == 0)
8456     printf_line = xstrprintf ("printf %s", dprintf_args);
8457   else if (strcmp (dprintf_style, "call") == 0)
8458     {
8459       if (!dprintf_function)
8460         error (_("No function supplied for dprintf call"));
8461
8462       if (dprintf_channel && strlen (dprintf_channel) > 0)
8463         printf_line = xstrprintf ("call (void) %s (%s,%s)",
8464                                   dprintf_function,
8465                                   dprintf_channel,
8466                                   dprintf_args);
8467       else
8468         printf_line = xstrprintf ("call (void) %s (%s)",
8469                                   dprintf_function,
8470                                   dprintf_args);
8471     }
8472   else
8473     internal_error (__FILE__, __LINE__,
8474                     _("Invalid dprintf style."));
8475
8476   /* Manufacture a printf/continue sequence.  */
8477   if (printf_line)
8478     {
8479       struct command_line *printf_cmd_line, *cont_cmd_line = NULL;
8480
8481       cont_cmd_line = xmalloc (sizeof (struct command_line));
8482       cont_cmd_line->control_type = simple_control;
8483       cont_cmd_line->body_count = 0;
8484       cont_cmd_line->body_list = NULL;
8485       cont_cmd_line->next = NULL;
8486       cont_cmd_line->line = xstrdup ("continue");
8487
8488       printf_cmd_line = xmalloc (sizeof (struct command_line));
8489       printf_cmd_line->control_type = simple_control;
8490       printf_cmd_line->body_count = 0;
8491       printf_cmd_line->body_list = NULL;
8492       printf_cmd_line->next = cont_cmd_line;
8493       printf_cmd_line->line = printf_line;
8494
8495       breakpoint_set_commands (b, printf_cmd_line);
8496     }
8497 }
8498
8499 /* Update all dprintf commands, making their command lists reflect
8500    current style settings.  */
8501
8502 static void
8503 update_dprintf_commands (char *args, int from_tty,
8504                          struct cmd_list_element *c)
8505 {
8506   struct breakpoint *b;
8507
8508   ALL_BREAKPOINTS (b)
8509     {
8510       if (b->type == bp_dprintf)
8511         update_dprintf_command_list (b);
8512     }
8513 }
8514
8515 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
8516    as textual description of the location, and COND_STRING
8517    as condition expression.  */
8518
8519 static void
8520 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
8521                      struct symtabs_and_lines sals, char *addr_string,
8522                      char *filter, char *cond_string,
8523                      char *extra_string,
8524                      enum bptype type, enum bpdisp disposition,
8525                      int thread, int task, int ignore_count,
8526                      const struct breakpoint_ops *ops, int from_tty,
8527                      int enabled, int internal, unsigned flags,
8528                      int display_canonical)
8529 {
8530   int i;
8531
8532   if (type == bp_hardware_breakpoint)
8533     {
8534       int target_resources_ok;
8535
8536       i = hw_breakpoint_used_count ();
8537       target_resources_ok =
8538         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
8539                                             i + 1, 0);
8540       if (target_resources_ok == 0)
8541         error (_("No hardware breakpoint support in the target."));
8542       else if (target_resources_ok < 0)
8543         error (_("Hardware breakpoints used exceeds limit."));
8544     }
8545
8546   gdb_assert (sals.nelts > 0);
8547
8548   for (i = 0; i < sals.nelts; ++i)
8549     {
8550       struct symtab_and_line sal = sals.sals[i];
8551       struct bp_location *loc;
8552
8553       if (from_tty)
8554         {
8555           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
8556           if (!loc_gdbarch)
8557             loc_gdbarch = gdbarch;
8558
8559           describe_other_breakpoints (loc_gdbarch,
8560                                       sal.pspace, sal.pc, sal.section, thread);
8561         }
8562
8563       if (i == 0)
8564         {
8565           init_raw_breakpoint (b, gdbarch, sal, type, ops);
8566           b->thread = thread;
8567           b->task = task;
8568
8569           b->cond_string = cond_string;
8570           b->extra_string = extra_string;
8571           b->ignore_count = ignore_count;
8572           b->enable_state = enabled ? bp_enabled : bp_disabled;
8573           b->disposition = disposition;
8574
8575           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8576             b->loc->inserted = 1;
8577
8578           if (type == bp_static_tracepoint)
8579             {
8580               struct tracepoint *t = (struct tracepoint *) b;
8581               struct static_tracepoint_marker marker;
8582
8583               if (strace_marker_p (b))
8584                 {
8585                   /* We already know the marker exists, otherwise, we
8586                      wouldn't see a sal for it.  */
8587                   char *p = &addr_string[3];
8588                   char *endp;
8589                   char *marker_str;
8590
8591                   p = skip_spaces (p);
8592
8593                   endp = skip_to_space (p);
8594
8595                   marker_str = savestring (p, endp - p);
8596                   t->static_trace_marker_id = marker_str;
8597
8598                   printf_filtered (_("Probed static tracepoint "
8599                                      "marker \"%s\"\n"),
8600                                    t->static_trace_marker_id);
8601                 }
8602               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
8603                 {
8604                   t->static_trace_marker_id = xstrdup (marker.str_id);
8605                   release_static_tracepoint_marker (&marker);
8606
8607                   printf_filtered (_("Probed static tracepoint "
8608                                      "marker \"%s\"\n"),
8609                                    t->static_trace_marker_id);
8610                 }
8611               else
8612                 warning (_("Couldn't determine the static "
8613                            "tracepoint marker to probe"));
8614             }
8615
8616           loc = b->loc;
8617         }
8618       else
8619         {
8620           loc = add_location_to_breakpoint (b, &sal);
8621           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
8622             loc->inserted = 1;
8623         }
8624
8625       if (bp_loc_is_permanent (loc))
8626         make_breakpoint_permanent (b);
8627
8628       if (b->cond_string)
8629         {
8630           char *arg = b->cond_string;
8631           loc->cond = parse_exp_1 (&arg, block_for_pc (loc->address), 0);
8632           if (*arg)
8633               error (_("Garbage '%s' follows condition"), arg);
8634         }
8635
8636       /* Dynamic printf requires and uses additional arguments on the
8637          command line, otherwise it's an error.  */
8638       if (type == bp_dprintf)
8639         {
8640           if (b->extra_string)
8641             update_dprintf_command_list (b);
8642           else
8643             error (_("Format string required"));
8644         }
8645       else if (b->extra_string)
8646         error (_("Garbage '%s' at end of command"), b->extra_string);
8647     }
8648
8649   b->display_canonical = display_canonical;
8650   if (addr_string)
8651     b->addr_string = addr_string;
8652   else
8653     /* addr_string has to be used or breakpoint_re_set will delete
8654        me.  */
8655     b->addr_string
8656       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
8657   b->filter = filter;
8658 }
8659
8660 static void
8661 create_breakpoint_sal (struct gdbarch *gdbarch,
8662                        struct symtabs_and_lines sals, char *addr_string,
8663                        char *filter, char *cond_string,
8664                        char *extra_string,
8665                        enum bptype type, enum bpdisp disposition,
8666                        int thread, int task, int ignore_count,
8667                        const struct breakpoint_ops *ops, int from_tty,
8668                        int enabled, int internal, unsigned flags,
8669                        int display_canonical)
8670 {
8671   struct breakpoint *b;
8672   struct cleanup *old_chain;
8673
8674   if (is_tracepoint_type (type))
8675     {
8676       struct tracepoint *t;
8677
8678       t = XCNEW (struct tracepoint);
8679       b = &t->base;
8680     }
8681   else
8682     b = XNEW (struct breakpoint);
8683
8684   old_chain = make_cleanup (xfree, b);
8685
8686   init_breakpoint_sal (b, gdbarch,
8687                        sals, addr_string,
8688                        filter, cond_string, extra_string,
8689                        type, disposition,
8690                        thread, task, ignore_count,
8691                        ops, from_tty,
8692                        enabled, internal, flags,
8693                        display_canonical);
8694   discard_cleanups (old_chain);
8695
8696   install_breakpoint (internal, b, 0);
8697 }
8698
8699 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
8700    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
8701    value.  COND_STRING, if not NULL, specified the condition to be
8702    used for all breakpoints.  Essentially the only case where
8703    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
8704    function.  In that case, it's still not possible to specify
8705    separate conditions for different overloaded functions, so
8706    we take just a single condition string.
8707    
8708    NOTE: If the function succeeds, the caller is expected to cleanup
8709    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
8710    array contents).  If the function fails (error() is called), the
8711    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
8712    COND and SALS arrays and each of those arrays contents.  */
8713
8714 static void
8715 create_breakpoints_sal (struct gdbarch *gdbarch,
8716                         struct linespec_result *canonical,
8717                         char *cond_string, char *extra_string,
8718                         enum bptype type, enum bpdisp disposition,
8719                         int thread, int task, int ignore_count,
8720                         const struct breakpoint_ops *ops, int from_tty,
8721                         int enabled, int internal, unsigned flags)
8722 {
8723   int i;
8724   struct linespec_sals *lsal;
8725
8726   if (canonical->pre_expanded)
8727     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
8728
8729   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
8730     {
8731       /* Note that 'addr_string' can be NULL in the case of a plain
8732          'break', without arguments.  */
8733       char *addr_string = (canonical->addr_string
8734                            ? xstrdup (canonical->addr_string)
8735                            : NULL);
8736       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
8737       struct cleanup *inner = make_cleanup (xfree, addr_string);
8738
8739       make_cleanup (xfree, filter_string);
8740       create_breakpoint_sal (gdbarch, lsal->sals,
8741                              addr_string,
8742                              filter_string,
8743                              cond_string, extra_string,
8744                              type, disposition,
8745                              thread, task, ignore_count, ops,
8746                              from_tty, enabled, internal, flags,
8747                              canonical->special_display);
8748       discard_cleanups (inner);
8749     }
8750 }
8751
8752 /* Parse ADDRESS which is assumed to be a SAL specification possibly
8753    followed by conditionals.  On return, SALS contains an array of SAL
8754    addresses found.  ADDR_STRING contains a vector of (canonical)
8755    address strings.  ADDRESS points to the end of the SAL.
8756
8757    The array and the line spec strings are allocated on the heap, it is
8758    the caller's responsibility to free them.  */
8759
8760 static void
8761 parse_breakpoint_sals (char **address,
8762                        struct linespec_result *canonical)
8763 {
8764   char *addr_start = *address;
8765
8766   /* If no arg given, or if first arg is 'if ', use the default
8767      breakpoint.  */
8768   if ((*address) == NULL
8769       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
8770     {
8771       /* The last displayed codepoint, if it's valid, is our default breakpoint
8772          address.  */
8773       if (last_displayed_sal_is_valid ())
8774         {
8775           struct linespec_sals lsal;
8776           struct symtab_and_line sal;
8777
8778           init_sal (&sal);              /* Initialize to zeroes.  */
8779           lsal.sals.sals = (struct symtab_and_line *)
8780             xmalloc (sizeof (struct symtab_and_line));
8781
8782           /* Set sal's pspace, pc, symtab, and line to the values
8783              corresponding to the last call to print_frame_info.  */
8784           get_last_displayed_sal (&sal);
8785           sal.section = find_pc_overlay (sal.pc);
8786
8787           /* "break" without arguments is equivalent to "break *PC"
8788              where PC is the last displayed codepoint's address.  So
8789              make sure to set sal.explicit_pc to prevent GDB from
8790              trying to expand the list of sals to include all other
8791              instances with the same symtab and line.  */
8792           sal.explicit_pc = 1;
8793
8794           lsal.sals.sals[0] = sal;
8795           lsal.sals.nelts = 1;
8796           lsal.canonical = NULL;
8797
8798           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
8799         }
8800       else
8801         error (_("No default breakpoint address now."));
8802     }
8803   else
8804     {
8805       /* Force almost all breakpoints to be in terms of the
8806          current_source_symtab (which is decode_line_1's default).
8807          This should produce the results we want almost all of the
8808          time while leaving default_breakpoint_* alone.  */
8809       if (last_displayed_sal_is_valid ())
8810         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8811                           get_last_displayed_symtab (),
8812                           get_last_displayed_line (),
8813                           canonical, NULL, NULL);
8814       else
8815         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8816                           (struct symtab *) NULL, 0,
8817                           canonical, NULL, NULL);
8818     }
8819 }
8820
8821
8822 /* Convert each SAL into a real PC.  Verify that the PC can be
8823    inserted as a breakpoint.  If it can't throw an error.  */
8824
8825 static void
8826 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
8827 {    
8828   int i;
8829
8830   for (i = 0; i < sals->nelts; i++)
8831     resolve_sal_pc (&sals->sals[i]);
8832 }
8833
8834 /* Fast tracepoints may have restrictions on valid locations.  For
8835    instance, a fast tracepoint using a jump instead of a trap will
8836    likely have to overwrite more bytes than a trap would, and so can
8837    only be placed where the instruction is longer than the jump, or a
8838    multi-instruction sequence does not have a jump into the middle of
8839    it, etc.  */
8840
8841 static void
8842 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8843                             struct symtabs_and_lines *sals)
8844 {
8845   int i, rslt;
8846   struct symtab_and_line *sal;
8847   char *msg;
8848   struct cleanup *old_chain;
8849
8850   for (i = 0; i < sals->nelts; i++)
8851     {
8852       struct gdbarch *sarch;
8853
8854       sal = &sals->sals[i];
8855
8856       sarch = get_sal_arch (*sal);
8857       /* We fall back to GDBARCH if there is no architecture
8858          associated with SAL.  */
8859       if (sarch == NULL)
8860         sarch = gdbarch;
8861       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
8862                                                NULL, &msg);
8863       old_chain = make_cleanup (xfree, msg);
8864
8865       if (!rslt)
8866         error (_("May not have a fast tracepoint at 0x%s%s"),
8867                paddress (sarch, sal->pc), (msg ? msg : ""));
8868
8869       do_cleanups (old_chain);
8870     }
8871 }
8872
8873 /* Given TOK, a string specification of condition and thread, as
8874    accepted by the 'break' command, extract the condition
8875    string and thread number and set *COND_STRING and *THREAD.
8876    PC identifies the context at which the condition should be parsed.
8877    If no condition is found, *COND_STRING is set to NULL.
8878    If no thread is found, *THREAD is set to -1.  */
8879
8880 static void
8881 find_condition_and_thread (char *tok, CORE_ADDR pc,
8882                            char **cond_string, int *thread, int *task,
8883                            char **rest)
8884 {
8885   *cond_string = NULL;
8886   *thread = -1;
8887   while (tok && *tok)
8888     {
8889       char *end_tok;
8890       int toklen;
8891       char *cond_start = NULL;
8892       char *cond_end = NULL;
8893
8894       tok = skip_spaces (tok);
8895
8896       if ((*tok == '"' || *tok == ',') && rest)
8897         {
8898           *rest = savestring (tok, strlen (tok));
8899           return;
8900         }
8901
8902       end_tok = skip_to_space (tok);
8903
8904       toklen = end_tok - tok;
8905
8906       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8907         {
8908           struct expression *expr;
8909
8910           tok = cond_start = end_tok + 1;
8911           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
8912           xfree (expr);
8913           cond_end = tok;
8914           *cond_string = savestring (cond_start, cond_end - cond_start);
8915         }
8916       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8917         {
8918           char *tmptok;
8919
8920           tok = end_tok + 1;
8921           tmptok = tok;
8922           *thread = strtol (tok, &tok, 0);
8923           if (tok == tmptok)
8924             error (_("Junk after thread keyword."));
8925           if (!valid_thread_id (*thread))
8926             error (_("Unknown thread %d."), *thread);
8927         }
8928       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8929         {
8930           char *tmptok;
8931
8932           tok = end_tok + 1;
8933           tmptok = tok;
8934           *task = strtol (tok, &tok, 0);
8935           if (tok == tmptok)
8936             error (_("Junk after task keyword."));
8937           if (!valid_task_id (*task))
8938             error (_("Unknown task %d."), *task);
8939         }
8940       else if (rest)
8941         {
8942           *rest = savestring (tok, strlen (tok));
8943           return;
8944         }
8945       else
8946         error (_("Junk at end of arguments."));
8947     }
8948 }
8949
8950 /* Decode a static tracepoint marker spec.  */
8951
8952 static struct symtabs_and_lines
8953 decode_static_tracepoint_spec (char **arg_p)
8954 {
8955   VEC(static_tracepoint_marker_p) *markers = NULL;
8956   struct symtabs_and_lines sals;
8957   struct cleanup *old_chain;
8958   char *p = &(*arg_p)[3];
8959   char *endp;
8960   char *marker_str;
8961   int i;
8962
8963   p = skip_spaces (p);
8964
8965   endp = skip_to_space (p);
8966
8967   marker_str = savestring (p, endp - p);
8968   old_chain = make_cleanup (xfree, marker_str);
8969
8970   markers = target_static_tracepoint_markers_by_strid (marker_str);
8971   if (VEC_empty(static_tracepoint_marker_p, markers))
8972     error (_("No known static tracepoint marker named %s"), marker_str);
8973
8974   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
8975   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
8976
8977   for (i = 0; i < sals.nelts; i++)
8978     {
8979       struct static_tracepoint_marker *marker;
8980
8981       marker = VEC_index (static_tracepoint_marker_p, markers, i);
8982
8983       init_sal (&sals.sals[i]);
8984
8985       sals.sals[i] = find_pc_line (marker->address, 0);
8986       sals.sals[i].pc = marker->address;
8987
8988       release_static_tracepoint_marker (marker);
8989     }
8990
8991   do_cleanups (old_chain);
8992
8993   *arg_p = endp;
8994   return sals;
8995 }
8996
8997 /* Set a breakpoint.  This function is shared between CLI and MI
8998    functions for setting a breakpoint.  This function has two major
8999    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9000    parameter.  If non-zero, the function will parse arg, extracting
9001    breakpoint location, address and thread.  Otherwise, ARG is just
9002    the location of breakpoint, with condition and thread specified by
9003    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9004    the breakpoint number will be allocated from the internal
9005    breakpoint count.  Returns true if any breakpoint was created;
9006    false otherwise.  */
9007
9008 int
9009 create_breakpoint (struct gdbarch *gdbarch,
9010                    char *arg, char *cond_string,
9011                    int thread, char *extra_string,
9012                    int parse_condition_and_thread,
9013                    int tempflag, enum bptype type_wanted,
9014                    int ignore_count,
9015                    enum auto_boolean pending_break_support,
9016                    const struct breakpoint_ops *ops,
9017                    int from_tty, int enabled, int internal,
9018                    unsigned flags)
9019 {
9020   volatile struct gdb_exception e;
9021   char *copy_arg = NULL;
9022   char *addr_start = arg;
9023   struct linespec_result canonical;
9024   struct cleanup *old_chain;
9025   struct cleanup *bkpt_chain = NULL;
9026   int pending = 0;
9027   int task = 0;
9028   int prev_bkpt_count = breakpoint_count;
9029
9030   gdb_assert (ops != NULL);
9031
9032   init_linespec_result (&canonical);
9033
9034   TRY_CATCH (e, RETURN_MASK_ALL)
9035     {
9036       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9037                                      addr_start, &copy_arg);
9038     }
9039
9040   /* If caller is interested in rc value from parse, set value.  */
9041   switch (e.reason)
9042     {
9043     case GDB_NO_ERROR:
9044       if (VEC_empty (linespec_sals, canonical.sals))
9045         return 0;
9046       break;
9047     case RETURN_ERROR:
9048       switch (e.error)
9049         {
9050         case NOT_FOUND_ERROR:
9051
9052           /* If pending breakpoint support is turned off, throw
9053              error.  */
9054
9055           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9056             throw_exception (e);
9057
9058           exception_print (gdb_stderr, e);
9059
9060           /* If pending breakpoint support is auto query and the user
9061              selects no, then simply return the error code.  */
9062           if (pending_break_support == AUTO_BOOLEAN_AUTO
9063               && !nquery (_("Make %s pending on future shared library load? "),
9064                           bptype_string (type_wanted)))
9065             return 0;
9066
9067           /* At this point, either the user was queried about setting
9068              a pending breakpoint and selected yes, or pending
9069              breakpoint behavior is on and thus a pending breakpoint
9070              is defaulted on behalf of the user.  */
9071           {
9072             struct linespec_sals lsal;
9073
9074             copy_arg = xstrdup (addr_start);
9075             lsal.canonical = xstrdup (copy_arg);
9076             lsal.sals.nelts = 1;
9077             lsal.sals.sals = XNEW (struct symtab_and_line);
9078             init_sal (&lsal.sals.sals[0]);
9079             pending = 1;
9080             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9081           }
9082           break;
9083         default:
9084           throw_exception (e);
9085         }
9086       break;
9087     default:
9088       throw_exception (e);
9089     }
9090
9091   /* Create a chain of things that always need to be cleaned up.  */
9092   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9093
9094   /* ----------------------------- SNIP -----------------------------
9095      Anything added to the cleanup chain beyond this point is assumed
9096      to be part of a breakpoint.  If the breakpoint create succeeds
9097      then the memory is not reclaimed.  */
9098   bkpt_chain = make_cleanup (null_cleanup, 0);
9099
9100   /* Resolve all line numbers to PC's and verify that the addresses
9101      are ok for the target.  */
9102   if (!pending)
9103     {
9104       int ix;
9105       struct linespec_sals *iter;
9106
9107       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9108         breakpoint_sals_to_pc (&iter->sals);
9109     }
9110
9111   /* Fast tracepoints may have additional restrictions on location.  */
9112   if (!pending && type_wanted == bp_fast_tracepoint)
9113     {
9114       int ix;
9115       struct linespec_sals *iter;
9116
9117       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9118         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9119     }
9120
9121   /* Verify that condition can be parsed, before setting any
9122      breakpoints.  Allocate a separate condition expression for each
9123      breakpoint.  */
9124   if (!pending)
9125     {
9126       struct linespec_sals *lsal;
9127
9128       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9129
9130       if (parse_condition_and_thread)
9131         {
9132             char *rest;
9133             /* Here we only parse 'arg' to separate condition
9134                from thread number, so parsing in context of first
9135                sal is OK.  When setting the breakpoint we'll 
9136                re-parse it in context of each sal.  */
9137             cond_string = NULL;
9138             thread = -1;
9139             rest = NULL;
9140             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9141                                        &thread, &task, &rest);
9142             if (cond_string)
9143                 make_cleanup (xfree, cond_string);
9144             if (rest)
9145               make_cleanup (xfree, rest);
9146             if (rest)
9147               extra_string = rest;
9148         }
9149       else
9150         {
9151             /* Create a private copy of condition string.  */
9152             if (cond_string)
9153             {
9154                 cond_string = xstrdup (cond_string);
9155                 make_cleanup (xfree, cond_string);
9156             }
9157             /* Create a private copy of any extra string.  */
9158             if (extra_string)
9159               {
9160                 extra_string = xstrdup (extra_string);
9161                 make_cleanup (xfree, extra_string);
9162               }
9163         }
9164
9165       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9166                                    cond_string, extra_string, type_wanted,
9167                                    tempflag ? disp_del : disp_donttouch,
9168                                    thread, task, ignore_count, ops,
9169                                    from_tty, enabled, internal, flags);
9170     }
9171   else
9172     {
9173       struct breakpoint *b;
9174
9175       make_cleanup (xfree, copy_arg);
9176
9177       if (is_tracepoint_type (type_wanted))
9178         {
9179           struct tracepoint *t;
9180
9181           t = XCNEW (struct tracepoint);
9182           b = &t->base;
9183         }
9184       else
9185         b = XNEW (struct breakpoint);
9186
9187       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9188
9189       b->addr_string = copy_arg;
9190       b->cond_string = NULL;
9191       b->extra_string = NULL;
9192       b->ignore_count = ignore_count;
9193       b->disposition = tempflag ? disp_del : disp_donttouch;
9194       b->condition_not_parsed = 1;
9195       b->enable_state = enabled ? bp_enabled : bp_disabled;
9196       if ((type_wanted != bp_breakpoint
9197            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9198         b->pspace = current_program_space;
9199
9200       install_breakpoint (internal, b, 0);
9201     }
9202   
9203   if (VEC_length (linespec_sals, canonical.sals) > 1)
9204     {
9205       warning (_("Multiple breakpoints were set.\nUse the "
9206                  "\"delete\" command to delete unwanted breakpoints."));
9207       prev_breakpoint_count = prev_bkpt_count;
9208     }
9209
9210   /* That's it.  Discard the cleanups for data inserted into the
9211      breakpoint.  */
9212   discard_cleanups (bkpt_chain);
9213   /* But cleanup everything else.  */
9214   do_cleanups (old_chain);
9215
9216   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9217   update_global_location_list (1);
9218
9219   return 1;
9220 }
9221
9222 /* Set a breakpoint.
9223    ARG is a string describing breakpoint address,
9224    condition, and thread.
9225    FLAG specifies if a breakpoint is hardware on,
9226    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9227    and BP_TEMPFLAG.  */
9228
9229 static void
9230 break_command_1 (char *arg, int flag, int from_tty)
9231 {
9232   int tempflag = flag & BP_TEMPFLAG;
9233   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9234                              ? bp_hardware_breakpoint
9235                              : bp_breakpoint);
9236   struct breakpoint_ops *ops;
9237   const char *arg_cp = arg;
9238
9239   /* Matching breakpoints on probes.  */
9240   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9241     ops = &bkpt_probe_breakpoint_ops;
9242   else
9243     ops = &bkpt_breakpoint_ops;
9244
9245   create_breakpoint (get_current_arch (),
9246                      arg,
9247                      NULL, 0, NULL, 1 /* parse arg */,
9248                      tempflag, type_wanted,
9249                      0 /* Ignore count */,
9250                      pending_break_support,
9251                      ops,
9252                      from_tty,
9253                      1 /* enabled */,
9254                      0 /* internal */,
9255                      0);
9256 }
9257
9258 /* Helper function for break_command_1 and disassemble_command.  */
9259
9260 void
9261 resolve_sal_pc (struct symtab_and_line *sal)
9262 {
9263   CORE_ADDR pc;
9264
9265   if (sal->pc == 0 && sal->symtab != NULL)
9266     {
9267       if (!find_line_pc (sal->symtab, sal->line, &pc))
9268         error (_("No line %d in file \"%s\"."),
9269                sal->line, sal->symtab->filename);
9270       sal->pc = pc;
9271
9272       /* If this SAL corresponds to a breakpoint inserted using a line
9273          number, then skip the function prologue if necessary.  */
9274       if (sal->explicit_line)
9275         skip_prologue_sal (sal);
9276     }
9277
9278   if (sal->section == 0 && sal->symtab != NULL)
9279     {
9280       struct blockvector *bv;
9281       struct block *b;
9282       struct symbol *sym;
9283
9284       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9285       if (bv != NULL)
9286         {
9287           sym = block_linkage_function (b);
9288           if (sym != NULL)
9289             {
9290               fixup_symbol_section (sym, sal->symtab->objfile);
9291               sal->section = SYMBOL_OBJ_SECTION (sym);
9292             }
9293           else
9294             {
9295               /* It really is worthwhile to have the section, so we'll
9296                  just have to look harder. This case can be executed
9297                  if we have line numbers but no functions (as can
9298                  happen in assembly source).  */
9299
9300               struct minimal_symbol *msym;
9301               struct cleanup *old_chain = save_current_space_and_thread ();
9302
9303               switch_to_program_space_and_thread (sal->pspace);
9304
9305               msym = lookup_minimal_symbol_by_pc (sal->pc);
9306               if (msym)
9307                 sal->section = SYMBOL_OBJ_SECTION (msym);
9308
9309               do_cleanups (old_chain);
9310             }
9311         }
9312     }
9313 }
9314
9315 void
9316 break_command (char *arg, int from_tty)
9317 {
9318   break_command_1 (arg, 0, from_tty);
9319 }
9320
9321 void
9322 tbreak_command (char *arg, int from_tty)
9323 {
9324   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9325 }
9326
9327 static void
9328 hbreak_command (char *arg, int from_tty)
9329 {
9330   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9331 }
9332
9333 static void
9334 thbreak_command (char *arg, int from_tty)
9335 {
9336   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9337 }
9338
9339 static void
9340 stop_command (char *arg, int from_tty)
9341 {
9342   printf_filtered (_("Specify the type of breakpoint to set.\n\
9343 Usage: stop in <function | address>\n\
9344        stop at <line>\n"));
9345 }
9346
9347 static void
9348 stopin_command (char *arg, int from_tty)
9349 {
9350   int badInput = 0;
9351
9352   if (arg == (char *) NULL)
9353     badInput = 1;
9354   else if (*arg != '*')
9355     {
9356       char *argptr = arg;
9357       int hasColon = 0;
9358
9359       /* Look for a ':'.  If this is a line number specification, then
9360          say it is bad, otherwise, it should be an address or
9361          function/method name.  */
9362       while (*argptr && !hasColon)
9363         {
9364           hasColon = (*argptr == ':');
9365           argptr++;
9366         }
9367
9368       if (hasColon)
9369         badInput = (*argptr != ':');    /* Not a class::method */
9370       else
9371         badInput = isdigit (*arg);      /* a simple line number */
9372     }
9373
9374   if (badInput)
9375     printf_filtered (_("Usage: stop in <function | address>\n"));
9376   else
9377     break_command_1 (arg, 0, from_tty);
9378 }
9379
9380 static void
9381 stopat_command (char *arg, int from_tty)
9382 {
9383   int badInput = 0;
9384
9385   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9386     badInput = 1;
9387   else
9388     {
9389       char *argptr = arg;
9390       int hasColon = 0;
9391
9392       /* Look for a ':'.  If there is a '::' then get out, otherwise
9393          it is probably a line number.  */
9394       while (*argptr && !hasColon)
9395         {
9396           hasColon = (*argptr == ':');
9397           argptr++;
9398         }
9399
9400       if (hasColon)
9401         badInput = (*argptr == ':');    /* we have class::method */
9402       else
9403         badInput = !isdigit (*arg);     /* not a line number */
9404     }
9405
9406   if (badInput)
9407     printf_filtered (_("Usage: stop at <line>\n"));
9408   else
9409     break_command_1 (arg, 0, from_tty);
9410 }
9411
9412 void dprintf_command (char *arg, int from_tty);
9413
9414 /* The dynamic printf command is mostly like a regular breakpoint, but
9415    with a prewired command list consisting of a single output command,
9416    built from extra arguments supplied on the dprintf command
9417    line.  */
9418
9419 void
9420 dprintf_command (char *arg, int from_tty)
9421 {
9422   create_breakpoint (get_current_arch (),
9423                      arg,
9424                      NULL, 0, NULL, 1 /* parse arg */,
9425                      0, bp_dprintf,
9426                      0 /* Ignore count */,
9427                      pending_break_support,
9428                      &dprintf_breakpoint_ops,
9429                      from_tty,
9430                      1 /* enabled */,
9431                      0 /* internal */,
9432                      0);
9433 }
9434
9435 /* Implement the "breakpoint_hit" breakpoint_ops method for
9436    ranged breakpoints.  */
9437
9438 static int
9439 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9440                                   struct address_space *aspace,
9441                                   CORE_ADDR bp_addr,
9442                                   const struct target_waitstatus *ws)
9443 {
9444   if (ws->kind != TARGET_WAITKIND_STOPPED
9445       || ws->value.sig != GDB_SIGNAL_TRAP)
9446     return 0;
9447
9448   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9449                                          bl->length, aspace, bp_addr);
9450 }
9451
9452 /* Implement the "resources_needed" breakpoint_ops method for
9453    ranged breakpoints.  */
9454
9455 static int
9456 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9457 {
9458   return target_ranged_break_num_registers ();
9459 }
9460
9461 /* Implement the "print_it" breakpoint_ops method for
9462    ranged breakpoints.  */
9463
9464 static enum print_stop_action
9465 print_it_ranged_breakpoint (bpstat bs)
9466 {
9467   struct breakpoint *b = bs->breakpoint_at;
9468   struct bp_location *bl = b->loc;
9469   struct ui_out *uiout = current_uiout;
9470
9471   gdb_assert (b->type == bp_hardware_breakpoint);
9472
9473   /* Ranged breakpoints have only one location.  */
9474   gdb_assert (bl && bl->next == NULL);
9475
9476   annotate_breakpoint (b->number);
9477   if (b->disposition == disp_del)
9478     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9479   else
9480     ui_out_text (uiout, "\nRanged breakpoint ");
9481   if (ui_out_is_mi_like_p (uiout))
9482     {
9483       ui_out_field_string (uiout, "reason",
9484                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9485       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9486     }
9487   ui_out_field_int (uiout, "bkptno", b->number);
9488   ui_out_text (uiout, ", ");
9489
9490   return PRINT_SRC_AND_LOC;
9491 }
9492
9493 /* Implement the "print_one" breakpoint_ops method for
9494    ranged breakpoints.  */
9495
9496 static void
9497 print_one_ranged_breakpoint (struct breakpoint *b,
9498                              struct bp_location **last_loc)
9499 {
9500   struct bp_location *bl = b->loc;
9501   struct value_print_options opts;
9502   struct ui_out *uiout = current_uiout;
9503
9504   /* Ranged breakpoints have only one location.  */
9505   gdb_assert (bl && bl->next == NULL);
9506
9507   get_user_print_options (&opts);
9508
9509   if (opts.addressprint)
9510     /* We don't print the address range here, it will be printed later
9511        by print_one_detail_ranged_breakpoint.  */
9512     ui_out_field_skip (uiout, "addr");
9513   annotate_field (5);
9514   print_breakpoint_location (b, bl);
9515   *last_loc = bl;
9516 }
9517
9518 /* Implement the "print_one_detail" breakpoint_ops method for
9519    ranged breakpoints.  */
9520
9521 static void
9522 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9523                                     struct ui_out *uiout)
9524 {
9525   CORE_ADDR address_start, address_end;
9526   struct bp_location *bl = b->loc;
9527   struct ui_file *stb = mem_fileopen ();
9528   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9529
9530   gdb_assert (bl);
9531
9532   address_start = bl->address;
9533   address_end = address_start + bl->length - 1;
9534
9535   ui_out_text (uiout, "\taddress range: ");
9536   fprintf_unfiltered (stb, "[%s, %s]",
9537                       print_core_address (bl->gdbarch, address_start),
9538                       print_core_address (bl->gdbarch, address_end));
9539   ui_out_field_stream (uiout, "addr", stb);
9540   ui_out_text (uiout, "\n");
9541
9542   do_cleanups (cleanup);
9543 }
9544
9545 /* Implement the "print_mention" breakpoint_ops method for
9546    ranged breakpoints.  */
9547
9548 static void
9549 print_mention_ranged_breakpoint (struct breakpoint *b)
9550 {
9551   struct bp_location *bl = b->loc;
9552   struct ui_out *uiout = current_uiout;
9553
9554   gdb_assert (bl);
9555   gdb_assert (b->type == bp_hardware_breakpoint);
9556
9557   if (ui_out_is_mi_like_p (uiout))
9558     return;
9559
9560   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9561                    b->number, paddress (bl->gdbarch, bl->address),
9562                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9563 }
9564
9565 /* Implement the "print_recreate" breakpoint_ops method for
9566    ranged breakpoints.  */
9567
9568 static void
9569 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9570 {
9571   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9572                       b->addr_string_range_end);
9573   print_recreate_thread (b, fp);
9574 }
9575
9576 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9577
9578 static struct breakpoint_ops ranged_breakpoint_ops;
9579
9580 /* Find the address where the end of the breakpoint range should be
9581    placed, given the SAL of the end of the range.  This is so that if
9582    the user provides a line number, the end of the range is set to the
9583    last instruction of the given line.  */
9584
9585 static CORE_ADDR
9586 find_breakpoint_range_end (struct symtab_and_line sal)
9587 {
9588   CORE_ADDR end;
9589
9590   /* If the user provided a PC value, use it.  Otherwise,
9591      find the address of the end of the given location.  */
9592   if (sal.explicit_pc)
9593     end = sal.pc;
9594   else
9595     {
9596       int ret;
9597       CORE_ADDR start;
9598
9599       ret = find_line_pc_range (sal, &start, &end);
9600       if (!ret)
9601         error (_("Could not find location of the end of the range."));
9602
9603       /* find_line_pc_range returns the start of the next line.  */
9604       end--;
9605     }
9606
9607   return end;
9608 }
9609
9610 /* Implement the "break-range" CLI command.  */
9611
9612 static void
9613 break_range_command (char *arg, int from_tty)
9614 {
9615   char *arg_start, *addr_string_start, *addr_string_end;
9616   struct linespec_result canonical_start, canonical_end;
9617   int bp_count, can_use_bp, length;
9618   CORE_ADDR end;
9619   struct breakpoint *b;
9620   struct symtab_and_line sal_start, sal_end;
9621   struct cleanup *cleanup_bkpt;
9622   struct linespec_sals *lsal_start, *lsal_end;
9623
9624   /* We don't support software ranged breakpoints.  */
9625   if (target_ranged_break_num_registers () < 0)
9626     error (_("This target does not support hardware ranged breakpoints."));
9627
9628   bp_count = hw_breakpoint_used_count ();
9629   bp_count += target_ranged_break_num_registers ();
9630   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9631                                                    bp_count, 0);
9632   if (can_use_bp < 0)
9633     error (_("Hardware breakpoints used exceeds limit."));
9634
9635   arg = skip_spaces (arg);
9636   if (arg == NULL || arg[0] == '\0')
9637     error(_("No address range specified."));
9638
9639   init_linespec_result (&canonical_start);
9640
9641   arg_start = arg;
9642   parse_breakpoint_sals (&arg, &canonical_start);
9643
9644   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
9645
9646   if (arg[0] != ',')
9647     error (_("Too few arguments."));
9648   else if (VEC_empty (linespec_sals, canonical_start.sals))
9649     error (_("Could not find location of the beginning of the range."));
9650
9651   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
9652
9653   if (VEC_length (linespec_sals, canonical_start.sals) > 1
9654       || lsal_start->sals.nelts != 1)
9655     error (_("Cannot create a ranged breakpoint with multiple locations."));
9656
9657   sal_start = lsal_start->sals.sals[0];
9658   addr_string_start = savestring (arg_start, arg - arg_start);
9659   make_cleanup (xfree, addr_string_start);
9660
9661   arg++;        /* Skip the comma.  */
9662   arg = skip_spaces (arg);
9663
9664   /* Parse the end location.  */
9665
9666   init_linespec_result (&canonical_end);
9667   arg_start = arg;
9668
9669   /* We call decode_line_full directly here instead of using
9670      parse_breakpoint_sals because we need to specify the start location's
9671      symtab and line as the default symtab and line for the end of the
9672      range.  This makes it possible to have ranges like "foo.c:27, +14",
9673      where +14 means 14 lines from the start location.  */
9674   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
9675                     sal_start.symtab, sal_start.line,
9676                     &canonical_end, NULL, NULL);
9677
9678   make_cleanup_destroy_linespec_result (&canonical_end);
9679
9680   if (VEC_empty (linespec_sals, canonical_end.sals))
9681     error (_("Could not find location of the end of the range."));
9682
9683   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
9684   if (VEC_length (linespec_sals, canonical_end.sals) > 1
9685       || lsal_end->sals.nelts != 1)
9686     error (_("Cannot create a ranged breakpoint with multiple locations."));
9687
9688   sal_end = lsal_end->sals.sals[0];
9689   addr_string_end = savestring (arg_start, arg - arg_start);
9690   make_cleanup (xfree, addr_string_end);
9691
9692   end = find_breakpoint_range_end (sal_end);
9693   if (sal_start.pc > end)
9694     error (_("Invalid address range, end precedes start."));
9695
9696   length = end - sal_start.pc + 1;
9697   if (length < 0)
9698     /* Length overflowed.  */
9699     error (_("Address range too large."));
9700   else if (length == 1)
9701     {
9702       /* This range is simple enough to be handled by
9703          the `hbreak' command.  */
9704       hbreak_command (addr_string_start, 1);
9705
9706       do_cleanups (cleanup_bkpt);
9707
9708       return;
9709     }
9710
9711   /* Now set up the breakpoint.  */
9712   b = set_raw_breakpoint (get_current_arch (), sal_start,
9713                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9714   set_breakpoint_count (breakpoint_count + 1);
9715   b->number = breakpoint_count;
9716   b->disposition = disp_donttouch;
9717   b->addr_string = xstrdup (addr_string_start);
9718   b->addr_string_range_end = xstrdup (addr_string_end);
9719   b->loc->length = length;
9720
9721   do_cleanups (cleanup_bkpt);
9722
9723   mention (b);
9724   observer_notify_breakpoint_created (b);
9725   update_global_location_list (1);
9726 }
9727
9728 /*  Return non-zero if EXP is verified as constant.  Returned zero
9729     means EXP is variable.  Also the constant detection may fail for
9730     some constant expressions and in such case still falsely return
9731     zero.  */
9732
9733 static int
9734 watchpoint_exp_is_const (const struct expression *exp)
9735 {
9736   int i = exp->nelts;
9737
9738   while (i > 0)
9739     {
9740       int oplenp, argsp;
9741
9742       /* We are only interested in the descriptor of each element.  */
9743       operator_length (exp, i, &oplenp, &argsp);
9744       i -= oplenp;
9745
9746       switch (exp->elts[i].opcode)
9747         {
9748         case BINOP_ADD:
9749         case BINOP_SUB:
9750         case BINOP_MUL:
9751         case BINOP_DIV:
9752         case BINOP_REM:
9753         case BINOP_MOD:
9754         case BINOP_LSH:
9755         case BINOP_RSH:
9756         case BINOP_LOGICAL_AND:
9757         case BINOP_LOGICAL_OR:
9758         case BINOP_BITWISE_AND:
9759         case BINOP_BITWISE_IOR:
9760         case BINOP_BITWISE_XOR:
9761         case BINOP_EQUAL:
9762         case BINOP_NOTEQUAL:
9763         case BINOP_LESS:
9764         case BINOP_GTR:
9765         case BINOP_LEQ:
9766         case BINOP_GEQ:
9767         case BINOP_REPEAT:
9768         case BINOP_COMMA:
9769         case BINOP_EXP:
9770         case BINOP_MIN:
9771         case BINOP_MAX:
9772         case BINOP_INTDIV:
9773         case BINOP_CONCAT:
9774         case BINOP_IN:
9775         case BINOP_RANGE:
9776         case TERNOP_COND:
9777         case TERNOP_SLICE:
9778         case TERNOP_SLICE_COUNT:
9779
9780         case OP_LONG:
9781         case OP_DOUBLE:
9782         case OP_DECFLOAT:
9783         case OP_LAST:
9784         case OP_COMPLEX:
9785         case OP_STRING:
9786         case OP_BITSTRING:
9787         case OP_ARRAY:
9788         case OP_TYPE:
9789         case OP_NAME:
9790         case OP_OBJC_NSSTRING:
9791
9792         case UNOP_NEG:
9793         case UNOP_LOGICAL_NOT:
9794         case UNOP_COMPLEMENT:
9795         case UNOP_ADDR:
9796         case UNOP_HIGH:
9797         case UNOP_CAST:
9798           /* Unary, binary and ternary operators: We have to check
9799              their operands.  If they are constant, then so is the
9800              result of that operation.  For instance, if A and B are
9801              determined to be constants, then so is "A + B".
9802
9803              UNOP_IND is one exception to the rule above, because the
9804              value of *ADDR is not necessarily a constant, even when
9805              ADDR is.  */
9806           break;
9807
9808         case OP_VAR_VALUE:
9809           /* Check whether the associated symbol is a constant.
9810
9811              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9812              possible that a buggy compiler could mark a variable as
9813              constant even when it is not, and TYPE_CONST would return
9814              true in this case, while SYMBOL_CLASS wouldn't.
9815
9816              We also have to check for function symbols because they
9817              are always constant.  */
9818           {
9819             struct symbol *s = exp->elts[i + 2].symbol;
9820
9821             if (SYMBOL_CLASS (s) != LOC_BLOCK
9822                 && SYMBOL_CLASS (s) != LOC_CONST
9823                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9824               return 0;
9825             break;
9826           }
9827
9828         /* The default action is to return 0 because we are using
9829            the optimistic approach here: If we don't know something,
9830            then it is not a constant.  */
9831         default:
9832           return 0;
9833         }
9834     }
9835
9836   return 1;
9837 }
9838
9839 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
9840
9841 static void
9842 dtor_watchpoint (struct breakpoint *self)
9843 {
9844   struct watchpoint *w = (struct watchpoint *) self;
9845
9846   xfree (w->cond_exp);
9847   xfree (w->exp);
9848   xfree (w->exp_string);
9849   xfree (w->exp_string_reparse);
9850   value_free (w->val);
9851
9852   base_breakpoint_ops.dtor (self);
9853 }
9854
9855 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9856
9857 static void
9858 re_set_watchpoint (struct breakpoint *b)
9859 {
9860   struct watchpoint *w = (struct watchpoint *) b;
9861
9862   /* Watchpoint can be either on expression using entirely global
9863      variables, or it can be on local variables.
9864
9865      Watchpoints of the first kind are never auto-deleted, and even
9866      persist across program restarts.  Since they can use variables
9867      from shared libraries, we need to reparse expression as libraries
9868      are loaded and unloaded.
9869
9870      Watchpoints on local variables can also change meaning as result
9871      of solib event.  For example, if a watchpoint uses both a local
9872      and a global variables in expression, it's a local watchpoint,
9873      but unloading of a shared library will make the expression
9874      invalid.  This is not a very common use case, but we still
9875      re-evaluate expression, to avoid surprises to the user.
9876
9877      Note that for local watchpoints, we re-evaluate it only if
9878      watchpoints frame id is still valid.  If it's not, it means the
9879      watchpoint is out of scope and will be deleted soon.  In fact,
9880      I'm not sure we'll ever be called in this case.
9881
9882      If a local watchpoint's frame id is still valid, then
9883      w->exp_valid_block is likewise valid, and we can safely use it.
9884
9885      Don't do anything about disabled watchpoints, since they will be
9886      reevaluated again when enabled.  */
9887   update_watchpoint (w, 1 /* reparse */);
9888 }
9889
9890 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
9891
9892 static int
9893 insert_watchpoint (struct bp_location *bl)
9894 {
9895   struct watchpoint *w = (struct watchpoint *) bl->owner;
9896   int length = w->exact ? 1 : bl->length;
9897
9898   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9899                                    w->cond_exp);
9900 }
9901
9902 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
9903
9904 static int
9905 remove_watchpoint (struct bp_location *bl)
9906 {
9907   struct watchpoint *w = (struct watchpoint *) bl->owner;
9908   int length = w->exact ? 1 : bl->length;
9909
9910   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9911                                    w->cond_exp);
9912 }
9913
9914 static int
9915 breakpoint_hit_watchpoint (const struct bp_location *bl,
9916                            struct address_space *aspace, CORE_ADDR bp_addr,
9917                            const struct target_waitstatus *ws)
9918 {
9919   struct breakpoint *b = bl->owner;
9920   struct watchpoint *w = (struct watchpoint *) b;
9921
9922   /* Continuable hardware watchpoints are treated as non-existent if the
9923      reason we stopped wasn't a hardware watchpoint (we didn't stop on
9924      some data address).  Otherwise gdb won't stop on a break instruction
9925      in the code (not from a breakpoint) when a hardware watchpoint has
9926      been defined.  Also skip watchpoints which we know did not trigger
9927      (did not match the data address).  */
9928   if (is_hardware_watchpoint (b)
9929       && w->watchpoint_triggered == watch_triggered_no)
9930     return 0;
9931
9932   return 1;
9933 }
9934
9935 static void
9936 check_status_watchpoint (bpstat bs)
9937 {
9938   gdb_assert (is_watchpoint (bs->breakpoint_at));
9939
9940   bpstat_check_watchpoint (bs);
9941 }
9942
9943 /* Implement the "resources_needed" breakpoint_ops method for
9944    hardware watchpoints.  */
9945
9946 static int
9947 resources_needed_watchpoint (const struct bp_location *bl)
9948 {
9949   struct watchpoint *w = (struct watchpoint *) bl->owner;
9950   int length = w->exact? 1 : bl->length;
9951
9952   return target_region_ok_for_hw_watchpoint (bl->address, length);
9953 }
9954
9955 /* Implement the "works_in_software_mode" breakpoint_ops method for
9956    hardware watchpoints.  */
9957
9958 static int
9959 works_in_software_mode_watchpoint (const struct breakpoint *b)
9960 {
9961   /* Read and access watchpoints only work with hardware support.  */
9962   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9963 }
9964
9965 static enum print_stop_action
9966 print_it_watchpoint (bpstat bs)
9967 {
9968   struct cleanup *old_chain;
9969   struct breakpoint *b;
9970   const struct bp_location *bl;
9971   struct ui_file *stb;
9972   enum print_stop_action result;
9973   struct watchpoint *w;
9974   struct ui_out *uiout = current_uiout;
9975
9976   gdb_assert (bs->bp_location_at != NULL);
9977
9978   bl = bs->bp_location_at;
9979   b = bs->breakpoint_at;
9980   w = (struct watchpoint *) b;
9981
9982   stb = mem_fileopen ();
9983   old_chain = make_cleanup_ui_file_delete (stb);
9984
9985   switch (b->type)
9986     {
9987     case bp_watchpoint:
9988     case bp_hardware_watchpoint:
9989       annotate_watchpoint (b->number);
9990       if (ui_out_is_mi_like_p (uiout))
9991         ui_out_field_string
9992           (uiout, "reason",
9993            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
9994       mention (b);
9995       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
9996       ui_out_text (uiout, "\nOld value = ");
9997       watchpoint_value_print (bs->old_val, stb);
9998       ui_out_field_stream (uiout, "old", stb);
9999       ui_out_text (uiout, "\nNew value = ");
10000       watchpoint_value_print (w->val, stb);
10001       ui_out_field_stream (uiout, "new", stb);
10002       ui_out_text (uiout, "\n");
10003       /* More than one watchpoint may have been triggered.  */
10004       result = PRINT_UNKNOWN;
10005       break;
10006
10007     case bp_read_watchpoint:
10008       if (ui_out_is_mi_like_p (uiout))
10009         ui_out_field_string
10010           (uiout, "reason",
10011            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10012       mention (b);
10013       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10014       ui_out_text (uiout, "\nValue = ");
10015       watchpoint_value_print (w->val, stb);
10016       ui_out_field_stream (uiout, "value", stb);
10017       ui_out_text (uiout, "\n");
10018       result = PRINT_UNKNOWN;
10019       break;
10020
10021     case bp_access_watchpoint:
10022       if (bs->old_val != NULL)
10023         {
10024           annotate_watchpoint (b->number);
10025           if (ui_out_is_mi_like_p (uiout))
10026             ui_out_field_string
10027               (uiout, "reason",
10028                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10029           mention (b);
10030           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10031           ui_out_text (uiout, "\nOld value = ");
10032           watchpoint_value_print (bs->old_val, stb);
10033           ui_out_field_stream (uiout, "old", stb);
10034           ui_out_text (uiout, "\nNew value = ");
10035         }
10036       else
10037         {
10038           mention (b);
10039           if (ui_out_is_mi_like_p (uiout))
10040             ui_out_field_string
10041               (uiout, "reason",
10042                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10043           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10044           ui_out_text (uiout, "\nValue = ");
10045         }
10046       watchpoint_value_print (w->val, stb);
10047       ui_out_field_stream (uiout, "new", stb);
10048       ui_out_text (uiout, "\n");
10049       result = PRINT_UNKNOWN;
10050       break;
10051     default:
10052       result = PRINT_UNKNOWN;
10053     }
10054
10055   do_cleanups (old_chain);
10056   return result;
10057 }
10058
10059 /* Implement the "print_mention" breakpoint_ops method for hardware
10060    watchpoints.  */
10061
10062 static void
10063 print_mention_watchpoint (struct breakpoint *b)
10064 {
10065   struct cleanup *ui_out_chain;
10066   struct watchpoint *w = (struct watchpoint *) b;
10067   struct ui_out *uiout = current_uiout;
10068
10069   switch (b->type)
10070     {
10071     case bp_watchpoint:
10072       ui_out_text (uiout, "Watchpoint ");
10073       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10074       break;
10075     case bp_hardware_watchpoint:
10076       ui_out_text (uiout, "Hardware watchpoint ");
10077       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10078       break;
10079     case bp_read_watchpoint:
10080       ui_out_text (uiout, "Hardware read watchpoint ");
10081       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10082       break;
10083     case bp_access_watchpoint:
10084       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10085       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10086       break;
10087     default:
10088       internal_error (__FILE__, __LINE__,
10089                       _("Invalid hardware watchpoint type."));
10090     }
10091
10092   ui_out_field_int (uiout, "number", b->number);
10093   ui_out_text (uiout, ": ");
10094   ui_out_field_string (uiout, "exp", w->exp_string);
10095   do_cleanups (ui_out_chain);
10096 }
10097
10098 /* Implement the "print_recreate" breakpoint_ops method for
10099    watchpoints.  */
10100
10101 static void
10102 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10103 {
10104   struct watchpoint *w = (struct watchpoint *) b;
10105
10106   switch (b->type)
10107     {
10108     case bp_watchpoint:
10109     case bp_hardware_watchpoint:
10110       fprintf_unfiltered (fp, "watch");
10111       break;
10112     case bp_read_watchpoint:
10113       fprintf_unfiltered (fp, "rwatch");
10114       break;
10115     case bp_access_watchpoint:
10116       fprintf_unfiltered (fp, "awatch");
10117       break;
10118     default:
10119       internal_error (__FILE__, __LINE__,
10120                       _("Invalid watchpoint type."));
10121     }
10122
10123   fprintf_unfiltered (fp, " %s", w->exp_string);
10124   print_recreate_thread (b, fp);
10125 }
10126
10127 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10128
10129 static struct breakpoint_ops watchpoint_breakpoint_ops;
10130
10131 /* Implement the "insert" breakpoint_ops method for
10132    masked hardware watchpoints.  */
10133
10134 static int
10135 insert_masked_watchpoint (struct bp_location *bl)
10136 {
10137   struct watchpoint *w = (struct watchpoint *) bl->owner;
10138
10139   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10140                                         bl->watchpoint_type);
10141 }
10142
10143 /* Implement the "remove" breakpoint_ops method for
10144    masked hardware watchpoints.  */
10145
10146 static int
10147 remove_masked_watchpoint (struct bp_location *bl)
10148 {
10149   struct watchpoint *w = (struct watchpoint *) bl->owner;
10150
10151   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10152                                         bl->watchpoint_type);
10153 }
10154
10155 /* Implement the "resources_needed" breakpoint_ops method for
10156    masked hardware watchpoints.  */
10157
10158 static int
10159 resources_needed_masked_watchpoint (const struct bp_location *bl)
10160 {
10161   struct watchpoint *w = (struct watchpoint *) bl->owner;
10162
10163   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10164 }
10165
10166 /* Implement the "works_in_software_mode" breakpoint_ops method for
10167    masked hardware watchpoints.  */
10168
10169 static int
10170 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10171 {
10172   return 0;
10173 }
10174
10175 /* Implement the "print_it" breakpoint_ops method for
10176    masked hardware watchpoints.  */
10177
10178 static enum print_stop_action
10179 print_it_masked_watchpoint (bpstat bs)
10180 {
10181   struct breakpoint *b = bs->breakpoint_at;
10182   struct ui_out *uiout = current_uiout;
10183
10184   /* Masked watchpoints have only one location.  */
10185   gdb_assert (b->loc && b->loc->next == NULL);
10186
10187   switch (b->type)
10188     {
10189     case bp_hardware_watchpoint:
10190       annotate_watchpoint (b->number);
10191       if (ui_out_is_mi_like_p (uiout))
10192         ui_out_field_string
10193           (uiout, "reason",
10194            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10195       break;
10196
10197     case bp_read_watchpoint:
10198       if (ui_out_is_mi_like_p (uiout))
10199         ui_out_field_string
10200           (uiout, "reason",
10201            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10202       break;
10203
10204     case bp_access_watchpoint:
10205       if (ui_out_is_mi_like_p (uiout))
10206         ui_out_field_string
10207           (uiout, "reason",
10208            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10209       break;
10210     default:
10211       internal_error (__FILE__, __LINE__,
10212                       _("Invalid hardware watchpoint type."));
10213     }
10214
10215   mention (b);
10216   ui_out_text (uiout, _("\n\
10217 Check the underlying instruction at PC for the memory\n\
10218 address and value which triggered this watchpoint.\n"));
10219   ui_out_text (uiout, "\n");
10220
10221   /* More than one watchpoint may have been triggered.  */
10222   return PRINT_UNKNOWN;
10223 }
10224
10225 /* Implement the "print_one_detail" breakpoint_ops method for
10226    masked hardware watchpoints.  */
10227
10228 static void
10229 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10230                                     struct ui_out *uiout)
10231 {
10232   struct watchpoint *w = (struct watchpoint *) b;
10233
10234   /* Masked watchpoints have only one location.  */
10235   gdb_assert (b->loc && b->loc->next == NULL);
10236
10237   ui_out_text (uiout, "\tmask ");
10238   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10239   ui_out_text (uiout, "\n");
10240 }
10241
10242 /* Implement the "print_mention" breakpoint_ops method for
10243    masked hardware watchpoints.  */
10244
10245 static void
10246 print_mention_masked_watchpoint (struct breakpoint *b)
10247 {
10248   struct watchpoint *w = (struct watchpoint *) b;
10249   struct ui_out *uiout = current_uiout;
10250   struct cleanup *ui_out_chain;
10251
10252   switch (b->type)
10253     {
10254     case bp_hardware_watchpoint:
10255       ui_out_text (uiout, "Masked hardware watchpoint ");
10256       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10257       break;
10258     case bp_read_watchpoint:
10259       ui_out_text (uiout, "Masked hardware read watchpoint ");
10260       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10261       break;
10262     case bp_access_watchpoint:
10263       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10264       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10265       break;
10266     default:
10267       internal_error (__FILE__, __LINE__,
10268                       _("Invalid hardware watchpoint type."));
10269     }
10270
10271   ui_out_field_int (uiout, "number", b->number);
10272   ui_out_text (uiout, ": ");
10273   ui_out_field_string (uiout, "exp", w->exp_string);
10274   do_cleanups (ui_out_chain);
10275 }
10276
10277 /* Implement the "print_recreate" breakpoint_ops method for
10278    masked hardware watchpoints.  */
10279
10280 static void
10281 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10282 {
10283   struct watchpoint *w = (struct watchpoint *) b;
10284   char tmp[40];
10285
10286   switch (b->type)
10287     {
10288     case bp_hardware_watchpoint:
10289       fprintf_unfiltered (fp, "watch");
10290       break;
10291     case bp_read_watchpoint:
10292       fprintf_unfiltered (fp, "rwatch");
10293       break;
10294     case bp_access_watchpoint:
10295       fprintf_unfiltered (fp, "awatch");
10296       break;
10297     default:
10298       internal_error (__FILE__, __LINE__,
10299                       _("Invalid hardware watchpoint type."));
10300     }
10301
10302   sprintf_vma (tmp, w->hw_wp_mask);
10303   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10304   print_recreate_thread (b, fp);
10305 }
10306
10307 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10308
10309 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10310
10311 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10312
10313 static int
10314 is_masked_watchpoint (const struct breakpoint *b)
10315 {
10316   return b->ops == &masked_watchpoint_breakpoint_ops;
10317 }
10318
10319 /* accessflag:  hw_write:  watch write, 
10320                 hw_read:   watch read, 
10321                 hw_access: watch access (read or write) */
10322 static void
10323 watch_command_1 (char *arg, int accessflag, int from_tty,
10324                  int just_location, int internal)
10325 {
10326   volatile struct gdb_exception e;
10327   struct breakpoint *b, *scope_breakpoint = NULL;
10328   struct expression *exp;
10329   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10330   struct value *val, *mark, *result;
10331   struct frame_info *frame;
10332   char *exp_start = NULL;
10333   char *exp_end = NULL;
10334   char *tok, *end_tok;
10335   int toklen = -1;
10336   char *cond_start = NULL;
10337   char *cond_end = NULL;
10338   enum bptype bp_type;
10339   int thread = -1;
10340   int pc = 0;
10341   /* Flag to indicate whether we are going to use masks for
10342      the hardware watchpoint.  */
10343   int use_mask = 0;
10344   CORE_ADDR mask = 0;
10345   struct watchpoint *w;
10346
10347   /* Make sure that we actually have parameters to parse.  */
10348   if (arg != NULL && arg[0] != '\0')
10349     {
10350       char *value_start;
10351
10352       /* Look for "parameter value" pairs at the end
10353          of the arguments string.  */
10354       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10355         {
10356           /* Skip whitespace at the end of the argument list.  */
10357           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10358             tok--;
10359
10360           /* Find the beginning of the last token.
10361              This is the value of the parameter.  */
10362           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10363             tok--;
10364           value_start = tok + 1;
10365
10366           /* Skip whitespace.  */
10367           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10368             tok--;
10369
10370           end_tok = tok;
10371
10372           /* Find the beginning of the second to last token.
10373              This is the parameter itself.  */
10374           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10375             tok--;
10376           tok++;
10377           toklen = end_tok - tok + 1;
10378
10379           if (toklen == 6 && !strncmp (tok, "thread", 6))
10380             {
10381               /* At this point we've found a "thread" token, which means
10382                  the user is trying to set a watchpoint that triggers
10383                  only in a specific thread.  */
10384               char *endp;
10385
10386               if (thread != -1)
10387                 error(_("You can specify only one thread."));
10388
10389               /* Extract the thread ID from the next token.  */
10390               thread = strtol (value_start, &endp, 0);
10391
10392               /* Check if the user provided a valid numeric value for the
10393                  thread ID.  */
10394               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10395                 error (_("Invalid thread ID specification %s."), value_start);
10396
10397               /* Check if the thread actually exists.  */
10398               if (!valid_thread_id (thread))
10399                 error (_("Unknown thread %d."), thread);
10400             }
10401           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10402             {
10403               /* We've found a "mask" token, which means the user wants to
10404                  create a hardware watchpoint that is going to have the mask
10405                  facility.  */
10406               struct value *mask_value, *mark;
10407
10408               if (use_mask)
10409                 error(_("You can specify only one mask."));
10410
10411               use_mask = just_location = 1;
10412
10413               mark = value_mark ();
10414               mask_value = parse_to_comma_and_eval (&value_start);
10415               mask = value_as_address (mask_value);
10416               value_free_to_mark (mark);
10417             }
10418           else
10419             /* We didn't recognize what we found.  We should stop here.  */
10420             break;
10421
10422           /* Truncate the string and get rid of the "parameter value" pair before
10423              the arguments string is parsed by the parse_exp_1 function.  */
10424           *tok = '\0';
10425         }
10426     }
10427
10428   /* Parse the rest of the arguments.  */
10429   innermost_block = NULL;
10430   exp_start = arg;
10431   exp = parse_exp_1 (&arg, 0, 0);
10432   exp_end = arg;
10433   /* Remove trailing whitespace from the expression before saving it.
10434      This makes the eventual display of the expression string a bit
10435      prettier.  */
10436   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10437     --exp_end;
10438
10439   /* Checking if the expression is not constant.  */
10440   if (watchpoint_exp_is_const (exp))
10441     {
10442       int len;
10443
10444       len = exp_end - exp_start;
10445       while (len > 0 && isspace (exp_start[len - 1]))
10446         len--;
10447       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10448     }
10449
10450   exp_valid_block = innermost_block;
10451   mark = value_mark ();
10452   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10453
10454   if (just_location)
10455     {
10456       int ret;
10457
10458       exp_valid_block = NULL;
10459       val = value_addr (result);
10460       release_value (val);
10461       value_free_to_mark (mark);
10462
10463       if (use_mask)
10464         {
10465           ret = target_masked_watch_num_registers (value_as_address (val),
10466                                                    mask);
10467           if (ret == -1)
10468             error (_("This target does not support masked watchpoints."));
10469           else if (ret == -2)
10470             error (_("Invalid mask or memory region."));
10471         }
10472     }
10473   else if (val != NULL)
10474     release_value (val);
10475
10476   tok = skip_spaces (arg);
10477   end_tok = skip_to_space (tok);
10478
10479   toklen = end_tok - tok;
10480   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10481     {
10482       struct expression *cond;
10483
10484       innermost_block = NULL;
10485       tok = cond_start = end_tok + 1;
10486       cond = parse_exp_1 (&tok, 0, 0);
10487
10488       /* The watchpoint expression may not be local, but the condition
10489          may still be.  E.g.: `watch global if local > 0'.  */
10490       cond_exp_valid_block = innermost_block;
10491
10492       xfree (cond);
10493       cond_end = tok;
10494     }
10495   if (*tok)
10496     error (_("Junk at end of command."));
10497
10498   if (accessflag == hw_read)
10499     bp_type = bp_read_watchpoint;
10500   else if (accessflag == hw_access)
10501     bp_type = bp_access_watchpoint;
10502   else
10503     bp_type = bp_hardware_watchpoint;
10504
10505   frame = block_innermost_frame (exp_valid_block);
10506
10507   /* If the expression is "local", then set up a "watchpoint scope"
10508      breakpoint at the point where we've left the scope of the watchpoint
10509      expression.  Create the scope breakpoint before the watchpoint, so
10510      that we will encounter it first in bpstat_stop_status.  */
10511   if (exp_valid_block && frame)
10512     {
10513       if (frame_id_p (frame_unwind_caller_id (frame)))
10514         {
10515           scope_breakpoint
10516             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10517                                           frame_unwind_caller_pc (frame),
10518                                           bp_watchpoint_scope,
10519                                           &momentary_breakpoint_ops);
10520
10521           scope_breakpoint->enable_state = bp_enabled;
10522
10523           /* Automatically delete the breakpoint when it hits.  */
10524           scope_breakpoint->disposition = disp_del;
10525
10526           /* Only break in the proper frame (help with recursion).  */
10527           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10528
10529           /* Set the address at which we will stop.  */
10530           scope_breakpoint->loc->gdbarch
10531             = frame_unwind_caller_arch (frame);
10532           scope_breakpoint->loc->requested_address
10533             = frame_unwind_caller_pc (frame);
10534           scope_breakpoint->loc->address
10535             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10536                                          scope_breakpoint->loc->requested_address,
10537                                          scope_breakpoint->type);
10538         }
10539     }
10540
10541   /* Now set up the breakpoint.  */
10542
10543   w = XCNEW (struct watchpoint);
10544   b = &w->base;
10545   if (use_mask)
10546     init_raw_breakpoint_without_location (b, NULL, bp_type,
10547                                           &masked_watchpoint_breakpoint_ops);
10548   else
10549     init_raw_breakpoint_without_location (b, NULL, bp_type,
10550                                           &watchpoint_breakpoint_ops);
10551   b->thread = thread;
10552   b->disposition = disp_donttouch;
10553   b->pspace = current_program_space;
10554   w->exp = exp;
10555   w->exp_valid_block = exp_valid_block;
10556   w->cond_exp_valid_block = cond_exp_valid_block;
10557   if (just_location)
10558     {
10559       struct type *t = value_type (val);
10560       CORE_ADDR addr = value_as_address (val);
10561       char *name;
10562
10563       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10564       name = type_to_string (t);
10565
10566       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10567                                           core_addr_to_string (addr));
10568       xfree (name);
10569
10570       w->exp_string = xstrprintf ("-location %.*s",
10571                                   (int) (exp_end - exp_start), exp_start);
10572
10573       /* The above expression is in C.  */
10574       b->language = language_c;
10575     }
10576   else
10577     w->exp_string = savestring (exp_start, exp_end - exp_start);
10578
10579   if (use_mask)
10580     {
10581       w->hw_wp_mask = mask;
10582     }
10583   else
10584     {
10585       w->val = val;
10586       w->val_valid = 1;
10587     }
10588
10589   if (cond_start)
10590     b->cond_string = savestring (cond_start, cond_end - cond_start);
10591   else
10592     b->cond_string = 0;
10593
10594   if (frame)
10595     {
10596       w->watchpoint_frame = get_frame_id (frame);
10597       w->watchpoint_thread = inferior_ptid;
10598     }
10599   else
10600     {
10601       w->watchpoint_frame = null_frame_id;
10602       w->watchpoint_thread = null_ptid;
10603     }
10604
10605   if (scope_breakpoint != NULL)
10606     {
10607       /* The scope breakpoint is related to the watchpoint.  We will
10608          need to act on them together.  */
10609       b->related_breakpoint = scope_breakpoint;
10610       scope_breakpoint->related_breakpoint = b;
10611     }
10612
10613   if (!just_location)
10614     value_free_to_mark (mark);
10615
10616   TRY_CATCH (e, RETURN_MASK_ALL)
10617     {
10618       /* Finally update the new watchpoint.  This creates the locations
10619          that should be inserted.  */
10620       update_watchpoint (w, 1);
10621     }
10622   if (e.reason < 0)
10623     {
10624       delete_breakpoint (b);
10625       throw_exception (e);
10626     }
10627
10628   install_breakpoint (internal, b, 1);
10629 }
10630
10631 /* Return count of debug registers needed to watch the given expression.
10632    If the watchpoint cannot be handled in hardware return zero.  */
10633
10634 static int
10635 can_use_hardware_watchpoint (struct value *v)
10636 {
10637   int found_memory_cnt = 0;
10638   struct value *head = v;
10639
10640   /* Did the user specifically forbid us to use hardware watchpoints? */
10641   if (!can_use_hw_watchpoints)
10642     return 0;
10643
10644   /* Make sure that the value of the expression depends only upon
10645      memory contents, and values computed from them within GDB.  If we
10646      find any register references or function calls, we can't use a
10647      hardware watchpoint.
10648
10649      The idea here is that evaluating an expression generates a series
10650      of values, one holding the value of every subexpression.  (The
10651      expression a*b+c has five subexpressions: a, b, a*b, c, and
10652      a*b+c.)  GDB's values hold almost enough information to establish
10653      the criteria given above --- they identify memory lvalues,
10654      register lvalues, computed values, etcetera.  So we can evaluate
10655      the expression, and then scan the chain of values that leaves
10656      behind to decide whether we can detect any possible change to the
10657      expression's final value using only hardware watchpoints.
10658
10659      However, I don't think that the values returned by inferior
10660      function calls are special in any way.  So this function may not
10661      notice that an expression involving an inferior function call
10662      can't be watched with hardware watchpoints.  FIXME.  */
10663   for (; v; v = value_next (v))
10664     {
10665       if (VALUE_LVAL (v) == lval_memory)
10666         {
10667           if (v != head && value_lazy (v))
10668             /* A lazy memory lvalue in the chain is one that GDB never
10669                needed to fetch; we either just used its address (e.g.,
10670                `a' in `a.b') or we never needed it at all (e.g., `a'
10671                in `a,b').  This doesn't apply to HEAD; if that is
10672                lazy then it was not readable, but watch it anyway.  */
10673             ;
10674           else
10675             {
10676               /* Ahh, memory we actually used!  Check if we can cover
10677                  it with hardware watchpoints.  */
10678               struct type *vtype = check_typedef (value_type (v));
10679
10680               /* We only watch structs and arrays if user asked for it
10681                  explicitly, never if they just happen to appear in a
10682                  middle of some value chain.  */
10683               if (v == head
10684                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10685                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10686                 {
10687                   CORE_ADDR vaddr = value_address (v);
10688                   int len;
10689                   int num_regs;
10690
10691                   len = (target_exact_watchpoints
10692                          && is_scalar_type_recursive (vtype))?
10693                     1 : TYPE_LENGTH (value_type (v));
10694
10695                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10696                   if (!num_regs)
10697                     return 0;
10698                   else
10699                     found_memory_cnt += num_regs;
10700                 }
10701             }
10702         }
10703       else if (VALUE_LVAL (v) != not_lval
10704                && deprecated_value_modifiable (v) == 0)
10705         return 0;       /* These are values from the history (e.g., $1).  */
10706       else if (VALUE_LVAL (v) == lval_register)
10707         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10708     }
10709
10710   /* The expression itself looks suitable for using a hardware
10711      watchpoint, but give the target machine a chance to reject it.  */
10712   return found_memory_cnt;
10713 }
10714
10715 void
10716 watch_command_wrapper (char *arg, int from_tty, int internal)
10717 {
10718   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10719 }
10720
10721 /* A helper function that looks for an argument at the start of a
10722    string.  The argument must also either be at the end of the string,
10723    or be followed by whitespace.  Returns 1 if it finds the argument,
10724    0 otherwise.  If the argument is found, it updates *STR.  */
10725
10726 static int
10727 check_for_argument (char **str, char *arg, int arg_len)
10728 {
10729   if (strncmp (*str, arg, arg_len) == 0
10730       && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
10731     {
10732       *str += arg_len;
10733       return 1;
10734     }
10735   return 0;
10736 }
10737
10738 /* A helper function that looks for the "-location" argument and then
10739    calls watch_command_1.  */
10740
10741 static void
10742 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
10743 {
10744   int just_location = 0;
10745
10746   if (arg
10747       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10748           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10749     {
10750       arg = skip_spaces (arg);
10751       just_location = 1;
10752     }
10753
10754   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10755 }
10756
10757 static void
10758 watch_command (char *arg, int from_tty)
10759 {
10760   watch_maybe_just_location (arg, hw_write, from_tty);
10761 }
10762
10763 void
10764 rwatch_command_wrapper (char *arg, int from_tty, int internal)
10765 {
10766   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10767 }
10768
10769 static void
10770 rwatch_command (char *arg, int from_tty)
10771 {
10772   watch_maybe_just_location (arg, hw_read, from_tty);
10773 }
10774
10775 void
10776 awatch_command_wrapper (char *arg, int from_tty, int internal)
10777 {
10778   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10779 }
10780
10781 static void
10782 awatch_command (char *arg, int from_tty)
10783 {
10784   watch_maybe_just_location (arg, hw_access, from_tty);
10785 }
10786 \f
10787
10788 /* Helper routines for the until_command routine in infcmd.c.  Here
10789    because it uses the mechanisms of breakpoints.  */
10790
10791 struct until_break_command_continuation_args
10792 {
10793   struct breakpoint *breakpoint;
10794   struct breakpoint *breakpoint2;
10795   int thread_num;
10796 };
10797
10798 /* This function is called by fetch_inferior_event via the
10799    cmd_continuation pointer, to complete the until command.  It takes
10800    care of cleaning up the temporary breakpoints set up by the until
10801    command.  */
10802 static void
10803 until_break_command_continuation (void *arg, int err)
10804 {
10805   struct until_break_command_continuation_args *a = arg;
10806
10807   delete_breakpoint (a->breakpoint);
10808   if (a->breakpoint2)
10809     delete_breakpoint (a->breakpoint2);
10810   delete_longjmp_breakpoint (a->thread_num);
10811 }
10812
10813 void
10814 until_break_command (char *arg, int from_tty, int anywhere)
10815 {
10816   struct symtabs_and_lines sals;
10817   struct symtab_and_line sal;
10818   struct frame_info *frame;
10819   struct gdbarch *frame_gdbarch;
10820   struct frame_id stack_frame_id;
10821   struct frame_id caller_frame_id;
10822   struct breakpoint *breakpoint;
10823   struct breakpoint *breakpoint2 = NULL;
10824   struct cleanup *old_chain;
10825   int thread;
10826   struct thread_info *tp;
10827
10828   clear_proceed_status ();
10829
10830   /* Set a breakpoint where the user wants it and at return from
10831      this function.  */
10832
10833   if (last_displayed_sal_is_valid ())
10834     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10835                           get_last_displayed_symtab (),
10836                           get_last_displayed_line ());
10837   else
10838     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10839                           (struct symtab *) NULL, 0);
10840
10841   if (sals.nelts != 1)
10842     error (_("Couldn't get information on specified line."));
10843
10844   sal = sals.sals[0];
10845   xfree (sals.sals);    /* malloc'd, so freed.  */
10846
10847   if (*arg)
10848     error (_("Junk at end of arguments."));
10849
10850   resolve_sal_pc (&sal);
10851
10852   tp = inferior_thread ();
10853   thread = tp->num;
10854
10855   old_chain = make_cleanup (null_cleanup, NULL);
10856
10857   /* Note linespec handling above invalidates the frame chain.
10858      Installing a breakpoint also invalidates the frame chain (as it
10859      may need to switch threads), so do any frame handling before
10860      that.  */
10861
10862   frame = get_selected_frame (NULL);
10863   frame_gdbarch = get_frame_arch (frame);
10864   stack_frame_id = get_stack_frame_id (frame);
10865   caller_frame_id = frame_unwind_caller_id (frame);
10866
10867   /* Keep within the current frame, or in frames called by the current
10868      one.  */
10869
10870   if (frame_id_p (caller_frame_id))
10871     {
10872       struct symtab_and_line sal2;
10873
10874       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10875       sal2.pc = frame_unwind_caller_pc (frame);
10876       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
10877                                               sal2,
10878                                               caller_frame_id,
10879                                               bp_until);
10880       make_cleanup_delete_breakpoint (breakpoint2);
10881
10882       set_longjmp_breakpoint (tp, caller_frame_id);
10883       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
10884     }
10885
10886   /* set_momentary_breakpoint could invalidate FRAME.  */
10887   frame = NULL;
10888
10889   if (anywhere)
10890     /* If the user told us to continue until a specified location,
10891        we don't specify a frame at which we need to stop.  */
10892     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10893                                            null_frame_id, bp_until);
10894   else
10895     /* Otherwise, specify the selected frame, because we want to stop
10896        only at the very same frame.  */
10897     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10898                                            stack_frame_id, bp_until);
10899   make_cleanup_delete_breakpoint (breakpoint);
10900
10901   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
10902
10903   /* If we are running asynchronously, and proceed call above has
10904      actually managed to start the target, arrange for breakpoints to
10905      be deleted when the target stops.  Otherwise, we're already
10906      stopped and delete breakpoints via cleanup chain.  */
10907
10908   if (target_can_async_p () && is_running (inferior_ptid))
10909     {
10910       struct until_break_command_continuation_args *args;
10911       args = xmalloc (sizeof (*args));
10912
10913       args->breakpoint = breakpoint;
10914       args->breakpoint2 = breakpoint2;
10915       args->thread_num = thread;
10916
10917       discard_cleanups (old_chain);
10918       add_continuation (inferior_thread (),
10919                         until_break_command_continuation, args,
10920                         xfree);
10921     }
10922   else
10923     do_cleanups (old_chain);
10924 }
10925
10926 /* This function attempts to parse an optional "if <cond>" clause
10927    from the arg string.  If one is not found, it returns NULL.
10928
10929    Else, it returns a pointer to the condition string.  (It does not
10930    attempt to evaluate the string against a particular block.)  And,
10931    it updates arg to point to the first character following the parsed
10932    if clause in the arg string.  */
10933
10934 static char *
10935 ep_parse_optional_if_clause (char **arg)
10936 {
10937   char *cond_string;
10938
10939   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
10940     return NULL;
10941
10942   /* Skip the "if" keyword.  */
10943   (*arg) += 2;
10944
10945   /* Skip any extra leading whitespace, and record the start of the
10946      condition string.  */
10947   *arg = skip_spaces (*arg);
10948   cond_string = *arg;
10949
10950   /* Assume that the condition occupies the remainder of the arg
10951      string.  */
10952   (*arg) += strlen (cond_string);
10953
10954   return cond_string;
10955 }
10956
10957 /* Commands to deal with catching events, such as signals, exceptions,
10958    process start/exit, etc.  */
10959
10960 typedef enum
10961 {
10962   catch_fork_temporary, catch_vfork_temporary,
10963   catch_fork_permanent, catch_vfork_permanent
10964 }
10965 catch_fork_kind;
10966
10967 static void
10968 catch_fork_command_1 (char *arg, int from_tty, 
10969                       struct cmd_list_element *command)
10970 {
10971   struct gdbarch *gdbarch = get_current_arch ();
10972   char *cond_string = NULL;
10973   catch_fork_kind fork_kind;
10974   int tempflag;
10975
10976   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
10977   tempflag = (fork_kind == catch_fork_temporary
10978               || fork_kind == catch_vfork_temporary);
10979
10980   if (!arg)
10981     arg = "";
10982   arg = skip_spaces (arg);
10983
10984   /* The allowed syntax is:
10985      catch [v]fork
10986      catch [v]fork if <cond>
10987
10988      First, check if there's an if clause.  */
10989   cond_string = ep_parse_optional_if_clause (&arg);
10990
10991   if ((*arg != '\0') && !isspace (*arg))
10992     error (_("Junk at end of arguments."));
10993
10994   /* If this target supports it, create a fork or vfork catchpoint
10995      and enable reporting of such events.  */
10996   switch (fork_kind)
10997     {
10998     case catch_fork_temporary:
10999     case catch_fork_permanent:
11000       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11001                                           &catch_fork_breakpoint_ops);
11002       break;
11003     case catch_vfork_temporary:
11004     case catch_vfork_permanent:
11005       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11006                                           &catch_vfork_breakpoint_ops);
11007       break;
11008     default:
11009       error (_("unsupported or unknown fork kind; cannot catch it"));
11010       break;
11011     }
11012 }
11013
11014 static void
11015 catch_exec_command_1 (char *arg, int from_tty, 
11016                       struct cmd_list_element *command)
11017 {
11018   struct exec_catchpoint *c;
11019   struct gdbarch *gdbarch = get_current_arch ();
11020   int tempflag;
11021   char *cond_string = NULL;
11022
11023   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11024
11025   if (!arg)
11026     arg = "";
11027   arg = skip_spaces (arg);
11028
11029   /* The allowed syntax is:
11030      catch exec
11031      catch exec if <cond>
11032
11033      First, check if there's an if clause.  */
11034   cond_string = ep_parse_optional_if_clause (&arg);
11035
11036   if ((*arg != '\0') && !isspace (*arg))
11037     error (_("Junk at end of arguments."));
11038
11039   c = XNEW (struct exec_catchpoint);
11040   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11041                    &catch_exec_breakpoint_ops);
11042   c->exec_pathname = NULL;
11043
11044   install_breakpoint (0, &c->base, 1);
11045 }
11046
11047 static enum print_stop_action
11048 print_it_exception_catchpoint (bpstat bs)
11049 {
11050   struct ui_out *uiout = current_uiout;
11051   struct breakpoint *b = bs->breakpoint_at;
11052   int bp_temp, bp_throw;
11053
11054   annotate_catchpoint (b->number);
11055
11056   bp_throw = strstr (b->addr_string, "throw") != NULL;
11057   if (b->loc->address != b->loc->requested_address)
11058     breakpoint_adjustment_warning (b->loc->requested_address,
11059                                    b->loc->address,
11060                                    b->number, 1);
11061   bp_temp = b->disposition == disp_del;
11062   ui_out_text (uiout, 
11063                bp_temp ? "Temporary catchpoint "
11064                        : "Catchpoint ");
11065   if (!ui_out_is_mi_like_p (uiout))
11066     ui_out_field_int (uiout, "bkptno", b->number);
11067   ui_out_text (uiout,
11068                bp_throw ? " (exception thrown), "
11069                         : " (exception caught), ");
11070   if (ui_out_is_mi_like_p (uiout))
11071     {
11072       ui_out_field_string (uiout, "reason", 
11073                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11074       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11075       ui_out_field_int (uiout, "bkptno", b->number);
11076     }
11077   return PRINT_SRC_AND_LOC;
11078 }
11079
11080 static void
11081 print_one_exception_catchpoint (struct breakpoint *b, 
11082                                 struct bp_location **last_loc)
11083 {
11084   struct value_print_options opts;
11085   struct ui_out *uiout = current_uiout;
11086
11087   get_user_print_options (&opts);
11088   if (opts.addressprint)
11089     {
11090       annotate_field (4);
11091       if (b->loc == NULL || b->loc->shlib_disabled)
11092         ui_out_field_string (uiout, "addr", "<PENDING>");
11093       else
11094         ui_out_field_core_addr (uiout, "addr",
11095                                 b->loc->gdbarch, b->loc->address);
11096     }
11097   annotate_field (5);
11098   if (b->loc)
11099     *last_loc = b->loc;
11100   if (strstr (b->addr_string, "throw") != NULL)
11101     ui_out_field_string (uiout, "what", "exception throw");
11102   else
11103     ui_out_field_string (uiout, "what", "exception catch");
11104 }
11105
11106 static void
11107 print_mention_exception_catchpoint (struct breakpoint *b)
11108 {
11109   struct ui_out *uiout = current_uiout;
11110   int bp_temp;
11111   int bp_throw;
11112
11113   bp_temp = b->disposition == disp_del;
11114   bp_throw = strstr (b->addr_string, "throw") != NULL;
11115   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11116                               : _("Catchpoint "));
11117   ui_out_field_int (uiout, "bkptno", b->number);
11118   ui_out_text (uiout, bp_throw ? _(" (throw)")
11119                                : _(" (catch)"));
11120 }
11121
11122 /* Implement the "print_recreate" breakpoint_ops method for throw and
11123    catch catchpoints.  */
11124
11125 static void
11126 print_recreate_exception_catchpoint (struct breakpoint *b, 
11127                                      struct ui_file *fp)
11128 {
11129   int bp_temp;
11130   int bp_throw;
11131
11132   bp_temp = b->disposition == disp_del;
11133   bp_throw = strstr (b->addr_string, "throw") != NULL;
11134   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11135   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11136   print_recreate_thread (b, fp);
11137 }
11138
11139 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11140
11141 static int
11142 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11143                           enum exception_event_kind ex_event, int from_tty)
11144 {
11145   char *trigger_func_name;
11146  
11147   if (ex_event == EX_EVENT_CATCH)
11148     trigger_func_name = "__cxa_begin_catch";
11149   else
11150     trigger_func_name = "__cxa_throw";
11151
11152   create_breakpoint (get_current_arch (),
11153                      trigger_func_name, cond_string, -1, NULL,
11154                      0 /* condition and thread are valid.  */,
11155                      tempflag, bp_breakpoint,
11156                      0,
11157                      AUTO_BOOLEAN_TRUE /* pending */,
11158                      &gnu_v3_exception_catchpoint_ops, from_tty,
11159                      1 /* enabled */,
11160                      0 /* internal */,
11161                      0);
11162
11163   return 1;
11164 }
11165
11166 /* Deal with "catch catch" and "catch throw" commands.  */
11167
11168 static void
11169 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11170                            int tempflag, int from_tty)
11171 {
11172   char *cond_string = NULL;
11173
11174   if (!arg)
11175     arg = "";
11176   arg = skip_spaces (arg);
11177
11178   cond_string = ep_parse_optional_if_clause (&arg);
11179
11180   if ((*arg != '\0') && !isspace (*arg))
11181     error (_("Junk at end of arguments."));
11182
11183   if (ex_event != EX_EVENT_THROW
11184       && ex_event != EX_EVENT_CATCH)
11185     error (_("Unsupported or unknown exception event; cannot catch it"));
11186
11187   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11188     return;
11189
11190   warning (_("Unsupported with this platform/compiler combination."));
11191 }
11192
11193 /* Implementation of "catch catch" command.  */
11194
11195 static void
11196 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11197 {
11198   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11199
11200   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11201 }
11202
11203 /* Implementation of "catch throw" command.  */
11204
11205 static void
11206 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11207 {
11208   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11209
11210   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11211 }
11212
11213 void
11214 init_ada_exception_breakpoint (struct breakpoint *b,
11215                                struct gdbarch *gdbarch,
11216                                struct symtab_and_line sal,
11217                                char *addr_string,
11218                                const struct breakpoint_ops *ops,
11219                                int tempflag,
11220                                int from_tty)
11221 {
11222   if (from_tty)
11223     {
11224       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11225       if (!loc_gdbarch)
11226         loc_gdbarch = gdbarch;
11227
11228       describe_other_breakpoints (loc_gdbarch,
11229                                   sal.pspace, sal.pc, sal.section, -1);
11230       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11231          version for exception catchpoints, because two catchpoints
11232          used for different exception names will use the same address.
11233          In this case, a "breakpoint ... also set at..." warning is
11234          unproductive.  Besides, the warning phrasing is also a bit
11235          inappropriate, we should use the word catchpoint, and tell
11236          the user what type of catchpoint it is.  The above is good
11237          enough for now, though.  */
11238     }
11239
11240   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11241
11242   b->enable_state = bp_enabled;
11243   b->disposition = tempflag ? disp_del : disp_donttouch;
11244   b->addr_string = addr_string;
11245   b->language = language_ada;
11246 }
11247
11248 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11249    filter list, or NULL if no filtering is required.  */
11250 static VEC(int) *
11251 catch_syscall_split_args (char *arg)
11252 {
11253   VEC(int) *result = NULL;
11254   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11255
11256   while (*arg != '\0')
11257     {
11258       int i, syscall_number;
11259       char *endptr;
11260       char cur_name[128];
11261       struct syscall s;
11262
11263       /* Skip whitespace.  */
11264       while (isspace (*arg))
11265         arg++;
11266
11267       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11268         cur_name[i] = arg[i];
11269       cur_name[i] = '\0';
11270       arg += i;
11271
11272       /* Check if the user provided a syscall name or a number.  */
11273       syscall_number = (int) strtol (cur_name, &endptr, 0);
11274       if (*endptr == '\0')
11275         get_syscall_by_number (syscall_number, &s);
11276       else
11277         {
11278           /* We have a name.  Let's check if it's valid and convert it
11279              to a number.  */
11280           get_syscall_by_name (cur_name, &s);
11281
11282           if (s.number == UNKNOWN_SYSCALL)
11283             /* Here we have to issue an error instead of a warning,
11284                because GDB cannot do anything useful if there's no
11285                syscall number to be caught.  */
11286             error (_("Unknown syscall name '%s'."), cur_name);
11287         }
11288
11289       /* Ok, it's valid.  */
11290       VEC_safe_push (int, result, s.number);
11291     }
11292
11293   discard_cleanups (cleanup);
11294   return result;
11295 }
11296
11297 /* Implement the "catch syscall" command.  */
11298
11299 static void
11300 catch_syscall_command_1 (char *arg, int from_tty, 
11301                          struct cmd_list_element *command)
11302 {
11303   int tempflag;
11304   VEC(int) *filter;
11305   struct syscall s;
11306   struct gdbarch *gdbarch = get_current_arch ();
11307
11308   /* Checking if the feature if supported.  */
11309   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11310     error (_("The feature 'catch syscall' is not supported on \
11311 this architecture yet."));
11312
11313   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11314
11315   arg = skip_spaces (arg);
11316
11317   /* We need to do this first "dummy" translation in order
11318      to get the syscall XML file loaded or, most important,
11319      to display a warning to the user if there's no XML file
11320      for his/her architecture.  */
11321   get_syscall_by_number (0, &s);
11322
11323   /* The allowed syntax is:
11324      catch syscall
11325      catch syscall <name | number> [<name | number> ... <name | number>]
11326
11327      Let's check if there's a syscall name.  */
11328
11329   if (arg != NULL)
11330     filter = catch_syscall_split_args (arg);
11331   else
11332     filter = NULL;
11333
11334   create_syscall_event_catchpoint (tempflag, filter,
11335                                    &catch_syscall_breakpoint_ops);
11336 }
11337
11338 static void
11339 catch_command (char *arg, int from_tty)
11340 {
11341   error (_("Catch requires an event name."));
11342 }
11343 \f
11344
11345 static void
11346 tcatch_command (char *arg, int from_tty)
11347 {
11348   error (_("Catch requires an event name."));
11349 }
11350
11351 /* A qsort comparison function that sorts breakpoints in order.  */
11352
11353 static int
11354 compare_breakpoints (const void *a, const void *b)
11355 {
11356   const breakpoint_p *ba = a;
11357   uintptr_t ua = (uintptr_t) *ba;
11358   const breakpoint_p *bb = b;
11359   uintptr_t ub = (uintptr_t) *bb;
11360
11361   if ((*ba)->number < (*bb)->number)
11362     return -1;
11363   else if ((*ba)->number > (*bb)->number)
11364     return 1;
11365
11366   /* Now sort by address, in case we see, e..g, two breakpoints with
11367      the number 0.  */
11368   if (ua < ub)
11369     return -1;
11370   return ub > ub ? 1 : 0;
11371 }
11372
11373 /* Delete breakpoints by address or line.  */
11374
11375 static void
11376 clear_command (char *arg, int from_tty)
11377 {
11378   struct breakpoint *b, *prev;
11379   VEC(breakpoint_p) *found = 0;
11380   int ix;
11381   int default_match;
11382   struct symtabs_and_lines sals;
11383   struct symtab_and_line sal;
11384   int i;
11385   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11386
11387   if (arg)
11388     {
11389       sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
11390                                      | DECODE_LINE_LIST_MODE));
11391       default_match = 0;
11392     }
11393   else
11394     {
11395       sals.sals = (struct symtab_and_line *)
11396         xmalloc (sizeof (struct symtab_and_line));
11397       make_cleanup (xfree, sals.sals);
11398       init_sal (&sal);          /* Initialize to zeroes.  */
11399
11400       /* Set sal's line, symtab, pc, and pspace to the values
11401          corresponding to the last call to print_frame_info.  If the
11402          codepoint is not valid, this will set all the fields to 0.  */
11403       get_last_displayed_sal (&sal);
11404       if (sal.symtab == 0)
11405         error (_("No source file specified."));
11406
11407       sals.sals[0] = sal;
11408       sals.nelts = 1;
11409
11410       default_match = 1;
11411     }
11412
11413   /* We don't call resolve_sal_pc here.  That's not as bad as it
11414      seems, because all existing breakpoints typically have both
11415      file/line and pc set.  So, if clear is given file/line, we can
11416      match this to existing breakpoint without obtaining pc at all.
11417
11418      We only support clearing given the address explicitly 
11419      present in breakpoint table.  Say, we've set breakpoint 
11420      at file:line.  There were several PC values for that file:line,
11421      due to optimization, all in one block.
11422
11423      We've picked one PC value.  If "clear" is issued with another
11424      PC corresponding to the same file:line, the breakpoint won't
11425      be cleared.  We probably can still clear the breakpoint, but 
11426      since the other PC value is never presented to user, user
11427      can only find it by guessing, and it does not seem important
11428      to support that.  */
11429
11430   /* For each line spec given, delete bps which correspond to it.  Do
11431      it in two passes, solely to preserve the current behavior that
11432      from_tty is forced true if we delete more than one
11433      breakpoint.  */
11434
11435   found = NULL;
11436   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11437   for (i = 0; i < sals.nelts; i++)
11438     {
11439       int is_abs, sal_name_len;
11440
11441       /* If exact pc given, clear bpts at that pc.
11442          If line given (pc == 0), clear all bpts on specified line.
11443          If defaulting, clear all bpts on default line
11444          or at default pc.
11445
11446          defaulting    sal.pc != 0    tests to do
11447
11448          0              1             pc
11449          1              1             pc _and_ line
11450          0              0             line
11451          1              0             <can't happen> */
11452
11453       sal = sals.sals[i];
11454       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11455       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11456
11457       /* Find all matching breakpoints and add them to 'found'.  */
11458       ALL_BREAKPOINTS (b)
11459         {
11460           int match = 0;
11461           /* Are we going to delete b?  */
11462           if (b->type != bp_none && !is_watchpoint (b))
11463             {
11464               struct bp_location *loc = b->loc;
11465               for (; loc; loc = loc->next)
11466                 {
11467                   /* If the user specified file:line, don't allow a PC
11468                      match.  This matches historical gdb behavior.  */
11469                   int pc_match = (!sal.explicit_line
11470                                   && sal.pc
11471                                   && (loc->pspace == sal.pspace)
11472                                   && (loc->address == sal.pc)
11473                                   && (!section_is_overlay (loc->section)
11474                                       || loc->section == sal.section));
11475                   int line_match = 0;
11476
11477                   if ((default_match || sal.explicit_line)
11478                       && loc->source_file != NULL
11479                       && sal.symtab != NULL
11480                       && sal.pspace == loc->pspace
11481                       && loc->line_number == sal.line)
11482                     {
11483                       if (filename_cmp (loc->source_file,
11484                                         sal.symtab->filename) == 0)
11485                         line_match = 1;
11486                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11487                                && compare_filenames_for_search (loc->source_file,
11488                                                                 sal.symtab->filename,
11489                                                                 sal_name_len))
11490                         line_match = 1;
11491                     }
11492
11493                   if (pc_match || line_match)
11494                     {
11495                       match = 1;
11496                       break;
11497                     }
11498                 }
11499             }
11500
11501           if (match)
11502             VEC_safe_push(breakpoint_p, found, b);
11503         }
11504     }
11505
11506   /* Now go thru the 'found' chain and delete them.  */
11507   if (VEC_empty(breakpoint_p, found))
11508     {
11509       if (arg)
11510         error (_("No breakpoint at %s."), arg);
11511       else
11512         error (_("No breakpoint at this line."));
11513     }
11514
11515   /* Remove duplicates from the vec.  */
11516   qsort (VEC_address (breakpoint_p, found),
11517          VEC_length (breakpoint_p, found),
11518          sizeof (breakpoint_p),
11519          compare_breakpoints);
11520   prev = VEC_index (breakpoint_p, found, 0);
11521   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11522     {
11523       if (b == prev)
11524         {
11525           VEC_ordered_remove (breakpoint_p, found, ix);
11526           --ix;
11527         }
11528     }
11529
11530   if (VEC_length(breakpoint_p, found) > 1)
11531     from_tty = 1;       /* Always report if deleted more than one.  */
11532   if (from_tty)
11533     {
11534       if (VEC_length(breakpoint_p, found) == 1)
11535         printf_unfiltered (_("Deleted breakpoint "));
11536       else
11537         printf_unfiltered (_("Deleted breakpoints "));
11538     }
11539   breakpoints_changed ();
11540
11541   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11542     {
11543       if (from_tty)
11544         printf_unfiltered ("%d ", b->number);
11545       delete_breakpoint (b);
11546     }
11547   if (from_tty)
11548     putchar_unfiltered ('\n');
11549
11550   do_cleanups (cleanups);
11551 }
11552 \f
11553 /* Delete breakpoint in BS if they are `delete' breakpoints and
11554    all breakpoints that are marked for deletion, whether hit or not.
11555    This is called after any breakpoint is hit, or after errors.  */
11556
11557 void
11558 breakpoint_auto_delete (bpstat bs)
11559 {
11560   struct breakpoint *b, *b_tmp;
11561
11562   for (; bs; bs = bs->next)
11563     if (bs->breakpoint_at
11564         && bs->breakpoint_at->disposition == disp_del
11565         && bs->stop)
11566       delete_breakpoint (bs->breakpoint_at);
11567
11568   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11569   {
11570     if (b->disposition == disp_del_at_next_stop)
11571       delete_breakpoint (b);
11572   }
11573 }
11574
11575 /* A comparison function for bp_location AP and BP being interfaced to
11576    qsort.  Sort elements primarily by their ADDRESS (no matter what
11577    does breakpoint_address_is_meaningful say for its OWNER),
11578    secondarily by ordering first bp_permanent OWNERed elements and
11579    terciarily just ensuring the array is sorted stable way despite
11580    qsort being an unstable algorithm.  */
11581
11582 static int
11583 bp_location_compare (const void *ap, const void *bp)
11584 {
11585   struct bp_location *a = *(void **) ap;
11586   struct bp_location *b = *(void **) bp;
11587   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11588   int a_perm = a->owner->enable_state == bp_permanent;
11589   int b_perm = b->owner->enable_state == bp_permanent;
11590
11591   if (a->address != b->address)
11592     return (a->address > b->address) - (a->address < b->address);
11593
11594   /* Sort locations at the same address by their pspace number, keeping
11595      locations of the same inferior (in a multi-inferior environment)
11596      grouped.  */
11597
11598   if (a->pspace->num != b->pspace->num)
11599     return ((a->pspace->num > b->pspace->num)
11600             - (a->pspace->num < b->pspace->num));
11601
11602   /* Sort permanent breakpoints first.  */
11603   if (a_perm != b_perm)
11604     return (a_perm < b_perm) - (a_perm > b_perm);
11605
11606   /* Make the internal GDB representation stable across GDB runs
11607      where A and B memory inside GDB can differ.  Breakpoint locations of
11608      the same type at the same address can be sorted in arbitrary order.  */
11609
11610   if (a->owner->number != b->owner->number)
11611     return ((a->owner->number > b->owner->number)
11612             - (a->owner->number < b->owner->number));
11613
11614   return (a > b) - (a < b);
11615 }
11616
11617 /* Set bp_location_placed_address_before_address_max and
11618    bp_location_shadow_len_after_address_max according to the current
11619    content of the bp_location array.  */
11620
11621 static void
11622 bp_location_target_extensions_update (void)
11623 {
11624   struct bp_location *bl, **blp_tmp;
11625
11626   bp_location_placed_address_before_address_max = 0;
11627   bp_location_shadow_len_after_address_max = 0;
11628
11629   ALL_BP_LOCATIONS (bl, blp_tmp)
11630     {
11631       CORE_ADDR start, end, addr;
11632
11633       if (!bp_location_has_shadow (bl))
11634         continue;
11635
11636       start = bl->target_info.placed_address;
11637       end = start + bl->target_info.shadow_len;
11638
11639       gdb_assert (bl->address >= start);
11640       addr = bl->address - start;
11641       if (addr > bp_location_placed_address_before_address_max)
11642         bp_location_placed_address_before_address_max = addr;
11643
11644       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11645
11646       gdb_assert (bl->address < end);
11647       addr = end - bl->address;
11648       if (addr > bp_location_shadow_len_after_address_max)
11649         bp_location_shadow_len_after_address_max = addr;
11650     }
11651 }
11652
11653 /* Download tracepoint locations if they haven't been.  */
11654
11655 static void
11656 download_tracepoint_locations (void)
11657 {
11658   struct bp_location *bl, **blp_tmp;
11659   struct cleanup *old_chain;
11660
11661   if (!target_can_download_tracepoint ())
11662     return;
11663
11664   old_chain = save_current_space_and_thread ();
11665
11666   ALL_BP_LOCATIONS (bl, blp_tmp)
11667     {
11668       struct tracepoint *t;
11669
11670       if (!is_tracepoint (bl->owner))
11671         continue;
11672
11673       if ((bl->owner->type == bp_fast_tracepoint
11674            ? !may_insert_fast_tracepoints
11675            : !may_insert_tracepoints))
11676         continue;
11677
11678       /* In tracepoint, locations are _never_ duplicated, so
11679          should_be_inserted is equivalent to
11680          unduplicated_should_be_inserted.  */
11681       if (!should_be_inserted (bl) || bl->inserted)
11682         continue;
11683
11684       switch_to_program_space_and_thread (bl->pspace);
11685
11686       target_download_tracepoint (bl);
11687
11688       bl->inserted = 1;
11689       t = (struct tracepoint *) bl->owner;
11690       t->number_on_target = bl->owner->number;
11691     }
11692
11693   do_cleanups (old_chain);
11694 }
11695
11696 /* Swap the insertion/duplication state between two locations.  */
11697
11698 static void
11699 swap_insertion (struct bp_location *left, struct bp_location *right)
11700 {
11701   const int left_inserted = left->inserted;
11702   const int left_duplicate = left->duplicate;
11703   const int left_needs_update = left->needs_update;
11704   const struct bp_target_info left_target_info = left->target_info;
11705
11706   /* Locations of tracepoints can never be duplicated.  */
11707   if (is_tracepoint (left->owner))
11708     gdb_assert (!left->duplicate);
11709   if (is_tracepoint (right->owner))
11710     gdb_assert (!right->duplicate);
11711
11712   left->inserted = right->inserted;
11713   left->duplicate = right->duplicate;
11714   left->needs_update = right->needs_update;
11715   left->target_info = right->target_info;
11716   right->inserted = left_inserted;
11717   right->duplicate = left_duplicate;
11718   right->needs_update = left_needs_update;
11719   right->target_info = left_target_info;
11720 }
11721
11722 /* Force the re-insertion of the locations at ADDRESS.  This is called
11723    once a new/deleted/modified duplicate location is found and we are evaluating
11724    conditions on the target's side.  Such conditions need to be updated on
11725    the target.  */
11726
11727 static void
11728 force_breakpoint_reinsertion (struct bp_location *bl)
11729 {
11730   struct bp_location **locp = NULL, **loc2p;
11731   struct bp_location *loc;
11732   CORE_ADDR address = 0;
11733   int pspace_num;
11734
11735   address = bl->address;
11736   pspace_num = bl->pspace->num;
11737
11738   /* This is only meaningful if the target is
11739      evaluating conditions and if the user has
11740      opted for condition evaluation on the target's
11741      side.  */
11742   if (gdb_evaluates_breakpoint_condition_p ()
11743       || !target_supports_evaluation_of_breakpoint_conditions ())
11744     return;
11745
11746   /* Flag all breakpoint locations with this address and
11747      the same program space as the location
11748      as "its condition has changed".  We need to
11749      update the conditions on the target's side.  */
11750   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11751     {
11752       loc = *loc2p;
11753
11754       if (!is_breakpoint (loc->owner)
11755           || pspace_num != loc->pspace->num)
11756         continue;
11757
11758       /* Flag the location appropriately.  We use a different state to
11759          let everyone know that we already updated the set of locations
11760          with addr bl->address and program space bl->pspace.  This is so
11761          we don't have to keep calling these functions just to mark locations
11762          that have already been marked.  */
11763       loc->condition_changed = condition_updated;
11764
11765       /* Free the agent expression bytecode as well.  We will compute
11766          it later on.  */
11767       if (loc->cond_bytecode)
11768         {
11769           free_agent_expr (loc->cond_bytecode);
11770           loc->cond_bytecode = NULL;
11771         }
11772     }
11773 }
11774
11775 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
11776    into the inferior, only remove already-inserted locations that no
11777    longer should be inserted.  Functions that delete a breakpoint or
11778    breakpoints should pass false, so that deleting a breakpoint
11779    doesn't have the side effect of inserting the locations of other
11780    breakpoints that are marked not-inserted, but should_be_inserted
11781    returns true on them.
11782
11783    This behaviour is useful is situations close to tear-down -- e.g.,
11784    after an exec, while the target still has execution, but breakpoint
11785    shadows of the previous executable image should *NOT* be restored
11786    to the new image; or before detaching, where the target still has
11787    execution and wants to delete breakpoints from GDB's lists, and all
11788    breakpoints had already been removed from the inferior.  */
11789
11790 static void
11791 update_global_location_list (int should_insert)
11792 {
11793   struct breakpoint *b;
11794   struct bp_location **locp, *loc;
11795   struct cleanup *cleanups;
11796   /* Last breakpoint location address that was marked for update.  */
11797   CORE_ADDR last_addr = 0;
11798   /* Last breakpoint location program space that was marked for update.  */
11799   int last_pspace_num = -1;
11800
11801   /* Used in the duplicates detection below.  When iterating over all
11802      bp_locations, points to the first bp_location of a given address.
11803      Breakpoints and watchpoints of different types are never
11804      duplicates of each other.  Keep one pointer for each type of
11805      breakpoint/watchpoint, so we only need to loop over all locations
11806      once.  */
11807   struct bp_location *bp_loc_first;  /* breakpoint */
11808   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11809   struct bp_location *awp_loc_first; /* access watchpoint */
11810   struct bp_location *rwp_loc_first; /* read watchpoint */
11811
11812   /* Saved former bp_location array which we compare against the newly
11813      built bp_location from the current state of ALL_BREAKPOINTS.  */
11814   struct bp_location **old_location, **old_locp;
11815   unsigned old_location_count;
11816
11817   old_location = bp_location;
11818   old_location_count = bp_location_count;
11819   bp_location = NULL;
11820   bp_location_count = 0;
11821   cleanups = make_cleanup (xfree, old_location);
11822
11823   ALL_BREAKPOINTS (b)
11824     for (loc = b->loc; loc; loc = loc->next)
11825       bp_location_count++;
11826
11827   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
11828   locp = bp_location;
11829   ALL_BREAKPOINTS (b)
11830     for (loc = b->loc; loc; loc = loc->next)
11831       *locp++ = loc;
11832   qsort (bp_location, bp_location_count, sizeof (*bp_location),
11833          bp_location_compare);
11834
11835   bp_location_target_extensions_update ();
11836
11837   /* Identify bp_location instances that are no longer present in the
11838      new list, and therefore should be freed.  Note that it's not
11839      necessary that those locations should be removed from inferior --
11840      if there's another location at the same address (previously
11841      marked as duplicate), we don't need to remove/insert the
11842      location.
11843      
11844      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11845      and former bp_location array state respectively.  */
11846
11847   locp = bp_location;
11848   for (old_locp = old_location; old_locp < old_location + old_location_count;
11849        old_locp++)
11850     {
11851       struct bp_location *old_loc = *old_locp;
11852       struct bp_location **loc2p;
11853
11854       /* Tells if 'old_loc' is found among the new locations.  If
11855          not, we have to free it.  */
11856       int found_object = 0;
11857       /* Tells if the location should remain inserted in the target.  */
11858       int keep_in_target = 0;
11859       int removed = 0;
11860
11861       /* Skip LOCP entries which will definitely never be needed.
11862          Stop either at or being the one matching OLD_LOC.  */
11863       while (locp < bp_location + bp_location_count
11864              && (*locp)->address < old_loc->address)
11865         locp++;
11866
11867       for (loc2p = locp;
11868            (loc2p < bp_location + bp_location_count
11869             && (*loc2p)->address == old_loc->address);
11870            loc2p++)
11871         {
11872           /* Check if this is a new/duplicated location or a duplicated
11873              location that had its condition modified.  If so, we want to send
11874              its condition to the target if evaluation of conditions is taking
11875              place there.  */
11876           if ((*loc2p)->condition_changed == condition_modified
11877               && (last_addr != old_loc->address
11878                   || last_pspace_num != old_loc->pspace->num))
11879             {
11880               force_breakpoint_reinsertion (*loc2p);
11881               last_pspace_num = old_loc->pspace->num;
11882             }
11883
11884           if (*loc2p == old_loc)
11885             found_object = 1;
11886         }
11887
11888       /* We have already handled this address, update it so that we don't
11889          have to go through updates again.  */
11890       last_addr = old_loc->address;
11891
11892       /* Target-side condition evaluation: Handle deleted locations.  */
11893       if (!found_object)
11894         force_breakpoint_reinsertion (old_loc);
11895
11896       /* If this location is no longer present, and inserted, look if
11897          there's maybe a new location at the same address.  If so,
11898          mark that one inserted, and don't remove this one.  This is
11899          needed so that we don't have a time window where a breakpoint
11900          at certain location is not inserted.  */
11901
11902       if (old_loc->inserted)
11903         {
11904           /* If the location is inserted now, we might have to remove
11905              it.  */
11906
11907           if (found_object && should_be_inserted (old_loc))
11908             {
11909               /* The location is still present in the location list,
11910                  and still should be inserted.  Don't do anything.  */
11911               keep_in_target = 1;
11912             }
11913           else
11914             {
11915               /* This location still exists, but it won't be kept in the
11916                  target since it may have been disabled.  We proceed to
11917                  remove its target-side condition.  */
11918
11919               /* The location is either no longer present, or got
11920                  disabled.  See if there's another location at the
11921                  same address, in which case we don't need to remove
11922                  this one from the target.  */
11923
11924               /* OLD_LOC comes from existing struct breakpoint.  */
11925               if (breakpoint_address_is_meaningful (old_loc->owner))
11926                 {
11927                   for (loc2p = locp;
11928                        (loc2p < bp_location + bp_location_count
11929                         && (*loc2p)->address == old_loc->address);
11930                        loc2p++)
11931                     {
11932                       struct bp_location *loc2 = *loc2p;
11933
11934                       if (breakpoint_locations_match (loc2, old_loc))
11935                         {
11936                           /* Read watchpoint locations are switched to
11937                              access watchpoints, if the former are not
11938                              supported, but the latter are.  */
11939                           if (is_hardware_watchpoint (old_loc->owner))
11940                             {
11941                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11942                               loc2->watchpoint_type = old_loc->watchpoint_type;
11943                             }
11944
11945                           /* loc2 is a duplicated location. We need to check
11946                              if it should be inserted in case it will be
11947                              unduplicated.  */
11948                           if (loc2 != old_loc
11949                               && unduplicated_should_be_inserted (loc2))
11950                             {
11951                               swap_insertion (old_loc, loc2);
11952                               keep_in_target = 1;
11953                               break;
11954                             }
11955                         }
11956                     }
11957                 }
11958             }
11959
11960           if (!keep_in_target)
11961             {
11962               if (remove_breakpoint (old_loc, mark_uninserted))
11963                 {
11964                   /* This is just about all we can do.  We could keep
11965                      this location on the global list, and try to
11966                      remove it next time, but there's no particular
11967                      reason why we will succeed next time.
11968                      
11969                      Note that at this point, old_loc->owner is still
11970                      valid, as delete_breakpoint frees the breakpoint
11971                      only after calling us.  */
11972                   printf_filtered (_("warning: Error removing "
11973                                      "breakpoint %d\n"), 
11974                                    old_loc->owner->number);
11975                 }
11976               removed = 1;
11977             }
11978         }
11979
11980       if (!found_object)
11981         {
11982           if (removed && non_stop
11983               && breakpoint_address_is_meaningful (old_loc->owner)
11984               && !is_hardware_watchpoint (old_loc->owner))
11985             {
11986               /* This location was removed from the target.  In
11987                  non-stop mode, a race condition is possible where
11988                  we've removed a breakpoint, but stop events for that
11989                  breakpoint are already queued and will arrive later.
11990                  We apply an heuristic to be able to distinguish such
11991                  SIGTRAPs from other random SIGTRAPs: we keep this
11992                  breakpoint location for a bit, and will retire it
11993                  after we see some number of events.  The theory here
11994                  is that reporting of events should, "on the average",
11995                  be fair, so after a while we'll see events from all
11996                  threads that have anything of interest, and no longer
11997                  need to keep this breakpoint location around.  We
11998                  don't hold locations forever so to reduce chances of
11999                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12000                  SIGTRAP.
12001
12002                  The heuristic failing can be disastrous on
12003                  decr_pc_after_break targets.
12004
12005                  On decr_pc_after_break targets, like e.g., x86-linux,
12006                  if we fail to recognize a late breakpoint SIGTRAP,
12007                  because events_till_retirement has reached 0 too
12008                  soon, we'll fail to do the PC adjustment, and report
12009                  a random SIGTRAP to the user.  When the user resumes
12010                  the inferior, it will most likely immediately crash
12011                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12012                  corrupted, because of being resumed e.g., in the
12013                  middle of a multi-byte instruction, or skipped a
12014                  one-byte instruction.  This was actually seen happen
12015                  on native x86-linux, and should be less rare on
12016                  targets that do not support new thread events, like
12017                  remote, due to the heuristic depending on
12018                  thread_count.
12019
12020                  Mistaking a random SIGTRAP for a breakpoint trap
12021                  causes similar symptoms (PC adjustment applied when
12022                  it shouldn't), but then again, playing with SIGTRAPs
12023                  behind the debugger's back is asking for trouble.
12024
12025                  Since hardware watchpoint traps are always
12026                  distinguishable from other traps, so we don't need to
12027                  apply keep hardware watchpoint moribund locations
12028                  around.  We simply always ignore hardware watchpoint
12029                  traps we can no longer explain.  */
12030
12031               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12032               old_loc->owner = NULL;
12033
12034               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12035             }
12036           else
12037             {
12038               old_loc->owner = NULL;
12039               decref_bp_location (&old_loc);
12040             }
12041         }
12042     }
12043
12044   /* Rescan breakpoints at the same address and section, marking the
12045      first one as "first" and any others as "duplicates".  This is so
12046      that the bpt instruction is only inserted once.  If we have a
12047      permanent breakpoint at the same place as BPT, make that one the
12048      official one, and the rest as duplicates.  Permanent breakpoints
12049      are sorted first for the same address.
12050
12051      Do the same for hardware watchpoints, but also considering the
12052      watchpoint's type (regular/access/read) and length.  */
12053
12054   bp_loc_first = NULL;
12055   wp_loc_first = NULL;
12056   awp_loc_first = NULL;
12057   rwp_loc_first = NULL;
12058   ALL_BP_LOCATIONS (loc, locp)
12059     {
12060       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12061          non-NULL.  */
12062       struct bp_location **loc_first_p;
12063       b = loc->owner;
12064
12065       if (!should_be_inserted (loc)
12066           || !breakpoint_address_is_meaningful (b)
12067           /* Don't detect duplicate for tracepoint locations because they are
12068            never duplicated.  See the comments in field `duplicate' of
12069            `struct bp_location'.  */
12070           || is_tracepoint (b))
12071         {
12072           /* Clear the condition modification flag.  */
12073           loc->condition_changed = condition_unchanged;
12074           continue;
12075         }
12076
12077       /* Permanent breakpoint should always be inserted.  */
12078       if (b->enable_state == bp_permanent && ! loc->inserted)
12079         internal_error (__FILE__, __LINE__,
12080                         _("allegedly permanent breakpoint is not "
12081                         "actually inserted"));
12082
12083       if (b->type == bp_hardware_watchpoint)
12084         loc_first_p = &wp_loc_first;
12085       else if (b->type == bp_read_watchpoint)
12086         loc_first_p = &rwp_loc_first;
12087       else if (b->type == bp_access_watchpoint)
12088         loc_first_p = &awp_loc_first;
12089       else
12090         loc_first_p = &bp_loc_first;
12091
12092       if (*loc_first_p == NULL
12093           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12094           || !breakpoint_locations_match (loc, *loc_first_p))
12095         {
12096           *loc_first_p = loc;
12097           loc->duplicate = 0;
12098
12099           if (is_breakpoint (loc->owner) && loc->condition_changed)
12100             {
12101               loc->needs_update = 1;
12102               /* Clear the condition modification flag.  */
12103               loc->condition_changed = condition_unchanged;
12104             }
12105           continue;
12106         }
12107
12108
12109       /* This and the above ensure the invariant that the first location
12110          is not duplicated, and is the inserted one.
12111          All following are marked as duplicated, and are not inserted.  */
12112       if (loc->inserted)
12113         swap_insertion (loc, *loc_first_p);
12114       loc->duplicate = 1;
12115
12116       /* Clear the condition modification flag.  */
12117       loc->condition_changed = condition_unchanged;
12118
12119       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12120           && b->enable_state != bp_permanent)
12121         internal_error (__FILE__, __LINE__,
12122                         _("another breakpoint was inserted on top of "
12123                         "a permanent breakpoint"));
12124     }
12125
12126   if (breakpoints_always_inserted_mode ()
12127       && (have_live_inferiors ()
12128           || (gdbarch_has_global_breakpoints (target_gdbarch))))
12129     {
12130       if (should_insert)
12131         insert_breakpoint_locations ();
12132       else
12133         {
12134           /* Though should_insert is false, we may need to update conditions
12135              on the target's side if it is evaluating such conditions.  We
12136              only update conditions for locations that are marked
12137              "needs_update".  */
12138           update_inserted_breakpoint_locations ();
12139         }
12140     }
12141
12142   if (should_insert)
12143     download_tracepoint_locations ();
12144
12145   do_cleanups (cleanups);
12146 }
12147
12148 void
12149 breakpoint_retire_moribund (void)
12150 {
12151   struct bp_location *loc;
12152   int ix;
12153
12154   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12155     if (--(loc->events_till_retirement) == 0)
12156       {
12157         decref_bp_location (&loc);
12158         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12159         --ix;
12160       }
12161 }
12162
12163 static void
12164 update_global_location_list_nothrow (int inserting)
12165 {
12166   volatile struct gdb_exception e;
12167
12168   TRY_CATCH (e, RETURN_MASK_ERROR)
12169     update_global_location_list (inserting);
12170 }
12171
12172 /* Clear BKP from a BPS.  */
12173
12174 static void
12175 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12176 {
12177   bpstat bs;
12178
12179   for (bs = bps; bs; bs = bs->next)
12180     if (bs->breakpoint_at == bpt)
12181       {
12182         bs->breakpoint_at = NULL;
12183         bs->old_val = NULL;
12184         /* bs->commands will be freed later.  */
12185       }
12186 }
12187
12188 /* Callback for iterate_over_threads.  */
12189 static int
12190 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12191 {
12192   struct breakpoint *bpt = data;
12193
12194   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12195   return 0;
12196 }
12197
12198 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12199    callbacks.  */
12200
12201 static void
12202 say_where (struct breakpoint *b)
12203 {
12204   struct ui_out *uiout = current_uiout;
12205   struct value_print_options opts;
12206
12207   get_user_print_options (&opts);
12208
12209   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12210      single string.  */
12211   if (b->loc == NULL)
12212     {
12213       printf_filtered (_(" (%s) pending."), b->addr_string);
12214     }
12215   else
12216     {
12217       if (opts.addressprint || b->loc->source_file == NULL)
12218         {
12219           printf_filtered (" at ");
12220           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12221                           gdb_stdout);
12222         }
12223       if (b->loc->source_file)
12224         {
12225           /* If there is a single location, we can print the location
12226              more nicely.  */
12227           if (b->loc->next == NULL)
12228             printf_filtered (": file %s, line %d.",
12229                              b->loc->source_file, b->loc->line_number);
12230           else
12231             /* This is not ideal, but each location may have a
12232                different file name, and this at least reflects the
12233                real situation somewhat.  */
12234             printf_filtered (": %s.", b->addr_string);
12235         }
12236
12237       if (b->loc->next)
12238         {
12239           struct bp_location *loc = b->loc;
12240           int n = 0;
12241           for (; loc; loc = loc->next)
12242             ++n;
12243           printf_filtered (" (%d locations)", n);
12244         }
12245     }
12246 }
12247
12248 /* Default bp_location_ops methods.  */
12249
12250 static void
12251 bp_location_dtor (struct bp_location *self)
12252 {
12253   xfree (self->cond);
12254   if (self->cond_bytecode)
12255     free_agent_expr (self->cond_bytecode);
12256   xfree (self->function_name);
12257   xfree (self->source_file);
12258 }
12259
12260 static const struct bp_location_ops bp_location_ops =
12261 {
12262   bp_location_dtor
12263 };
12264
12265 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12266    inherit from.  */
12267
12268 static void
12269 base_breakpoint_dtor (struct breakpoint *self)
12270 {
12271   decref_counted_command_line (&self->commands);
12272   xfree (self->cond_string);
12273   xfree (self->addr_string);
12274   xfree (self->filter);
12275   xfree (self->addr_string_range_end);
12276 }
12277
12278 static struct bp_location *
12279 base_breakpoint_allocate_location (struct breakpoint *self)
12280 {
12281   struct bp_location *loc;
12282
12283   loc = XNEW (struct bp_location);
12284   init_bp_location (loc, &bp_location_ops, self);
12285   return loc;
12286 }
12287
12288 static void
12289 base_breakpoint_re_set (struct breakpoint *b)
12290 {
12291   /* Nothing to re-set. */
12292 }
12293
12294 #define internal_error_pure_virtual_called() \
12295   gdb_assert_not_reached ("pure virtual function called")
12296
12297 static int
12298 base_breakpoint_insert_location (struct bp_location *bl)
12299 {
12300   internal_error_pure_virtual_called ();
12301 }
12302
12303 static int
12304 base_breakpoint_remove_location (struct bp_location *bl)
12305 {
12306   internal_error_pure_virtual_called ();
12307 }
12308
12309 static int
12310 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12311                                 struct address_space *aspace,
12312                                 CORE_ADDR bp_addr,
12313                                 const struct target_waitstatus *ws)
12314 {
12315   internal_error_pure_virtual_called ();
12316 }
12317
12318 static void
12319 base_breakpoint_check_status (bpstat bs)
12320 {
12321   /* Always stop.   */
12322 }
12323
12324 /* A "works_in_software_mode" breakpoint_ops method that just internal
12325    errors.  */
12326
12327 static int
12328 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12329 {
12330   internal_error_pure_virtual_called ();
12331 }
12332
12333 /* A "resources_needed" breakpoint_ops method that just internal
12334    errors.  */
12335
12336 static int
12337 base_breakpoint_resources_needed (const struct bp_location *bl)
12338 {
12339   internal_error_pure_virtual_called ();
12340 }
12341
12342 static enum print_stop_action
12343 base_breakpoint_print_it (bpstat bs)
12344 {
12345   internal_error_pure_virtual_called ();
12346 }
12347
12348 static void
12349 base_breakpoint_print_one_detail (const struct breakpoint *self,
12350                                   struct ui_out *uiout)
12351 {
12352   /* nothing */
12353 }
12354
12355 static void
12356 base_breakpoint_print_mention (struct breakpoint *b)
12357 {
12358   internal_error_pure_virtual_called ();
12359 }
12360
12361 static void
12362 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12363 {
12364   internal_error_pure_virtual_called ();
12365 }
12366
12367 static void
12368 base_breakpoint_create_sals_from_address (char **arg,
12369                                           struct linespec_result *canonical,
12370                                           enum bptype type_wanted,
12371                                           char *addr_start,
12372                                           char **copy_arg)
12373 {
12374   internal_error_pure_virtual_called ();
12375 }
12376
12377 static void
12378 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12379                                         struct linespec_result *c,
12380                                         struct linespec_sals *lsal,
12381                                         char *cond_string,
12382                                         char *extra_string,
12383                                         enum bptype type_wanted,
12384                                         enum bpdisp disposition,
12385                                         int thread,
12386                                         int task, int ignore_count,
12387                                         const struct breakpoint_ops *o,
12388                                         int from_tty, int enabled,
12389                                         int internal, unsigned flags)
12390 {
12391   internal_error_pure_virtual_called ();
12392 }
12393
12394 static void
12395 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12396                                  struct symtabs_and_lines *sals)
12397 {
12398   internal_error_pure_virtual_called ();
12399 }
12400
12401 static struct breakpoint_ops base_breakpoint_ops =
12402 {
12403   base_breakpoint_dtor,
12404   base_breakpoint_allocate_location,
12405   base_breakpoint_re_set,
12406   base_breakpoint_insert_location,
12407   base_breakpoint_remove_location,
12408   base_breakpoint_breakpoint_hit,
12409   base_breakpoint_check_status,
12410   base_breakpoint_resources_needed,
12411   base_breakpoint_works_in_software_mode,
12412   base_breakpoint_print_it,
12413   NULL,
12414   base_breakpoint_print_one_detail,
12415   base_breakpoint_print_mention,
12416   base_breakpoint_print_recreate,
12417   base_breakpoint_create_sals_from_address,
12418   base_breakpoint_create_breakpoints_sal,
12419   base_breakpoint_decode_linespec,
12420 };
12421
12422 /* Default breakpoint_ops methods.  */
12423
12424 static void
12425 bkpt_re_set (struct breakpoint *b)
12426 {
12427   /* FIXME: is this still reachable?  */
12428   if (b->addr_string == NULL)
12429     {
12430       /* Anything without a string can't be re-set.  */
12431       delete_breakpoint (b);
12432       return;
12433     }
12434
12435   breakpoint_re_set_default (b);
12436 }
12437
12438 static int
12439 bkpt_insert_location (struct bp_location *bl)
12440 {
12441   if (bl->loc_type == bp_loc_hardware_breakpoint)
12442     return target_insert_hw_breakpoint (bl->gdbarch,
12443                                         &bl->target_info);
12444   else
12445     return target_insert_breakpoint (bl->gdbarch,
12446                                      &bl->target_info);
12447 }
12448
12449 static int
12450 bkpt_remove_location (struct bp_location *bl)
12451 {
12452   if (bl->loc_type == bp_loc_hardware_breakpoint)
12453     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12454   else
12455     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12456 }
12457
12458 static int
12459 bkpt_breakpoint_hit (const struct bp_location *bl,
12460                      struct address_space *aspace, CORE_ADDR bp_addr,
12461                      const struct target_waitstatus *ws)
12462 {
12463   struct breakpoint *b = bl->owner;
12464
12465   if (ws->kind != TARGET_WAITKIND_STOPPED
12466       || ws->value.sig != GDB_SIGNAL_TRAP)
12467     return 0;
12468
12469   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12470                                  aspace, bp_addr))
12471     return 0;
12472
12473   if (overlay_debugging         /* unmapped overlay section */
12474       && section_is_overlay (bl->section)
12475       && !section_is_mapped (bl->section))
12476     return 0;
12477
12478   return 1;
12479 }
12480
12481 static int
12482 bkpt_resources_needed (const struct bp_location *bl)
12483 {
12484   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12485
12486   return 1;
12487 }
12488
12489 static enum print_stop_action
12490 bkpt_print_it (bpstat bs)
12491 {
12492   struct breakpoint *b;
12493   const struct bp_location *bl;
12494   int bp_temp;
12495   struct ui_out *uiout = current_uiout;
12496
12497   gdb_assert (bs->bp_location_at != NULL);
12498
12499   bl = bs->bp_location_at;
12500   b = bs->breakpoint_at;
12501
12502   bp_temp = b->disposition == disp_del;
12503   if (bl->address != bl->requested_address)
12504     breakpoint_adjustment_warning (bl->requested_address,
12505                                    bl->address,
12506                                    b->number, 1);
12507   annotate_breakpoint (b->number);
12508   if (bp_temp)
12509     ui_out_text (uiout, "\nTemporary breakpoint ");
12510   else
12511     ui_out_text (uiout, "\nBreakpoint ");
12512   if (ui_out_is_mi_like_p (uiout))
12513     {
12514       ui_out_field_string (uiout, "reason",
12515                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12516       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12517     }
12518   ui_out_field_int (uiout, "bkptno", b->number);
12519   ui_out_text (uiout, ", ");
12520
12521   return PRINT_SRC_AND_LOC;
12522 }
12523
12524 static void
12525 bkpt_print_mention (struct breakpoint *b)
12526 {
12527   if (ui_out_is_mi_like_p (current_uiout))
12528     return;
12529
12530   switch (b->type)
12531     {
12532     case bp_breakpoint:
12533     case bp_gnu_ifunc_resolver:
12534       if (b->disposition == disp_del)
12535         printf_filtered (_("Temporary breakpoint"));
12536       else
12537         printf_filtered (_("Breakpoint"));
12538       printf_filtered (_(" %d"), b->number);
12539       if (b->type == bp_gnu_ifunc_resolver)
12540         printf_filtered (_(" at gnu-indirect-function resolver"));
12541       break;
12542     case bp_hardware_breakpoint:
12543       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12544       break;
12545     case bp_dprintf:
12546       printf_filtered (_("Dprintf %d"), b->number);
12547       break;
12548     }
12549
12550   say_where (b);
12551 }
12552
12553 static void
12554 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12555 {
12556   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12557     fprintf_unfiltered (fp, "tbreak");
12558   else if (tp->type == bp_breakpoint)
12559     fprintf_unfiltered (fp, "break");
12560   else if (tp->type == bp_hardware_breakpoint
12561            && tp->disposition == disp_del)
12562     fprintf_unfiltered (fp, "thbreak");
12563   else if (tp->type == bp_hardware_breakpoint)
12564     fprintf_unfiltered (fp, "hbreak");
12565   else
12566     internal_error (__FILE__, __LINE__,
12567                     _("unhandled breakpoint type %d"), (int) tp->type);
12568
12569   fprintf_unfiltered (fp, " %s", tp->addr_string);
12570   print_recreate_thread (tp, fp);
12571 }
12572
12573 static void
12574 bkpt_create_sals_from_address (char **arg,
12575                                struct linespec_result *canonical,
12576                                enum bptype type_wanted,
12577                                char *addr_start, char **copy_arg)
12578 {
12579   create_sals_from_address_default (arg, canonical, type_wanted,
12580                                     addr_start, copy_arg);
12581 }
12582
12583 static void
12584 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12585                              struct linespec_result *canonical,
12586                              struct linespec_sals *lsal,
12587                              char *cond_string,
12588                              char *extra_string,
12589                              enum bptype type_wanted,
12590                              enum bpdisp disposition,
12591                              int thread,
12592                              int task, int ignore_count,
12593                              const struct breakpoint_ops *ops,
12594                              int from_tty, int enabled,
12595                              int internal, unsigned flags)
12596 {
12597   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12598                                   cond_string, extra_string,
12599                                   type_wanted,
12600                                   disposition, thread, task,
12601                                   ignore_count, ops, from_tty,
12602                                   enabled, internal, flags);
12603 }
12604
12605 static void
12606 bkpt_decode_linespec (struct breakpoint *b, char **s,
12607                       struct symtabs_and_lines *sals)
12608 {
12609   decode_linespec_default (b, s, sals);
12610 }
12611
12612 /* Virtual table for internal breakpoints.  */
12613
12614 static void
12615 internal_bkpt_re_set (struct breakpoint *b)
12616 {
12617   switch (b->type)
12618     {
12619       /* Delete overlay event and longjmp master breakpoints; they
12620          will be reset later by breakpoint_re_set.  */
12621     case bp_overlay_event:
12622     case bp_longjmp_master:
12623     case bp_std_terminate_master:
12624     case bp_exception_master:
12625       delete_breakpoint (b);
12626       break;
12627
12628       /* This breakpoint is special, it's set up when the inferior
12629          starts and we really don't want to touch it.  */
12630     case bp_shlib_event:
12631
12632       /* Like bp_shlib_event, this breakpoint type is special.  Once
12633          it is set up, we do not want to touch it.  */
12634     case bp_thread_event:
12635       break;
12636     }
12637 }
12638
12639 static void
12640 internal_bkpt_check_status (bpstat bs)
12641 {
12642   if (bs->breakpoint_at->type == bp_shlib_event)
12643     {
12644       /* If requested, stop when the dynamic linker notifies GDB of
12645          events.  This allows the user to get control and place
12646          breakpoints in initializer routines for dynamically loaded
12647          objects (among other things).  */
12648       bs->stop = stop_on_solib_events;
12649       bs->print = stop_on_solib_events;
12650     }
12651   else
12652     bs->stop = 0;
12653 }
12654
12655 static enum print_stop_action
12656 internal_bkpt_print_it (bpstat bs)
12657 {
12658   struct ui_out *uiout = current_uiout;
12659   struct breakpoint *b;
12660
12661   b = bs->breakpoint_at;
12662
12663   switch (b->type)
12664     {
12665     case bp_shlib_event:
12666       /* Did we stop because the user set the stop_on_solib_events
12667          variable?  (If so, we report this as a generic, "Stopped due
12668          to shlib event" message.) */
12669       print_solib_event (0);
12670       break;
12671
12672     case bp_thread_event:
12673       /* Not sure how we will get here.
12674          GDB should not stop for these breakpoints.  */
12675       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12676       break;
12677
12678     case bp_overlay_event:
12679       /* By analogy with the thread event, GDB should not stop for these.  */
12680       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12681       break;
12682
12683     case bp_longjmp_master:
12684       /* These should never be enabled.  */
12685       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12686       break;
12687
12688     case bp_std_terminate_master:
12689       /* These should never be enabled.  */
12690       printf_filtered (_("std::terminate Master Breakpoint: "
12691                          "gdb should not stop!\n"));
12692       break;
12693
12694     case bp_exception_master:
12695       /* These should never be enabled.  */
12696       printf_filtered (_("Exception Master Breakpoint: "
12697                          "gdb should not stop!\n"));
12698       break;
12699     }
12700
12701   return PRINT_NOTHING;
12702 }
12703
12704 static void
12705 internal_bkpt_print_mention (struct breakpoint *b)
12706 {
12707   /* Nothing to mention.  These breakpoints are internal.  */
12708 }
12709
12710 /* Virtual table for momentary breakpoints  */
12711
12712 static void
12713 momentary_bkpt_re_set (struct breakpoint *b)
12714 {
12715   /* Keep temporary breakpoints, which can be encountered when we step
12716      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
12717      Otherwise these should have been blown away via the cleanup chain
12718      or by breakpoint_init_inferior when we rerun the executable.  */
12719 }
12720
12721 static void
12722 momentary_bkpt_check_status (bpstat bs)
12723 {
12724   /* Nothing.  The point of these breakpoints is causing a stop.  */
12725 }
12726
12727 static enum print_stop_action
12728 momentary_bkpt_print_it (bpstat bs)
12729 {
12730   struct ui_out *uiout = current_uiout;
12731
12732   if (ui_out_is_mi_like_p (uiout))
12733     {
12734       struct breakpoint *b = bs->breakpoint_at;
12735
12736       switch (b->type)
12737         {
12738         case bp_finish:
12739           ui_out_field_string
12740             (uiout, "reason",
12741              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
12742           break;
12743
12744         case bp_until:
12745           ui_out_field_string
12746             (uiout, "reason",
12747              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
12748           break;
12749         }
12750     }
12751
12752   return PRINT_UNKNOWN;
12753 }
12754
12755 static void
12756 momentary_bkpt_print_mention (struct breakpoint *b)
12757 {
12758   /* Nothing to mention.  These breakpoints are internal.  */
12759 }
12760
12761 /* Specific methods for probe breakpoints.  */
12762
12763 static int
12764 bkpt_probe_insert_location (struct bp_location *bl)
12765 {
12766   int v = bkpt_insert_location (bl);
12767
12768   if (v == 0)
12769     {
12770       /* The insertion was successful, now let's set the probe's semaphore
12771          if needed.  */
12772       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
12773     }
12774
12775   return v;
12776 }
12777
12778 static int
12779 bkpt_probe_remove_location (struct bp_location *bl)
12780 {
12781   /* Let's clear the semaphore before removing the location.  */
12782   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
12783
12784   return bkpt_remove_location (bl);
12785 }
12786
12787 static void
12788 bkpt_probe_create_sals_from_address (char **arg,
12789                                      struct linespec_result *canonical,
12790                                      enum bptype type_wanted,
12791                                      char *addr_start, char **copy_arg)
12792 {
12793   struct linespec_sals lsal;
12794
12795   lsal.sals = parse_probes (arg, canonical);
12796
12797   *copy_arg = xstrdup (canonical->addr_string);
12798   lsal.canonical = xstrdup (*copy_arg);
12799
12800   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12801 }
12802
12803 static void
12804 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
12805                             struct symtabs_and_lines *sals)
12806 {
12807   *sals = parse_probes (s, NULL);
12808   if (!sals->sals)
12809     error (_("probe not found"));
12810 }
12811
12812 /* The breakpoint_ops structure to be used in tracepoints.  */
12813
12814 static void
12815 tracepoint_re_set (struct breakpoint *b)
12816 {
12817   breakpoint_re_set_default (b);
12818 }
12819
12820 static int
12821 tracepoint_breakpoint_hit (const struct bp_location *bl,
12822                            struct address_space *aspace, CORE_ADDR bp_addr,
12823                            const struct target_waitstatus *ws)
12824 {
12825   /* By definition, the inferior does not report stops at
12826      tracepoints.  */
12827   return 0;
12828 }
12829
12830 static void
12831 tracepoint_print_one_detail (const struct breakpoint *self,
12832                              struct ui_out *uiout)
12833 {
12834   struct tracepoint *tp = (struct tracepoint *) self;
12835   if (tp->static_trace_marker_id)
12836     {
12837       gdb_assert (self->type == bp_static_tracepoint);
12838
12839       ui_out_text (uiout, "\tmarker id is ");
12840       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
12841                            tp->static_trace_marker_id);
12842       ui_out_text (uiout, "\n");
12843     }
12844 }
12845
12846 static void
12847 tracepoint_print_mention (struct breakpoint *b)
12848 {
12849   if (ui_out_is_mi_like_p (current_uiout))
12850     return;
12851
12852   switch (b->type)
12853     {
12854     case bp_tracepoint:
12855       printf_filtered (_("Tracepoint"));
12856       printf_filtered (_(" %d"), b->number);
12857       break;
12858     case bp_fast_tracepoint:
12859       printf_filtered (_("Fast tracepoint"));
12860       printf_filtered (_(" %d"), b->number);
12861       break;
12862     case bp_static_tracepoint:
12863       printf_filtered (_("Static tracepoint"));
12864       printf_filtered (_(" %d"), b->number);
12865       break;
12866     default:
12867       internal_error (__FILE__, __LINE__,
12868                       _("unhandled tracepoint type %d"), (int) b->type);
12869     }
12870
12871   say_where (b);
12872 }
12873
12874 static void
12875 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12876 {
12877   struct tracepoint *tp = (struct tracepoint *) self;
12878
12879   if (self->type == bp_fast_tracepoint)
12880     fprintf_unfiltered (fp, "ftrace");
12881   if (self->type == bp_static_tracepoint)
12882     fprintf_unfiltered (fp, "strace");
12883   else if (self->type == bp_tracepoint)
12884     fprintf_unfiltered (fp, "trace");
12885   else
12886     internal_error (__FILE__, __LINE__,
12887                     _("unhandled tracepoint type %d"), (int) self->type);
12888
12889   fprintf_unfiltered (fp, " %s", self->addr_string);
12890   print_recreate_thread (self, fp);
12891
12892   if (tp->pass_count)
12893     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12894 }
12895
12896 static void
12897 tracepoint_create_sals_from_address (char **arg,
12898                                      struct linespec_result *canonical,
12899                                      enum bptype type_wanted,
12900                                      char *addr_start, char **copy_arg)
12901 {
12902   create_sals_from_address_default (arg, canonical, type_wanted,
12903                                     addr_start, copy_arg);
12904 }
12905
12906 static void
12907 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12908                                    struct linespec_result *canonical,
12909                                    struct linespec_sals *lsal,
12910                                    char *cond_string,
12911                                    char *extra_string,
12912                                    enum bptype type_wanted,
12913                                    enum bpdisp disposition,
12914                                    int thread,
12915                                    int task, int ignore_count,
12916                                    const struct breakpoint_ops *ops,
12917                                    int from_tty, int enabled,
12918                                    int internal, unsigned flags)
12919 {
12920   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12921                                   cond_string, extra_string,
12922                                   type_wanted,
12923                                   disposition, thread, task,
12924                                   ignore_count, ops, from_tty,
12925                                   enabled, internal, flags);
12926 }
12927
12928 static void
12929 tracepoint_decode_linespec (struct breakpoint *b, char **s,
12930                             struct symtabs_and_lines *sals)
12931 {
12932   decode_linespec_default (b, s, sals);
12933 }
12934
12935 struct breakpoint_ops tracepoint_breakpoint_ops;
12936
12937 /* The breakpoint_ops structure to be use on tracepoints placed in a
12938    static probe.  */
12939
12940 static void
12941 tracepoint_probe_create_sals_from_address (char **arg,
12942                                            struct linespec_result *canonical,
12943                                            enum bptype type_wanted,
12944                                            char *addr_start, char **copy_arg)
12945 {
12946   /* We use the same method for breakpoint on probes.  */
12947   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
12948                                        addr_start, copy_arg);
12949 }
12950
12951 static void
12952 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
12953                                   struct symtabs_and_lines *sals)
12954 {
12955   /* We use the same method for breakpoint on probes.  */
12956   bkpt_probe_decode_linespec (b, s, sals);
12957 }
12958
12959 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12960
12961 /* The breakpoint_ops structure to be used on static tracepoints with
12962    markers (`-m').  */
12963
12964 static void
12965 strace_marker_create_sals_from_address (char **arg,
12966                                         struct linespec_result *canonical,
12967                                         enum bptype type_wanted,
12968                                         char *addr_start, char **copy_arg)
12969 {
12970   struct linespec_sals lsal;
12971
12972   lsal.sals = decode_static_tracepoint_spec (arg);
12973
12974   *copy_arg = savestring (addr_start, *arg - addr_start);
12975
12976   canonical->addr_string = xstrdup (*copy_arg);
12977   lsal.canonical = xstrdup (*copy_arg);
12978   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12979 }
12980
12981 static void
12982 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12983                                       struct linespec_result *canonical,
12984                                       struct linespec_sals *lsal,
12985                                       char *cond_string,
12986                                       char *extra_string,
12987                                       enum bptype type_wanted,
12988                                       enum bpdisp disposition,
12989                                       int thread,
12990                                       int task, int ignore_count,
12991                                       const struct breakpoint_ops *ops,
12992                                       int from_tty, int enabled,
12993                                       int internal, unsigned flags)
12994 {
12995   int i;
12996
12997   /* If the user is creating a static tracepoint by marker id
12998      (strace -m MARKER_ID), then store the sals index, so that
12999      breakpoint_re_set can try to match up which of the newly
13000      found markers corresponds to this one, and, don't try to
13001      expand multiple locations for each sal, given than SALS
13002      already should contain all sals for MARKER_ID.  */
13003
13004   for (i = 0; i < lsal->sals.nelts; ++i)
13005     {
13006       struct symtabs_and_lines expanded;
13007       struct tracepoint *tp;
13008       struct cleanup *old_chain;
13009       char *addr_string;
13010
13011       expanded.nelts = 1;
13012       expanded.sals = &lsal->sals.sals[i];
13013
13014       addr_string = xstrdup (canonical->addr_string);
13015       old_chain = make_cleanup (xfree, addr_string);
13016
13017       tp = XCNEW (struct tracepoint);
13018       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13019                            addr_string, NULL,
13020                            cond_string, extra_string,
13021                            type_wanted, disposition,
13022                            thread, task, ignore_count, ops,
13023                            from_tty, enabled, internal, flags,
13024                            canonical->special_display);
13025       /* Given that its possible to have multiple markers with
13026          the same string id, if the user is creating a static
13027          tracepoint by marker id ("strace -m MARKER_ID"), then
13028          store the sals index, so that breakpoint_re_set can
13029          try to match up which of the newly found markers
13030          corresponds to this one  */
13031       tp->static_trace_marker_id_idx = i;
13032
13033       install_breakpoint (internal, &tp->base, 0);
13034
13035       discard_cleanups (old_chain);
13036     }
13037 }
13038
13039 static void
13040 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13041                                struct symtabs_and_lines *sals)
13042 {
13043   struct tracepoint *tp = (struct tracepoint *) b;
13044
13045   *sals = decode_static_tracepoint_spec (s);
13046   if (sals->nelts > tp->static_trace_marker_id_idx)
13047     {
13048       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13049       sals->nelts = 1;
13050     }
13051   else
13052     error (_("marker %s not found"), tp->static_trace_marker_id);
13053 }
13054
13055 static struct breakpoint_ops strace_marker_breakpoint_ops;
13056
13057 static int
13058 strace_marker_p (struct breakpoint *b)
13059 {
13060   return b->ops == &strace_marker_breakpoint_ops;
13061 }
13062
13063 /* Delete a breakpoint and clean up all traces of it in the data
13064    structures.  */
13065
13066 void
13067 delete_breakpoint (struct breakpoint *bpt)
13068 {
13069   struct breakpoint *b;
13070
13071   gdb_assert (bpt != NULL);
13072
13073   /* Has this bp already been deleted?  This can happen because
13074      multiple lists can hold pointers to bp's.  bpstat lists are
13075      especial culprits.
13076
13077      One example of this happening is a watchpoint's scope bp.  When
13078      the scope bp triggers, we notice that the watchpoint is out of
13079      scope, and delete it.  We also delete its scope bp.  But the
13080      scope bp is marked "auto-deleting", and is already on a bpstat.
13081      That bpstat is then checked for auto-deleting bp's, which are
13082      deleted.
13083
13084      A real solution to this problem might involve reference counts in
13085      bp's, and/or giving them pointers back to their referencing
13086      bpstat's, and teaching delete_breakpoint to only free a bp's
13087      storage when no more references were extent.  A cheaper bandaid
13088      was chosen.  */
13089   if (bpt->type == bp_none)
13090     return;
13091
13092   /* At least avoid this stale reference until the reference counting
13093      of breakpoints gets resolved.  */
13094   if (bpt->related_breakpoint != bpt)
13095     {
13096       struct breakpoint *related;
13097       struct watchpoint *w;
13098
13099       if (bpt->type == bp_watchpoint_scope)
13100         w = (struct watchpoint *) bpt->related_breakpoint;
13101       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13102         w = (struct watchpoint *) bpt;
13103       else
13104         w = NULL;
13105       if (w != NULL)
13106         watchpoint_del_at_next_stop (w);
13107
13108       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13109       for (related = bpt; related->related_breakpoint != bpt;
13110            related = related->related_breakpoint);
13111       related->related_breakpoint = bpt->related_breakpoint;
13112       bpt->related_breakpoint = bpt;
13113     }
13114
13115   /* watch_command_1 creates a watchpoint but only sets its number if
13116      update_watchpoint succeeds in creating its bp_locations.  If there's
13117      a problem in that process, we'll be asked to delete the half-created
13118      watchpoint.  In that case, don't announce the deletion.  */
13119   if (bpt->number)
13120     observer_notify_breakpoint_deleted (bpt);
13121
13122   if (breakpoint_chain == bpt)
13123     breakpoint_chain = bpt->next;
13124
13125   ALL_BREAKPOINTS (b)
13126     if (b->next == bpt)
13127     {
13128       b->next = bpt->next;
13129       break;
13130     }
13131
13132   /* Be sure no bpstat's are pointing at the breakpoint after it's
13133      been freed.  */
13134   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13135      in all threads for now.  Note that we cannot just remove bpstats
13136      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13137      commands are associated with the bpstat; if we remove it here,
13138      then the later call to bpstat_do_actions (&stop_bpstat); in
13139      event-top.c won't do anything, and temporary breakpoints with
13140      commands won't work.  */
13141
13142   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13143
13144   /* Now that breakpoint is removed from breakpoint list, update the
13145      global location list.  This will remove locations that used to
13146      belong to this breakpoint.  Do this before freeing the breakpoint
13147      itself, since remove_breakpoint looks at location's owner.  It
13148      might be better design to have location completely
13149      self-contained, but it's not the case now.  */
13150   update_global_location_list (0);
13151
13152   bpt->ops->dtor (bpt);
13153   /* On the chance that someone will soon try again to delete this
13154      same bp, we mark it as deleted before freeing its storage.  */
13155   bpt->type = bp_none;
13156   xfree (bpt);
13157 }
13158
13159 static void
13160 do_delete_breakpoint_cleanup (void *b)
13161 {
13162   delete_breakpoint (b);
13163 }
13164
13165 struct cleanup *
13166 make_cleanup_delete_breakpoint (struct breakpoint *b)
13167 {
13168   return make_cleanup (do_delete_breakpoint_cleanup, b);
13169 }
13170
13171 /* Iterator function to call a user-provided callback function once
13172    for each of B and its related breakpoints.  */
13173
13174 static void
13175 iterate_over_related_breakpoints (struct breakpoint *b,
13176                                   void (*function) (struct breakpoint *,
13177                                                     void *),
13178                                   void *data)
13179 {
13180   struct breakpoint *related;
13181
13182   related = b;
13183   do
13184     {
13185       struct breakpoint *next;
13186
13187       /* FUNCTION may delete RELATED.  */
13188       next = related->related_breakpoint;
13189
13190       if (next == related)
13191         {
13192           /* RELATED is the last ring entry.  */
13193           function (related, data);
13194
13195           /* FUNCTION may have deleted it, so we'd never reach back to
13196              B.  There's nothing left to do anyway, so just break
13197              out.  */
13198           break;
13199         }
13200       else
13201         function (related, data);
13202
13203       related = next;
13204     }
13205   while (related != b);
13206 }
13207
13208 static void
13209 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13210 {
13211   delete_breakpoint (b);
13212 }
13213
13214 /* A callback for map_breakpoint_numbers that calls
13215    delete_breakpoint.  */
13216
13217 static void
13218 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13219 {
13220   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13221 }
13222
13223 void
13224 delete_command (char *arg, int from_tty)
13225 {
13226   struct breakpoint *b, *b_tmp;
13227
13228   dont_repeat ();
13229
13230   if (arg == 0)
13231     {
13232       int breaks_to_delete = 0;
13233
13234       /* Delete all breakpoints if no argument.  Do not delete
13235          internal breakpoints, these have to be deleted with an
13236          explicit breakpoint number argument.  */
13237       ALL_BREAKPOINTS (b)
13238         if (user_breakpoint_p (b))
13239           {
13240             breaks_to_delete = 1;
13241             break;
13242           }
13243
13244       /* Ask user only if there are some breakpoints to delete.  */
13245       if (!from_tty
13246           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13247         {
13248           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13249             if (user_breakpoint_p (b))
13250               delete_breakpoint (b);
13251         }
13252     }
13253   else
13254     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13255 }
13256
13257 static int
13258 all_locations_are_pending (struct bp_location *loc)
13259 {
13260   for (; loc; loc = loc->next)
13261     if (!loc->shlib_disabled
13262         && !loc->pspace->executing_startup)
13263       return 0;
13264   return 1;
13265 }
13266
13267 /* Subroutine of update_breakpoint_locations to simplify it.
13268    Return non-zero if multiple fns in list LOC have the same name.
13269    Null names are ignored.  */
13270
13271 static int
13272 ambiguous_names_p (struct bp_location *loc)
13273 {
13274   struct bp_location *l;
13275   htab_t htab = htab_create_alloc (13, htab_hash_string,
13276                                    (int (*) (const void *, 
13277                                              const void *)) streq,
13278                                    NULL, xcalloc, xfree);
13279
13280   for (l = loc; l != NULL; l = l->next)
13281     {
13282       const char **slot;
13283       const char *name = l->function_name;
13284
13285       /* Allow for some names to be NULL, ignore them.  */
13286       if (name == NULL)
13287         continue;
13288
13289       slot = (const char **) htab_find_slot (htab, (const void *) name,
13290                                              INSERT);
13291       /* NOTE: We can assume slot != NULL here because xcalloc never
13292          returns NULL.  */
13293       if (*slot != NULL)
13294         {
13295           htab_delete (htab);
13296           return 1;
13297         }
13298       *slot = name;
13299     }
13300
13301   htab_delete (htab);
13302   return 0;
13303 }
13304
13305 /* When symbols change, it probably means the sources changed as well,
13306    and it might mean the static tracepoint markers are no longer at
13307    the same address or line numbers they used to be at last we
13308    checked.  Losing your static tracepoints whenever you rebuild is
13309    undesirable.  This function tries to resync/rematch gdb static
13310    tracepoints with the markers on the target, for static tracepoints
13311    that have not been set by marker id.  Static tracepoint that have
13312    been set by marker id are reset by marker id in breakpoint_re_set.
13313    The heuristic is:
13314
13315    1) For a tracepoint set at a specific address, look for a marker at
13316    the old PC.  If one is found there, assume to be the same marker.
13317    If the name / string id of the marker found is different from the
13318    previous known name, assume that means the user renamed the marker
13319    in the sources, and output a warning.
13320
13321    2) For a tracepoint set at a given line number, look for a marker
13322    at the new address of the old line number.  If one is found there,
13323    assume to be the same marker.  If the name / string id of the
13324    marker found is different from the previous known name, assume that
13325    means the user renamed the marker in the sources, and output a
13326    warning.
13327
13328    3) If a marker is no longer found at the same address or line, it
13329    may mean the marker no longer exists.  But it may also just mean
13330    the code changed a bit.  Maybe the user added a few lines of code
13331    that made the marker move up or down (in line number terms).  Ask
13332    the target for info about the marker with the string id as we knew
13333    it.  If found, update line number and address in the matching
13334    static tracepoint.  This will get confused if there's more than one
13335    marker with the same ID (possible in UST, although unadvised
13336    precisely because it confuses tools).  */
13337
13338 static struct symtab_and_line
13339 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13340 {
13341   struct tracepoint *tp = (struct tracepoint *) b;
13342   struct static_tracepoint_marker marker;
13343   CORE_ADDR pc;
13344
13345   pc = sal.pc;
13346   if (sal.line)
13347     find_line_pc (sal.symtab, sal.line, &pc);
13348
13349   if (target_static_tracepoint_marker_at (pc, &marker))
13350     {
13351       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13352         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13353                  b->number,
13354                  tp->static_trace_marker_id, marker.str_id);
13355
13356       xfree (tp->static_trace_marker_id);
13357       tp->static_trace_marker_id = xstrdup (marker.str_id);
13358       release_static_tracepoint_marker (&marker);
13359
13360       return sal;
13361     }
13362
13363   /* Old marker wasn't found on target at lineno.  Try looking it up
13364      by string ID.  */
13365   if (!sal.explicit_pc
13366       && sal.line != 0
13367       && sal.symtab != NULL
13368       && tp->static_trace_marker_id != NULL)
13369     {
13370       VEC(static_tracepoint_marker_p) *markers;
13371
13372       markers
13373         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13374
13375       if (!VEC_empty(static_tracepoint_marker_p, markers))
13376         {
13377           struct symtab_and_line sal2;
13378           struct symbol *sym;
13379           struct static_tracepoint_marker *tpmarker;
13380           struct ui_out *uiout = current_uiout;
13381
13382           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13383
13384           xfree (tp->static_trace_marker_id);
13385           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13386
13387           warning (_("marker for static tracepoint %d (%s) not "
13388                      "found at previous line number"),
13389                    b->number, tp->static_trace_marker_id);
13390
13391           init_sal (&sal2);
13392
13393           sal2.pc = tpmarker->address;
13394
13395           sal2 = find_pc_line (tpmarker->address, 0);
13396           sym = find_pc_sect_function (tpmarker->address, NULL);
13397           ui_out_text (uiout, "Now in ");
13398           if (sym)
13399             {
13400               ui_out_field_string (uiout, "func",
13401                                    SYMBOL_PRINT_NAME (sym));
13402               ui_out_text (uiout, " at ");
13403             }
13404           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13405           ui_out_text (uiout, ":");
13406
13407           if (ui_out_is_mi_like_p (uiout))
13408             {
13409               char *fullname = symtab_to_fullname (sal2.symtab);
13410
13411               if (fullname)
13412                 ui_out_field_string (uiout, "fullname", fullname);
13413             }
13414
13415           ui_out_field_int (uiout, "line", sal2.line);
13416           ui_out_text (uiout, "\n");
13417
13418           b->loc->line_number = sal2.line;
13419
13420           xfree (b->loc->source_file);
13421           if (sym)
13422             b->loc->source_file = xstrdup (sal2.symtab->filename);
13423           else
13424             b->loc->source_file = NULL;
13425
13426           xfree (b->addr_string);
13427           b->addr_string = xstrprintf ("%s:%d",
13428                                        sal2.symtab->filename,
13429                                        b->loc->line_number);
13430
13431           /* Might be nice to check if function changed, and warn if
13432              so.  */
13433
13434           release_static_tracepoint_marker (tpmarker);
13435         }
13436     }
13437   return sal;
13438 }
13439
13440 /* Returns 1 iff locations A and B are sufficiently same that
13441    we don't need to report breakpoint as changed.  */
13442
13443 static int
13444 locations_are_equal (struct bp_location *a, struct bp_location *b)
13445 {
13446   while (a && b)
13447     {
13448       if (a->address != b->address)
13449         return 0;
13450
13451       if (a->shlib_disabled != b->shlib_disabled)
13452         return 0;
13453
13454       if (a->enabled != b->enabled)
13455         return 0;
13456
13457       a = a->next;
13458       b = b->next;
13459     }
13460
13461   if ((a == NULL) != (b == NULL))
13462     return 0;
13463
13464   return 1;
13465 }
13466
13467 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13468    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13469    a ranged breakpoint.  */
13470
13471 void
13472 update_breakpoint_locations (struct breakpoint *b,
13473                              struct symtabs_and_lines sals,
13474                              struct symtabs_and_lines sals_end)
13475 {
13476   int i;
13477   struct bp_location *existing_locations = b->loc;
13478
13479   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13480     {
13481       /* Ranged breakpoints have only one start location and one end
13482          location.  */
13483       b->enable_state = bp_disabled;
13484       update_global_location_list (1);
13485       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13486                            "multiple locations found\n"),
13487                          b->number);
13488       return;
13489     }
13490
13491   /* If there's no new locations, and all existing locations are
13492      pending, don't do anything.  This optimizes the common case where
13493      all locations are in the same shared library, that was unloaded.
13494      We'd like to retain the location, so that when the library is
13495      loaded again, we don't loose the enabled/disabled status of the
13496      individual locations.  */
13497   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13498     return;
13499
13500   b->loc = NULL;
13501
13502   for (i = 0; i < sals.nelts; ++i)
13503     {
13504       struct bp_location *new_loc;
13505
13506       switch_to_program_space_and_thread (sals.sals[i].pspace);
13507
13508       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13509
13510       /* Reparse conditions, they might contain references to the
13511          old symtab.  */
13512       if (b->cond_string != NULL)
13513         {
13514           char *s;
13515           volatile struct gdb_exception e;
13516
13517           s = b->cond_string;
13518           TRY_CATCH (e, RETURN_MASK_ERROR)
13519             {
13520               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
13521                                            0);
13522             }
13523           if (e.reason < 0)
13524             {
13525               warning (_("failed to reevaluate condition "
13526                          "for breakpoint %d: %s"), 
13527                        b->number, e.message);
13528               new_loc->enabled = 0;
13529             }
13530         }
13531
13532       if (sals_end.nelts)
13533         {
13534           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13535
13536           new_loc->length = end - sals.sals[0].pc + 1;
13537         }
13538     }
13539
13540   /* Update locations of permanent breakpoints.  */
13541   if (b->enable_state == bp_permanent)
13542     make_breakpoint_permanent (b);
13543
13544   /* If possible, carry over 'disable' status from existing
13545      breakpoints.  */
13546   {
13547     struct bp_location *e = existing_locations;
13548     /* If there are multiple breakpoints with the same function name,
13549        e.g. for inline functions, comparing function names won't work.
13550        Instead compare pc addresses; this is just a heuristic as things
13551        may have moved, but in practice it gives the correct answer
13552        often enough until a better solution is found.  */
13553     int have_ambiguous_names = ambiguous_names_p (b->loc);
13554
13555     for (; e; e = e->next)
13556       {
13557         if (!e->enabled && e->function_name)
13558           {
13559             struct bp_location *l = b->loc;
13560             if (have_ambiguous_names)
13561               {
13562                 for (; l; l = l->next)
13563                   if (breakpoint_locations_match (e, l))
13564                     {
13565                       l->enabled = 0;
13566                       break;
13567                     }
13568               }
13569             else
13570               {
13571                 for (; l; l = l->next)
13572                   if (l->function_name
13573                       && strcmp (e->function_name, l->function_name) == 0)
13574                     {
13575                       l->enabled = 0;
13576                       break;
13577                     }
13578               }
13579           }
13580       }
13581   }
13582
13583   if (!locations_are_equal (existing_locations, b->loc))
13584     observer_notify_breakpoint_modified (b);
13585
13586   update_global_location_list (1);
13587 }
13588
13589 /* Find the SaL locations corresponding to the given ADDR_STRING.
13590    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13591
13592 static struct symtabs_and_lines
13593 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13594 {
13595   char *s;
13596   struct symtabs_and_lines sals = {0};
13597   volatile struct gdb_exception e;
13598
13599   gdb_assert (b->ops != NULL);
13600   s = addr_string;
13601
13602   TRY_CATCH (e, RETURN_MASK_ERROR)
13603     {
13604       b->ops->decode_linespec (b, &s, &sals);
13605     }
13606   if (e.reason < 0)
13607     {
13608       int not_found_and_ok = 0;
13609       /* For pending breakpoints, it's expected that parsing will
13610          fail until the right shared library is loaded.  User has
13611          already told to create pending breakpoints and don't need
13612          extra messages.  If breakpoint is in bp_shlib_disabled
13613          state, then user already saw the message about that
13614          breakpoint being disabled, and don't want to see more
13615          errors.  */
13616       if (e.error == NOT_FOUND_ERROR
13617           && (b->condition_not_parsed 
13618               || (b->loc && b->loc->shlib_disabled)
13619               || (b->loc && b->loc->pspace->executing_startup)
13620               || b->enable_state == bp_disabled))
13621         not_found_and_ok = 1;
13622
13623       if (!not_found_and_ok)
13624         {
13625           /* We surely don't want to warn about the same breakpoint
13626              10 times.  One solution, implemented here, is disable
13627              the breakpoint on error.  Another solution would be to
13628              have separate 'warning emitted' flag.  Since this
13629              happens only when a binary has changed, I don't know
13630              which approach is better.  */
13631           b->enable_state = bp_disabled;
13632           throw_exception (e);
13633         }
13634     }
13635
13636   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
13637     {
13638       int i;
13639
13640       for (i = 0; i < sals.nelts; ++i)
13641         resolve_sal_pc (&sals.sals[i]);
13642       if (b->condition_not_parsed && s && s[0])
13643         {
13644           char *cond_string = 0;
13645           int thread = -1;
13646           int task = 0;
13647           char *extra_string = NULL;
13648
13649           find_condition_and_thread (s, sals.sals[0].pc,
13650                                      &cond_string, &thread, &task,
13651                                      &extra_string);
13652           if (cond_string)
13653             b->cond_string = cond_string;
13654           b->thread = thread;
13655           b->task = task;
13656           if (extra_string)
13657             b->extra_string = extra_string;
13658           b->condition_not_parsed = 0;
13659         }
13660
13661       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13662         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
13663
13664       *found = 1;
13665     }
13666   else
13667     *found = 0;
13668
13669   return sals;
13670 }
13671
13672 /* The default re_set method, for typical hardware or software
13673    breakpoints.  Reevaluate the breakpoint and recreate its
13674    locations.  */
13675
13676 static void
13677 breakpoint_re_set_default (struct breakpoint *b)
13678 {
13679   int found;
13680   struct symtabs_and_lines sals, sals_end;
13681   struct symtabs_and_lines expanded = {0};
13682   struct symtabs_and_lines expanded_end = {0};
13683
13684   sals = addr_string_to_sals (b, b->addr_string, &found);
13685   if (found)
13686     {
13687       make_cleanup (xfree, sals.sals);
13688       expanded = sals;
13689     }
13690
13691   if (b->addr_string_range_end)
13692     {
13693       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
13694       if (found)
13695         {
13696           make_cleanup (xfree, sals_end.sals);
13697           expanded_end = sals_end;
13698         }
13699     }
13700
13701   update_breakpoint_locations (b, expanded, expanded_end);
13702 }
13703
13704 /* Default method for creating SALs from an address string.  It basically
13705    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13706
13707 static void
13708 create_sals_from_address_default (char **arg,
13709                                   struct linespec_result *canonical,
13710                                   enum bptype type_wanted,
13711                                   char *addr_start, char **copy_arg)
13712 {
13713   parse_breakpoint_sals (arg, canonical);
13714 }
13715
13716 /* Call create_breakpoints_sal for the given arguments.  This is the default
13717    function for the `create_breakpoints_sal' method of
13718    breakpoint_ops.  */
13719
13720 static void
13721 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13722                                 struct linespec_result *canonical,
13723                                 struct linespec_sals *lsal,
13724                                 char *cond_string,
13725                                 char *extra_string,
13726                                 enum bptype type_wanted,
13727                                 enum bpdisp disposition,
13728                                 int thread,
13729                                 int task, int ignore_count,
13730                                 const struct breakpoint_ops *ops,
13731                                 int from_tty, int enabled,
13732                                 int internal, unsigned flags)
13733 {
13734   create_breakpoints_sal (gdbarch, canonical, cond_string,
13735                           extra_string,
13736                           type_wanted, disposition,
13737                           thread, task, ignore_count, ops, from_tty,
13738                           enabled, internal, flags);
13739 }
13740
13741 /* Decode the line represented by S by calling decode_line_full.  This is the
13742    default function for the `decode_linespec' method of breakpoint_ops.  */
13743
13744 static void
13745 decode_linespec_default (struct breakpoint *b, char **s,
13746                          struct symtabs_and_lines *sals)
13747 {
13748   struct linespec_result canonical;
13749
13750   init_linespec_result (&canonical);
13751   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
13752                     (struct symtab *) NULL, 0,
13753                     &canonical, multiple_symbols_all,
13754                     b->filter);
13755
13756   /* We should get 0 or 1 resulting SALs.  */
13757   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
13758
13759   if (VEC_length (linespec_sals, canonical.sals) > 0)
13760     {
13761       struct linespec_sals *lsal;
13762
13763       lsal = VEC_index (linespec_sals, canonical.sals, 0);
13764       *sals = lsal->sals;
13765       /* Arrange it so the destructor does not free the
13766          contents.  */
13767       lsal->sals.sals = NULL;
13768     }
13769
13770   destroy_linespec_result (&canonical);
13771 }
13772
13773 /* Prepare the global context for a re-set of breakpoint B.  */
13774
13775 static struct cleanup *
13776 prepare_re_set_context (struct breakpoint *b)
13777 {
13778   struct cleanup *cleanups;
13779
13780   input_radix = b->input_radix;
13781   cleanups = save_current_space_and_thread ();
13782   if (b->pspace != NULL)
13783     switch_to_program_space_and_thread (b->pspace);
13784   set_language (b->language);
13785
13786   return cleanups;
13787 }
13788
13789 /* Reset a breakpoint given it's struct breakpoint * BINT.
13790    The value we return ends up being the return value from catch_errors.
13791    Unused in this case.  */
13792
13793 static int
13794 breakpoint_re_set_one (void *bint)
13795 {
13796   /* Get past catch_errs.  */
13797   struct breakpoint *b = (struct breakpoint *) bint;
13798   struct cleanup *cleanups;
13799
13800   cleanups = prepare_re_set_context (b);
13801   b->ops->re_set (b);
13802   do_cleanups (cleanups);
13803   return 0;
13804 }
13805
13806 /* Re-set all breakpoints after symbols have been re-loaded.  */
13807 void
13808 breakpoint_re_set (void)
13809 {
13810   struct breakpoint *b, *b_tmp;
13811   enum language save_language;
13812   int save_input_radix;
13813   struct cleanup *old_chain;
13814
13815   save_language = current_language->la_language;
13816   save_input_radix = input_radix;
13817   old_chain = save_current_program_space ();
13818
13819   ALL_BREAKPOINTS_SAFE (b, b_tmp)
13820   {
13821     /* Format possible error msg.  */
13822     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
13823                                 b->number);
13824     struct cleanup *cleanups = make_cleanup (xfree, message);
13825     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
13826     do_cleanups (cleanups);
13827   }
13828   set_language (save_language);
13829   input_radix = save_input_radix;
13830
13831   jit_breakpoint_re_set ();
13832
13833   do_cleanups (old_chain);
13834
13835   create_overlay_event_breakpoint ();
13836   create_longjmp_master_breakpoint ();
13837   create_std_terminate_master_breakpoint ();
13838   create_exception_master_breakpoint ();
13839
13840   /* While we're at it, reset the skip list too.  */
13841   skip_re_set ();
13842 }
13843 \f
13844 /* Reset the thread number of this breakpoint:
13845
13846    - If the breakpoint is for all threads, leave it as-is.
13847    - Else, reset it to the current thread for inferior_ptid.  */
13848 void
13849 breakpoint_re_set_thread (struct breakpoint *b)
13850 {
13851   if (b->thread != -1)
13852     {
13853       if (in_thread_list (inferior_ptid))
13854         b->thread = pid_to_thread_id (inferior_ptid);
13855
13856       /* We're being called after following a fork.  The new fork is
13857          selected as current, and unless this was a vfork will have a
13858          different program space from the original thread.  Reset that
13859          as well.  */
13860       b->loc->pspace = current_program_space;
13861     }
13862 }
13863
13864 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13865    If from_tty is nonzero, it prints a message to that effect,
13866    which ends with a period (no newline).  */
13867
13868 void
13869 set_ignore_count (int bptnum, int count, int from_tty)
13870 {
13871   struct breakpoint *b;
13872
13873   if (count < 0)
13874     count = 0;
13875
13876   ALL_BREAKPOINTS (b)
13877     if (b->number == bptnum)
13878     {
13879       if (is_tracepoint (b))
13880         {
13881           if (from_tty && count != 0)
13882             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13883                              bptnum);
13884           return;
13885         }
13886       
13887       b->ignore_count = count;
13888       if (from_tty)
13889         {
13890           if (count == 0)
13891             printf_filtered (_("Will stop next time "
13892                                "breakpoint %d is reached."),
13893                              bptnum);
13894           else if (count == 1)
13895             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13896                              bptnum);
13897           else
13898             printf_filtered (_("Will ignore next %d "
13899                                "crossings of breakpoint %d."),
13900                              count, bptnum);
13901         }
13902       breakpoints_changed ();
13903       observer_notify_breakpoint_modified (b);
13904       return;
13905     }
13906
13907   error (_("No breakpoint number %d."), bptnum);
13908 }
13909
13910 /* Command to set ignore-count of breakpoint N to COUNT.  */
13911
13912 static void
13913 ignore_command (char *args, int from_tty)
13914 {
13915   char *p = args;
13916   int num;
13917
13918   if (p == 0)
13919     error_no_arg (_("a breakpoint number"));
13920
13921   num = get_number (&p);
13922   if (num == 0)
13923     error (_("bad breakpoint number: '%s'"), args);
13924   if (*p == 0)
13925     error (_("Second argument (specified ignore-count) is missing."));
13926
13927   set_ignore_count (num,
13928                     longest_to_int (value_as_long (parse_and_eval (p))),
13929                     from_tty);
13930   if (from_tty)
13931     printf_filtered ("\n");
13932 }
13933 \f
13934 /* Call FUNCTION on each of the breakpoints
13935    whose numbers are given in ARGS.  */
13936
13937 static void
13938 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
13939                                                       void *),
13940                         void *data)
13941 {
13942   int num;
13943   struct breakpoint *b, *tmp;
13944   int match;
13945   struct get_number_or_range_state state;
13946
13947   if (args == 0)
13948     error_no_arg (_("one or more breakpoint numbers"));
13949
13950   init_number_or_range (&state, args);
13951
13952   while (!state.finished)
13953     {
13954       char *p = state.string;
13955
13956       match = 0;
13957
13958       num = get_number_or_range (&state);
13959       if (num == 0)
13960         {
13961           warning (_("bad breakpoint number at or near '%s'"), p);
13962         }
13963       else
13964         {
13965           ALL_BREAKPOINTS_SAFE (b, tmp)
13966             if (b->number == num)
13967               {
13968                 match = 1;
13969                 function (b, data);
13970                 break;
13971               }
13972           if (match == 0)
13973             printf_unfiltered (_("No breakpoint number %d.\n"), num);
13974         }
13975     }
13976 }
13977
13978 static struct bp_location *
13979 find_location_by_number (char *number)
13980 {
13981   char *dot = strchr (number, '.');
13982   char *p1;
13983   int bp_num;
13984   int loc_num;
13985   struct breakpoint *b;
13986   struct bp_location *loc;  
13987
13988   *dot = '\0';
13989
13990   p1 = number;
13991   bp_num = get_number (&p1);
13992   if (bp_num == 0)
13993     error (_("Bad breakpoint number '%s'"), number);
13994
13995   ALL_BREAKPOINTS (b)
13996     if (b->number == bp_num)
13997       {
13998         break;
13999       }
14000
14001   if (!b || b->number != bp_num)
14002     error (_("Bad breakpoint number '%s'"), number);
14003   
14004   p1 = dot+1;
14005   loc_num = get_number (&p1);
14006   if (loc_num == 0)
14007     error (_("Bad breakpoint location number '%s'"), number);
14008
14009   --loc_num;
14010   loc = b->loc;
14011   for (;loc_num && loc; --loc_num, loc = loc->next)
14012     ;
14013   if (!loc)
14014     error (_("Bad breakpoint location number '%s'"), dot+1);
14015     
14016   return loc;  
14017 }
14018
14019
14020 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14021    If from_tty is nonzero, it prints a message to that effect,
14022    which ends with a period (no newline).  */
14023
14024 void
14025 disable_breakpoint (struct breakpoint *bpt)
14026 {
14027   /* Never disable a watchpoint scope breakpoint; we want to
14028      hit them when we leave scope so we can delete both the
14029      watchpoint and its scope breakpoint at that time.  */
14030   if (bpt->type == bp_watchpoint_scope)
14031     return;
14032
14033   /* You can't disable permanent breakpoints.  */
14034   if (bpt->enable_state == bp_permanent)
14035     return;
14036
14037   bpt->enable_state = bp_disabled;
14038
14039   /* Mark breakpoint locations modified.  */
14040   mark_breakpoint_modified (bpt);
14041
14042   if (target_supports_enable_disable_tracepoint ()
14043       && current_trace_status ()->running && is_tracepoint (bpt))
14044     {
14045       struct bp_location *location;
14046      
14047       for (location = bpt->loc; location; location = location->next)
14048         target_disable_tracepoint (location);
14049     }
14050
14051   update_global_location_list (0);
14052
14053   observer_notify_breakpoint_modified (bpt);
14054 }
14055
14056 /* A callback for iterate_over_related_breakpoints.  */
14057
14058 static void
14059 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14060 {
14061   disable_breakpoint (b);
14062 }
14063
14064 /* A callback for map_breakpoint_numbers that calls
14065    disable_breakpoint.  */
14066
14067 static void
14068 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14069 {
14070   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14071 }
14072
14073 static void
14074 disable_command (char *args, int from_tty)
14075 {
14076   if (args == 0)
14077     {
14078       struct breakpoint *bpt;
14079
14080       ALL_BREAKPOINTS (bpt)
14081         if (user_breakpoint_p (bpt))
14082           disable_breakpoint (bpt);
14083     }
14084   else if (strchr (args, '.'))
14085     {
14086       struct bp_location *loc = find_location_by_number (args);
14087       if (loc)
14088         {
14089           if (loc->enabled)
14090             {
14091               loc->enabled = 0;
14092               mark_breakpoint_location_modified (loc);
14093             }
14094           if (target_supports_enable_disable_tracepoint ()
14095               && current_trace_status ()->running && loc->owner
14096               && is_tracepoint (loc->owner))
14097             target_disable_tracepoint (loc);
14098         }
14099       update_global_location_list (0);
14100     }
14101   else
14102     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14103 }
14104
14105 static void
14106 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14107                         int count)
14108 {
14109   int target_resources_ok;
14110
14111   if (bpt->type == bp_hardware_breakpoint)
14112     {
14113       int i;
14114       i = hw_breakpoint_used_count ();
14115       target_resources_ok = 
14116         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14117                                             i + 1, 0);
14118       if (target_resources_ok == 0)
14119         error (_("No hardware breakpoint support in the target."));
14120       else if (target_resources_ok < 0)
14121         error (_("Hardware breakpoints used exceeds limit."));
14122     }
14123
14124   if (is_watchpoint (bpt))
14125     {
14126       /* Initialize it just to avoid a GCC false warning.  */
14127       enum enable_state orig_enable_state = 0;
14128       volatile struct gdb_exception e;
14129
14130       TRY_CATCH (e, RETURN_MASK_ALL)
14131         {
14132           struct watchpoint *w = (struct watchpoint *) bpt;
14133
14134           orig_enable_state = bpt->enable_state;
14135           bpt->enable_state = bp_enabled;
14136           update_watchpoint (w, 1 /* reparse */);
14137         }
14138       if (e.reason < 0)
14139         {
14140           bpt->enable_state = orig_enable_state;
14141           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14142                              bpt->number);
14143           return;
14144         }
14145     }
14146
14147   if (bpt->enable_state != bp_permanent)
14148     bpt->enable_state = bp_enabled;
14149
14150   bpt->enable_state = bp_enabled;
14151
14152   /* Mark breakpoint locations modified.  */
14153   mark_breakpoint_modified (bpt);
14154
14155   if (target_supports_enable_disable_tracepoint ()
14156       && current_trace_status ()->running && is_tracepoint (bpt))
14157     {
14158       struct bp_location *location;
14159
14160       for (location = bpt->loc; location; location = location->next)
14161         target_enable_tracepoint (location);
14162     }
14163
14164   bpt->disposition = disposition;
14165   bpt->enable_count = count;
14166   update_global_location_list (1);
14167   breakpoints_changed ();
14168   
14169   observer_notify_breakpoint_modified (bpt);
14170 }
14171
14172
14173 void
14174 enable_breakpoint (struct breakpoint *bpt)
14175 {
14176   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14177 }
14178
14179 static void
14180 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14181 {
14182   enable_breakpoint (bpt);
14183 }
14184
14185 /* A callback for map_breakpoint_numbers that calls
14186    enable_breakpoint.  */
14187
14188 static void
14189 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14190 {
14191   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14192 }
14193
14194 /* The enable command enables the specified breakpoints (or all defined
14195    breakpoints) so they once again become (or continue to be) effective
14196    in stopping the inferior.  */
14197
14198 static void
14199 enable_command (char *args, int from_tty)
14200 {
14201   if (args == 0)
14202     {
14203       struct breakpoint *bpt;
14204
14205       ALL_BREAKPOINTS (bpt)
14206         if (user_breakpoint_p (bpt))
14207           enable_breakpoint (bpt);
14208     }
14209   else if (strchr (args, '.'))
14210     {
14211       struct bp_location *loc = find_location_by_number (args);
14212       if (loc)
14213         {
14214           if (!loc->enabled)
14215             {
14216               loc->enabled = 1;
14217               mark_breakpoint_location_modified (loc);
14218             }
14219           if (target_supports_enable_disable_tracepoint ()
14220               && current_trace_status ()->running && loc->owner
14221               && is_tracepoint (loc->owner))
14222             target_enable_tracepoint (loc);
14223         }
14224       update_global_location_list (1);
14225     }
14226   else
14227     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14228 }
14229
14230 /* This struct packages up disposition data for application to multiple
14231    breakpoints.  */
14232
14233 struct disp_data
14234 {
14235   enum bpdisp disp;
14236   int count;
14237 };
14238
14239 static void
14240 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14241 {
14242   struct disp_data disp_data = *(struct disp_data *) arg;
14243
14244   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14245 }
14246
14247 static void
14248 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14249 {
14250   struct disp_data disp = { disp_disable, 1 };
14251
14252   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14253 }
14254
14255 static void
14256 enable_once_command (char *args, int from_tty)
14257 {
14258   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14259 }
14260
14261 static void
14262 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14263 {
14264   struct disp_data disp = { disp_disable, *(int *) countptr };
14265
14266   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14267 }
14268
14269 static void
14270 enable_count_command (char *args, int from_tty)
14271 {
14272   int count = get_number (&args);
14273
14274   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14275 }
14276
14277 static void
14278 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14279 {
14280   struct disp_data disp = { disp_del, 1 };
14281
14282   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14283 }
14284
14285 static void
14286 enable_delete_command (char *args, int from_tty)
14287 {
14288   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14289 }
14290 \f
14291 static void
14292 set_breakpoint_cmd (char *args, int from_tty)
14293 {
14294 }
14295
14296 static void
14297 show_breakpoint_cmd (char *args, int from_tty)
14298 {
14299 }
14300
14301 /* Invalidate last known value of any hardware watchpoint if
14302    the memory which that value represents has been written to by
14303    GDB itself.  */
14304
14305 static void
14306 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
14307                                       const bfd_byte *data)
14308 {
14309   struct breakpoint *bp;
14310
14311   ALL_BREAKPOINTS (bp)
14312     if (bp->enable_state == bp_enabled
14313         && bp->type == bp_hardware_watchpoint)
14314       {
14315         struct watchpoint *wp = (struct watchpoint *) bp;
14316
14317         if (wp->val_valid && wp->val)
14318           {
14319             struct bp_location *loc;
14320
14321             for (loc = bp->loc; loc != NULL; loc = loc->next)
14322               if (loc->loc_type == bp_loc_hardware_watchpoint
14323                   && loc->address + loc->length > addr
14324                   && addr + len > loc->address)
14325                 {
14326                   value_free (wp->val);
14327                   wp->val = NULL;
14328                   wp->val_valid = 0;
14329                 }
14330           }
14331       }
14332 }
14333
14334 /* Use the last displayed codepoint's values, or nothing
14335    if they aren't valid.  */
14336
14337 struct symtabs_and_lines
14338 decode_line_spec_1 (char *string, int flags)
14339 {
14340   struct symtabs_and_lines sals;
14341
14342   if (string == 0)
14343     error (_("Empty line specification."));
14344   if (last_displayed_sal_is_valid ())
14345     sals = decode_line_1 (&string, flags,
14346                           get_last_displayed_symtab (),
14347                           get_last_displayed_line ());
14348   else
14349     sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
14350   if (*string)
14351     error (_("Junk at end of line specification: %s"), string);
14352   return sals;
14353 }
14354
14355 /* Create and insert a raw software breakpoint at PC.  Return an
14356    identifier, which should be used to remove the breakpoint later.
14357    In general, places which call this should be using something on the
14358    breakpoint chain instead; this function should be eliminated
14359    someday.  */
14360
14361 void *
14362 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14363                                   struct address_space *aspace, CORE_ADDR pc)
14364 {
14365   struct bp_target_info *bp_tgt;
14366
14367   bp_tgt = XZALLOC (struct bp_target_info);
14368
14369   bp_tgt->placed_address_space = aspace;
14370   bp_tgt->placed_address = pc;
14371
14372   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14373     {
14374       /* Could not insert the breakpoint.  */
14375       xfree (bp_tgt);
14376       return NULL;
14377     }
14378
14379   return bp_tgt;
14380 }
14381
14382 /* Remove a breakpoint BP inserted by
14383    deprecated_insert_raw_breakpoint.  */
14384
14385 int
14386 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14387 {
14388   struct bp_target_info *bp_tgt = bp;
14389   int ret;
14390
14391   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14392   xfree (bp_tgt);
14393
14394   return ret;
14395 }
14396
14397 /* One (or perhaps two) breakpoints used for software single
14398    stepping.  */
14399
14400 static void *single_step_breakpoints[2];
14401 static struct gdbarch *single_step_gdbarch[2];
14402
14403 /* Create and insert a breakpoint for software single step.  */
14404
14405 void
14406 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14407                                struct address_space *aspace, 
14408                                CORE_ADDR next_pc)
14409 {
14410   void **bpt_p;
14411
14412   if (single_step_breakpoints[0] == NULL)
14413     {
14414       bpt_p = &single_step_breakpoints[0];
14415       single_step_gdbarch[0] = gdbarch;
14416     }
14417   else
14418     {
14419       gdb_assert (single_step_breakpoints[1] == NULL);
14420       bpt_p = &single_step_breakpoints[1];
14421       single_step_gdbarch[1] = gdbarch;
14422     }
14423
14424   /* NOTE drow/2006-04-11: A future improvement to this function would
14425      be to only create the breakpoints once, and actually put them on
14426      the breakpoint chain.  That would let us use set_raw_breakpoint.
14427      We could adjust the addresses each time they were needed.  Doing
14428      this requires corresponding changes elsewhere where single step
14429      breakpoints are handled, however.  So, for now, we use this.  */
14430
14431   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14432   if (*bpt_p == NULL)
14433     error (_("Could not insert single-step breakpoint at %s"),
14434              paddress (gdbarch, next_pc));
14435 }
14436
14437 /* Check if the breakpoints used for software single stepping
14438    were inserted or not.  */
14439
14440 int
14441 single_step_breakpoints_inserted (void)
14442 {
14443   return (single_step_breakpoints[0] != NULL
14444           || single_step_breakpoints[1] != NULL);
14445 }
14446
14447 /* Remove and delete any breakpoints used for software single step.  */
14448
14449 void
14450 remove_single_step_breakpoints (void)
14451 {
14452   gdb_assert (single_step_breakpoints[0] != NULL);
14453
14454   /* See insert_single_step_breakpoint for more about this deprecated
14455      call.  */
14456   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14457                                     single_step_breakpoints[0]);
14458   single_step_gdbarch[0] = NULL;
14459   single_step_breakpoints[0] = NULL;
14460
14461   if (single_step_breakpoints[1] != NULL)
14462     {
14463       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14464                                         single_step_breakpoints[1]);
14465       single_step_gdbarch[1] = NULL;
14466       single_step_breakpoints[1] = NULL;
14467     }
14468 }
14469
14470 /* Delete software single step breakpoints without removing them from
14471    the inferior.  This is intended to be used if the inferior's address
14472    space where they were inserted is already gone, e.g. after exit or
14473    exec.  */
14474
14475 void
14476 cancel_single_step_breakpoints (void)
14477 {
14478   int i;
14479
14480   for (i = 0; i < 2; i++)
14481     if (single_step_breakpoints[i])
14482       {
14483         xfree (single_step_breakpoints[i]);
14484         single_step_breakpoints[i] = NULL;
14485         single_step_gdbarch[i] = NULL;
14486       }
14487 }
14488
14489 /* Detach software single-step breakpoints from INFERIOR_PTID without
14490    removing them.  */
14491
14492 static void
14493 detach_single_step_breakpoints (void)
14494 {
14495   int i;
14496
14497   for (i = 0; i < 2; i++)
14498     if (single_step_breakpoints[i])
14499       target_remove_breakpoint (single_step_gdbarch[i],
14500                                 single_step_breakpoints[i]);
14501 }
14502
14503 /* Check whether a software single-step breakpoint is inserted at
14504    PC.  */
14505
14506 static int
14507 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14508                                         CORE_ADDR pc)
14509 {
14510   int i;
14511
14512   for (i = 0; i < 2; i++)
14513     {
14514       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14515       if (bp_tgt
14516           && breakpoint_address_match (bp_tgt->placed_address_space,
14517                                        bp_tgt->placed_address,
14518                                        aspace, pc))
14519         return 1;
14520     }
14521
14522   return 0;
14523 }
14524
14525 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14526    non-zero otherwise.  */
14527 static int
14528 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14529 {
14530   if (syscall_catchpoint_p (bp)
14531       && bp->enable_state != bp_disabled
14532       && bp->enable_state != bp_call_disabled)
14533     return 1;
14534   else
14535     return 0;
14536 }
14537
14538 int
14539 catch_syscall_enabled (void)
14540 {
14541   struct catch_syscall_inferior_data *inf_data
14542     = get_catch_syscall_inferior_data (current_inferior ());
14543
14544   return inf_data->total_syscalls_count != 0;
14545 }
14546
14547 int
14548 catching_syscall_number (int syscall_number)
14549 {
14550   struct breakpoint *bp;
14551
14552   ALL_BREAKPOINTS (bp)
14553     if (is_syscall_catchpoint_enabled (bp))
14554       {
14555         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14556
14557         if (c->syscalls_to_be_caught)
14558           {
14559             int i, iter;
14560             for (i = 0;
14561                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14562                  i++)
14563               if (syscall_number == iter)
14564                 return 1;
14565           }
14566         else
14567           return 1;
14568       }
14569
14570   return 0;
14571 }
14572
14573 /* Complete syscall names.  Used by "catch syscall".  */
14574 static char **
14575 catch_syscall_completer (struct cmd_list_element *cmd,
14576                          char *text, char *word)
14577 {
14578   const char **list = get_syscall_names ();
14579   char **retlist
14580     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14581
14582   xfree (list);
14583   return retlist;
14584 }
14585
14586 /* Tracepoint-specific operations.  */
14587
14588 /* Set tracepoint count to NUM.  */
14589 static void
14590 set_tracepoint_count (int num)
14591 {
14592   tracepoint_count = num;
14593   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14594 }
14595
14596 static void
14597 trace_command (char *arg, int from_tty)
14598 {
14599   struct breakpoint_ops *ops;
14600   const char *arg_cp = arg;
14601
14602   if (arg && probe_linespec_to_ops (&arg_cp))
14603     ops = &tracepoint_probe_breakpoint_ops;
14604   else
14605     ops = &tracepoint_breakpoint_ops;
14606
14607   if (create_breakpoint (get_current_arch (),
14608                          arg,
14609                          NULL, 0, NULL, 1 /* parse arg */,
14610                          0 /* tempflag */,
14611                          bp_tracepoint /* type_wanted */,
14612                          0 /* Ignore count */,
14613                          pending_break_support,
14614                          ops,
14615                          from_tty,
14616                          1 /* enabled */,
14617                          0 /* internal */, 0))
14618     set_tracepoint_count (breakpoint_count);
14619 }
14620
14621 static void
14622 ftrace_command (char *arg, int from_tty)
14623 {
14624   if (create_breakpoint (get_current_arch (),
14625                          arg,
14626                          NULL, 0, NULL, 1 /* parse arg */,
14627                          0 /* tempflag */,
14628                          bp_fast_tracepoint /* type_wanted */,
14629                          0 /* Ignore count */,
14630                          pending_break_support,
14631                          &tracepoint_breakpoint_ops,
14632                          from_tty,
14633                          1 /* enabled */,
14634                          0 /* internal */, 0))
14635     set_tracepoint_count (breakpoint_count);
14636 }
14637
14638 /* strace command implementation.  Creates a static tracepoint.  */
14639
14640 static void
14641 strace_command (char *arg, int from_tty)
14642 {
14643   struct breakpoint_ops *ops;
14644
14645   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14646      or with a normal static tracepoint.  */
14647   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
14648     ops = &strace_marker_breakpoint_ops;
14649   else
14650     ops = &tracepoint_breakpoint_ops;
14651
14652   if (create_breakpoint (get_current_arch (),
14653                          arg,
14654                          NULL, 0, NULL, 1 /* parse arg */,
14655                          0 /* tempflag */,
14656                          bp_static_tracepoint /* type_wanted */,
14657                          0 /* Ignore count */,
14658                          pending_break_support,
14659                          ops,
14660                          from_tty,
14661                          1 /* enabled */,
14662                          0 /* internal */, 0))
14663     set_tracepoint_count (breakpoint_count);
14664 }
14665
14666 /* Set up a fake reader function that gets command lines from a linked
14667    list that was acquired during tracepoint uploading.  */
14668
14669 static struct uploaded_tp *this_utp;
14670 static int next_cmd;
14671
14672 static char *
14673 read_uploaded_action (void)
14674 {
14675   char *rslt;
14676
14677   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14678
14679   next_cmd++;
14680
14681   return rslt;
14682 }
14683
14684 /* Given information about a tracepoint as recorded on a target (which
14685    can be either a live system or a trace file), attempt to create an
14686    equivalent GDB tracepoint.  This is not a reliable process, since
14687    the target does not necessarily have all the information used when
14688    the tracepoint was originally defined.  */
14689   
14690 struct tracepoint *
14691 create_tracepoint_from_upload (struct uploaded_tp *utp)
14692 {
14693   char *addr_str, small_buf[100];
14694   struct tracepoint *tp;
14695
14696   if (utp->at_string)
14697     addr_str = utp->at_string;
14698   else
14699     {
14700       /* In the absence of a source location, fall back to raw
14701          address.  Since there is no way to confirm that the address
14702          means the same thing as when the trace was started, warn the
14703          user.  */
14704       warning (_("Uploaded tracepoint %d has no "
14705                  "source location, using raw address"),
14706                utp->number);
14707       sprintf (small_buf, "*%s", hex_string (utp->addr));
14708       addr_str = small_buf;
14709     }
14710
14711   /* There's not much we can do with a sequence of bytecodes.  */
14712   if (utp->cond && !utp->cond_string)
14713     warning (_("Uploaded tracepoint %d condition "
14714                "has no source form, ignoring it"),
14715              utp->number);
14716
14717   if (!create_breakpoint (get_current_arch (),
14718                           addr_str,
14719                           utp->cond_string, -1, NULL,
14720                           0 /* parse cond/thread */,
14721                           0 /* tempflag */,
14722                           utp->type /* type_wanted */,
14723                           0 /* Ignore count */,
14724                           pending_break_support,
14725                           &tracepoint_breakpoint_ops,
14726                           0 /* from_tty */,
14727                           utp->enabled /* enabled */,
14728                           0 /* internal */,
14729                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14730     return NULL;
14731
14732   set_tracepoint_count (breakpoint_count);
14733   
14734   /* Get the tracepoint we just created.  */
14735   tp = get_tracepoint (tracepoint_count);
14736   gdb_assert (tp != NULL);
14737
14738   if (utp->pass > 0)
14739     {
14740       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
14741
14742       trace_pass_command (small_buf, 0);
14743     }
14744
14745   /* If we have uploaded versions of the original commands, set up a
14746      special-purpose "reader" function and call the usual command line
14747      reader, then pass the result to the breakpoint command-setting
14748      function.  */
14749   if (!VEC_empty (char_ptr, utp->cmd_strings))
14750     {
14751       struct command_line *cmd_list;
14752
14753       this_utp = utp;
14754       next_cmd = 0;
14755
14756       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14757
14758       breakpoint_set_commands (&tp->base, cmd_list);
14759     }
14760   else if (!VEC_empty (char_ptr, utp->actions)
14761            || !VEC_empty (char_ptr, utp->step_actions))
14762     warning (_("Uploaded tracepoint %d actions "
14763                "have no source form, ignoring them"),
14764              utp->number);
14765
14766   /* Copy any status information that might be available.  */
14767   tp->base.hit_count = utp->hit_count;
14768   tp->traceframe_usage = utp->traceframe_usage;
14769
14770   return tp;
14771 }
14772   
14773 /* Print information on tracepoint number TPNUM_EXP, or all if
14774    omitted.  */
14775
14776 static void
14777 tracepoints_info (char *args, int from_tty)
14778 {
14779   struct ui_out *uiout = current_uiout;
14780   int num_printed;
14781
14782   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14783
14784   if (num_printed == 0)
14785     {
14786       if (args == NULL || *args == '\0')
14787         ui_out_message (uiout, 0, "No tracepoints.\n");
14788       else
14789         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
14790     }
14791
14792   default_collect_info ();
14793 }
14794
14795 /* The 'enable trace' command enables tracepoints.
14796    Not supported by all targets.  */
14797 static void
14798 enable_trace_command (char *args, int from_tty)
14799 {
14800   enable_command (args, from_tty);
14801 }
14802
14803 /* The 'disable trace' command disables tracepoints.
14804    Not supported by all targets.  */
14805 static void
14806 disable_trace_command (char *args, int from_tty)
14807 {
14808   disable_command (args, from_tty);
14809 }
14810
14811 /* Remove a tracepoint (or all if no argument).  */
14812 static void
14813 delete_trace_command (char *arg, int from_tty)
14814 {
14815   struct breakpoint *b, *b_tmp;
14816
14817   dont_repeat ();
14818
14819   if (arg == 0)
14820     {
14821       int breaks_to_delete = 0;
14822
14823       /* Delete all breakpoints if no argument.
14824          Do not delete internal or call-dummy breakpoints, these
14825          have to be deleted with an explicit breakpoint number 
14826          argument.  */
14827       ALL_TRACEPOINTS (b)
14828         if (is_tracepoint (b) && user_breakpoint_p (b))
14829           {
14830             breaks_to_delete = 1;
14831             break;
14832           }
14833
14834       /* Ask user only if there are some breakpoints to delete.  */
14835       if (!from_tty
14836           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14837         {
14838           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14839             if (is_tracepoint (b) && user_breakpoint_p (b))
14840               delete_breakpoint (b);
14841         }
14842     }
14843   else
14844     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14845 }
14846
14847 /* Helper function for trace_pass_command.  */
14848
14849 static void
14850 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14851 {
14852   tp->pass_count = count;
14853   observer_notify_tracepoint_modified (tp->base.number);
14854   if (from_tty)
14855     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14856                      tp->base.number, count);
14857 }
14858
14859 /* Set passcount for tracepoint.
14860
14861    First command argument is passcount, second is tracepoint number.
14862    If tracepoint number omitted, apply to most recently defined.
14863    Also accepts special argument "all".  */
14864
14865 static void
14866 trace_pass_command (char *args, int from_tty)
14867 {
14868   struct tracepoint *t1;
14869   unsigned int count;
14870
14871   if (args == 0 || *args == 0)
14872     error (_("passcount command requires an "
14873              "argument (count + optional TP num)"));
14874
14875   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
14876
14877   while (*args && isspace ((int) *args))
14878     args++;
14879
14880   if (*args && strncasecmp (args, "all", 3) == 0)
14881     {
14882       struct breakpoint *b;
14883
14884       args += 3;                        /* Skip special argument "all".  */
14885       if (*args)
14886         error (_("Junk at end of arguments."));
14887
14888       ALL_TRACEPOINTS (b)
14889       {
14890         t1 = (struct tracepoint *) b;
14891         trace_pass_set_count (t1, count, from_tty);
14892       }
14893     }
14894   else if (*args == '\0')
14895     {
14896       t1 = get_tracepoint_by_number (&args, NULL, 1);
14897       if (t1)
14898         trace_pass_set_count (t1, count, from_tty);
14899     }
14900   else
14901     {
14902       struct get_number_or_range_state state;
14903
14904       init_number_or_range (&state, args);
14905       while (!state.finished)
14906         {
14907           t1 = get_tracepoint_by_number (&args, &state, 1);
14908           if (t1)
14909             trace_pass_set_count (t1, count, from_tty);
14910         }
14911     }
14912 }
14913
14914 struct tracepoint *
14915 get_tracepoint (int num)
14916 {
14917   struct breakpoint *t;
14918
14919   ALL_TRACEPOINTS (t)
14920     if (t->number == num)
14921       return (struct tracepoint *) t;
14922
14923   return NULL;
14924 }
14925
14926 /* Find the tracepoint with the given target-side number (which may be
14927    different from the tracepoint number after disconnecting and
14928    reconnecting).  */
14929
14930 struct tracepoint *
14931 get_tracepoint_by_number_on_target (int num)
14932 {
14933   struct breakpoint *b;
14934
14935   ALL_TRACEPOINTS (b)
14936     {
14937       struct tracepoint *t = (struct tracepoint *) b;
14938
14939       if (t->number_on_target == num)
14940         return t;
14941     }
14942
14943   return NULL;
14944 }
14945
14946 /* Utility: parse a tracepoint number and look it up in the list.
14947    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14948    If OPTIONAL_P is true, then if the argument is missing, the most
14949    recent tracepoint (tracepoint_count) is returned.  */
14950 struct tracepoint *
14951 get_tracepoint_by_number (char **arg,
14952                           struct get_number_or_range_state *state,
14953                           int optional_p)
14954 {
14955   extern int tracepoint_count;
14956   struct breakpoint *t;
14957   int tpnum;
14958   char *instring = arg == NULL ? NULL : *arg;
14959
14960   if (state)
14961     {
14962       gdb_assert (!state->finished);
14963       tpnum = get_number_or_range (state);
14964     }
14965   else if (arg == NULL || *arg == NULL || ! **arg)
14966     {
14967       if (optional_p)
14968         tpnum = tracepoint_count;
14969       else
14970         error_no_arg (_("tracepoint number"));
14971     }
14972   else
14973     tpnum = get_number (arg);
14974
14975   if (tpnum <= 0)
14976     {
14977       if (instring && *instring)
14978         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14979                          instring);
14980       else
14981         printf_filtered (_("Tracepoint argument missing "
14982                            "and no previous tracepoint\n"));
14983       return NULL;
14984     }
14985
14986   ALL_TRACEPOINTS (t)
14987     if (t->number == tpnum)
14988     {
14989       return (struct tracepoint *) t;
14990     }
14991
14992   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
14993   return NULL;
14994 }
14995
14996 void
14997 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
14998 {
14999   if (b->thread != -1)
15000     fprintf_unfiltered (fp, " thread %d", b->thread);
15001
15002   if (b->task != 0)
15003     fprintf_unfiltered (fp, " task %d", b->task);
15004
15005   fprintf_unfiltered (fp, "\n");
15006 }
15007
15008 /* Save information on user settable breakpoints (watchpoints, etc) to
15009    a new script file named FILENAME.  If FILTER is non-NULL, call it
15010    on each breakpoint and only include the ones for which it returns
15011    non-zero.  */
15012
15013 static void
15014 save_breakpoints (char *filename, int from_tty,
15015                   int (*filter) (const struct breakpoint *))
15016 {
15017   struct breakpoint *tp;
15018   int any = 0;
15019   char *pathname;
15020   struct cleanup *cleanup;
15021   struct ui_file *fp;
15022   int extra_trace_bits = 0;
15023
15024   if (filename == 0 || *filename == 0)
15025     error (_("Argument required (file name in which to save)"));
15026
15027   /* See if we have anything to save.  */
15028   ALL_BREAKPOINTS (tp)
15029   {
15030     /* Skip internal and momentary breakpoints.  */
15031     if (!user_breakpoint_p (tp))
15032       continue;
15033
15034     /* If we have a filter, only save the breakpoints it accepts.  */
15035     if (filter && !filter (tp))
15036       continue;
15037
15038     any = 1;
15039
15040     if (is_tracepoint (tp))
15041       {
15042         extra_trace_bits = 1;
15043
15044         /* We can stop searching.  */
15045         break;
15046       }
15047   }
15048
15049   if (!any)
15050     {
15051       warning (_("Nothing to save."));
15052       return;
15053     }
15054
15055   pathname = tilde_expand (filename);
15056   cleanup = make_cleanup (xfree, pathname);
15057   fp = gdb_fopen (pathname, "w");
15058   if (!fp)
15059     error (_("Unable to open file '%s' for saving (%s)"),
15060            filename, safe_strerror (errno));
15061   make_cleanup_ui_file_delete (fp);
15062
15063   if (extra_trace_bits)
15064     save_trace_state_variables (fp);
15065
15066   ALL_BREAKPOINTS (tp)
15067   {
15068     /* Skip internal and momentary breakpoints.  */
15069     if (!user_breakpoint_p (tp))
15070       continue;
15071
15072     /* If we have a filter, only save the breakpoints it accepts.  */
15073     if (filter && !filter (tp))
15074       continue;
15075
15076     tp->ops->print_recreate (tp, fp);
15077
15078     /* Note, we can't rely on tp->number for anything, as we can't
15079        assume the recreated breakpoint numbers will match.  Use $bpnum
15080        instead.  */
15081
15082     if (tp->cond_string)
15083       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15084
15085     if (tp->ignore_count)
15086       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15087
15088     if (tp->commands)
15089       {
15090         volatile struct gdb_exception ex;       
15091
15092         fprintf_unfiltered (fp, "  commands\n");
15093         
15094         ui_out_redirect (current_uiout, fp);
15095         TRY_CATCH (ex, RETURN_MASK_ALL)
15096           {
15097             print_command_lines (current_uiout, tp->commands->commands, 2);
15098           }
15099         ui_out_redirect (current_uiout, NULL);
15100
15101         if (ex.reason < 0)
15102           throw_exception (ex);
15103
15104         fprintf_unfiltered (fp, "  end\n");
15105       }
15106
15107     if (tp->enable_state == bp_disabled)
15108       fprintf_unfiltered (fp, "disable\n");
15109
15110     /* If this is a multi-location breakpoint, check if the locations
15111        should be individually disabled.  Watchpoint locations are
15112        special, and not user visible.  */
15113     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15114       {
15115         struct bp_location *loc;
15116         int n = 1;
15117
15118         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15119           if (!loc->enabled)
15120             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15121       }
15122   }
15123
15124   if (extra_trace_bits && *default_collect)
15125     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15126
15127   do_cleanups (cleanup);
15128   if (from_tty)
15129     printf_filtered (_("Saved to file '%s'.\n"), filename);
15130 }
15131
15132 /* The `save breakpoints' command.  */
15133
15134 static void
15135 save_breakpoints_command (char *args, int from_tty)
15136 {
15137   save_breakpoints (args, from_tty, NULL);
15138 }
15139
15140 /* The `save tracepoints' command.  */
15141
15142 static void
15143 save_tracepoints_command (char *args, int from_tty)
15144 {
15145   save_breakpoints (args, from_tty, is_tracepoint);
15146 }
15147
15148 /* Create a vector of all tracepoints.  */
15149
15150 VEC(breakpoint_p) *
15151 all_tracepoints (void)
15152 {
15153   VEC(breakpoint_p) *tp_vec = 0;
15154   struct breakpoint *tp;
15155
15156   ALL_TRACEPOINTS (tp)
15157   {
15158     VEC_safe_push (breakpoint_p, tp_vec, tp);
15159   }
15160
15161   return tp_vec;
15162 }
15163
15164 \f
15165 /* This help string is used for the break, hbreak, tbreak and thbreak
15166    commands.  It is defined as a macro to prevent duplication.
15167    COMMAND should be a string constant containing the name of the
15168    command.  */
15169 #define BREAK_ARGS_HELP(command) \
15170 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15171 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15172 If a line number is specified, break at start of code for that line.\n\
15173 If a function is specified, break at start of code for that function.\n\
15174 If an address is specified, break at that exact address.\n\
15175 With no LOCATION, uses current execution address of the selected\n\
15176 stack frame.  This is useful for breaking on return to a stack frame.\n\
15177 \n\
15178 THREADNUM is the number from \"info threads\".\n\
15179 CONDITION is a boolean expression.\n\
15180 \n\
15181 Multiple breakpoints at one place are permitted, and useful if their\n\
15182 conditions are different.\n\
15183 \n\
15184 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15185
15186 /* List of subcommands for "catch".  */
15187 static struct cmd_list_element *catch_cmdlist;
15188
15189 /* List of subcommands for "tcatch".  */
15190 static struct cmd_list_element *tcatch_cmdlist;
15191
15192 void
15193 add_catch_command (char *name, char *docstring,
15194                    void (*sfunc) (char *args, int from_tty,
15195                                   struct cmd_list_element *command),
15196                    char **(*completer) (struct cmd_list_element *cmd,
15197                                          char *text, char *word),
15198                    void *user_data_catch,
15199                    void *user_data_tcatch)
15200 {
15201   struct cmd_list_element *command;
15202
15203   command = add_cmd (name, class_breakpoint, NULL, docstring,
15204                      &catch_cmdlist);
15205   set_cmd_sfunc (command, sfunc);
15206   set_cmd_context (command, user_data_catch);
15207   set_cmd_completer (command, completer);
15208
15209   command = add_cmd (name, class_breakpoint, NULL, docstring,
15210                      &tcatch_cmdlist);
15211   set_cmd_sfunc (command, sfunc);
15212   set_cmd_context (command, user_data_tcatch);
15213   set_cmd_completer (command, completer);
15214 }
15215
15216 static void
15217 clear_syscall_counts (struct inferior *inf)
15218 {
15219   struct catch_syscall_inferior_data *inf_data
15220     = get_catch_syscall_inferior_data (inf);
15221
15222   inf_data->total_syscalls_count = 0;
15223   inf_data->any_syscall_count = 0;
15224   VEC_free (int, inf_data->syscalls_counts);
15225 }
15226
15227 static void
15228 save_command (char *arg, int from_tty)
15229 {
15230   printf_unfiltered (_("\"save\" must be followed by "
15231                        "the name of a save subcommand.\n"));
15232   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15233 }
15234
15235 struct breakpoint *
15236 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15237                           void *data)
15238 {
15239   struct breakpoint *b, *b_tmp;
15240
15241   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15242     {
15243       if ((*callback) (b, data))
15244         return b;
15245     }
15246
15247   return NULL;
15248 }
15249
15250 /* Zero if any of the breakpoint's locations could be a location where
15251    functions have been inlined, nonzero otherwise.  */
15252
15253 static int
15254 is_non_inline_function (struct breakpoint *b)
15255 {
15256   /* The shared library event breakpoint is set on the address of a
15257      non-inline function.  */
15258   if (b->type == bp_shlib_event)
15259     return 1;
15260
15261   return 0;
15262 }
15263
15264 /* Nonzero if the specified PC cannot be a location where functions
15265    have been inlined.  */
15266
15267 int
15268 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15269                            const struct target_waitstatus *ws)
15270 {
15271   struct breakpoint *b;
15272   struct bp_location *bl;
15273
15274   ALL_BREAKPOINTS (b)
15275     {
15276       if (!is_non_inline_function (b))
15277         continue;
15278
15279       for (bl = b->loc; bl != NULL; bl = bl->next)
15280         {
15281           if (!bl->shlib_disabled
15282               && bpstat_check_location (bl, aspace, pc, ws))
15283             return 1;
15284         }
15285     }
15286
15287   return 0;
15288 }
15289
15290 void
15291 initialize_breakpoint_ops (void)
15292 {
15293   static int initialized = 0;
15294
15295   struct breakpoint_ops *ops;
15296
15297   if (initialized)
15298     return;
15299   initialized = 1;
15300
15301   /* The breakpoint_ops structure to be inherit by all kinds of
15302      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15303      internal and momentary breakpoints, etc.).  */
15304   ops = &bkpt_base_breakpoint_ops;
15305   *ops = base_breakpoint_ops;
15306   ops->re_set = bkpt_re_set;
15307   ops->insert_location = bkpt_insert_location;
15308   ops->remove_location = bkpt_remove_location;
15309   ops->breakpoint_hit = bkpt_breakpoint_hit;
15310   ops->create_sals_from_address = bkpt_create_sals_from_address;
15311   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15312   ops->decode_linespec = bkpt_decode_linespec;
15313
15314   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15315   ops = &bkpt_breakpoint_ops;
15316   *ops = bkpt_base_breakpoint_ops;
15317   ops->re_set = bkpt_re_set;
15318   ops->resources_needed = bkpt_resources_needed;
15319   ops->print_it = bkpt_print_it;
15320   ops->print_mention = bkpt_print_mention;
15321   ops->print_recreate = bkpt_print_recreate;
15322
15323   /* Ranged breakpoints.  */
15324   ops = &ranged_breakpoint_ops;
15325   *ops = bkpt_breakpoint_ops;
15326   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15327   ops->resources_needed = resources_needed_ranged_breakpoint;
15328   ops->print_it = print_it_ranged_breakpoint;
15329   ops->print_one = print_one_ranged_breakpoint;
15330   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15331   ops->print_mention = print_mention_ranged_breakpoint;
15332   ops->print_recreate = print_recreate_ranged_breakpoint;
15333
15334   /* Internal breakpoints.  */
15335   ops = &internal_breakpoint_ops;
15336   *ops = bkpt_base_breakpoint_ops;
15337   ops->re_set = internal_bkpt_re_set;
15338   ops->check_status = internal_bkpt_check_status;
15339   ops->print_it = internal_bkpt_print_it;
15340   ops->print_mention = internal_bkpt_print_mention;
15341
15342   /* Momentary breakpoints.  */
15343   ops = &momentary_breakpoint_ops;
15344   *ops = bkpt_base_breakpoint_ops;
15345   ops->re_set = momentary_bkpt_re_set;
15346   ops->check_status = momentary_bkpt_check_status;
15347   ops->print_it = momentary_bkpt_print_it;
15348   ops->print_mention = momentary_bkpt_print_mention;
15349
15350   /* Probe breakpoints.  */
15351   ops = &bkpt_probe_breakpoint_ops;
15352   *ops = bkpt_breakpoint_ops;
15353   ops->insert_location = bkpt_probe_insert_location;
15354   ops->remove_location = bkpt_probe_remove_location;
15355   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15356   ops->decode_linespec = bkpt_probe_decode_linespec;
15357
15358   /* GNU v3 exception catchpoints.  */
15359   ops = &gnu_v3_exception_catchpoint_ops;
15360   *ops = bkpt_breakpoint_ops;
15361   ops->print_it = print_it_exception_catchpoint;
15362   ops->print_one = print_one_exception_catchpoint;
15363   ops->print_mention = print_mention_exception_catchpoint;
15364   ops->print_recreate = print_recreate_exception_catchpoint;
15365
15366   /* Watchpoints.  */
15367   ops = &watchpoint_breakpoint_ops;
15368   *ops = base_breakpoint_ops;
15369   ops->dtor = dtor_watchpoint;
15370   ops->re_set = re_set_watchpoint;
15371   ops->insert_location = insert_watchpoint;
15372   ops->remove_location = remove_watchpoint;
15373   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15374   ops->check_status = check_status_watchpoint;
15375   ops->resources_needed = resources_needed_watchpoint;
15376   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15377   ops->print_it = print_it_watchpoint;
15378   ops->print_mention = print_mention_watchpoint;
15379   ops->print_recreate = print_recreate_watchpoint;
15380
15381   /* Masked watchpoints.  */
15382   ops = &masked_watchpoint_breakpoint_ops;
15383   *ops = watchpoint_breakpoint_ops;
15384   ops->insert_location = insert_masked_watchpoint;
15385   ops->remove_location = remove_masked_watchpoint;
15386   ops->resources_needed = resources_needed_masked_watchpoint;
15387   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15388   ops->print_it = print_it_masked_watchpoint;
15389   ops->print_one_detail = print_one_detail_masked_watchpoint;
15390   ops->print_mention = print_mention_masked_watchpoint;
15391   ops->print_recreate = print_recreate_masked_watchpoint;
15392
15393   /* Tracepoints.  */
15394   ops = &tracepoint_breakpoint_ops;
15395   *ops = base_breakpoint_ops;
15396   ops->re_set = tracepoint_re_set;
15397   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15398   ops->print_one_detail = tracepoint_print_one_detail;
15399   ops->print_mention = tracepoint_print_mention;
15400   ops->print_recreate = tracepoint_print_recreate;
15401   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15402   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15403   ops->decode_linespec = tracepoint_decode_linespec;
15404
15405   /* Probe tracepoints.  */
15406   ops = &tracepoint_probe_breakpoint_ops;
15407   *ops = tracepoint_breakpoint_ops;
15408   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15409   ops->decode_linespec = tracepoint_probe_decode_linespec;
15410
15411   /* Static tracepoints with marker (`-m').  */
15412   ops = &strace_marker_breakpoint_ops;
15413   *ops = tracepoint_breakpoint_ops;
15414   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15415   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15416   ops->decode_linespec = strace_marker_decode_linespec;
15417
15418   /* Fork catchpoints.  */
15419   ops = &catch_fork_breakpoint_ops;
15420   *ops = base_breakpoint_ops;
15421   ops->insert_location = insert_catch_fork;
15422   ops->remove_location = remove_catch_fork;
15423   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15424   ops->print_it = print_it_catch_fork;
15425   ops->print_one = print_one_catch_fork;
15426   ops->print_mention = print_mention_catch_fork;
15427   ops->print_recreate = print_recreate_catch_fork;
15428
15429   /* Vfork catchpoints.  */
15430   ops = &catch_vfork_breakpoint_ops;
15431   *ops = base_breakpoint_ops;
15432   ops->insert_location = insert_catch_vfork;
15433   ops->remove_location = remove_catch_vfork;
15434   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15435   ops->print_it = print_it_catch_vfork;
15436   ops->print_one = print_one_catch_vfork;
15437   ops->print_mention = print_mention_catch_vfork;
15438   ops->print_recreate = print_recreate_catch_vfork;
15439
15440   /* Exec catchpoints.  */
15441   ops = &catch_exec_breakpoint_ops;
15442   *ops = base_breakpoint_ops;
15443   ops->dtor = dtor_catch_exec;
15444   ops->insert_location = insert_catch_exec;
15445   ops->remove_location = remove_catch_exec;
15446   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15447   ops->print_it = print_it_catch_exec;
15448   ops->print_one = print_one_catch_exec;
15449   ops->print_mention = print_mention_catch_exec;
15450   ops->print_recreate = print_recreate_catch_exec;
15451
15452   /* Syscall catchpoints.  */
15453   ops = &catch_syscall_breakpoint_ops;
15454   *ops = base_breakpoint_ops;
15455   ops->dtor = dtor_catch_syscall;
15456   ops->insert_location = insert_catch_syscall;
15457   ops->remove_location = remove_catch_syscall;
15458   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15459   ops->print_it = print_it_catch_syscall;
15460   ops->print_one = print_one_catch_syscall;
15461   ops->print_mention = print_mention_catch_syscall;
15462   ops->print_recreate = print_recreate_catch_syscall;
15463
15464   /* Solib-related catchpoints.  */
15465   ops = &catch_solib_breakpoint_ops;
15466   *ops = base_breakpoint_ops;
15467   ops->dtor = dtor_catch_solib;
15468   ops->insert_location = insert_catch_solib;
15469   ops->remove_location = remove_catch_solib;
15470   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15471   ops->check_status = check_status_catch_solib;
15472   ops->print_it = print_it_catch_solib;
15473   ops->print_one = print_one_catch_solib;
15474   ops->print_mention = print_mention_catch_solib;
15475   ops->print_recreate = print_recreate_catch_solib;
15476
15477   ops = &dprintf_breakpoint_ops;
15478   *ops = bkpt_base_breakpoint_ops;
15479   ops->re_set = bkpt_re_set;
15480   ops->resources_needed = bkpt_resources_needed;
15481   ops->print_it = bkpt_print_it;
15482   ops->print_mention = bkpt_print_mention;
15483   ops->print_recreate = bkpt_print_recreate;
15484 }
15485
15486 void
15487 _initialize_breakpoint (void)
15488 {
15489   struct cmd_list_element *c;
15490
15491   initialize_breakpoint_ops ();
15492
15493   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15494   observer_attach_inferior_exit (clear_syscall_counts);
15495   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15496
15497   breakpoint_objfile_key
15498     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15499
15500   catch_syscall_inferior_data
15501     = register_inferior_data_with_cleanup (catch_syscall_inferior_data_cleanup);
15502
15503   breakpoint_chain = 0;
15504   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15505      before a breakpoint is set.  */
15506   breakpoint_count = 0;
15507
15508   tracepoint_count = 0;
15509
15510   add_com ("ignore", class_breakpoint, ignore_command, _("\
15511 Set ignore-count of breakpoint number N to COUNT.\n\
15512 Usage is `ignore N COUNT'."));
15513   if (xdb_commands)
15514     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15515
15516   add_com ("commands", class_breakpoint, commands_command, _("\
15517 Set commands to be executed when a breakpoint is hit.\n\
15518 Give breakpoint number as argument after \"commands\".\n\
15519 With no argument, the targeted breakpoint is the last one set.\n\
15520 The commands themselves follow starting on the next line.\n\
15521 Type a line containing \"end\" to indicate the end of them.\n\
15522 Give \"silent\" as the first line to make the breakpoint silent;\n\
15523 then no output is printed when it is hit, except what the commands print."));
15524
15525   add_com ("condition", class_breakpoint, condition_command, _("\
15526 Specify breakpoint number N to break only if COND is true.\n\
15527 Usage is `condition N COND', where N is an integer and COND is an\n\
15528 expression to be evaluated whenever breakpoint N is reached."));
15529
15530   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15531 Set a temporary breakpoint.\n\
15532 Like \"break\" except the breakpoint is only temporary,\n\
15533 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15534 by using \"enable delete\" on the breakpoint number.\n\
15535 \n"
15536 BREAK_ARGS_HELP ("tbreak")));
15537   set_cmd_completer (c, location_completer);
15538
15539   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15540 Set a hardware assisted breakpoint.\n\
15541 Like \"break\" except the breakpoint requires hardware support,\n\
15542 some target hardware may not have this support.\n\
15543 \n"
15544 BREAK_ARGS_HELP ("hbreak")));
15545   set_cmd_completer (c, location_completer);
15546
15547   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15548 Set a temporary hardware assisted breakpoint.\n\
15549 Like \"hbreak\" except the breakpoint is only temporary,\n\
15550 so it will be deleted when hit.\n\
15551 \n"
15552 BREAK_ARGS_HELP ("thbreak")));
15553   set_cmd_completer (c, location_completer);
15554
15555   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15556 Enable some breakpoints.\n\
15557 Give breakpoint numbers (separated by spaces) as arguments.\n\
15558 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15559 This is used to cancel the effect of the \"disable\" command.\n\
15560 With a subcommand you can enable temporarily."),
15561                   &enablelist, "enable ", 1, &cmdlist);
15562   if (xdb_commands)
15563     add_com ("ab", class_breakpoint, enable_command, _("\
15564 Enable some breakpoints.\n\
15565 Give breakpoint numbers (separated by spaces) as arguments.\n\
15566 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15567 This is used to cancel the effect of the \"disable\" command.\n\
15568 With a subcommand you can enable temporarily."));
15569
15570   add_com_alias ("en", "enable", class_breakpoint, 1);
15571
15572   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15573 Enable some breakpoints.\n\
15574 Give breakpoint numbers (separated by spaces) as arguments.\n\
15575 This is used to cancel the effect of the \"disable\" command.\n\
15576 May be abbreviated to simply \"enable\".\n"),
15577                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15578
15579   add_cmd ("once", no_class, enable_once_command, _("\
15580 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15581 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15582            &enablebreaklist);
15583
15584   add_cmd ("delete", no_class, enable_delete_command, _("\
15585 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15586 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15587            &enablebreaklist);
15588
15589   add_cmd ("count", no_class, enable_count_command, _("\
15590 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15591 If a breakpoint is hit while enabled in this fashion,\n\
15592 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15593            &enablebreaklist);
15594
15595   add_cmd ("delete", no_class, enable_delete_command, _("\
15596 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15597 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15598            &enablelist);
15599
15600   add_cmd ("once", no_class, enable_once_command, _("\
15601 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15602 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15603            &enablelist);
15604
15605   add_cmd ("count", no_class, enable_count_command, _("\
15606 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15607 If a breakpoint is hit while enabled in this fashion,\n\
15608 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15609            &enablelist);
15610
15611   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15612 Disable some breakpoints.\n\
15613 Arguments are breakpoint numbers with spaces in between.\n\
15614 To disable all breakpoints, give no argument.\n\
15615 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15616                   &disablelist, "disable ", 1, &cmdlist);
15617   add_com_alias ("dis", "disable", class_breakpoint, 1);
15618   add_com_alias ("disa", "disable", class_breakpoint, 1);
15619   if (xdb_commands)
15620     add_com ("sb", class_breakpoint, disable_command, _("\
15621 Disable some breakpoints.\n\
15622 Arguments are breakpoint numbers with spaces in between.\n\
15623 To disable all breakpoints, give no argument.\n\
15624 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
15625
15626   add_cmd ("breakpoints", class_alias, disable_command, _("\
15627 Disable some breakpoints.\n\
15628 Arguments are breakpoint numbers with spaces in between.\n\
15629 To disable all breakpoints, give no argument.\n\
15630 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15631 This command may be abbreviated \"disable\"."),
15632            &disablelist);
15633
15634   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15635 Delete some breakpoints or auto-display expressions.\n\
15636 Arguments are breakpoint numbers with spaces in between.\n\
15637 To delete all breakpoints, give no argument.\n\
15638 \n\
15639 Also a prefix command for deletion of other GDB objects.\n\
15640 The \"unset\" command is also an alias for \"delete\"."),
15641                   &deletelist, "delete ", 1, &cmdlist);
15642   add_com_alias ("d", "delete", class_breakpoint, 1);
15643   add_com_alias ("del", "delete", class_breakpoint, 1);
15644   if (xdb_commands)
15645     add_com ("db", class_breakpoint, delete_command, _("\
15646 Delete some breakpoints.\n\
15647 Arguments are breakpoint numbers with spaces in between.\n\
15648 To delete all breakpoints, give no argument.\n"));
15649
15650   add_cmd ("breakpoints", class_alias, delete_command, _("\
15651 Delete some breakpoints or auto-display expressions.\n\
15652 Arguments are breakpoint numbers with spaces in between.\n\
15653 To delete all breakpoints, give no argument.\n\
15654 This command may be abbreviated \"delete\"."),
15655            &deletelist);
15656
15657   add_com ("clear", class_breakpoint, clear_command, _("\
15658 Clear breakpoint at specified line or function.\n\
15659 Argument may be line number, function name, or \"*\" and an address.\n\
15660 If line number is specified, all breakpoints in that line are cleared.\n\
15661 If function is specified, breakpoints at beginning of function are cleared.\n\
15662 If an address is specified, breakpoints at that address are cleared.\n\
15663 \n\
15664 With no argument, clears all breakpoints in the line that the selected frame\n\
15665 is executing in.\n\
15666 \n\
15667 See also the \"delete\" command which clears breakpoints by number."));
15668   add_com_alias ("cl", "clear", class_breakpoint, 1);
15669
15670   c = add_com ("break", class_breakpoint, break_command, _("\
15671 Set breakpoint at specified line or function.\n"
15672 BREAK_ARGS_HELP ("break")));
15673   set_cmd_completer (c, location_completer);
15674
15675   add_com_alias ("b", "break", class_run, 1);
15676   add_com_alias ("br", "break", class_run, 1);
15677   add_com_alias ("bre", "break", class_run, 1);
15678   add_com_alias ("brea", "break", class_run, 1);
15679
15680   if (xdb_commands)
15681    add_com_alias ("ba", "break", class_breakpoint, 1);
15682
15683   if (dbx_commands)
15684     {
15685       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15686 Break in function/address or break at a line in the current file."),
15687                              &stoplist, "stop ", 1, &cmdlist);
15688       add_cmd ("in", class_breakpoint, stopin_command,
15689                _("Break in function or address."), &stoplist);
15690       add_cmd ("at", class_breakpoint, stopat_command,
15691                _("Break at a line in the current file."), &stoplist);
15692       add_com ("status", class_info, breakpoints_info, _("\
15693 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15694 The \"Type\" column indicates one of:\n\
15695 \tbreakpoint     - normal breakpoint\n\
15696 \twatchpoint     - watchpoint\n\
15697 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15698 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15699 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15700 address and file/line number respectively.\n\
15701 \n\
15702 Convenience variable \"$_\" and default examine address for \"x\"\n\
15703 are set to the address of the last breakpoint listed unless the command\n\
15704 is prefixed with \"server \".\n\n\
15705 Convenience variable \"$bpnum\" contains the number of the last\n\
15706 breakpoint set."));
15707     }
15708
15709   add_info ("breakpoints", breakpoints_info, _("\
15710 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15711 The \"Type\" column indicates one of:\n\
15712 \tbreakpoint     - normal breakpoint\n\
15713 \twatchpoint     - watchpoint\n\
15714 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15715 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15716 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15717 address and file/line number respectively.\n\
15718 \n\
15719 Convenience variable \"$_\" and default examine address for \"x\"\n\
15720 are set to the address of the last breakpoint listed unless the command\n\
15721 is prefixed with \"server \".\n\n\
15722 Convenience variable \"$bpnum\" contains the number of the last\n\
15723 breakpoint set."));
15724
15725   add_info_alias ("b", "breakpoints", 1);
15726
15727   if (xdb_commands)
15728     add_com ("lb", class_breakpoint, breakpoints_info, _("\
15729 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15730 The \"Type\" column indicates one of:\n\
15731 \tbreakpoint     - normal breakpoint\n\
15732 \twatchpoint     - watchpoint\n\
15733 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15734 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15735 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15736 address and file/line number respectively.\n\
15737 \n\
15738 Convenience variable \"$_\" and default examine address for \"x\"\n\
15739 are set to the address of the last breakpoint listed unless the command\n\
15740 is prefixed with \"server \".\n\n\
15741 Convenience variable \"$bpnum\" contains the number of the last\n\
15742 breakpoint set."));
15743
15744   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15745 Status of all breakpoints, or breakpoint number NUMBER.\n\
15746 The \"Type\" column indicates one of:\n\
15747 \tbreakpoint     - normal breakpoint\n\
15748 \twatchpoint     - watchpoint\n\
15749 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15750 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15751 \tuntil          - internal breakpoint used by the \"until\" command\n\
15752 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15753 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15754 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15755 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15756 address and file/line number respectively.\n\
15757 \n\
15758 Convenience variable \"$_\" and default examine address for \"x\"\n\
15759 are set to the address of the last breakpoint listed unless the command\n\
15760 is prefixed with \"server \".\n\n\
15761 Convenience variable \"$bpnum\" contains the number of the last\n\
15762 breakpoint set."),
15763            &maintenanceinfolist);
15764
15765   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15766 Set catchpoints to catch events."),
15767                   &catch_cmdlist, "catch ",
15768                   0/*allow-unknown*/, &cmdlist);
15769
15770   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15771 Set temporary catchpoints to catch events."),
15772                   &tcatch_cmdlist, "tcatch ",
15773                   0/*allow-unknown*/, &cmdlist);
15774
15775   /* Add catch and tcatch sub-commands.  */
15776   add_catch_command ("catch", _("\
15777 Catch an exception, when caught."),
15778                      catch_catch_command,
15779                      NULL,
15780                      CATCH_PERMANENT,
15781                      CATCH_TEMPORARY);
15782   add_catch_command ("throw", _("\
15783 Catch an exception, when thrown."),
15784                      catch_throw_command,
15785                      NULL,
15786                      CATCH_PERMANENT,
15787                      CATCH_TEMPORARY);
15788   add_catch_command ("fork", _("Catch calls to fork."),
15789                      catch_fork_command_1,
15790                      NULL,
15791                      (void *) (uintptr_t) catch_fork_permanent,
15792                      (void *) (uintptr_t) catch_fork_temporary);
15793   add_catch_command ("vfork", _("Catch calls to vfork."),
15794                      catch_fork_command_1,
15795                      NULL,
15796                      (void *) (uintptr_t) catch_vfork_permanent,
15797                      (void *) (uintptr_t) catch_vfork_temporary);
15798   add_catch_command ("exec", _("Catch calls to exec."),
15799                      catch_exec_command_1,
15800                      NULL,
15801                      CATCH_PERMANENT,
15802                      CATCH_TEMPORARY);
15803   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15804 Usage: catch load [REGEX]\n\
15805 If REGEX is given, only stop for libraries matching the regular expression."),
15806                      catch_load_command_1,
15807                      NULL,
15808                      CATCH_PERMANENT,
15809                      CATCH_TEMPORARY);
15810   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15811 Usage: catch unload [REGEX]\n\
15812 If REGEX is given, only stop for libraries matching the regular expression."),
15813                      catch_unload_command_1,
15814                      NULL,
15815                      CATCH_PERMANENT,
15816                      CATCH_TEMPORARY);
15817   add_catch_command ("syscall", _("\
15818 Catch system calls by their names and/or numbers.\n\
15819 Arguments say which system calls to catch.  If no arguments\n\
15820 are given, every system call will be caught.\n\
15821 Arguments, if given, should be one or more system call names\n\
15822 (if your system supports that), or system call numbers."),
15823                      catch_syscall_command_1,
15824                      catch_syscall_completer,
15825                      CATCH_PERMANENT,
15826                      CATCH_TEMPORARY);
15827
15828   c = add_com ("watch", class_breakpoint, watch_command, _("\
15829 Set a watchpoint for an expression.\n\
15830 Usage: watch [-l|-location] EXPRESSION\n\
15831 A watchpoint stops execution of your program whenever the value of\n\
15832 an expression changes.\n\
15833 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15834 the memory to which it refers."));
15835   set_cmd_completer (c, expression_completer);
15836
15837   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15838 Set a read watchpoint for an expression.\n\
15839 Usage: rwatch [-l|-location] EXPRESSION\n\
15840 A watchpoint stops execution of your program whenever the value of\n\
15841 an expression is read.\n\
15842 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15843 the memory to which it refers."));
15844   set_cmd_completer (c, expression_completer);
15845
15846   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15847 Set a watchpoint for an expression.\n\
15848 Usage: awatch [-l|-location] EXPRESSION\n\
15849 A watchpoint stops execution of your program whenever the value of\n\
15850 an expression is either read or written.\n\
15851 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15852 the memory to which it refers."));
15853   set_cmd_completer (c, expression_completer);
15854
15855   add_info ("watchpoints", watchpoints_info, _("\
15856 Status of specified watchpoints (all watchpoints if no argument)."));
15857
15858   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15859      respond to changes - contrary to the description.  */
15860   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15861                             &can_use_hw_watchpoints, _("\
15862 Set debugger's willingness to use watchpoint hardware."), _("\
15863 Show debugger's willingness to use watchpoint hardware."), _("\
15864 If zero, gdb will not use hardware for new watchpoints, even if\n\
15865 such is available.  (However, any hardware watchpoints that were\n\
15866 created before setting this to nonzero, will continue to use watchpoint\n\
15867 hardware.)"),
15868                             NULL,
15869                             show_can_use_hw_watchpoints,
15870                             &setlist, &showlist);
15871
15872   can_use_hw_watchpoints = 1;
15873
15874   /* Tracepoint manipulation commands.  */
15875
15876   c = add_com ("trace", class_breakpoint, trace_command, _("\
15877 Set a tracepoint at specified line or function.\n\
15878 \n"
15879 BREAK_ARGS_HELP ("trace") "\n\
15880 Do \"help tracepoints\" for info on other tracepoint commands."));
15881   set_cmd_completer (c, location_completer);
15882
15883   add_com_alias ("tp", "trace", class_alias, 0);
15884   add_com_alias ("tr", "trace", class_alias, 1);
15885   add_com_alias ("tra", "trace", class_alias, 1);
15886   add_com_alias ("trac", "trace", class_alias, 1);
15887
15888   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15889 Set a fast tracepoint at specified line or function.\n\
15890 \n"
15891 BREAK_ARGS_HELP ("ftrace") "\n\
15892 Do \"help tracepoints\" for info on other tracepoint commands."));
15893   set_cmd_completer (c, location_completer);
15894
15895   c = add_com ("strace", class_breakpoint, strace_command, _("\
15896 Set a static tracepoint at specified line, function or marker.\n\
15897 \n\
15898 strace [LOCATION] [if CONDITION]\n\
15899 LOCATION may be a line number, function name, \"*\" and an address,\n\
15900 or -m MARKER_ID.\n\
15901 If a line number is specified, probe the marker at start of code\n\
15902 for that line.  If a function is specified, probe the marker at start\n\
15903 of code for that function.  If an address is specified, probe the marker\n\
15904 at that exact address.  If a marker id is specified, probe the marker\n\
15905 with that name.  With no LOCATION, uses current execution address of\n\
15906 the selected stack frame.\n\
15907 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15908 This collects arbitrary user data passed in the probe point call to the\n\
15909 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15910 by printing the $_sdata variable like any other convenience variable.\n\
15911 \n\
15912 CONDITION is a boolean expression.\n\
15913 \n\
15914 Multiple tracepoints at one place are permitted, and useful if their\n\
15915 conditions are different.\n\
15916 \n\
15917 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15918 Do \"help tracepoints\" for info on other tracepoint commands."));
15919   set_cmd_completer (c, location_completer);
15920
15921   add_info ("tracepoints", tracepoints_info, _("\
15922 Status of specified tracepoints (all tracepoints if no argument).\n\
15923 Convenience variable \"$tpnum\" contains the number of the\n\
15924 last tracepoint set."));
15925
15926   add_info_alias ("tp", "tracepoints", 1);
15927
15928   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15929 Delete specified tracepoints.\n\
15930 Arguments are tracepoint numbers, separated by spaces.\n\
15931 No argument means delete all tracepoints."),
15932            &deletelist);
15933
15934   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15935 Disable specified tracepoints.\n\
15936 Arguments are tracepoint numbers, separated by spaces.\n\
15937 No argument means disable all tracepoints."),
15938            &disablelist);
15939   deprecate_cmd (c, "disable");
15940
15941   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15942 Enable specified tracepoints.\n\
15943 Arguments are tracepoint numbers, separated by spaces.\n\
15944 No argument means enable all tracepoints."),
15945            &enablelist);
15946   deprecate_cmd (c, "enable");
15947
15948   add_com ("passcount", class_trace, trace_pass_command, _("\
15949 Set the passcount for a tracepoint.\n\
15950 The trace will end when the tracepoint has been passed 'count' times.\n\
15951 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15952 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15953
15954   add_prefix_cmd ("save", class_breakpoint, save_command,
15955                   _("Save breakpoint definitions as a script."),
15956                   &save_cmdlist, "save ",
15957                   0/*allow-unknown*/, &cmdlist);
15958
15959   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15960 Save current breakpoint definitions as a script.\n\
15961 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15962 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15963 session to restore them."),
15964                &save_cmdlist);
15965   set_cmd_completer (c, filename_completer);
15966
15967   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15968 Save current tracepoint definitions as a script.\n\
15969 Use the 'source' command in another debug session to restore them."),
15970                &save_cmdlist);
15971   set_cmd_completer (c, filename_completer);
15972
15973   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15974   deprecate_cmd (c, "save tracepoints");
15975
15976   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15977 Breakpoint specific settings\n\
15978 Configure various breakpoint-specific variables such as\n\
15979 pending breakpoint behavior"),
15980                   &breakpoint_set_cmdlist, "set breakpoint ",
15981                   0/*allow-unknown*/, &setlist);
15982   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15983 Breakpoint specific settings\n\
15984 Configure various breakpoint-specific variables such as\n\
15985 pending breakpoint behavior"),
15986                   &breakpoint_show_cmdlist, "show breakpoint ",
15987                   0/*allow-unknown*/, &showlist);
15988
15989   add_setshow_auto_boolean_cmd ("pending", no_class,
15990                                 &pending_break_support, _("\
15991 Set debugger's behavior regarding pending breakpoints."), _("\
15992 Show debugger's behavior regarding pending breakpoints."), _("\
15993 If on, an unrecognized breakpoint location will cause gdb to create a\n\
15994 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
15995 an error.  If auto, an unrecognized breakpoint location results in a\n\
15996 user-query to see if a pending breakpoint should be created."),
15997                                 NULL,
15998                                 show_pending_break_support,
15999                                 &breakpoint_set_cmdlist,
16000                                 &breakpoint_show_cmdlist);
16001
16002   pending_break_support = AUTO_BOOLEAN_AUTO;
16003
16004   add_setshow_boolean_cmd ("auto-hw", no_class,
16005                            &automatic_hardware_breakpoints, _("\
16006 Set automatic usage of hardware breakpoints."), _("\
16007 Show automatic usage of hardware breakpoints."), _("\
16008 If set, the debugger will automatically use hardware breakpoints for\n\
16009 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16010 a warning will be emitted for such breakpoints."),
16011                            NULL,
16012                            show_automatic_hardware_breakpoints,
16013                            &breakpoint_set_cmdlist,
16014                            &breakpoint_show_cmdlist);
16015
16016   add_setshow_enum_cmd ("always-inserted", class_support,
16017                         always_inserted_enums, &always_inserted_mode, _("\
16018 Set mode for inserting breakpoints."), _("\
16019 Show mode for inserting breakpoints."), _("\
16020 When this mode is off, breakpoints are inserted in inferior when it is\n\
16021 resumed, and removed when execution stops.  When this mode is on,\n\
16022 breakpoints are inserted immediately and removed only when the user\n\
16023 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16024 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16025 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16026 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16027 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16028                            NULL,
16029                            &show_always_inserted_mode,
16030                            &breakpoint_set_cmdlist,
16031                            &breakpoint_show_cmdlist);
16032
16033   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16034                         condition_evaluation_enums,
16035                         &condition_evaluation_mode_1, _("\
16036 Set mode of breakpoint condition evaluation."), _("\
16037 Show mode of breakpoint condition evaluation."), _("\
16038 When this is set to \"host\", breakpoint conditions will be\n\
16039 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16040 breakpoint conditions will be downloaded to the target (if the target\n\
16041 supports such feature) and conditions will be evaluated on the target's side.\n\
16042 If this is set to \"auto\" (default), this will be automatically set to\n\
16043 \"target\" if it supports condition evaluation, otherwise it will\n\
16044 be set to \"gdb\""),
16045                            &set_condition_evaluation_mode,
16046                            &show_condition_evaluation_mode,
16047                            &breakpoint_set_cmdlist,
16048                            &breakpoint_show_cmdlist);
16049
16050   add_com ("break-range", class_breakpoint, break_range_command, _("\
16051 Set a breakpoint for an address range.\n\
16052 break-range START-LOCATION, END-LOCATION\n\
16053 where START-LOCATION and END-LOCATION can be one of the following:\n\
16054   LINENUM, for that line in the current file,\n\
16055   FILE:LINENUM, for that line in that file,\n\
16056   +OFFSET, for that number of lines after the current line\n\
16057            or the start of the range\n\
16058   FUNCTION, for the first line in that function,\n\
16059   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16060   *ADDRESS, for the instruction at that address.\n\
16061 \n\
16062 The breakpoint will stop execution of the inferior whenever it executes\n\
16063 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16064 range (including START-LOCATION and END-LOCATION)."));
16065
16066   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16067 Set a dynamic printf at specified line or function.\n\
16068 dprintf location,format string,arg1,arg2,...\n\
16069 location may be a line number, function name, or \"*\" and an address.\n\
16070 If a line number is specified, break at start of code for that line.\n\
16071 If a function is specified, break at start of code for that function.\n\
16072 "));
16073   set_cmd_completer (c, location_completer);
16074
16075   add_setshow_enum_cmd ("dprintf-style", class_support,
16076                         dprintf_style_enums, &dprintf_style, _("\
16077 Set the style of usage for dynamic printf."), _("\
16078 Show the style of usage for dynamic printf."), _("\
16079 This setting chooses how GDB will do a dynamic printf.\n\
16080 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16081 console, as with the \"printf\" command.\n\
16082 If the value is \"call\", the print is done by calling a function in your\n\
16083 program; by default printf(), but you can choose a different function or\n\
16084 output stream by setting dprintf-function and dprintf-channel."),
16085                         update_dprintf_commands, NULL,
16086                         &setlist, &showlist);
16087
16088   dprintf_function = xstrdup ("printf");
16089   add_setshow_string_cmd ("dprintf-function", class_support,
16090                           &dprintf_function, _("\
16091 Set the function to use for dynamic printf"), _("\
16092 Show the function to use for dynamic printf"), NULL,
16093                           update_dprintf_commands, NULL,
16094                           &setlist, &showlist);
16095
16096   dprintf_channel = xstrdup ("");
16097   add_setshow_string_cmd ("dprintf-channel", class_support,
16098                           &dprintf_channel, _("\
16099 Set the channel to use for dynamic printf"), _("\
16100 Show the channel to use for dynamic printf"), NULL,
16101                           update_dprintf_commands, NULL,
16102                           &setlist, &showlist);
16103
16104   automatic_hardware_breakpoints = 1;
16105
16106   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16107 }