* ada-lang.c (ada_make_symbol_completion_list): Return a VEC.
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2012 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "gdbthread.h"
36 #include "target.h"
37 #include "language.h"
38 #include "gdb_string.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "gdb_assert.h"
51 #include "block.h"
52 #include "solib.h"
53 #include "solist.h"
54 #include "observer.h"
55 #include "exceptions.h"
56 #include "memattr.h"
57 #include "ada-lang.h"
58 #include "top.h"
59 #include "valprint.h"
60 #include "jit.h"
61 #include "xml-syscall.h"
62 #include "parser-defs.h"
63 #include "gdb_regex.h"
64 #include "probe.h"
65 #include "cli/cli-utils.h"
66 #include "continuations.h"
67 #include "stack.h"
68 #include "skip.h"
69 #include "gdb_regex.h"
70 #include "ax-gdb.h"
71
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       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
8806
8807       /* Force almost all breakpoints to be in terms of the
8808          current_source_symtab (which is decode_line_1's default).
8809          This should produce the results we want almost all of the
8810          time while leaving default_breakpoint_* alone.
8811
8812          ObjC: However, don't match an Objective-C method name which
8813          may have a '+' or '-' succeeded by a '['.  */
8814       if (last_displayed_sal_is_valid ()
8815           && (!cursal.symtab
8816               || ((strchr ("+-", (*address)[0]) != NULL)
8817                   && ((*address)[1] != '['))))
8818         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8819                           get_last_displayed_symtab (),
8820                           get_last_displayed_line (),
8821                           canonical, NULL, NULL);
8822       else
8823         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
8824                           cursal.symtab, cursal.line, canonical, NULL, NULL);
8825     }
8826 }
8827
8828
8829 /* Convert each SAL into a real PC.  Verify that the PC can be
8830    inserted as a breakpoint.  If it can't throw an error.  */
8831
8832 static void
8833 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
8834 {    
8835   int i;
8836
8837   for (i = 0; i < sals->nelts; i++)
8838     resolve_sal_pc (&sals->sals[i]);
8839 }
8840
8841 /* Fast tracepoints may have restrictions on valid locations.  For
8842    instance, a fast tracepoint using a jump instead of a trap will
8843    likely have to overwrite more bytes than a trap would, and so can
8844    only be placed where the instruction is longer than the jump, or a
8845    multi-instruction sequence does not have a jump into the middle of
8846    it, etc.  */
8847
8848 static void
8849 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
8850                             struct symtabs_and_lines *sals)
8851 {
8852   int i, rslt;
8853   struct symtab_and_line *sal;
8854   char *msg;
8855   struct cleanup *old_chain;
8856
8857   for (i = 0; i < sals->nelts; i++)
8858     {
8859       struct gdbarch *sarch;
8860
8861       sal = &sals->sals[i];
8862
8863       sarch = get_sal_arch (*sal);
8864       /* We fall back to GDBARCH if there is no architecture
8865          associated with SAL.  */
8866       if (sarch == NULL)
8867         sarch = gdbarch;
8868       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
8869                                                NULL, &msg);
8870       old_chain = make_cleanup (xfree, msg);
8871
8872       if (!rslt)
8873         error (_("May not have a fast tracepoint at 0x%s%s"),
8874                paddress (sarch, sal->pc), (msg ? msg : ""));
8875
8876       do_cleanups (old_chain);
8877     }
8878 }
8879
8880 /* Given TOK, a string specification of condition and thread, as
8881    accepted by the 'break' command, extract the condition
8882    string and thread number and set *COND_STRING and *THREAD.
8883    PC identifies the context at which the condition should be parsed.
8884    If no condition is found, *COND_STRING is set to NULL.
8885    If no thread is found, *THREAD is set to -1.  */
8886
8887 static void
8888 find_condition_and_thread (char *tok, CORE_ADDR pc,
8889                            char **cond_string, int *thread, int *task,
8890                            char **rest)
8891 {
8892   *cond_string = NULL;
8893   *thread = -1;
8894   while (tok && *tok)
8895     {
8896       char *end_tok;
8897       int toklen;
8898       char *cond_start = NULL;
8899       char *cond_end = NULL;
8900
8901       tok = skip_spaces (tok);
8902
8903       if ((*tok == '"' || *tok == ',') && rest)
8904         {
8905           *rest = savestring (tok, strlen (tok));
8906           return;
8907         }
8908
8909       end_tok = skip_to_space (tok);
8910
8911       toklen = end_tok - tok;
8912
8913       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
8914         {
8915           struct expression *expr;
8916
8917           tok = cond_start = end_tok + 1;
8918           expr = parse_exp_1 (&tok, block_for_pc (pc), 0);
8919           xfree (expr);
8920           cond_end = tok;
8921           *cond_string = savestring (cond_start, cond_end - cond_start);
8922         }
8923       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
8924         {
8925           char *tmptok;
8926
8927           tok = end_tok + 1;
8928           tmptok = tok;
8929           *thread = strtol (tok, &tok, 0);
8930           if (tok == tmptok)
8931             error (_("Junk after thread keyword."));
8932           if (!valid_thread_id (*thread))
8933             error (_("Unknown thread %d."), *thread);
8934         }
8935       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
8936         {
8937           char *tmptok;
8938
8939           tok = end_tok + 1;
8940           tmptok = tok;
8941           *task = strtol (tok, &tok, 0);
8942           if (tok == tmptok)
8943             error (_("Junk after task keyword."));
8944           if (!valid_task_id (*task))
8945             error (_("Unknown task %d."), *task);
8946         }
8947       else if (rest)
8948         {
8949           *rest = savestring (tok, strlen (tok));
8950           return;
8951         }
8952       else
8953         error (_("Junk at end of arguments."));
8954     }
8955 }
8956
8957 /* Decode a static tracepoint marker spec.  */
8958
8959 static struct symtabs_and_lines
8960 decode_static_tracepoint_spec (char **arg_p)
8961 {
8962   VEC(static_tracepoint_marker_p) *markers = NULL;
8963   struct symtabs_and_lines sals;
8964   struct cleanup *old_chain;
8965   char *p = &(*arg_p)[3];
8966   char *endp;
8967   char *marker_str;
8968   int i;
8969
8970   p = skip_spaces (p);
8971
8972   endp = skip_to_space (p);
8973
8974   marker_str = savestring (p, endp - p);
8975   old_chain = make_cleanup (xfree, marker_str);
8976
8977   markers = target_static_tracepoint_markers_by_strid (marker_str);
8978   if (VEC_empty(static_tracepoint_marker_p, markers))
8979     error (_("No known static tracepoint marker named %s"), marker_str);
8980
8981   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
8982   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
8983
8984   for (i = 0; i < sals.nelts; i++)
8985     {
8986       struct static_tracepoint_marker *marker;
8987
8988       marker = VEC_index (static_tracepoint_marker_p, markers, i);
8989
8990       init_sal (&sals.sals[i]);
8991
8992       sals.sals[i] = find_pc_line (marker->address, 0);
8993       sals.sals[i].pc = marker->address;
8994
8995       release_static_tracepoint_marker (marker);
8996     }
8997
8998   do_cleanups (old_chain);
8999
9000   *arg_p = endp;
9001   return sals;
9002 }
9003
9004 /* Set a breakpoint.  This function is shared between CLI and MI
9005    functions for setting a breakpoint.  This function has two major
9006    modes of operations, selected by the PARSE_CONDITION_AND_THREAD
9007    parameter.  If non-zero, the function will parse arg, extracting
9008    breakpoint location, address and thread.  Otherwise, ARG is just
9009    the location of breakpoint, with condition and thread specified by
9010    the COND_STRING and THREAD parameters.  If INTERNAL is non-zero,
9011    the breakpoint number will be allocated from the internal
9012    breakpoint count.  Returns true if any breakpoint was created;
9013    false otherwise.  */
9014
9015 int
9016 create_breakpoint (struct gdbarch *gdbarch,
9017                    char *arg, char *cond_string,
9018                    int thread, char *extra_string,
9019                    int parse_condition_and_thread,
9020                    int tempflag, enum bptype type_wanted,
9021                    int ignore_count,
9022                    enum auto_boolean pending_break_support,
9023                    const struct breakpoint_ops *ops,
9024                    int from_tty, int enabled, int internal,
9025                    unsigned flags)
9026 {
9027   volatile struct gdb_exception e;
9028   char *copy_arg = NULL;
9029   char *addr_start = arg;
9030   struct linespec_result canonical;
9031   struct cleanup *old_chain;
9032   struct cleanup *bkpt_chain = NULL;
9033   int pending = 0;
9034   int task = 0;
9035   int prev_bkpt_count = breakpoint_count;
9036
9037   gdb_assert (ops != NULL);
9038
9039   init_linespec_result (&canonical);
9040
9041   TRY_CATCH (e, RETURN_MASK_ALL)
9042     {
9043       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9044                                      addr_start, &copy_arg);
9045     }
9046
9047   /* If caller is interested in rc value from parse, set value.  */
9048   switch (e.reason)
9049     {
9050     case GDB_NO_ERROR:
9051       if (VEC_empty (linespec_sals, canonical.sals))
9052         return 0;
9053       break;
9054     case RETURN_ERROR:
9055       switch (e.error)
9056         {
9057         case NOT_FOUND_ERROR:
9058
9059           /* If pending breakpoint support is turned off, throw
9060              error.  */
9061
9062           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9063             throw_exception (e);
9064
9065           exception_print (gdb_stderr, e);
9066
9067           /* If pending breakpoint support is auto query and the user
9068              selects no, then simply return the error code.  */
9069           if (pending_break_support == AUTO_BOOLEAN_AUTO
9070               && !nquery (_("Make %s pending on future shared library load? "),
9071                           bptype_string (type_wanted)))
9072             return 0;
9073
9074           /* At this point, either the user was queried about setting
9075              a pending breakpoint and selected yes, or pending
9076              breakpoint behavior is on and thus a pending breakpoint
9077              is defaulted on behalf of the user.  */
9078           {
9079             struct linespec_sals lsal;
9080
9081             copy_arg = xstrdup (addr_start);
9082             lsal.canonical = xstrdup (copy_arg);
9083             lsal.sals.nelts = 1;
9084             lsal.sals.sals = XNEW (struct symtab_and_line);
9085             init_sal (&lsal.sals.sals[0]);
9086             pending = 1;
9087             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9088           }
9089           break;
9090         default:
9091           throw_exception (e);
9092         }
9093       break;
9094     default:
9095       throw_exception (e);
9096     }
9097
9098   /* Create a chain of things that always need to be cleaned up.  */
9099   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9100
9101   /* ----------------------------- SNIP -----------------------------
9102      Anything added to the cleanup chain beyond this point is assumed
9103      to be part of a breakpoint.  If the breakpoint create succeeds
9104      then the memory is not reclaimed.  */
9105   bkpt_chain = make_cleanup (null_cleanup, 0);
9106
9107   /* Resolve all line numbers to PC's and verify that the addresses
9108      are ok for the target.  */
9109   if (!pending)
9110     {
9111       int ix;
9112       struct linespec_sals *iter;
9113
9114       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9115         breakpoint_sals_to_pc (&iter->sals);
9116     }
9117
9118   /* Fast tracepoints may have additional restrictions on location.  */
9119   if (!pending && type_wanted == bp_fast_tracepoint)
9120     {
9121       int ix;
9122       struct linespec_sals *iter;
9123
9124       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9125         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9126     }
9127
9128   /* Verify that condition can be parsed, before setting any
9129      breakpoints.  Allocate a separate condition expression for each
9130      breakpoint.  */
9131   if (!pending)
9132     {
9133       struct linespec_sals *lsal;
9134
9135       lsal = VEC_index (linespec_sals, canonical.sals, 0);
9136
9137       if (parse_condition_and_thread)
9138         {
9139             char *rest;
9140             /* Here we only parse 'arg' to separate condition
9141                from thread number, so parsing in context of first
9142                sal is OK.  When setting the breakpoint we'll 
9143                re-parse it in context of each sal.  */
9144             cond_string = NULL;
9145             thread = -1;
9146             rest = NULL;
9147             find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9148                                        &thread, &task, &rest);
9149             if (cond_string)
9150                 make_cleanup (xfree, cond_string);
9151             if (rest)
9152               make_cleanup (xfree, rest);
9153             if (rest)
9154               extra_string = rest;
9155         }
9156       else
9157         {
9158             /* Create a private copy of condition string.  */
9159             if (cond_string)
9160             {
9161                 cond_string = xstrdup (cond_string);
9162                 make_cleanup (xfree, cond_string);
9163             }
9164             /* Create a private copy of any extra string.  */
9165             if (extra_string)
9166               {
9167                 extra_string = xstrdup (extra_string);
9168                 make_cleanup (xfree, extra_string);
9169               }
9170         }
9171
9172       ops->create_breakpoints_sal (gdbarch, &canonical, lsal,
9173                                    cond_string, extra_string, type_wanted,
9174                                    tempflag ? disp_del : disp_donttouch,
9175                                    thread, task, ignore_count, ops,
9176                                    from_tty, enabled, internal, flags);
9177     }
9178   else
9179     {
9180       struct breakpoint *b;
9181
9182       make_cleanup (xfree, copy_arg);
9183
9184       if (is_tracepoint_type (type_wanted))
9185         {
9186           struct tracepoint *t;
9187
9188           t = XCNEW (struct tracepoint);
9189           b = &t->base;
9190         }
9191       else
9192         b = XNEW (struct breakpoint);
9193
9194       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9195
9196       b->addr_string = copy_arg;
9197       b->cond_string = NULL;
9198       b->extra_string = NULL;
9199       b->ignore_count = ignore_count;
9200       b->disposition = tempflag ? disp_del : disp_donttouch;
9201       b->condition_not_parsed = 1;
9202       b->enable_state = enabled ? bp_enabled : bp_disabled;
9203       if ((type_wanted != bp_breakpoint
9204            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9205         b->pspace = current_program_space;
9206
9207       install_breakpoint (internal, b, 0);
9208     }
9209   
9210   if (VEC_length (linespec_sals, canonical.sals) > 1)
9211     {
9212       warning (_("Multiple breakpoints were set.\nUse the "
9213                  "\"delete\" command to delete unwanted breakpoints."));
9214       prev_breakpoint_count = prev_bkpt_count;
9215     }
9216
9217   /* That's it.  Discard the cleanups for data inserted into the
9218      breakpoint.  */
9219   discard_cleanups (bkpt_chain);
9220   /* But cleanup everything else.  */
9221   do_cleanups (old_chain);
9222
9223   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9224   update_global_location_list (1);
9225
9226   return 1;
9227 }
9228
9229 /* Set a breakpoint.
9230    ARG is a string describing breakpoint address,
9231    condition, and thread.
9232    FLAG specifies if a breakpoint is hardware on,
9233    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9234    and BP_TEMPFLAG.  */
9235
9236 static void
9237 break_command_1 (char *arg, int flag, int from_tty)
9238 {
9239   int tempflag = flag & BP_TEMPFLAG;
9240   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9241                              ? bp_hardware_breakpoint
9242                              : bp_breakpoint);
9243   struct breakpoint_ops *ops;
9244   const char *arg_cp = arg;
9245
9246   /* Matching breakpoints on probes.  */
9247   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9248     ops = &bkpt_probe_breakpoint_ops;
9249   else
9250     ops = &bkpt_breakpoint_ops;
9251
9252   create_breakpoint (get_current_arch (),
9253                      arg,
9254                      NULL, 0, NULL, 1 /* parse arg */,
9255                      tempflag, type_wanted,
9256                      0 /* Ignore count */,
9257                      pending_break_support,
9258                      ops,
9259                      from_tty,
9260                      1 /* enabled */,
9261                      0 /* internal */,
9262                      0);
9263 }
9264
9265 /* Helper function for break_command_1 and disassemble_command.  */
9266
9267 void
9268 resolve_sal_pc (struct symtab_and_line *sal)
9269 {
9270   CORE_ADDR pc;
9271
9272   if (sal->pc == 0 && sal->symtab != NULL)
9273     {
9274       if (!find_line_pc (sal->symtab, sal->line, &pc))
9275         error (_("No line %d in file \"%s\"."),
9276                sal->line, sal->symtab->filename);
9277       sal->pc = pc;
9278
9279       /* If this SAL corresponds to a breakpoint inserted using a line
9280          number, then skip the function prologue if necessary.  */
9281       if (sal->explicit_line)
9282         skip_prologue_sal (sal);
9283     }
9284
9285   if (sal->section == 0 && sal->symtab != NULL)
9286     {
9287       struct blockvector *bv;
9288       struct block *b;
9289       struct symbol *sym;
9290
9291       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
9292       if (bv != NULL)
9293         {
9294           sym = block_linkage_function (b);
9295           if (sym != NULL)
9296             {
9297               fixup_symbol_section (sym, sal->symtab->objfile);
9298               sal->section = SYMBOL_OBJ_SECTION (sym);
9299             }
9300           else
9301             {
9302               /* It really is worthwhile to have the section, so we'll
9303                  just have to look harder. This case can be executed
9304                  if we have line numbers but no functions (as can
9305                  happen in assembly source).  */
9306
9307               struct minimal_symbol *msym;
9308               struct cleanup *old_chain = save_current_space_and_thread ();
9309
9310               switch_to_program_space_and_thread (sal->pspace);
9311
9312               msym = lookup_minimal_symbol_by_pc (sal->pc);
9313               if (msym)
9314                 sal->section = SYMBOL_OBJ_SECTION (msym);
9315
9316               do_cleanups (old_chain);
9317             }
9318         }
9319     }
9320 }
9321
9322 void
9323 break_command (char *arg, int from_tty)
9324 {
9325   break_command_1 (arg, 0, from_tty);
9326 }
9327
9328 void
9329 tbreak_command (char *arg, int from_tty)
9330 {
9331   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9332 }
9333
9334 static void
9335 hbreak_command (char *arg, int from_tty)
9336 {
9337   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9338 }
9339
9340 static void
9341 thbreak_command (char *arg, int from_tty)
9342 {
9343   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9344 }
9345
9346 static void
9347 stop_command (char *arg, int from_tty)
9348 {
9349   printf_filtered (_("Specify the type of breakpoint to set.\n\
9350 Usage: stop in <function | address>\n\
9351        stop at <line>\n"));
9352 }
9353
9354 static void
9355 stopin_command (char *arg, int from_tty)
9356 {
9357   int badInput = 0;
9358
9359   if (arg == (char *) NULL)
9360     badInput = 1;
9361   else if (*arg != '*')
9362     {
9363       char *argptr = arg;
9364       int hasColon = 0;
9365
9366       /* Look for a ':'.  If this is a line number specification, then
9367          say it is bad, otherwise, it should be an address or
9368          function/method name.  */
9369       while (*argptr && !hasColon)
9370         {
9371           hasColon = (*argptr == ':');
9372           argptr++;
9373         }
9374
9375       if (hasColon)
9376         badInput = (*argptr != ':');    /* Not a class::method */
9377       else
9378         badInput = isdigit (*arg);      /* a simple line number */
9379     }
9380
9381   if (badInput)
9382     printf_filtered (_("Usage: stop in <function | address>\n"));
9383   else
9384     break_command_1 (arg, 0, from_tty);
9385 }
9386
9387 static void
9388 stopat_command (char *arg, int from_tty)
9389 {
9390   int badInput = 0;
9391
9392   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9393     badInput = 1;
9394   else
9395     {
9396       char *argptr = arg;
9397       int hasColon = 0;
9398
9399       /* Look for a ':'.  If there is a '::' then get out, otherwise
9400          it is probably a line number.  */
9401       while (*argptr && !hasColon)
9402         {
9403           hasColon = (*argptr == ':');
9404           argptr++;
9405         }
9406
9407       if (hasColon)
9408         badInput = (*argptr == ':');    /* we have class::method */
9409       else
9410         badInput = !isdigit (*arg);     /* not a line number */
9411     }
9412
9413   if (badInput)
9414     printf_filtered (_("Usage: stop at <line>\n"));
9415   else
9416     break_command_1 (arg, 0, from_tty);
9417 }
9418
9419 void dprintf_command (char *arg, int from_tty);
9420
9421 /* The dynamic printf command is mostly like a regular breakpoint, but
9422    with a prewired command list consisting of a single output command,
9423    built from extra arguments supplied on the dprintf command
9424    line.  */
9425
9426 void
9427 dprintf_command (char *arg, int from_tty)
9428 {
9429   create_breakpoint (get_current_arch (),
9430                      arg,
9431                      NULL, 0, NULL, 1 /* parse arg */,
9432                      0, bp_dprintf,
9433                      0 /* Ignore count */,
9434                      pending_break_support,
9435                      &dprintf_breakpoint_ops,
9436                      from_tty,
9437                      1 /* enabled */,
9438                      0 /* internal */,
9439                      0);
9440 }
9441
9442 /* Implement the "breakpoint_hit" breakpoint_ops method for
9443    ranged breakpoints.  */
9444
9445 static int
9446 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
9447                                   struct address_space *aspace,
9448                                   CORE_ADDR bp_addr,
9449                                   const struct target_waitstatus *ws)
9450 {
9451   if (ws->kind != TARGET_WAITKIND_STOPPED
9452       || ws->value.sig != GDB_SIGNAL_TRAP)
9453     return 0;
9454
9455   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
9456                                          bl->length, aspace, bp_addr);
9457 }
9458
9459 /* Implement the "resources_needed" breakpoint_ops method for
9460    ranged breakpoints.  */
9461
9462 static int
9463 resources_needed_ranged_breakpoint (const struct bp_location *bl)
9464 {
9465   return target_ranged_break_num_registers ();
9466 }
9467
9468 /* Implement the "print_it" breakpoint_ops method for
9469    ranged breakpoints.  */
9470
9471 static enum print_stop_action
9472 print_it_ranged_breakpoint (bpstat bs)
9473 {
9474   struct breakpoint *b = bs->breakpoint_at;
9475   struct bp_location *bl = b->loc;
9476   struct ui_out *uiout = current_uiout;
9477
9478   gdb_assert (b->type == bp_hardware_breakpoint);
9479
9480   /* Ranged breakpoints have only one location.  */
9481   gdb_assert (bl && bl->next == NULL);
9482
9483   annotate_breakpoint (b->number);
9484   if (b->disposition == disp_del)
9485     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
9486   else
9487     ui_out_text (uiout, "\nRanged breakpoint ");
9488   if (ui_out_is_mi_like_p (uiout))
9489     {
9490       ui_out_field_string (uiout, "reason",
9491                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
9492       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9493     }
9494   ui_out_field_int (uiout, "bkptno", b->number);
9495   ui_out_text (uiout, ", ");
9496
9497   return PRINT_SRC_AND_LOC;
9498 }
9499
9500 /* Implement the "print_one" breakpoint_ops method for
9501    ranged breakpoints.  */
9502
9503 static void
9504 print_one_ranged_breakpoint (struct breakpoint *b,
9505                              struct bp_location **last_loc)
9506 {
9507   struct bp_location *bl = b->loc;
9508   struct value_print_options opts;
9509   struct ui_out *uiout = current_uiout;
9510
9511   /* Ranged breakpoints have only one location.  */
9512   gdb_assert (bl && bl->next == NULL);
9513
9514   get_user_print_options (&opts);
9515
9516   if (opts.addressprint)
9517     /* We don't print the address range here, it will be printed later
9518        by print_one_detail_ranged_breakpoint.  */
9519     ui_out_field_skip (uiout, "addr");
9520   annotate_field (5);
9521   print_breakpoint_location (b, bl);
9522   *last_loc = bl;
9523 }
9524
9525 /* Implement the "print_one_detail" breakpoint_ops method for
9526    ranged breakpoints.  */
9527
9528 static void
9529 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
9530                                     struct ui_out *uiout)
9531 {
9532   CORE_ADDR address_start, address_end;
9533   struct bp_location *bl = b->loc;
9534   struct ui_file *stb = mem_fileopen ();
9535   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
9536
9537   gdb_assert (bl);
9538
9539   address_start = bl->address;
9540   address_end = address_start + bl->length - 1;
9541
9542   ui_out_text (uiout, "\taddress range: ");
9543   fprintf_unfiltered (stb, "[%s, %s]",
9544                       print_core_address (bl->gdbarch, address_start),
9545                       print_core_address (bl->gdbarch, address_end));
9546   ui_out_field_stream (uiout, "addr", stb);
9547   ui_out_text (uiout, "\n");
9548
9549   do_cleanups (cleanup);
9550 }
9551
9552 /* Implement the "print_mention" breakpoint_ops method for
9553    ranged breakpoints.  */
9554
9555 static void
9556 print_mention_ranged_breakpoint (struct breakpoint *b)
9557 {
9558   struct bp_location *bl = b->loc;
9559   struct ui_out *uiout = current_uiout;
9560
9561   gdb_assert (bl);
9562   gdb_assert (b->type == bp_hardware_breakpoint);
9563
9564   if (ui_out_is_mi_like_p (uiout))
9565     return;
9566
9567   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
9568                    b->number, paddress (bl->gdbarch, bl->address),
9569                    paddress (bl->gdbarch, bl->address + bl->length - 1));
9570 }
9571
9572 /* Implement the "print_recreate" breakpoint_ops method for
9573    ranged breakpoints.  */
9574
9575 static void
9576 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
9577 {
9578   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
9579                       b->addr_string_range_end);
9580   print_recreate_thread (b, fp);
9581 }
9582
9583 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
9584
9585 static struct breakpoint_ops ranged_breakpoint_ops;
9586
9587 /* Find the address where the end of the breakpoint range should be
9588    placed, given the SAL of the end of the range.  This is so that if
9589    the user provides a line number, the end of the range is set to the
9590    last instruction of the given line.  */
9591
9592 static CORE_ADDR
9593 find_breakpoint_range_end (struct symtab_and_line sal)
9594 {
9595   CORE_ADDR end;
9596
9597   /* If the user provided a PC value, use it.  Otherwise,
9598      find the address of the end of the given location.  */
9599   if (sal.explicit_pc)
9600     end = sal.pc;
9601   else
9602     {
9603       int ret;
9604       CORE_ADDR start;
9605
9606       ret = find_line_pc_range (sal, &start, &end);
9607       if (!ret)
9608         error (_("Could not find location of the end of the range."));
9609
9610       /* find_line_pc_range returns the start of the next line.  */
9611       end--;
9612     }
9613
9614   return end;
9615 }
9616
9617 /* Implement the "break-range" CLI command.  */
9618
9619 static void
9620 break_range_command (char *arg, int from_tty)
9621 {
9622   char *arg_start, *addr_string_start, *addr_string_end;
9623   struct linespec_result canonical_start, canonical_end;
9624   int bp_count, can_use_bp, length;
9625   CORE_ADDR end;
9626   struct breakpoint *b;
9627   struct symtab_and_line sal_start, sal_end;
9628   struct cleanup *cleanup_bkpt;
9629   struct linespec_sals *lsal_start, *lsal_end;
9630
9631   /* We don't support software ranged breakpoints.  */
9632   if (target_ranged_break_num_registers () < 0)
9633     error (_("This target does not support hardware ranged breakpoints."));
9634
9635   bp_count = hw_breakpoint_used_count ();
9636   bp_count += target_ranged_break_num_registers ();
9637   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9638                                                    bp_count, 0);
9639   if (can_use_bp < 0)
9640     error (_("Hardware breakpoints used exceeds limit."));
9641
9642   arg = skip_spaces (arg);
9643   if (arg == NULL || arg[0] == '\0')
9644     error(_("No address range specified."));
9645
9646   init_linespec_result (&canonical_start);
9647
9648   arg_start = arg;
9649   parse_breakpoint_sals (&arg, &canonical_start);
9650
9651   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
9652
9653   if (arg[0] != ',')
9654     error (_("Too few arguments."));
9655   else if (VEC_empty (linespec_sals, canonical_start.sals))
9656     error (_("Could not find location of the beginning of the range."));
9657
9658   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
9659
9660   if (VEC_length (linespec_sals, canonical_start.sals) > 1
9661       || lsal_start->sals.nelts != 1)
9662     error (_("Cannot create a ranged breakpoint with multiple locations."));
9663
9664   sal_start = lsal_start->sals.sals[0];
9665   addr_string_start = savestring (arg_start, arg - arg_start);
9666   make_cleanup (xfree, addr_string_start);
9667
9668   arg++;        /* Skip the comma.  */
9669   arg = skip_spaces (arg);
9670
9671   /* Parse the end location.  */
9672
9673   init_linespec_result (&canonical_end);
9674   arg_start = arg;
9675
9676   /* We call decode_line_full directly here instead of using
9677      parse_breakpoint_sals because we need to specify the start location's
9678      symtab and line as the default symtab and line for the end of the
9679      range.  This makes it possible to have ranges like "foo.c:27, +14",
9680      where +14 means 14 lines from the start location.  */
9681   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
9682                     sal_start.symtab, sal_start.line,
9683                     &canonical_end, NULL, NULL);
9684
9685   make_cleanup_destroy_linespec_result (&canonical_end);
9686
9687   if (VEC_empty (linespec_sals, canonical_end.sals))
9688     error (_("Could not find location of the end of the range."));
9689
9690   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
9691   if (VEC_length (linespec_sals, canonical_end.sals) > 1
9692       || lsal_end->sals.nelts != 1)
9693     error (_("Cannot create a ranged breakpoint with multiple locations."));
9694
9695   sal_end = lsal_end->sals.sals[0];
9696   addr_string_end = savestring (arg_start, arg - arg_start);
9697   make_cleanup (xfree, addr_string_end);
9698
9699   end = find_breakpoint_range_end (sal_end);
9700   if (sal_start.pc > end)
9701     error (_("Invalid address range, end precedes start."));
9702
9703   length = end - sal_start.pc + 1;
9704   if (length < 0)
9705     /* Length overflowed.  */
9706     error (_("Address range too large."));
9707   else if (length == 1)
9708     {
9709       /* This range is simple enough to be handled by
9710          the `hbreak' command.  */
9711       hbreak_command (addr_string_start, 1);
9712
9713       do_cleanups (cleanup_bkpt);
9714
9715       return;
9716     }
9717
9718   /* Now set up the breakpoint.  */
9719   b = set_raw_breakpoint (get_current_arch (), sal_start,
9720                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
9721   set_breakpoint_count (breakpoint_count + 1);
9722   b->number = breakpoint_count;
9723   b->disposition = disp_donttouch;
9724   b->addr_string = xstrdup (addr_string_start);
9725   b->addr_string_range_end = xstrdup (addr_string_end);
9726   b->loc->length = length;
9727
9728   do_cleanups (cleanup_bkpt);
9729
9730   mention (b);
9731   observer_notify_breakpoint_created (b);
9732   update_global_location_list (1);
9733 }
9734
9735 /*  Return non-zero if EXP is verified as constant.  Returned zero
9736     means EXP is variable.  Also the constant detection may fail for
9737     some constant expressions and in such case still falsely return
9738     zero.  */
9739
9740 static int
9741 watchpoint_exp_is_const (const struct expression *exp)
9742 {
9743   int i = exp->nelts;
9744
9745   while (i > 0)
9746     {
9747       int oplenp, argsp;
9748
9749       /* We are only interested in the descriptor of each element.  */
9750       operator_length (exp, i, &oplenp, &argsp);
9751       i -= oplenp;
9752
9753       switch (exp->elts[i].opcode)
9754         {
9755         case BINOP_ADD:
9756         case BINOP_SUB:
9757         case BINOP_MUL:
9758         case BINOP_DIV:
9759         case BINOP_REM:
9760         case BINOP_MOD:
9761         case BINOP_LSH:
9762         case BINOP_RSH:
9763         case BINOP_LOGICAL_AND:
9764         case BINOP_LOGICAL_OR:
9765         case BINOP_BITWISE_AND:
9766         case BINOP_BITWISE_IOR:
9767         case BINOP_BITWISE_XOR:
9768         case BINOP_EQUAL:
9769         case BINOP_NOTEQUAL:
9770         case BINOP_LESS:
9771         case BINOP_GTR:
9772         case BINOP_LEQ:
9773         case BINOP_GEQ:
9774         case BINOP_REPEAT:
9775         case BINOP_COMMA:
9776         case BINOP_EXP:
9777         case BINOP_MIN:
9778         case BINOP_MAX:
9779         case BINOP_INTDIV:
9780         case BINOP_CONCAT:
9781         case BINOP_IN:
9782         case BINOP_RANGE:
9783         case TERNOP_COND:
9784         case TERNOP_SLICE:
9785         case TERNOP_SLICE_COUNT:
9786
9787         case OP_LONG:
9788         case OP_DOUBLE:
9789         case OP_DECFLOAT:
9790         case OP_LAST:
9791         case OP_COMPLEX:
9792         case OP_STRING:
9793         case OP_BITSTRING:
9794         case OP_ARRAY:
9795         case OP_TYPE:
9796         case OP_NAME:
9797         case OP_OBJC_NSSTRING:
9798
9799         case UNOP_NEG:
9800         case UNOP_LOGICAL_NOT:
9801         case UNOP_COMPLEMENT:
9802         case UNOP_ADDR:
9803         case UNOP_HIGH:
9804         case UNOP_CAST:
9805           /* Unary, binary and ternary operators: We have to check
9806              their operands.  If they are constant, then so is the
9807              result of that operation.  For instance, if A and B are
9808              determined to be constants, then so is "A + B".
9809
9810              UNOP_IND is one exception to the rule above, because the
9811              value of *ADDR is not necessarily a constant, even when
9812              ADDR is.  */
9813           break;
9814
9815         case OP_VAR_VALUE:
9816           /* Check whether the associated symbol is a constant.
9817
9818              We use SYMBOL_CLASS rather than TYPE_CONST because it's
9819              possible that a buggy compiler could mark a variable as
9820              constant even when it is not, and TYPE_CONST would return
9821              true in this case, while SYMBOL_CLASS wouldn't.
9822
9823              We also have to check for function symbols because they
9824              are always constant.  */
9825           {
9826             struct symbol *s = exp->elts[i + 2].symbol;
9827
9828             if (SYMBOL_CLASS (s) != LOC_BLOCK
9829                 && SYMBOL_CLASS (s) != LOC_CONST
9830                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
9831               return 0;
9832             break;
9833           }
9834
9835         /* The default action is to return 0 because we are using
9836            the optimistic approach here: If we don't know something,
9837            then it is not a constant.  */
9838         default:
9839           return 0;
9840         }
9841     }
9842
9843   return 1;
9844 }
9845
9846 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
9847
9848 static void
9849 dtor_watchpoint (struct breakpoint *self)
9850 {
9851   struct watchpoint *w = (struct watchpoint *) self;
9852
9853   xfree (w->cond_exp);
9854   xfree (w->exp);
9855   xfree (w->exp_string);
9856   xfree (w->exp_string_reparse);
9857   value_free (w->val);
9858
9859   base_breakpoint_ops.dtor (self);
9860 }
9861
9862 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
9863
9864 static void
9865 re_set_watchpoint (struct breakpoint *b)
9866 {
9867   struct watchpoint *w = (struct watchpoint *) b;
9868
9869   /* Watchpoint can be either on expression using entirely global
9870      variables, or it can be on local variables.
9871
9872      Watchpoints of the first kind are never auto-deleted, and even
9873      persist across program restarts.  Since they can use variables
9874      from shared libraries, we need to reparse expression as libraries
9875      are loaded and unloaded.
9876
9877      Watchpoints on local variables can also change meaning as result
9878      of solib event.  For example, if a watchpoint uses both a local
9879      and a global variables in expression, it's a local watchpoint,
9880      but unloading of a shared library will make the expression
9881      invalid.  This is not a very common use case, but we still
9882      re-evaluate expression, to avoid surprises to the user.
9883
9884      Note that for local watchpoints, we re-evaluate it only if
9885      watchpoints frame id is still valid.  If it's not, it means the
9886      watchpoint is out of scope and will be deleted soon.  In fact,
9887      I'm not sure we'll ever be called in this case.
9888
9889      If a local watchpoint's frame id is still valid, then
9890      w->exp_valid_block is likewise valid, and we can safely use it.
9891
9892      Don't do anything about disabled watchpoints, since they will be
9893      reevaluated again when enabled.  */
9894   update_watchpoint (w, 1 /* reparse */);
9895 }
9896
9897 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
9898
9899 static int
9900 insert_watchpoint (struct bp_location *bl)
9901 {
9902   struct watchpoint *w = (struct watchpoint *) bl->owner;
9903   int length = w->exact ? 1 : bl->length;
9904
9905   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
9906                                    w->cond_exp);
9907 }
9908
9909 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
9910
9911 static int
9912 remove_watchpoint (struct bp_location *bl)
9913 {
9914   struct watchpoint *w = (struct watchpoint *) bl->owner;
9915   int length = w->exact ? 1 : bl->length;
9916
9917   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
9918                                    w->cond_exp);
9919 }
9920
9921 static int
9922 breakpoint_hit_watchpoint (const struct bp_location *bl,
9923                            struct address_space *aspace, CORE_ADDR bp_addr,
9924                            const struct target_waitstatus *ws)
9925 {
9926   struct breakpoint *b = bl->owner;
9927   struct watchpoint *w = (struct watchpoint *) b;
9928
9929   /* Continuable hardware watchpoints are treated as non-existent if the
9930      reason we stopped wasn't a hardware watchpoint (we didn't stop on
9931      some data address).  Otherwise gdb won't stop on a break instruction
9932      in the code (not from a breakpoint) when a hardware watchpoint has
9933      been defined.  Also skip watchpoints which we know did not trigger
9934      (did not match the data address).  */
9935   if (is_hardware_watchpoint (b)
9936       && w->watchpoint_triggered == watch_triggered_no)
9937     return 0;
9938
9939   return 1;
9940 }
9941
9942 static void
9943 check_status_watchpoint (bpstat bs)
9944 {
9945   gdb_assert (is_watchpoint (bs->breakpoint_at));
9946
9947   bpstat_check_watchpoint (bs);
9948 }
9949
9950 /* Implement the "resources_needed" breakpoint_ops method for
9951    hardware watchpoints.  */
9952
9953 static int
9954 resources_needed_watchpoint (const struct bp_location *bl)
9955 {
9956   struct watchpoint *w = (struct watchpoint *) bl->owner;
9957   int length = w->exact? 1 : bl->length;
9958
9959   return target_region_ok_for_hw_watchpoint (bl->address, length);
9960 }
9961
9962 /* Implement the "works_in_software_mode" breakpoint_ops method for
9963    hardware watchpoints.  */
9964
9965 static int
9966 works_in_software_mode_watchpoint (const struct breakpoint *b)
9967 {
9968   /* Read and access watchpoints only work with hardware support.  */
9969   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
9970 }
9971
9972 static enum print_stop_action
9973 print_it_watchpoint (bpstat bs)
9974 {
9975   struct cleanup *old_chain;
9976   struct breakpoint *b;
9977   const struct bp_location *bl;
9978   struct ui_file *stb;
9979   enum print_stop_action result;
9980   struct watchpoint *w;
9981   struct ui_out *uiout = current_uiout;
9982
9983   gdb_assert (bs->bp_location_at != NULL);
9984
9985   bl = bs->bp_location_at;
9986   b = bs->breakpoint_at;
9987   w = (struct watchpoint *) b;
9988
9989   stb = mem_fileopen ();
9990   old_chain = make_cleanup_ui_file_delete (stb);
9991
9992   switch (b->type)
9993     {
9994     case bp_watchpoint:
9995     case bp_hardware_watchpoint:
9996       annotate_watchpoint (b->number);
9997       if (ui_out_is_mi_like_p (uiout))
9998         ui_out_field_string
9999           (uiout, "reason",
10000            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10001       mention (b);
10002       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10003       ui_out_text (uiout, "\nOld value = ");
10004       watchpoint_value_print (bs->old_val, stb);
10005       ui_out_field_stream (uiout, "old", stb);
10006       ui_out_text (uiout, "\nNew value = ");
10007       watchpoint_value_print (w->val, stb);
10008       ui_out_field_stream (uiout, "new", stb);
10009       ui_out_text (uiout, "\n");
10010       /* More than one watchpoint may have been triggered.  */
10011       result = PRINT_UNKNOWN;
10012       break;
10013
10014     case bp_read_watchpoint:
10015       if (ui_out_is_mi_like_p (uiout))
10016         ui_out_field_string
10017           (uiout, "reason",
10018            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10019       mention (b);
10020       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10021       ui_out_text (uiout, "\nValue = ");
10022       watchpoint_value_print (w->val, stb);
10023       ui_out_field_stream (uiout, "value", stb);
10024       ui_out_text (uiout, "\n");
10025       result = PRINT_UNKNOWN;
10026       break;
10027
10028     case bp_access_watchpoint:
10029       if (bs->old_val != NULL)
10030         {
10031           annotate_watchpoint (b->number);
10032           if (ui_out_is_mi_like_p (uiout))
10033             ui_out_field_string
10034               (uiout, "reason",
10035                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10036           mention (b);
10037           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10038           ui_out_text (uiout, "\nOld value = ");
10039           watchpoint_value_print (bs->old_val, stb);
10040           ui_out_field_stream (uiout, "old", stb);
10041           ui_out_text (uiout, "\nNew value = ");
10042         }
10043       else
10044         {
10045           mention (b);
10046           if (ui_out_is_mi_like_p (uiout))
10047             ui_out_field_string
10048               (uiout, "reason",
10049                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10050           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10051           ui_out_text (uiout, "\nValue = ");
10052         }
10053       watchpoint_value_print (w->val, stb);
10054       ui_out_field_stream (uiout, "new", stb);
10055       ui_out_text (uiout, "\n");
10056       result = PRINT_UNKNOWN;
10057       break;
10058     default:
10059       result = PRINT_UNKNOWN;
10060     }
10061
10062   do_cleanups (old_chain);
10063   return result;
10064 }
10065
10066 /* Implement the "print_mention" breakpoint_ops method for hardware
10067    watchpoints.  */
10068
10069 static void
10070 print_mention_watchpoint (struct breakpoint *b)
10071 {
10072   struct cleanup *ui_out_chain;
10073   struct watchpoint *w = (struct watchpoint *) b;
10074   struct ui_out *uiout = current_uiout;
10075
10076   switch (b->type)
10077     {
10078     case bp_watchpoint:
10079       ui_out_text (uiout, "Watchpoint ");
10080       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10081       break;
10082     case bp_hardware_watchpoint:
10083       ui_out_text (uiout, "Hardware watchpoint ");
10084       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10085       break;
10086     case bp_read_watchpoint:
10087       ui_out_text (uiout, "Hardware read watchpoint ");
10088       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10089       break;
10090     case bp_access_watchpoint:
10091       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10092       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10093       break;
10094     default:
10095       internal_error (__FILE__, __LINE__,
10096                       _("Invalid hardware watchpoint type."));
10097     }
10098
10099   ui_out_field_int (uiout, "number", b->number);
10100   ui_out_text (uiout, ": ");
10101   ui_out_field_string (uiout, "exp", w->exp_string);
10102   do_cleanups (ui_out_chain);
10103 }
10104
10105 /* Implement the "print_recreate" breakpoint_ops method for
10106    watchpoints.  */
10107
10108 static void
10109 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10110 {
10111   struct watchpoint *w = (struct watchpoint *) b;
10112
10113   switch (b->type)
10114     {
10115     case bp_watchpoint:
10116     case bp_hardware_watchpoint:
10117       fprintf_unfiltered (fp, "watch");
10118       break;
10119     case bp_read_watchpoint:
10120       fprintf_unfiltered (fp, "rwatch");
10121       break;
10122     case bp_access_watchpoint:
10123       fprintf_unfiltered (fp, "awatch");
10124       break;
10125     default:
10126       internal_error (__FILE__, __LINE__,
10127                       _("Invalid watchpoint type."));
10128     }
10129
10130   fprintf_unfiltered (fp, " %s", w->exp_string);
10131   print_recreate_thread (b, fp);
10132 }
10133
10134 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10135
10136 static struct breakpoint_ops watchpoint_breakpoint_ops;
10137
10138 /* Implement the "insert" breakpoint_ops method for
10139    masked hardware watchpoints.  */
10140
10141 static int
10142 insert_masked_watchpoint (struct bp_location *bl)
10143 {
10144   struct watchpoint *w = (struct watchpoint *) bl->owner;
10145
10146   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10147                                         bl->watchpoint_type);
10148 }
10149
10150 /* Implement the "remove" breakpoint_ops method for
10151    masked hardware watchpoints.  */
10152
10153 static int
10154 remove_masked_watchpoint (struct bp_location *bl)
10155 {
10156   struct watchpoint *w = (struct watchpoint *) bl->owner;
10157
10158   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10159                                         bl->watchpoint_type);
10160 }
10161
10162 /* Implement the "resources_needed" breakpoint_ops method for
10163    masked hardware watchpoints.  */
10164
10165 static int
10166 resources_needed_masked_watchpoint (const struct bp_location *bl)
10167 {
10168   struct watchpoint *w = (struct watchpoint *) bl->owner;
10169
10170   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10171 }
10172
10173 /* Implement the "works_in_software_mode" breakpoint_ops method for
10174    masked hardware watchpoints.  */
10175
10176 static int
10177 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10178 {
10179   return 0;
10180 }
10181
10182 /* Implement the "print_it" breakpoint_ops method for
10183    masked hardware watchpoints.  */
10184
10185 static enum print_stop_action
10186 print_it_masked_watchpoint (bpstat bs)
10187 {
10188   struct breakpoint *b = bs->breakpoint_at;
10189   struct ui_out *uiout = current_uiout;
10190
10191   /* Masked watchpoints have only one location.  */
10192   gdb_assert (b->loc && b->loc->next == NULL);
10193
10194   switch (b->type)
10195     {
10196     case bp_hardware_watchpoint:
10197       annotate_watchpoint (b->number);
10198       if (ui_out_is_mi_like_p (uiout))
10199         ui_out_field_string
10200           (uiout, "reason",
10201            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10202       break;
10203
10204     case bp_read_watchpoint:
10205       if (ui_out_is_mi_like_p (uiout))
10206         ui_out_field_string
10207           (uiout, "reason",
10208            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10209       break;
10210
10211     case bp_access_watchpoint:
10212       if (ui_out_is_mi_like_p (uiout))
10213         ui_out_field_string
10214           (uiout, "reason",
10215            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10216       break;
10217     default:
10218       internal_error (__FILE__, __LINE__,
10219                       _("Invalid hardware watchpoint type."));
10220     }
10221
10222   mention (b);
10223   ui_out_text (uiout, _("\n\
10224 Check the underlying instruction at PC for the memory\n\
10225 address and value which triggered this watchpoint.\n"));
10226   ui_out_text (uiout, "\n");
10227
10228   /* More than one watchpoint may have been triggered.  */
10229   return PRINT_UNKNOWN;
10230 }
10231
10232 /* Implement the "print_one_detail" breakpoint_ops method for
10233    masked hardware watchpoints.  */
10234
10235 static void
10236 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10237                                     struct ui_out *uiout)
10238 {
10239   struct watchpoint *w = (struct watchpoint *) b;
10240
10241   /* Masked watchpoints have only one location.  */
10242   gdb_assert (b->loc && b->loc->next == NULL);
10243
10244   ui_out_text (uiout, "\tmask ");
10245   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10246   ui_out_text (uiout, "\n");
10247 }
10248
10249 /* Implement the "print_mention" breakpoint_ops method for
10250    masked hardware watchpoints.  */
10251
10252 static void
10253 print_mention_masked_watchpoint (struct breakpoint *b)
10254 {
10255   struct watchpoint *w = (struct watchpoint *) b;
10256   struct ui_out *uiout = current_uiout;
10257   struct cleanup *ui_out_chain;
10258
10259   switch (b->type)
10260     {
10261     case bp_hardware_watchpoint:
10262       ui_out_text (uiout, "Masked hardware watchpoint ");
10263       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10264       break;
10265     case bp_read_watchpoint:
10266       ui_out_text (uiout, "Masked hardware read watchpoint ");
10267       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10268       break;
10269     case bp_access_watchpoint:
10270       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10271       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10272       break;
10273     default:
10274       internal_error (__FILE__, __LINE__,
10275                       _("Invalid hardware watchpoint type."));
10276     }
10277
10278   ui_out_field_int (uiout, "number", b->number);
10279   ui_out_text (uiout, ": ");
10280   ui_out_field_string (uiout, "exp", w->exp_string);
10281   do_cleanups (ui_out_chain);
10282 }
10283
10284 /* Implement the "print_recreate" breakpoint_ops method for
10285    masked hardware watchpoints.  */
10286
10287 static void
10288 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10289 {
10290   struct watchpoint *w = (struct watchpoint *) b;
10291   char tmp[40];
10292
10293   switch (b->type)
10294     {
10295     case bp_hardware_watchpoint:
10296       fprintf_unfiltered (fp, "watch");
10297       break;
10298     case bp_read_watchpoint:
10299       fprintf_unfiltered (fp, "rwatch");
10300       break;
10301     case bp_access_watchpoint:
10302       fprintf_unfiltered (fp, "awatch");
10303       break;
10304     default:
10305       internal_error (__FILE__, __LINE__,
10306                       _("Invalid hardware watchpoint type."));
10307     }
10308
10309   sprintf_vma (tmp, w->hw_wp_mask);
10310   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10311   print_recreate_thread (b, fp);
10312 }
10313
10314 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10315
10316 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10317
10318 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10319
10320 static int
10321 is_masked_watchpoint (const struct breakpoint *b)
10322 {
10323   return b->ops == &masked_watchpoint_breakpoint_ops;
10324 }
10325
10326 /* accessflag:  hw_write:  watch write, 
10327                 hw_read:   watch read, 
10328                 hw_access: watch access (read or write) */
10329 static void
10330 watch_command_1 (char *arg, int accessflag, int from_tty,
10331                  int just_location, int internal)
10332 {
10333   volatile struct gdb_exception e;
10334   struct breakpoint *b, *scope_breakpoint = NULL;
10335   struct expression *exp;
10336   struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10337   struct value *val, *mark, *result;
10338   struct frame_info *frame;
10339   char *exp_start = NULL;
10340   char *exp_end = NULL;
10341   char *tok, *end_tok;
10342   int toklen = -1;
10343   char *cond_start = NULL;
10344   char *cond_end = NULL;
10345   enum bptype bp_type;
10346   int thread = -1;
10347   int pc = 0;
10348   /* Flag to indicate whether we are going to use masks for
10349      the hardware watchpoint.  */
10350   int use_mask = 0;
10351   CORE_ADDR mask = 0;
10352   struct watchpoint *w;
10353
10354   /* Make sure that we actually have parameters to parse.  */
10355   if (arg != NULL && arg[0] != '\0')
10356     {
10357       char *value_start;
10358
10359       /* Look for "parameter value" pairs at the end
10360          of the arguments string.  */
10361       for (tok = arg + strlen (arg) - 1; tok > arg; tok--)
10362         {
10363           /* Skip whitespace at the end of the argument list.  */
10364           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10365             tok--;
10366
10367           /* Find the beginning of the last token.
10368              This is the value of the parameter.  */
10369           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10370             tok--;
10371           value_start = tok + 1;
10372
10373           /* Skip whitespace.  */
10374           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10375             tok--;
10376
10377           end_tok = tok;
10378
10379           /* Find the beginning of the second to last token.
10380              This is the parameter itself.  */
10381           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10382             tok--;
10383           tok++;
10384           toklen = end_tok - tok + 1;
10385
10386           if (toklen == 6 && !strncmp (tok, "thread", 6))
10387             {
10388               /* At this point we've found a "thread" token, which means
10389                  the user is trying to set a watchpoint that triggers
10390                  only in a specific thread.  */
10391               char *endp;
10392
10393               if (thread != -1)
10394                 error(_("You can specify only one thread."));
10395
10396               /* Extract the thread ID from the next token.  */
10397               thread = strtol (value_start, &endp, 0);
10398
10399               /* Check if the user provided a valid numeric value for the
10400                  thread ID.  */
10401               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
10402                 error (_("Invalid thread ID specification %s."), value_start);
10403
10404               /* Check if the thread actually exists.  */
10405               if (!valid_thread_id (thread))
10406                 error (_("Unknown thread %d."), thread);
10407             }
10408           else if (toklen == 4 && !strncmp (tok, "mask", 4))
10409             {
10410               /* We've found a "mask" token, which means the user wants to
10411                  create a hardware watchpoint that is going to have the mask
10412                  facility.  */
10413               struct value *mask_value, *mark;
10414
10415               if (use_mask)
10416                 error(_("You can specify only one mask."));
10417
10418               use_mask = just_location = 1;
10419
10420               mark = value_mark ();
10421               mask_value = parse_to_comma_and_eval (&value_start);
10422               mask = value_as_address (mask_value);
10423               value_free_to_mark (mark);
10424             }
10425           else
10426             /* We didn't recognize what we found.  We should stop here.  */
10427             break;
10428
10429           /* Truncate the string and get rid of the "parameter value" pair before
10430              the arguments string is parsed by the parse_exp_1 function.  */
10431           *tok = '\0';
10432         }
10433     }
10434
10435   /* Parse the rest of the arguments.  */
10436   innermost_block = NULL;
10437   exp_start = arg;
10438   exp = parse_exp_1 (&arg, 0, 0);
10439   exp_end = arg;
10440   /* Remove trailing whitespace from the expression before saving it.
10441      This makes the eventual display of the expression string a bit
10442      prettier.  */
10443   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
10444     --exp_end;
10445
10446   /* Checking if the expression is not constant.  */
10447   if (watchpoint_exp_is_const (exp))
10448     {
10449       int len;
10450
10451       len = exp_end - exp_start;
10452       while (len > 0 && isspace (exp_start[len - 1]))
10453         len--;
10454       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
10455     }
10456
10457   exp_valid_block = innermost_block;
10458   mark = value_mark ();
10459   fetch_subexp_value (exp, &pc, &val, &result, NULL);
10460
10461   if (just_location)
10462     {
10463       int ret;
10464
10465       exp_valid_block = NULL;
10466       val = value_addr (result);
10467       release_value (val);
10468       value_free_to_mark (mark);
10469
10470       if (use_mask)
10471         {
10472           ret = target_masked_watch_num_registers (value_as_address (val),
10473                                                    mask);
10474           if (ret == -1)
10475             error (_("This target does not support masked watchpoints."));
10476           else if (ret == -2)
10477             error (_("Invalid mask or memory region."));
10478         }
10479     }
10480   else if (val != NULL)
10481     release_value (val);
10482
10483   tok = skip_spaces (arg);
10484   end_tok = skip_to_space (tok);
10485
10486   toklen = end_tok - tok;
10487   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
10488     {
10489       struct expression *cond;
10490
10491       innermost_block = NULL;
10492       tok = cond_start = end_tok + 1;
10493       cond = parse_exp_1 (&tok, 0, 0);
10494
10495       /* The watchpoint expression may not be local, but the condition
10496          may still be.  E.g.: `watch global if local > 0'.  */
10497       cond_exp_valid_block = innermost_block;
10498
10499       xfree (cond);
10500       cond_end = tok;
10501     }
10502   if (*tok)
10503     error (_("Junk at end of command."));
10504
10505   if (accessflag == hw_read)
10506     bp_type = bp_read_watchpoint;
10507   else if (accessflag == hw_access)
10508     bp_type = bp_access_watchpoint;
10509   else
10510     bp_type = bp_hardware_watchpoint;
10511
10512   frame = block_innermost_frame (exp_valid_block);
10513
10514   /* If the expression is "local", then set up a "watchpoint scope"
10515      breakpoint at the point where we've left the scope of the watchpoint
10516      expression.  Create the scope breakpoint before the watchpoint, so
10517      that we will encounter it first in bpstat_stop_status.  */
10518   if (exp_valid_block && frame)
10519     {
10520       if (frame_id_p (frame_unwind_caller_id (frame)))
10521         {
10522           scope_breakpoint
10523             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
10524                                           frame_unwind_caller_pc (frame),
10525                                           bp_watchpoint_scope,
10526                                           &momentary_breakpoint_ops);
10527
10528           scope_breakpoint->enable_state = bp_enabled;
10529
10530           /* Automatically delete the breakpoint when it hits.  */
10531           scope_breakpoint->disposition = disp_del;
10532
10533           /* Only break in the proper frame (help with recursion).  */
10534           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
10535
10536           /* Set the address at which we will stop.  */
10537           scope_breakpoint->loc->gdbarch
10538             = frame_unwind_caller_arch (frame);
10539           scope_breakpoint->loc->requested_address
10540             = frame_unwind_caller_pc (frame);
10541           scope_breakpoint->loc->address
10542             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
10543                                          scope_breakpoint->loc->requested_address,
10544                                          scope_breakpoint->type);
10545         }
10546     }
10547
10548   /* Now set up the breakpoint.  */
10549
10550   w = XCNEW (struct watchpoint);
10551   b = &w->base;
10552   if (use_mask)
10553     init_raw_breakpoint_without_location (b, NULL, bp_type,
10554                                           &masked_watchpoint_breakpoint_ops);
10555   else
10556     init_raw_breakpoint_without_location (b, NULL, bp_type,
10557                                           &watchpoint_breakpoint_ops);
10558   b->thread = thread;
10559   b->disposition = disp_donttouch;
10560   b->pspace = current_program_space;
10561   w->exp = exp;
10562   w->exp_valid_block = exp_valid_block;
10563   w->cond_exp_valid_block = cond_exp_valid_block;
10564   if (just_location)
10565     {
10566       struct type *t = value_type (val);
10567       CORE_ADDR addr = value_as_address (val);
10568       char *name;
10569
10570       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
10571       name = type_to_string (t);
10572
10573       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
10574                                           core_addr_to_string (addr));
10575       xfree (name);
10576
10577       w->exp_string = xstrprintf ("-location %.*s",
10578                                   (int) (exp_end - exp_start), exp_start);
10579
10580       /* The above expression is in C.  */
10581       b->language = language_c;
10582     }
10583   else
10584     w->exp_string = savestring (exp_start, exp_end - exp_start);
10585
10586   if (use_mask)
10587     {
10588       w->hw_wp_mask = mask;
10589     }
10590   else
10591     {
10592       w->val = val;
10593       w->val_valid = 1;
10594     }
10595
10596   if (cond_start)
10597     b->cond_string = savestring (cond_start, cond_end - cond_start);
10598   else
10599     b->cond_string = 0;
10600
10601   if (frame)
10602     {
10603       w->watchpoint_frame = get_frame_id (frame);
10604       w->watchpoint_thread = inferior_ptid;
10605     }
10606   else
10607     {
10608       w->watchpoint_frame = null_frame_id;
10609       w->watchpoint_thread = null_ptid;
10610     }
10611
10612   if (scope_breakpoint != NULL)
10613     {
10614       /* The scope breakpoint is related to the watchpoint.  We will
10615          need to act on them together.  */
10616       b->related_breakpoint = scope_breakpoint;
10617       scope_breakpoint->related_breakpoint = b;
10618     }
10619
10620   if (!just_location)
10621     value_free_to_mark (mark);
10622
10623   TRY_CATCH (e, RETURN_MASK_ALL)
10624     {
10625       /* Finally update the new watchpoint.  This creates the locations
10626          that should be inserted.  */
10627       update_watchpoint (w, 1);
10628     }
10629   if (e.reason < 0)
10630     {
10631       delete_breakpoint (b);
10632       throw_exception (e);
10633     }
10634
10635   install_breakpoint (internal, b, 1);
10636 }
10637
10638 /* Return count of debug registers needed to watch the given expression.
10639    If the watchpoint cannot be handled in hardware return zero.  */
10640
10641 static int
10642 can_use_hardware_watchpoint (struct value *v)
10643 {
10644   int found_memory_cnt = 0;
10645   struct value *head = v;
10646
10647   /* Did the user specifically forbid us to use hardware watchpoints? */
10648   if (!can_use_hw_watchpoints)
10649     return 0;
10650
10651   /* Make sure that the value of the expression depends only upon
10652      memory contents, and values computed from them within GDB.  If we
10653      find any register references or function calls, we can't use a
10654      hardware watchpoint.
10655
10656      The idea here is that evaluating an expression generates a series
10657      of values, one holding the value of every subexpression.  (The
10658      expression a*b+c has five subexpressions: a, b, a*b, c, and
10659      a*b+c.)  GDB's values hold almost enough information to establish
10660      the criteria given above --- they identify memory lvalues,
10661      register lvalues, computed values, etcetera.  So we can evaluate
10662      the expression, and then scan the chain of values that leaves
10663      behind to decide whether we can detect any possible change to the
10664      expression's final value using only hardware watchpoints.
10665
10666      However, I don't think that the values returned by inferior
10667      function calls are special in any way.  So this function may not
10668      notice that an expression involving an inferior function call
10669      can't be watched with hardware watchpoints.  FIXME.  */
10670   for (; v; v = value_next (v))
10671     {
10672       if (VALUE_LVAL (v) == lval_memory)
10673         {
10674           if (v != head && value_lazy (v))
10675             /* A lazy memory lvalue in the chain is one that GDB never
10676                needed to fetch; we either just used its address (e.g.,
10677                `a' in `a.b') or we never needed it at all (e.g., `a'
10678                in `a,b').  This doesn't apply to HEAD; if that is
10679                lazy then it was not readable, but watch it anyway.  */
10680             ;
10681           else
10682             {
10683               /* Ahh, memory we actually used!  Check if we can cover
10684                  it with hardware watchpoints.  */
10685               struct type *vtype = check_typedef (value_type (v));
10686
10687               /* We only watch structs and arrays if user asked for it
10688                  explicitly, never if they just happen to appear in a
10689                  middle of some value chain.  */
10690               if (v == head
10691                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
10692                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
10693                 {
10694                   CORE_ADDR vaddr = value_address (v);
10695                   int len;
10696                   int num_regs;
10697
10698                   len = (target_exact_watchpoints
10699                          && is_scalar_type_recursive (vtype))?
10700                     1 : TYPE_LENGTH (value_type (v));
10701
10702                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
10703                   if (!num_regs)
10704                     return 0;
10705                   else
10706                     found_memory_cnt += num_regs;
10707                 }
10708             }
10709         }
10710       else if (VALUE_LVAL (v) != not_lval
10711                && deprecated_value_modifiable (v) == 0)
10712         return 0;       /* These are values from the history (e.g., $1).  */
10713       else if (VALUE_LVAL (v) == lval_register)
10714         return 0;       /* Cannot watch a register with a HW watchpoint.  */
10715     }
10716
10717   /* The expression itself looks suitable for using a hardware
10718      watchpoint, but give the target machine a chance to reject it.  */
10719   return found_memory_cnt;
10720 }
10721
10722 void
10723 watch_command_wrapper (char *arg, int from_tty, int internal)
10724 {
10725   watch_command_1 (arg, hw_write, from_tty, 0, internal);
10726 }
10727
10728 /* A helper function that looks for an argument at the start of a
10729    string.  The argument must also either be at the end of the string,
10730    or be followed by whitespace.  Returns 1 if it finds the argument,
10731    0 otherwise.  If the argument is found, it updates *STR.  */
10732
10733 static int
10734 check_for_argument (char **str, char *arg, int arg_len)
10735 {
10736   if (strncmp (*str, arg, arg_len) == 0
10737       && ((*str)[arg_len] == '\0' || isspace ((*str)[arg_len])))
10738     {
10739       *str += arg_len;
10740       return 1;
10741     }
10742   return 0;
10743 }
10744
10745 /* A helper function that looks for the "-location" argument and then
10746    calls watch_command_1.  */
10747
10748 static void
10749 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
10750 {
10751   int just_location = 0;
10752
10753   if (arg
10754       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
10755           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
10756     {
10757       arg = skip_spaces (arg);
10758       just_location = 1;
10759     }
10760
10761   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
10762 }
10763
10764 static void
10765 watch_command (char *arg, int from_tty)
10766 {
10767   watch_maybe_just_location (arg, hw_write, from_tty);
10768 }
10769
10770 void
10771 rwatch_command_wrapper (char *arg, int from_tty, int internal)
10772 {
10773   watch_command_1 (arg, hw_read, from_tty, 0, internal);
10774 }
10775
10776 static void
10777 rwatch_command (char *arg, int from_tty)
10778 {
10779   watch_maybe_just_location (arg, hw_read, from_tty);
10780 }
10781
10782 void
10783 awatch_command_wrapper (char *arg, int from_tty, int internal)
10784 {
10785   watch_command_1 (arg, hw_access, from_tty, 0, internal);
10786 }
10787
10788 static void
10789 awatch_command (char *arg, int from_tty)
10790 {
10791   watch_maybe_just_location (arg, hw_access, from_tty);
10792 }
10793 \f
10794
10795 /* Helper routines for the until_command routine in infcmd.c.  Here
10796    because it uses the mechanisms of breakpoints.  */
10797
10798 struct until_break_command_continuation_args
10799 {
10800   struct breakpoint *breakpoint;
10801   struct breakpoint *breakpoint2;
10802   int thread_num;
10803 };
10804
10805 /* This function is called by fetch_inferior_event via the
10806    cmd_continuation pointer, to complete the until command.  It takes
10807    care of cleaning up the temporary breakpoints set up by the until
10808    command.  */
10809 static void
10810 until_break_command_continuation (void *arg, int err)
10811 {
10812   struct until_break_command_continuation_args *a = arg;
10813
10814   delete_breakpoint (a->breakpoint);
10815   if (a->breakpoint2)
10816     delete_breakpoint (a->breakpoint2);
10817   delete_longjmp_breakpoint (a->thread_num);
10818 }
10819
10820 void
10821 until_break_command (char *arg, int from_tty, int anywhere)
10822 {
10823   struct symtabs_and_lines sals;
10824   struct symtab_and_line sal;
10825   struct frame_info *frame;
10826   struct gdbarch *frame_gdbarch;
10827   struct frame_id stack_frame_id;
10828   struct frame_id caller_frame_id;
10829   struct breakpoint *breakpoint;
10830   struct breakpoint *breakpoint2 = NULL;
10831   struct cleanup *old_chain;
10832   int thread;
10833   struct thread_info *tp;
10834
10835   clear_proceed_status ();
10836
10837   /* Set a breakpoint where the user wants it and at return from
10838      this function.  */
10839
10840   if (last_displayed_sal_is_valid ())
10841     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10842                           get_last_displayed_symtab (),
10843                           get_last_displayed_line ());
10844   else
10845     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
10846                           (struct symtab *) NULL, 0);
10847
10848   if (sals.nelts != 1)
10849     error (_("Couldn't get information on specified line."));
10850
10851   sal = sals.sals[0];
10852   xfree (sals.sals);    /* malloc'd, so freed.  */
10853
10854   if (*arg)
10855     error (_("Junk at end of arguments."));
10856
10857   resolve_sal_pc (&sal);
10858
10859   tp = inferior_thread ();
10860   thread = tp->num;
10861
10862   old_chain = make_cleanup (null_cleanup, NULL);
10863
10864   /* Note linespec handling above invalidates the frame chain.
10865      Installing a breakpoint also invalidates the frame chain (as it
10866      may need to switch threads), so do any frame handling before
10867      that.  */
10868
10869   frame = get_selected_frame (NULL);
10870   frame_gdbarch = get_frame_arch (frame);
10871   stack_frame_id = get_stack_frame_id (frame);
10872   caller_frame_id = frame_unwind_caller_id (frame);
10873
10874   /* Keep within the current frame, or in frames called by the current
10875      one.  */
10876
10877   if (frame_id_p (caller_frame_id))
10878     {
10879       struct symtab_and_line sal2;
10880
10881       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
10882       sal2.pc = frame_unwind_caller_pc (frame);
10883       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
10884                                               sal2,
10885                                               caller_frame_id,
10886                                               bp_until);
10887       make_cleanup_delete_breakpoint (breakpoint2);
10888
10889       set_longjmp_breakpoint (tp, caller_frame_id);
10890       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
10891     }
10892
10893   /* set_momentary_breakpoint could invalidate FRAME.  */
10894   frame = NULL;
10895
10896   if (anywhere)
10897     /* If the user told us to continue until a specified location,
10898        we don't specify a frame at which we need to stop.  */
10899     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10900                                            null_frame_id, bp_until);
10901   else
10902     /* Otherwise, specify the selected frame, because we want to stop
10903        only at the very same frame.  */
10904     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
10905                                            stack_frame_id, bp_until);
10906   make_cleanup_delete_breakpoint (breakpoint);
10907
10908   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
10909
10910   /* If we are running asynchronously, and proceed call above has
10911      actually managed to start the target, arrange for breakpoints to
10912      be deleted when the target stops.  Otherwise, we're already
10913      stopped and delete breakpoints via cleanup chain.  */
10914
10915   if (target_can_async_p () && is_running (inferior_ptid))
10916     {
10917       struct until_break_command_continuation_args *args;
10918       args = xmalloc (sizeof (*args));
10919
10920       args->breakpoint = breakpoint;
10921       args->breakpoint2 = breakpoint2;
10922       args->thread_num = thread;
10923
10924       discard_cleanups (old_chain);
10925       add_continuation (inferior_thread (),
10926                         until_break_command_continuation, args,
10927                         xfree);
10928     }
10929   else
10930     do_cleanups (old_chain);
10931 }
10932
10933 /* This function attempts to parse an optional "if <cond>" clause
10934    from the arg string.  If one is not found, it returns NULL.
10935
10936    Else, it returns a pointer to the condition string.  (It does not
10937    attempt to evaluate the string against a particular block.)  And,
10938    it updates arg to point to the first character following the parsed
10939    if clause in the arg string.  */
10940
10941 static char *
10942 ep_parse_optional_if_clause (char **arg)
10943 {
10944   char *cond_string;
10945
10946   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
10947     return NULL;
10948
10949   /* Skip the "if" keyword.  */
10950   (*arg) += 2;
10951
10952   /* Skip any extra leading whitespace, and record the start of the
10953      condition string.  */
10954   *arg = skip_spaces (*arg);
10955   cond_string = *arg;
10956
10957   /* Assume that the condition occupies the remainder of the arg
10958      string.  */
10959   (*arg) += strlen (cond_string);
10960
10961   return cond_string;
10962 }
10963
10964 /* Commands to deal with catching events, such as signals, exceptions,
10965    process start/exit, etc.  */
10966
10967 typedef enum
10968 {
10969   catch_fork_temporary, catch_vfork_temporary,
10970   catch_fork_permanent, catch_vfork_permanent
10971 }
10972 catch_fork_kind;
10973
10974 static void
10975 catch_fork_command_1 (char *arg, int from_tty, 
10976                       struct cmd_list_element *command)
10977 {
10978   struct gdbarch *gdbarch = get_current_arch ();
10979   char *cond_string = NULL;
10980   catch_fork_kind fork_kind;
10981   int tempflag;
10982
10983   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
10984   tempflag = (fork_kind == catch_fork_temporary
10985               || fork_kind == catch_vfork_temporary);
10986
10987   if (!arg)
10988     arg = "";
10989   arg = skip_spaces (arg);
10990
10991   /* The allowed syntax is:
10992      catch [v]fork
10993      catch [v]fork if <cond>
10994
10995      First, check if there's an if clause.  */
10996   cond_string = ep_parse_optional_if_clause (&arg);
10997
10998   if ((*arg != '\0') && !isspace (*arg))
10999     error (_("Junk at end of arguments."));
11000
11001   /* If this target supports it, create a fork or vfork catchpoint
11002      and enable reporting of such events.  */
11003   switch (fork_kind)
11004     {
11005     case catch_fork_temporary:
11006     case catch_fork_permanent:
11007       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11008                                           &catch_fork_breakpoint_ops);
11009       break;
11010     case catch_vfork_temporary:
11011     case catch_vfork_permanent:
11012       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11013                                           &catch_vfork_breakpoint_ops);
11014       break;
11015     default:
11016       error (_("unsupported or unknown fork kind; cannot catch it"));
11017       break;
11018     }
11019 }
11020
11021 static void
11022 catch_exec_command_1 (char *arg, int from_tty, 
11023                       struct cmd_list_element *command)
11024 {
11025   struct exec_catchpoint *c;
11026   struct gdbarch *gdbarch = get_current_arch ();
11027   int tempflag;
11028   char *cond_string = NULL;
11029
11030   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11031
11032   if (!arg)
11033     arg = "";
11034   arg = skip_spaces (arg);
11035
11036   /* The allowed syntax is:
11037      catch exec
11038      catch exec if <cond>
11039
11040      First, check if there's an if clause.  */
11041   cond_string = ep_parse_optional_if_clause (&arg);
11042
11043   if ((*arg != '\0') && !isspace (*arg))
11044     error (_("Junk at end of arguments."));
11045
11046   c = XNEW (struct exec_catchpoint);
11047   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11048                    &catch_exec_breakpoint_ops);
11049   c->exec_pathname = NULL;
11050
11051   install_breakpoint (0, &c->base, 1);
11052 }
11053
11054 static enum print_stop_action
11055 print_it_exception_catchpoint (bpstat bs)
11056 {
11057   struct ui_out *uiout = current_uiout;
11058   struct breakpoint *b = bs->breakpoint_at;
11059   int bp_temp, bp_throw;
11060
11061   annotate_catchpoint (b->number);
11062
11063   bp_throw = strstr (b->addr_string, "throw") != NULL;
11064   if (b->loc->address != b->loc->requested_address)
11065     breakpoint_adjustment_warning (b->loc->requested_address,
11066                                    b->loc->address,
11067                                    b->number, 1);
11068   bp_temp = b->disposition == disp_del;
11069   ui_out_text (uiout, 
11070                bp_temp ? "Temporary catchpoint "
11071                        : "Catchpoint ");
11072   if (!ui_out_is_mi_like_p (uiout))
11073     ui_out_field_int (uiout, "bkptno", b->number);
11074   ui_out_text (uiout,
11075                bp_throw ? " (exception thrown), "
11076                         : " (exception caught), ");
11077   if (ui_out_is_mi_like_p (uiout))
11078     {
11079       ui_out_field_string (uiout, "reason", 
11080                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
11081       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
11082       ui_out_field_int (uiout, "bkptno", b->number);
11083     }
11084   return PRINT_SRC_AND_LOC;
11085 }
11086
11087 static void
11088 print_one_exception_catchpoint (struct breakpoint *b, 
11089                                 struct bp_location **last_loc)
11090 {
11091   struct value_print_options opts;
11092   struct ui_out *uiout = current_uiout;
11093
11094   get_user_print_options (&opts);
11095   if (opts.addressprint)
11096     {
11097       annotate_field (4);
11098       if (b->loc == NULL || b->loc->shlib_disabled)
11099         ui_out_field_string (uiout, "addr", "<PENDING>");
11100       else
11101         ui_out_field_core_addr (uiout, "addr",
11102                                 b->loc->gdbarch, b->loc->address);
11103     }
11104   annotate_field (5);
11105   if (b->loc)
11106     *last_loc = b->loc;
11107   if (strstr (b->addr_string, "throw") != NULL)
11108     ui_out_field_string (uiout, "what", "exception throw");
11109   else
11110     ui_out_field_string (uiout, "what", "exception catch");
11111 }
11112
11113 static void
11114 print_mention_exception_catchpoint (struct breakpoint *b)
11115 {
11116   struct ui_out *uiout = current_uiout;
11117   int bp_temp;
11118   int bp_throw;
11119
11120   bp_temp = b->disposition == disp_del;
11121   bp_throw = strstr (b->addr_string, "throw") != NULL;
11122   ui_out_text (uiout, bp_temp ? _("Temporary catchpoint ")
11123                               : _("Catchpoint "));
11124   ui_out_field_int (uiout, "bkptno", b->number);
11125   ui_out_text (uiout, bp_throw ? _(" (throw)")
11126                                : _(" (catch)"));
11127 }
11128
11129 /* Implement the "print_recreate" breakpoint_ops method for throw and
11130    catch catchpoints.  */
11131
11132 static void
11133 print_recreate_exception_catchpoint (struct breakpoint *b, 
11134                                      struct ui_file *fp)
11135 {
11136   int bp_temp;
11137   int bp_throw;
11138
11139   bp_temp = b->disposition == disp_del;
11140   bp_throw = strstr (b->addr_string, "throw") != NULL;
11141   fprintf_unfiltered (fp, bp_temp ? "tcatch " : "catch ");
11142   fprintf_unfiltered (fp, bp_throw ? "throw" : "catch");
11143   print_recreate_thread (b, fp);
11144 }
11145
11146 static struct breakpoint_ops gnu_v3_exception_catchpoint_ops;
11147
11148 static int
11149 handle_gnu_v3_exceptions (int tempflag, char *cond_string,
11150                           enum exception_event_kind ex_event, int from_tty)
11151 {
11152   char *trigger_func_name;
11153  
11154   if (ex_event == EX_EVENT_CATCH)
11155     trigger_func_name = "__cxa_begin_catch";
11156   else
11157     trigger_func_name = "__cxa_throw";
11158
11159   create_breakpoint (get_current_arch (),
11160                      trigger_func_name, cond_string, -1, NULL,
11161                      0 /* condition and thread are valid.  */,
11162                      tempflag, bp_breakpoint,
11163                      0,
11164                      AUTO_BOOLEAN_TRUE /* pending */,
11165                      &gnu_v3_exception_catchpoint_ops, from_tty,
11166                      1 /* enabled */,
11167                      0 /* internal */,
11168                      0);
11169
11170   return 1;
11171 }
11172
11173 /* Deal with "catch catch" and "catch throw" commands.  */
11174
11175 static void
11176 catch_exception_command_1 (enum exception_event_kind ex_event, char *arg,
11177                            int tempflag, int from_tty)
11178 {
11179   char *cond_string = NULL;
11180
11181   if (!arg)
11182     arg = "";
11183   arg = skip_spaces (arg);
11184
11185   cond_string = ep_parse_optional_if_clause (&arg);
11186
11187   if ((*arg != '\0') && !isspace (*arg))
11188     error (_("Junk at end of arguments."));
11189
11190   if (ex_event != EX_EVENT_THROW
11191       && ex_event != EX_EVENT_CATCH)
11192     error (_("Unsupported or unknown exception event; cannot catch it"));
11193
11194   if (handle_gnu_v3_exceptions (tempflag, cond_string, ex_event, from_tty))
11195     return;
11196
11197   warning (_("Unsupported with this platform/compiler combination."));
11198 }
11199
11200 /* Implementation of "catch catch" command.  */
11201
11202 static void
11203 catch_catch_command (char *arg, int from_tty, struct cmd_list_element *command)
11204 {
11205   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11206
11207   catch_exception_command_1 (EX_EVENT_CATCH, arg, tempflag, from_tty);
11208 }
11209
11210 /* Implementation of "catch throw" command.  */
11211
11212 static void
11213 catch_throw_command (char *arg, int from_tty, struct cmd_list_element *command)
11214 {
11215   int tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11216
11217   catch_exception_command_1 (EX_EVENT_THROW, arg, tempflag, from_tty);
11218 }
11219
11220 void
11221 init_ada_exception_breakpoint (struct breakpoint *b,
11222                                struct gdbarch *gdbarch,
11223                                struct symtab_and_line sal,
11224                                char *addr_string,
11225                                const struct breakpoint_ops *ops,
11226                                int tempflag,
11227                                int from_tty)
11228 {
11229   if (from_tty)
11230     {
11231       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11232       if (!loc_gdbarch)
11233         loc_gdbarch = gdbarch;
11234
11235       describe_other_breakpoints (loc_gdbarch,
11236                                   sal.pspace, sal.pc, sal.section, -1);
11237       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11238          version for exception catchpoints, because two catchpoints
11239          used for different exception names will use the same address.
11240          In this case, a "breakpoint ... also set at..." warning is
11241          unproductive.  Besides, the warning phrasing is also a bit
11242          inappropriate, we should use the word catchpoint, and tell
11243          the user what type of catchpoint it is.  The above is good
11244          enough for now, though.  */
11245     }
11246
11247   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11248
11249   b->enable_state = bp_enabled;
11250   b->disposition = tempflag ? disp_del : disp_donttouch;
11251   b->addr_string = addr_string;
11252   b->language = language_ada;
11253 }
11254
11255 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11256    filter list, or NULL if no filtering is required.  */
11257 static VEC(int) *
11258 catch_syscall_split_args (char *arg)
11259 {
11260   VEC(int) *result = NULL;
11261   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11262
11263   while (*arg != '\0')
11264     {
11265       int i, syscall_number;
11266       char *endptr;
11267       char cur_name[128];
11268       struct syscall s;
11269
11270       /* Skip whitespace.  */
11271       while (isspace (*arg))
11272         arg++;
11273
11274       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11275         cur_name[i] = arg[i];
11276       cur_name[i] = '\0';
11277       arg += i;
11278
11279       /* Check if the user provided a syscall name or a number.  */
11280       syscall_number = (int) strtol (cur_name, &endptr, 0);
11281       if (*endptr == '\0')
11282         get_syscall_by_number (syscall_number, &s);
11283       else
11284         {
11285           /* We have a name.  Let's check if it's valid and convert it
11286              to a number.  */
11287           get_syscall_by_name (cur_name, &s);
11288
11289           if (s.number == UNKNOWN_SYSCALL)
11290             /* Here we have to issue an error instead of a warning,
11291                because GDB cannot do anything useful if there's no
11292                syscall number to be caught.  */
11293             error (_("Unknown syscall name '%s'."), cur_name);
11294         }
11295
11296       /* Ok, it's valid.  */
11297       VEC_safe_push (int, result, s.number);
11298     }
11299
11300   discard_cleanups (cleanup);
11301   return result;
11302 }
11303
11304 /* Implement the "catch syscall" command.  */
11305
11306 static void
11307 catch_syscall_command_1 (char *arg, int from_tty, 
11308                          struct cmd_list_element *command)
11309 {
11310   int tempflag;
11311   VEC(int) *filter;
11312   struct syscall s;
11313   struct gdbarch *gdbarch = get_current_arch ();
11314
11315   /* Checking if the feature if supported.  */
11316   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11317     error (_("The feature 'catch syscall' is not supported on \
11318 this architecture yet."));
11319
11320   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11321
11322   arg = skip_spaces (arg);
11323
11324   /* We need to do this first "dummy" translation in order
11325      to get the syscall XML file loaded or, most important,
11326      to display a warning to the user if there's no XML file
11327      for his/her architecture.  */
11328   get_syscall_by_number (0, &s);
11329
11330   /* The allowed syntax is:
11331      catch syscall
11332      catch syscall <name | number> [<name | number> ... <name | number>]
11333
11334      Let's check if there's a syscall name.  */
11335
11336   if (arg != NULL)
11337     filter = catch_syscall_split_args (arg);
11338   else
11339     filter = NULL;
11340
11341   create_syscall_event_catchpoint (tempflag, filter,
11342                                    &catch_syscall_breakpoint_ops);
11343 }
11344
11345 static void
11346 catch_command (char *arg, int from_tty)
11347 {
11348   error (_("Catch requires an event name."));
11349 }
11350 \f
11351
11352 static void
11353 tcatch_command (char *arg, int from_tty)
11354 {
11355   error (_("Catch requires an event name."));
11356 }
11357
11358 /* A qsort comparison function that sorts breakpoints in order.  */
11359
11360 static int
11361 compare_breakpoints (const void *a, const void *b)
11362 {
11363   const breakpoint_p *ba = a;
11364   uintptr_t ua = (uintptr_t) *ba;
11365   const breakpoint_p *bb = b;
11366   uintptr_t ub = (uintptr_t) *bb;
11367
11368   if ((*ba)->number < (*bb)->number)
11369     return -1;
11370   else if ((*ba)->number > (*bb)->number)
11371     return 1;
11372
11373   /* Now sort by address, in case we see, e..g, two breakpoints with
11374      the number 0.  */
11375   if (ua < ub)
11376     return -1;
11377   return ub > ub ? 1 : 0;
11378 }
11379
11380 /* Delete breakpoints by address or line.  */
11381
11382 static void
11383 clear_command (char *arg, int from_tty)
11384 {
11385   struct breakpoint *b, *prev;
11386   VEC(breakpoint_p) *found = 0;
11387   int ix;
11388   int default_match;
11389   struct symtabs_and_lines sals;
11390   struct symtab_and_line sal;
11391   int i;
11392   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11393
11394   if (arg)
11395     {
11396       sals = decode_line_spec (arg, (DECODE_LINE_FUNFIRSTLINE
11397                                      | DECODE_LINE_LIST_MODE));
11398       default_match = 0;
11399     }
11400   else
11401     {
11402       sals.sals = (struct symtab_and_line *)
11403         xmalloc (sizeof (struct symtab_and_line));
11404       make_cleanup (xfree, sals.sals);
11405       init_sal (&sal);          /* Initialize to zeroes.  */
11406
11407       /* Set sal's line, symtab, pc, and pspace to the values
11408          corresponding to the last call to print_frame_info.  If the
11409          codepoint is not valid, this will set all the fields to 0.  */
11410       get_last_displayed_sal (&sal);
11411       if (sal.symtab == 0)
11412         error (_("No source file specified."));
11413
11414       sals.sals[0] = sal;
11415       sals.nelts = 1;
11416
11417       default_match = 1;
11418     }
11419
11420   /* We don't call resolve_sal_pc here.  That's not as bad as it
11421      seems, because all existing breakpoints typically have both
11422      file/line and pc set.  So, if clear is given file/line, we can
11423      match this to existing breakpoint without obtaining pc at all.
11424
11425      We only support clearing given the address explicitly 
11426      present in breakpoint table.  Say, we've set breakpoint 
11427      at file:line.  There were several PC values for that file:line,
11428      due to optimization, all in one block.
11429
11430      We've picked one PC value.  If "clear" is issued with another
11431      PC corresponding to the same file:line, the breakpoint won't
11432      be cleared.  We probably can still clear the breakpoint, but 
11433      since the other PC value is never presented to user, user
11434      can only find it by guessing, and it does not seem important
11435      to support that.  */
11436
11437   /* For each line spec given, delete bps which correspond to it.  Do
11438      it in two passes, solely to preserve the current behavior that
11439      from_tty is forced true if we delete more than one
11440      breakpoint.  */
11441
11442   found = NULL;
11443   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11444   for (i = 0; i < sals.nelts; i++)
11445     {
11446       int is_abs, sal_name_len;
11447
11448       /* If exact pc given, clear bpts at that pc.
11449          If line given (pc == 0), clear all bpts on specified line.
11450          If defaulting, clear all bpts on default line
11451          or at default pc.
11452
11453          defaulting    sal.pc != 0    tests to do
11454
11455          0              1             pc
11456          1              1             pc _and_ line
11457          0              0             line
11458          1              0             <can't happen> */
11459
11460       sal = sals.sals[i];
11461       is_abs = sal.symtab == NULL ? 1 : IS_ABSOLUTE_PATH (sal.symtab->filename);
11462       sal_name_len = is_abs ? 0 : strlen (sal.symtab->filename);
11463
11464       /* Find all matching breakpoints and add them to 'found'.  */
11465       ALL_BREAKPOINTS (b)
11466         {
11467           int match = 0;
11468           /* Are we going to delete b?  */
11469           if (b->type != bp_none && !is_watchpoint (b))
11470             {
11471               struct bp_location *loc = b->loc;
11472               for (; loc; loc = loc->next)
11473                 {
11474                   /* If the user specified file:line, don't allow a PC
11475                      match.  This matches historical gdb behavior.  */
11476                   int pc_match = (!sal.explicit_line
11477                                   && sal.pc
11478                                   && (loc->pspace == sal.pspace)
11479                                   && (loc->address == sal.pc)
11480                                   && (!section_is_overlay (loc->section)
11481                                       || loc->section == sal.section));
11482                   int line_match = 0;
11483
11484                   if ((default_match || sal.explicit_line)
11485                       && loc->source_file != NULL
11486                       && sal.symtab != NULL
11487                       && sal.pspace == loc->pspace
11488                       && loc->line_number == sal.line)
11489                     {
11490                       if (filename_cmp (loc->source_file,
11491                                         sal.symtab->filename) == 0)
11492                         line_match = 1;
11493                       else if (!IS_ABSOLUTE_PATH (sal.symtab->filename)
11494                                && compare_filenames_for_search (loc->source_file,
11495                                                                 sal.symtab->filename,
11496                                                                 sal_name_len))
11497                         line_match = 1;
11498                     }
11499
11500                   if (pc_match || line_match)
11501                     {
11502                       match = 1;
11503                       break;
11504                     }
11505                 }
11506             }
11507
11508           if (match)
11509             VEC_safe_push(breakpoint_p, found, b);
11510         }
11511     }
11512
11513   /* Now go thru the 'found' chain and delete them.  */
11514   if (VEC_empty(breakpoint_p, found))
11515     {
11516       if (arg)
11517         error (_("No breakpoint at %s."), arg);
11518       else
11519         error (_("No breakpoint at this line."));
11520     }
11521
11522   /* Remove duplicates from the vec.  */
11523   qsort (VEC_address (breakpoint_p, found),
11524          VEC_length (breakpoint_p, found),
11525          sizeof (breakpoint_p),
11526          compare_breakpoints);
11527   prev = VEC_index (breakpoint_p, found, 0);
11528   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11529     {
11530       if (b == prev)
11531         {
11532           VEC_ordered_remove (breakpoint_p, found, ix);
11533           --ix;
11534         }
11535     }
11536
11537   if (VEC_length(breakpoint_p, found) > 1)
11538     from_tty = 1;       /* Always report if deleted more than one.  */
11539   if (from_tty)
11540     {
11541       if (VEC_length(breakpoint_p, found) == 1)
11542         printf_unfiltered (_("Deleted breakpoint "));
11543       else
11544         printf_unfiltered (_("Deleted breakpoints "));
11545     }
11546   breakpoints_changed ();
11547
11548   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11549     {
11550       if (from_tty)
11551         printf_unfiltered ("%d ", b->number);
11552       delete_breakpoint (b);
11553     }
11554   if (from_tty)
11555     putchar_unfiltered ('\n');
11556
11557   do_cleanups (cleanups);
11558 }
11559 \f
11560 /* Delete breakpoint in BS if they are `delete' breakpoints and
11561    all breakpoints that are marked for deletion, whether hit or not.
11562    This is called after any breakpoint is hit, or after errors.  */
11563
11564 void
11565 breakpoint_auto_delete (bpstat bs)
11566 {
11567   struct breakpoint *b, *b_tmp;
11568
11569   for (; bs; bs = bs->next)
11570     if (bs->breakpoint_at
11571         && bs->breakpoint_at->disposition == disp_del
11572         && bs->stop)
11573       delete_breakpoint (bs->breakpoint_at);
11574
11575   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11576   {
11577     if (b->disposition == disp_del_at_next_stop)
11578       delete_breakpoint (b);
11579   }
11580 }
11581
11582 /* A comparison function for bp_location AP and BP being interfaced to
11583    qsort.  Sort elements primarily by their ADDRESS (no matter what
11584    does breakpoint_address_is_meaningful say for its OWNER),
11585    secondarily by ordering first bp_permanent OWNERed elements and
11586    terciarily just ensuring the array is sorted stable way despite
11587    qsort being an unstable algorithm.  */
11588
11589 static int
11590 bp_location_compare (const void *ap, const void *bp)
11591 {
11592   struct bp_location *a = *(void **) ap;
11593   struct bp_location *b = *(void **) bp;
11594   /* A and B come from existing breakpoints having non-NULL OWNER.  */
11595   int a_perm = a->owner->enable_state == bp_permanent;
11596   int b_perm = b->owner->enable_state == bp_permanent;
11597
11598   if (a->address != b->address)
11599     return (a->address > b->address) - (a->address < b->address);
11600
11601   /* Sort locations at the same address by their pspace number, keeping
11602      locations of the same inferior (in a multi-inferior environment)
11603      grouped.  */
11604
11605   if (a->pspace->num != b->pspace->num)
11606     return ((a->pspace->num > b->pspace->num)
11607             - (a->pspace->num < b->pspace->num));
11608
11609   /* Sort permanent breakpoints first.  */
11610   if (a_perm != b_perm)
11611     return (a_perm < b_perm) - (a_perm > b_perm);
11612
11613   /* Make the internal GDB representation stable across GDB runs
11614      where A and B memory inside GDB can differ.  Breakpoint locations of
11615      the same type at the same address can be sorted in arbitrary order.  */
11616
11617   if (a->owner->number != b->owner->number)
11618     return ((a->owner->number > b->owner->number)
11619             - (a->owner->number < b->owner->number));
11620
11621   return (a > b) - (a < b);
11622 }
11623
11624 /* Set bp_location_placed_address_before_address_max and
11625    bp_location_shadow_len_after_address_max according to the current
11626    content of the bp_location array.  */
11627
11628 static void
11629 bp_location_target_extensions_update (void)
11630 {
11631   struct bp_location *bl, **blp_tmp;
11632
11633   bp_location_placed_address_before_address_max = 0;
11634   bp_location_shadow_len_after_address_max = 0;
11635
11636   ALL_BP_LOCATIONS (bl, blp_tmp)
11637     {
11638       CORE_ADDR start, end, addr;
11639
11640       if (!bp_location_has_shadow (bl))
11641         continue;
11642
11643       start = bl->target_info.placed_address;
11644       end = start + bl->target_info.shadow_len;
11645
11646       gdb_assert (bl->address >= start);
11647       addr = bl->address - start;
11648       if (addr > bp_location_placed_address_before_address_max)
11649         bp_location_placed_address_before_address_max = addr;
11650
11651       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
11652
11653       gdb_assert (bl->address < end);
11654       addr = end - bl->address;
11655       if (addr > bp_location_shadow_len_after_address_max)
11656         bp_location_shadow_len_after_address_max = addr;
11657     }
11658 }
11659
11660 /* Download tracepoint locations if they haven't been.  */
11661
11662 static void
11663 download_tracepoint_locations (void)
11664 {
11665   struct bp_location *bl, **blp_tmp;
11666   struct cleanup *old_chain;
11667
11668   if (!target_can_download_tracepoint ())
11669     return;
11670
11671   old_chain = save_current_space_and_thread ();
11672
11673   ALL_BP_LOCATIONS (bl, blp_tmp)
11674     {
11675       struct tracepoint *t;
11676
11677       if (!is_tracepoint (bl->owner))
11678         continue;
11679
11680       if ((bl->owner->type == bp_fast_tracepoint
11681            ? !may_insert_fast_tracepoints
11682            : !may_insert_tracepoints))
11683         continue;
11684
11685       /* In tracepoint, locations are _never_ duplicated, so
11686          should_be_inserted is equivalent to
11687          unduplicated_should_be_inserted.  */
11688       if (!should_be_inserted (bl) || bl->inserted)
11689         continue;
11690
11691       switch_to_program_space_and_thread (bl->pspace);
11692
11693       target_download_tracepoint (bl);
11694
11695       bl->inserted = 1;
11696       t = (struct tracepoint *) bl->owner;
11697       t->number_on_target = bl->owner->number;
11698     }
11699
11700   do_cleanups (old_chain);
11701 }
11702
11703 /* Swap the insertion/duplication state between two locations.  */
11704
11705 static void
11706 swap_insertion (struct bp_location *left, struct bp_location *right)
11707 {
11708   const int left_inserted = left->inserted;
11709   const int left_duplicate = left->duplicate;
11710   const int left_needs_update = left->needs_update;
11711   const struct bp_target_info left_target_info = left->target_info;
11712
11713   /* Locations of tracepoints can never be duplicated.  */
11714   if (is_tracepoint (left->owner))
11715     gdb_assert (!left->duplicate);
11716   if (is_tracepoint (right->owner))
11717     gdb_assert (!right->duplicate);
11718
11719   left->inserted = right->inserted;
11720   left->duplicate = right->duplicate;
11721   left->needs_update = right->needs_update;
11722   left->target_info = right->target_info;
11723   right->inserted = left_inserted;
11724   right->duplicate = left_duplicate;
11725   right->needs_update = left_needs_update;
11726   right->target_info = left_target_info;
11727 }
11728
11729 /* Force the re-insertion of the locations at ADDRESS.  This is called
11730    once a new/deleted/modified duplicate location is found and we are evaluating
11731    conditions on the target's side.  Such conditions need to be updated on
11732    the target.  */
11733
11734 static void
11735 force_breakpoint_reinsertion (struct bp_location *bl)
11736 {
11737   struct bp_location **locp = NULL, **loc2p;
11738   struct bp_location *loc;
11739   CORE_ADDR address = 0;
11740   int pspace_num;
11741
11742   address = bl->address;
11743   pspace_num = bl->pspace->num;
11744
11745   /* This is only meaningful if the target is
11746      evaluating conditions and if the user has
11747      opted for condition evaluation on the target's
11748      side.  */
11749   if (gdb_evaluates_breakpoint_condition_p ()
11750       || !target_supports_evaluation_of_breakpoint_conditions ())
11751     return;
11752
11753   /* Flag all breakpoint locations with this address and
11754      the same program space as the location
11755      as "its condition has changed".  We need to
11756      update the conditions on the target's side.  */
11757   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
11758     {
11759       loc = *loc2p;
11760
11761       if (!is_breakpoint (loc->owner)
11762           || pspace_num != loc->pspace->num)
11763         continue;
11764
11765       /* Flag the location appropriately.  We use a different state to
11766          let everyone know that we already updated the set of locations
11767          with addr bl->address and program space bl->pspace.  This is so
11768          we don't have to keep calling these functions just to mark locations
11769          that have already been marked.  */
11770       loc->condition_changed = condition_updated;
11771
11772       /* Free the agent expression bytecode as well.  We will compute
11773          it later on.  */
11774       if (loc->cond_bytecode)
11775         {
11776           free_agent_expr (loc->cond_bytecode);
11777           loc->cond_bytecode = NULL;
11778         }
11779     }
11780 }
11781
11782 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
11783    into the inferior, only remove already-inserted locations that no
11784    longer should be inserted.  Functions that delete a breakpoint or
11785    breakpoints should pass false, so that deleting a breakpoint
11786    doesn't have the side effect of inserting the locations of other
11787    breakpoints that are marked not-inserted, but should_be_inserted
11788    returns true on them.
11789
11790    This behaviour is useful is situations close to tear-down -- e.g.,
11791    after an exec, while the target still has execution, but breakpoint
11792    shadows of the previous executable image should *NOT* be restored
11793    to the new image; or before detaching, where the target still has
11794    execution and wants to delete breakpoints from GDB's lists, and all
11795    breakpoints had already been removed from the inferior.  */
11796
11797 static void
11798 update_global_location_list (int should_insert)
11799 {
11800   struct breakpoint *b;
11801   struct bp_location **locp, *loc;
11802   struct cleanup *cleanups;
11803   /* Last breakpoint location address that was marked for update.  */
11804   CORE_ADDR last_addr = 0;
11805   /* Last breakpoint location program space that was marked for update.  */
11806   int last_pspace_num = -1;
11807
11808   /* Used in the duplicates detection below.  When iterating over all
11809      bp_locations, points to the first bp_location of a given address.
11810      Breakpoints and watchpoints of different types are never
11811      duplicates of each other.  Keep one pointer for each type of
11812      breakpoint/watchpoint, so we only need to loop over all locations
11813      once.  */
11814   struct bp_location *bp_loc_first;  /* breakpoint */
11815   struct bp_location *wp_loc_first;  /* hardware watchpoint */
11816   struct bp_location *awp_loc_first; /* access watchpoint */
11817   struct bp_location *rwp_loc_first; /* read watchpoint */
11818
11819   /* Saved former bp_location array which we compare against the newly
11820      built bp_location from the current state of ALL_BREAKPOINTS.  */
11821   struct bp_location **old_location, **old_locp;
11822   unsigned old_location_count;
11823
11824   old_location = bp_location;
11825   old_location_count = bp_location_count;
11826   bp_location = NULL;
11827   bp_location_count = 0;
11828   cleanups = make_cleanup (xfree, old_location);
11829
11830   ALL_BREAKPOINTS (b)
11831     for (loc = b->loc; loc; loc = loc->next)
11832       bp_location_count++;
11833
11834   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
11835   locp = bp_location;
11836   ALL_BREAKPOINTS (b)
11837     for (loc = b->loc; loc; loc = loc->next)
11838       *locp++ = loc;
11839   qsort (bp_location, bp_location_count, sizeof (*bp_location),
11840          bp_location_compare);
11841
11842   bp_location_target_extensions_update ();
11843
11844   /* Identify bp_location instances that are no longer present in the
11845      new list, and therefore should be freed.  Note that it's not
11846      necessary that those locations should be removed from inferior --
11847      if there's another location at the same address (previously
11848      marked as duplicate), we don't need to remove/insert the
11849      location.
11850      
11851      LOCP is kept in sync with OLD_LOCP, each pointing to the current
11852      and former bp_location array state respectively.  */
11853
11854   locp = bp_location;
11855   for (old_locp = old_location; old_locp < old_location + old_location_count;
11856        old_locp++)
11857     {
11858       struct bp_location *old_loc = *old_locp;
11859       struct bp_location **loc2p;
11860
11861       /* Tells if 'old_loc' is found among the new locations.  If
11862          not, we have to free it.  */
11863       int found_object = 0;
11864       /* Tells if the location should remain inserted in the target.  */
11865       int keep_in_target = 0;
11866       int removed = 0;
11867
11868       /* Skip LOCP entries which will definitely never be needed.
11869          Stop either at or being the one matching OLD_LOC.  */
11870       while (locp < bp_location + bp_location_count
11871              && (*locp)->address < old_loc->address)
11872         locp++;
11873
11874       for (loc2p = locp;
11875            (loc2p < bp_location + bp_location_count
11876             && (*loc2p)->address == old_loc->address);
11877            loc2p++)
11878         {
11879           /* Check if this is a new/duplicated location or a duplicated
11880              location that had its condition modified.  If so, we want to send
11881              its condition to the target if evaluation of conditions is taking
11882              place there.  */
11883           if ((*loc2p)->condition_changed == condition_modified
11884               && (last_addr != old_loc->address
11885                   || last_pspace_num != old_loc->pspace->num))
11886             {
11887               force_breakpoint_reinsertion (*loc2p);
11888               last_pspace_num = old_loc->pspace->num;
11889             }
11890
11891           if (*loc2p == old_loc)
11892             found_object = 1;
11893         }
11894
11895       /* We have already handled this address, update it so that we don't
11896          have to go through updates again.  */
11897       last_addr = old_loc->address;
11898
11899       /* Target-side condition evaluation: Handle deleted locations.  */
11900       if (!found_object)
11901         force_breakpoint_reinsertion (old_loc);
11902
11903       /* If this location is no longer present, and inserted, look if
11904          there's maybe a new location at the same address.  If so,
11905          mark that one inserted, and don't remove this one.  This is
11906          needed so that we don't have a time window where a breakpoint
11907          at certain location is not inserted.  */
11908
11909       if (old_loc->inserted)
11910         {
11911           /* If the location is inserted now, we might have to remove
11912              it.  */
11913
11914           if (found_object && should_be_inserted (old_loc))
11915             {
11916               /* The location is still present in the location list,
11917                  and still should be inserted.  Don't do anything.  */
11918               keep_in_target = 1;
11919             }
11920           else
11921             {
11922               /* This location still exists, but it won't be kept in the
11923                  target since it may have been disabled.  We proceed to
11924                  remove its target-side condition.  */
11925
11926               /* The location is either no longer present, or got
11927                  disabled.  See if there's another location at the
11928                  same address, in which case we don't need to remove
11929                  this one from the target.  */
11930
11931               /* OLD_LOC comes from existing struct breakpoint.  */
11932               if (breakpoint_address_is_meaningful (old_loc->owner))
11933                 {
11934                   for (loc2p = locp;
11935                        (loc2p < bp_location + bp_location_count
11936                         && (*loc2p)->address == old_loc->address);
11937                        loc2p++)
11938                     {
11939                       struct bp_location *loc2 = *loc2p;
11940
11941                       if (breakpoint_locations_match (loc2, old_loc))
11942                         {
11943                           /* Read watchpoint locations are switched to
11944                              access watchpoints, if the former are not
11945                              supported, but the latter are.  */
11946                           if (is_hardware_watchpoint (old_loc->owner))
11947                             {
11948                               gdb_assert (is_hardware_watchpoint (loc2->owner));
11949                               loc2->watchpoint_type = old_loc->watchpoint_type;
11950                             }
11951
11952                           /* loc2 is a duplicated location. We need to check
11953                              if it should be inserted in case it will be
11954                              unduplicated.  */
11955                           if (loc2 != old_loc
11956                               && unduplicated_should_be_inserted (loc2))
11957                             {
11958                               swap_insertion (old_loc, loc2);
11959                               keep_in_target = 1;
11960                               break;
11961                             }
11962                         }
11963                     }
11964                 }
11965             }
11966
11967           if (!keep_in_target)
11968             {
11969               if (remove_breakpoint (old_loc, mark_uninserted))
11970                 {
11971                   /* This is just about all we can do.  We could keep
11972                      this location on the global list, and try to
11973                      remove it next time, but there's no particular
11974                      reason why we will succeed next time.
11975                      
11976                      Note that at this point, old_loc->owner is still
11977                      valid, as delete_breakpoint frees the breakpoint
11978                      only after calling us.  */
11979                   printf_filtered (_("warning: Error removing "
11980                                      "breakpoint %d\n"), 
11981                                    old_loc->owner->number);
11982                 }
11983               removed = 1;
11984             }
11985         }
11986
11987       if (!found_object)
11988         {
11989           if (removed && non_stop
11990               && breakpoint_address_is_meaningful (old_loc->owner)
11991               && !is_hardware_watchpoint (old_loc->owner))
11992             {
11993               /* This location was removed from the target.  In
11994                  non-stop mode, a race condition is possible where
11995                  we've removed a breakpoint, but stop events for that
11996                  breakpoint are already queued and will arrive later.
11997                  We apply an heuristic to be able to distinguish such
11998                  SIGTRAPs from other random SIGTRAPs: we keep this
11999                  breakpoint location for a bit, and will retire it
12000                  after we see some number of events.  The theory here
12001                  is that reporting of events should, "on the average",
12002                  be fair, so after a while we'll see events from all
12003                  threads that have anything of interest, and no longer
12004                  need to keep this breakpoint location around.  We
12005                  don't hold locations forever so to reduce chances of
12006                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12007                  SIGTRAP.
12008
12009                  The heuristic failing can be disastrous on
12010                  decr_pc_after_break targets.
12011
12012                  On decr_pc_after_break targets, like e.g., x86-linux,
12013                  if we fail to recognize a late breakpoint SIGTRAP,
12014                  because events_till_retirement has reached 0 too
12015                  soon, we'll fail to do the PC adjustment, and report
12016                  a random SIGTRAP to the user.  When the user resumes
12017                  the inferior, it will most likely immediately crash
12018                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12019                  corrupted, because of being resumed e.g., in the
12020                  middle of a multi-byte instruction, or skipped a
12021                  one-byte instruction.  This was actually seen happen
12022                  on native x86-linux, and should be less rare on
12023                  targets that do not support new thread events, like
12024                  remote, due to the heuristic depending on
12025                  thread_count.
12026
12027                  Mistaking a random SIGTRAP for a breakpoint trap
12028                  causes similar symptoms (PC adjustment applied when
12029                  it shouldn't), but then again, playing with SIGTRAPs
12030                  behind the debugger's back is asking for trouble.
12031
12032                  Since hardware watchpoint traps are always
12033                  distinguishable from other traps, so we don't need to
12034                  apply keep hardware watchpoint moribund locations
12035                  around.  We simply always ignore hardware watchpoint
12036                  traps we can no longer explain.  */
12037
12038               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12039               old_loc->owner = NULL;
12040
12041               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12042             }
12043           else
12044             {
12045               old_loc->owner = NULL;
12046               decref_bp_location (&old_loc);
12047             }
12048         }
12049     }
12050
12051   /* Rescan breakpoints at the same address and section, marking the
12052      first one as "first" and any others as "duplicates".  This is so
12053      that the bpt instruction is only inserted once.  If we have a
12054      permanent breakpoint at the same place as BPT, make that one the
12055      official one, and the rest as duplicates.  Permanent breakpoints
12056      are sorted first for the same address.
12057
12058      Do the same for hardware watchpoints, but also considering the
12059      watchpoint's type (regular/access/read) and length.  */
12060
12061   bp_loc_first = NULL;
12062   wp_loc_first = NULL;
12063   awp_loc_first = NULL;
12064   rwp_loc_first = NULL;
12065   ALL_BP_LOCATIONS (loc, locp)
12066     {
12067       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12068          non-NULL.  */
12069       struct bp_location **loc_first_p;
12070       b = loc->owner;
12071
12072       if (!should_be_inserted (loc)
12073           || !breakpoint_address_is_meaningful (b)
12074           /* Don't detect duplicate for tracepoint locations because they are
12075            never duplicated.  See the comments in field `duplicate' of
12076            `struct bp_location'.  */
12077           || is_tracepoint (b))
12078         {
12079           /* Clear the condition modification flag.  */
12080           loc->condition_changed = condition_unchanged;
12081           continue;
12082         }
12083
12084       /* Permanent breakpoint should always be inserted.  */
12085       if (b->enable_state == bp_permanent && ! loc->inserted)
12086         internal_error (__FILE__, __LINE__,
12087                         _("allegedly permanent breakpoint is not "
12088                         "actually inserted"));
12089
12090       if (b->type == bp_hardware_watchpoint)
12091         loc_first_p = &wp_loc_first;
12092       else if (b->type == bp_read_watchpoint)
12093         loc_first_p = &rwp_loc_first;
12094       else if (b->type == bp_access_watchpoint)
12095         loc_first_p = &awp_loc_first;
12096       else
12097         loc_first_p = &bp_loc_first;
12098
12099       if (*loc_first_p == NULL
12100           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12101           || !breakpoint_locations_match (loc, *loc_first_p))
12102         {
12103           *loc_first_p = loc;
12104           loc->duplicate = 0;
12105
12106           if (is_breakpoint (loc->owner) && loc->condition_changed)
12107             {
12108               loc->needs_update = 1;
12109               /* Clear the condition modification flag.  */
12110               loc->condition_changed = condition_unchanged;
12111             }
12112           continue;
12113         }
12114
12115
12116       /* This and the above ensure the invariant that the first location
12117          is not duplicated, and is the inserted one.
12118          All following are marked as duplicated, and are not inserted.  */
12119       if (loc->inserted)
12120         swap_insertion (loc, *loc_first_p);
12121       loc->duplicate = 1;
12122
12123       /* Clear the condition modification flag.  */
12124       loc->condition_changed = condition_unchanged;
12125
12126       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12127           && b->enable_state != bp_permanent)
12128         internal_error (__FILE__, __LINE__,
12129                         _("another breakpoint was inserted on top of "
12130                         "a permanent breakpoint"));
12131     }
12132
12133   if (breakpoints_always_inserted_mode ()
12134       && (have_live_inferiors ()
12135           || (gdbarch_has_global_breakpoints (target_gdbarch))))
12136     {
12137       if (should_insert)
12138         insert_breakpoint_locations ();
12139       else
12140         {
12141           /* Though should_insert is false, we may need to update conditions
12142              on the target's side if it is evaluating such conditions.  We
12143              only update conditions for locations that are marked
12144              "needs_update".  */
12145           update_inserted_breakpoint_locations ();
12146         }
12147     }
12148
12149   if (should_insert)
12150     download_tracepoint_locations ();
12151
12152   do_cleanups (cleanups);
12153 }
12154
12155 void
12156 breakpoint_retire_moribund (void)
12157 {
12158   struct bp_location *loc;
12159   int ix;
12160
12161   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12162     if (--(loc->events_till_retirement) == 0)
12163       {
12164         decref_bp_location (&loc);
12165         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12166         --ix;
12167       }
12168 }
12169
12170 static void
12171 update_global_location_list_nothrow (int inserting)
12172 {
12173   volatile struct gdb_exception e;
12174
12175   TRY_CATCH (e, RETURN_MASK_ERROR)
12176     update_global_location_list (inserting);
12177 }
12178
12179 /* Clear BKP from a BPS.  */
12180
12181 static void
12182 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12183 {
12184   bpstat bs;
12185
12186   for (bs = bps; bs; bs = bs->next)
12187     if (bs->breakpoint_at == bpt)
12188       {
12189         bs->breakpoint_at = NULL;
12190         bs->old_val = NULL;
12191         /* bs->commands will be freed later.  */
12192       }
12193 }
12194
12195 /* Callback for iterate_over_threads.  */
12196 static int
12197 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12198 {
12199   struct breakpoint *bpt = data;
12200
12201   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12202   return 0;
12203 }
12204
12205 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12206    callbacks.  */
12207
12208 static void
12209 say_where (struct breakpoint *b)
12210 {
12211   struct ui_out *uiout = current_uiout;
12212   struct value_print_options opts;
12213
12214   get_user_print_options (&opts);
12215
12216   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12217      single string.  */
12218   if (b->loc == NULL)
12219     {
12220       printf_filtered (_(" (%s) pending."), b->addr_string);
12221     }
12222   else
12223     {
12224       if (opts.addressprint || b->loc->source_file == NULL)
12225         {
12226           printf_filtered (" at ");
12227           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12228                           gdb_stdout);
12229         }
12230       if (b->loc->source_file)
12231         {
12232           /* If there is a single location, we can print the location
12233              more nicely.  */
12234           if (b->loc->next == NULL)
12235             printf_filtered (": file %s, line %d.",
12236                              b->loc->source_file, b->loc->line_number);
12237           else
12238             /* This is not ideal, but each location may have a
12239                different file name, and this at least reflects the
12240                real situation somewhat.  */
12241             printf_filtered (": %s.", b->addr_string);
12242         }
12243
12244       if (b->loc->next)
12245         {
12246           struct bp_location *loc = b->loc;
12247           int n = 0;
12248           for (; loc; loc = loc->next)
12249             ++n;
12250           printf_filtered (" (%d locations)", n);
12251         }
12252     }
12253 }
12254
12255 /* Default bp_location_ops methods.  */
12256
12257 static void
12258 bp_location_dtor (struct bp_location *self)
12259 {
12260   xfree (self->cond);
12261   if (self->cond_bytecode)
12262     free_agent_expr (self->cond_bytecode);
12263   xfree (self->function_name);
12264   xfree (self->source_file);
12265 }
12266
12267 static const struct bp_location_ops bp_location_ops =
12268 {
12269   bp_location_dtor
12270 };
12271
12272 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12273    inherit from.  */
12274
12275 static void
12276 base_breakpoint_dtor (struct breakpoint *self)
12277 {
12278   decref_counted_command_line (&self->commands);
12279   xfree (self->cond_string);
12280   xfree (self->addr_string);
12281   xfree (self->filter);
12282   xfree (self->addr_string_range_end);
12283 }
12284
12285 static struct bp_location *
12286 base_breakpoint_allocate_location (struct breakpoint *self)
12287 {
12288   struct bp_location *loc;
12289
12290   loc = XNEW (struct bp_location);
12291   init_bp_location (loc, &bp_location_ops, self);
12292   return loc;
12293 }
12294
12295 static void
12296 base_breakpoint_re_set (struct breakpoint *b)
12297 {
12298   /* Nothing to re-set. */
12299 }
12300
12301 #define internal_error_pure_virtual_called() \
12302   gdb_assert_not_reached ("pure virtual function called")
12303
12304 static int
12305 base_breakpoint_insert_location (struct bp_location *bl)
12306 {
12307   internal_error_pure_virtual_called ();
12308 }
12309
12310 static int
12311 base_breakpoint_remove_location (struct bp_location *bl)
12312 {
12313   internal_error_pure_virtual_called ();
12314 }
12315
12316 static int
12317 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12318                                 struct address_space *aspace,
12319                                 CORE_ADDR bp_addr,
12320                                 const struct target_waitstatus *ws)
12321 {
12322   internal_error_pure_virtual_called ();
12323 }
12324
12325 static void
12326 base_breakpoint_check_status (bpstat bs)
12327 {
12328   /* Always stop.   */
12329 }
12330
12331 /* A "works_in_software_mode" breakpoint_ops method that just internal
12332    errors.  */
12333
12334 static int
12335 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12336 {
12337   internal_error_pure_virtual_called ();
12338 }
12339
12340 /* A "resources_needed" breakpoint_ops method that just internal
12341    errors.  */
12342
12343 static int
12344 base_breakpoint_resources_needed (const struct bp_location *bl)
12345 {
12346   internal_error_pure_virtual_called ();
12347 }
12348
12349 static enum print_stop_action
12350 base_breakpoint_print_it (bpstat bs)
12351 {
12352   internal_error_pure_virtual_called ();
12353 }
12354
12355 static void
12356 base_breakpoint_print_one_detail (const struct breakpoint *self,
12357                                   struct ui_out *uiout)
12358 {
12359   /* nothing */
12360 }
12361
12362 static void
12363 base_breakpoint_print_mention (struct breakpoint *b)
12364 {
12365   internal_error_pure_virtual_called ();
12366 }
12367
12368 static void
12369 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12370 {
12371   internal_error_pure_virtual_called ();
12372 }
12373
12374 static void
12375 base_breakpoint_create_sals_from_address (char **arg,
12376                                           struct linespec_result *canonical,
12377                                           enum bptype type_wanted,
12378                                           char *addr_start,
12379                                           char **copy_arg)
12380 {
12381   internal_error_pure_virtual_called ();
12382 }
12383
12384 static void
12385 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12386                                         struct linespec_result *c,
12387                                         struct linespec_sals *lsal,
12388                                         char *cond_string,
12389                                         char *extra_string,
12390                                         enum bptype type_wanted,
12391                                         enum bpdisp disposition,
12392                                         int thread,
12393                                         int task, int ignore_count,
12394                                         const struct breakpoint_ops *o,
12395                                         int from_tty, int enabled,
12396                                         int internal, unsigned flags)
12397 {
12398   internal_error_pure_virtual_called ();
12399 }
12400
12401 static void
12402 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12403                                  struct symtabs_and_lines *sals)
12404 {
12405   internal_error_pure_virtual_called ();
12406 }
12407
12408 static struct breakpoint_ops base_breakpoint_ops =
12409 {
12410   base_breakpoint_dtor,
12411   base_breakpoint_allocate_location,
12412   base_breakpoint_re_set,
12413   base_breakpoint_insert_location,
12414   base_breakpoint_remove_location,
12415   base_breakpoint_breakpoint_hit,
12416   base_breakpoint_check_status,
12417   base_breakpoint_resources_needed,
12418   base_breakpoint_works_in_software_mode,
12419   base_breakpoint_print_it,
12420   NULL,
12421   base_breakpoint_print_one_detail,
12422   base_breakpoint_print_mention,
12423   base_breakpoint_print_recreate,
12424   base_breakpoint_create_sals_from_address,
12425   base_breakpoint_create_breakpoints_sal,
12426   base_breakpoint_decode_linespec,
12427 };
12428
12429 /* Default breakpoint_ops methods.  */
12430
12431 static void
12432 bkpt_re_set (struct breakpoint *b)
12433 {
12434   /* FIXME: is this still reachable?  */
12435   if (b->addr_string == NULL)
12436     {
12437       /* Anything without a string can't be re-set.  */
12438       delete_breakpoint (b);
12439       return;
12440     }
12441
12442   breakpoint_re_set_default (b);
12443 }
12444
12445 static int
12446 bkpt_insert_location (struct bp_location *bl)
12447 {
12448   if (bl->loc_type == bp_loc_hardware_breakpoint)
12449     return target_insert_hw_breakpoint (bl->gdbarch,
12450                                         &bl->target_info);
12451   else
12452     return target_insert_breakpoint (bl->gdbarch,
12453                                      &bl->target_info);
12454 }
12455
12456 static int
12457 bkpt_remove_location (struct bp_location *bl)
12458 {
12459   if (bl->loc_type == bp_loc_hardware_breakpoint)
12460     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12461   else
12462     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12463 }
12464
12465 static int
12466 bkpt_breakpoint_hit (const struct bp_location *bl,
12467                      struct address_space *aspace, CORE_ADDR bp_addr,
12468                      const struct target_waitstatus *ws)
12469 {
12470   struct breakpoint *b = bl->owner;
12471
12472   if (ws->kind != TARGET_WAITKIND_STOPPED
12473       || ws->value.sig != GDB_SIGNAL_TRAP)
12474     return 0;
12475
12476   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12477                                  aspace, bp_addr))
12478     return 0;
12479
12480   if (overlay_debugging         /* unmapped overlay section */
12481       && section_is_overlay (bl->section)
12482       && !section_is_mapped (bl->section))
12483     return 0;
12484
12485   return 1;
12486 }
12487
12488 static int
12489 bkpt_resources_needed (const struct bp_location *bl)
12490 {
12491   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12492
12493   return 1;
12494 }
12495
12496 static enum print_stop_action
12497 bkpt_print_it (bpstat bs)
12498 {
12499   struct breakpoint *b;
12500   const struct bp_location *bl;
12501   int bp_temp;
12502   struct ui_out *uiout = current_uiout;
12503
12504   gdb_assert (bs->bp_location_at != NULL);
12505
12506   bl = bs->bp_location_at;
12507   b = bs->breakpoint_at;
12508
12509   bp_temp = b->disposition == disp_del;
12510   if (bl->address != bl->requested_address)
12511     breakpoint_adjustment_warning (bl->requested_address,
12512                                    bl->address,
12513                                    b->number, 1);
12514   annotate_breakpoint (b->number);
12515   if (bp_temp)
12516     ui_out_text (uiout, "\nTemporary breakpoint ");
12517   else
12518     ui_out_text (uiout, "\nBreakpoint ");
12519   if (ui_out_is_mi_like_p (uiout))
12520     {
12521       ui_out_field_string (uiout, "reason",
12522                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12523       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12524     }
12525   ui_out_field_int (uiout, "bkptno", b->number);
12526   ui_out_text (uiout, ", ");
12527
12528   return PRINT_SRC_AND_LOC;
12529 }
12530
12531 static void
12532 bkpt_print_mention (struct breakpoint *b)
12533 {
12534   if (ui_out_is_mi_like_p (current_uiout))
12535     return;
12536
12537   switch (b->type)
12538     {
12539     case bp_breakpoint:
12540     case bp_gnu_ifunc_resolver:
12541       if (b->disposition == disp_del)
12542         printf_filtered (_("Temporary breakpoint"));
12543       else
12544         printf_filtered (_("Breakpoint"));
12545       printf_filtered (_(" %d"), b->number);
12546       if (b->type == bp_gnu_ifunc_resolver)
12547         printf_filtered (_(" at gnu-indirect-function resolver"));
12548       break;
12549     case bp_hardware_breakpoint:
12550       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12551       break;
12552     case bp_dprintf:
12553       printf_filtered (_("Dprintf %d"), b->number);
12554       break;
12555     }
12556
12557   say_where (b);
12558 }
12559
12560 static void
12561 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12562 {
12563   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12564     fprintf_unfiltered (fp, "tbreak");
12565   else if (tp->type == bp_breakpoint)
12566     fprintf_unfiltered (fp, "break");
12567   else if (tp->type == bp_hardware_breakpoint
12568            && tp->disposition == disp_del)
12569     fprintf_unfiltered (fp, "thbreak");
12570   else if (tp->type == bp_hardware_breakpoint)
12571     fprintf_unfiltered (fp, "hbreak");
12572   else
12573     internal_error (__FILE__, __LINE__,
12574                     _("unhandled breakpoint type %d"), (int) tp->type);
12575
12576   fprintf_unfiltered (fp, " %s", tp->addr_string);
12577   print_recreate_thread (tp, fp);
12578 }
12579
12580 static void
12581 bkpt_create_sals_from_address (char **arg,
12582                                struct linespec_result *canonical,
12583                                enum bptype type_wanted,
12584                                char *addr_start, char **copy_arg)
12585 {
12586   create_sals_from_address_default (arg, canonical, type_wanted,
12587                                     addr_start, copy_arg);
12588 }
12589
12590 static void
12591 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12592                              struct linespec_result *canonical,
12593                              struct linespec_sals *lsal,
12594                              char *cond_string,
12595                              char *extra_string,
12596                              enum bptype type_wanted,
12597                              enum bpdisp disposition,
12598                              int thread,
12599                              int task, int ignore_count,
12600                              const struct breakpoint_ops *ops,
12601                              int from_tty, int enabled,
12602                              int internal, unsigned flags)
12603 {
12604   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12605                                   cond_string, extra_string,
12606                                   type_wanted,
12607                                   disposition, thread, task,
12608                                   ignore_count, ops, from_tty,
12609                                   enabled, internal, flags);
12610 }
12611
12612 static void
12613 bkpt_decode_linespec (struct breakpoint *b, char **s,
12614                       struct symtabs_and_lines *sals)
12615 {
12616   decode_linespec_default (b, s, sals);
12617 }
12618
12619 /* Virtual table for internal breakpoints.  */
12620
12621 static void
12622 internal_bkpt_re_set (struct breakpoint *b)
12623 {
12624   switch (b->type)
12625     {
12626       /* Delete overlay event and longjmp master breakpoints; they
12627          will be reset later by breakpoint_re_set.  */
12628     case bp_overlay_event:
12629     case bp_longjmp_master:
12630     case bp_std_terminate_master:
12631     case bp_exception_master:
12632       delete_breakpoint (b);
12633       break;
12634
12635       /* This breakpoint is special, it's set up when the inferior
12636          starts and we really don't want to touch it.  */
12637     case bp_shlib_event:
12638
12639       /* Like bp_shlib_event, this breakpoint type is special.  Once
12640          it is set up, we do not want to touch it.  */
12641     case bp_thread_event:
12642       break;
12643     }
12644 }
12645
12646 static void
12647 internal_bkpt_check_status (bpstat bs)
12648 {
12649   if (bs->breakpoint_at->type == bp_shlib_event)
12650     {
12651       /* If requested, stop when the dynamic linker notifies GDB of
12652          events.  This allows the user to get control and place
12653          breakpoints in initializer routines for dynamically loaded
12654          objects (among other things).  */
12655       bs->stop = stop_on_solib_events;
12656       bs->print = stop_on_solib_events;
12657     }
12658   else
12659     bs->stop = 0;
12660 }
12661
12662 static enum print_stop_action
12663 internal_bkpt_print_it (bpstat bs)
12664 {
12665   struct ui_out *uiout = current_uiout;
12666   struct breakpoint *b;
12667
12668   b = bs->breakpoint_at;
12669
12670   switch (b->type)
12671     {
12672     case bp_shlib_event:
12673       /* Did we stop because the user set the stop_on_solib_events
12674          variable?  (If so, we report this as a generic, "Stopped due
12675          to shlib event" message.) */
12676       print_solib_event (0);
12677       break;
12678
12679     case bp_thread_event:
12680       /* Not sure how we will get here.
12681          GDB should not stop for these breakpoints.  */
12682       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
12683       break;
12684
12685     case bp_overlay_event:
12686       /* By analogy with the thread event, GDB should not stop for these.  */
12687       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
12688       break;
12689
12690     case bp_longjmp_master:
12691       /* These should never be enabled.  */
12692       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
12693       break;
12694
12695     case bp_std_terminate_master:
12696       /* These should never be enabled.  */
12697       printf_filtered (_("std::terminate Master Breakpoint: "
12698                          "gdb should not stop!\n"));
12699       break;
12700
12701     case bp_exception_master:
12702       /* These should never be enabled.  */
12703       printf_filtered (_("Exception Master Breakpoint: "
12704                          "gdb should not stop!\n"));
12705       break;
12706     }
12707
12708   return PRINT_NOTHING;
12709 }
12710
12711 static void
12712 internal_bkpt_print_mention (struct breakpoint *b)
12713 {
12714   /* Nothing to mention.  These breakpoints are internal.  */
12715 }
12716
12717 /* Virtual table for momentary breakpoints  */
12718
12719 static void
12720 momentary_bkpt_re_set (struct breakpoint *b)
12721 {
12722   /* Keep temporary breakpoints, which can be encountered when we step
12723      over a dlopen call and SOLIB_ADD is resetting the breakpoints.
12724      Otherwise these should have been blown away via the cleanup chain
12725      or by breakpoint_init_inferior when we rerun the executable.  */
12726 }
12727
12728 static void
12729 momentary_bkpt_check_status (bpstat bs)
12730 {
12731   /* Nothing.  The point of these breakpoints is causing a stop.  */
12732 }
12733
12734 static enum print_stop_action
12735 momentary_bkpt_print_it (bpstat bs)
12736 {
12737   struct ui_out *uiout = current_uiout;
12738
12739   if (ui_out_is_mi_like_p (uiout))
12740     {
12741       struct breakpoint *b = bs->breakpoint_at;
12742
12743       switch (b->type)
12744         {
12745         case bp_finish:
12746           ui_out_field_string
12747             (uiout, "reason",
12748              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
12749           break;
12750
12751         case bp_until:
12752           ui_out_field_string
12753             (uiout, "reason",
12754              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
12755           break;
12756         }
12757     }
12758
12759   return PRINT_UNKNOWN;
12760 }
12761
12762 static void
12763 momentary_bkpt_print_mention (struct breakpoint *b)
12764 {
12765   /* Nothing to mention.  These breakpoints are internal.  */
12766 }
12767
12768 /* Specific methods for probe breakpoints.  */
12769
12770 static int
12771 bkpt_probe_insert_location (struct bp_location *bl)
12772 {
12773   int v = bkpt_insert_location (bl);
12774
12775   if (v == 0)
12776     {
12777       /* The insertion was successful, now let's set the probe's semaphore
12778          if needed.  */
12779       bl->probe->pops->set_semaphore (bl->probe, bl->gdbarch);
12780     }
12781
12782   return v;
12783 }
12784
12785 static int
12786 bkpt_probe_remove_location (struct bp_location *bl)
12787 {
12788   /* Let's clear the semaphore before removing the location.  */
12789   bl->probe->pops->clear_semaphore (bl->probe, bl->gdbarch);
12790
12791   return bkpt_remove_location (bl);
12792 }
12793
12794 static void
12795 bkpt_probe_create_sals_from_address (char **arg,
12796                                      struct linespec_result *canonical,
12797                                      enum bptype type_wanted,
12798                                      char *addr_start, char **copy_arg)
12799 {
12800   struct linespec_sals lsal;
12801
12802   lsal.sals = parse_probes (arg, canonical);
12803
12804   *copy_arg = xstrdup (canonical->addr_string);
12805   lsal.canonical = xstrdup (*copy_arg);
12806
12807   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12808 }
12809
12810 static void
12811 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
12812                             struct symtabs_and_lines *sals)
12813 {
12814   *sals = parse_probes (s, NULL);
12815   if (!sals->sals)
12816     error (_("probe not found"));
12817 }
12818
12819 /* The breakpoint_ops structure to be used in tracepoints.  */
12820
12821 static void
12822 tracepoint_re_set (struct breakpoint *b)
12823 {
12824   breakpoint_re_set_default (b);
12825 }
12826
12827 static int
12828 tracepoint_breakpoint_hit (const struct bp_location *bl,
12829                            struct address_space *aspace, CORE_ADDR bp_addr,
12830                            const struct target_waitstatus *ws)
12831 {
12832   /* By definition, the inferior does not report stops at
12833      tracepoints.  */
12834   return 0;
12835 }
12836
12837 static void
12838 tracepoint_print_one_detail (const struct breakpoint *self,
12839                              struct ui_out *uiout)
12840 {
12841   struct tracepoint *tp = (struct tracepoint *) self;
12842   if (tp->static_trace_marker_id)
12843     {
12844       gdb_assert (self->type == bp_static_tracepoint);
12845
12846       ui_out_text (uiout, "\tmarker id is ");
12847       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
12848                            tp->static_trace_marker_id);
12849       ui_out_text (uiout, "\n");
12850     }
12851 }
12852
12853 static void
12854 tracepoint_print_mention (struct breakpoint *b)
12855 {
12856   if (ui_out_is_mi_like_p (current_uiout))
12857     return;
12858
12859   switch (b->type)
12860     {
12861     case bp_tracepoint:
12862       printf_filtered (_("Tracepoint"));
12863       printf_filtered (_(" %d"), b->number);
12864       break;
12865     case bp_fast_tracepoint:
12866       printf_filtered (_("Fast tracepoint"));
12867       printf_filtered (_(" %d"), b->number);
12868       break;
12869     case bp_static_tracepoint:
12870       printf_filtered (_("Static tracepoint"));
12871       printf_filtered (_(" %d"), b->number);
12872       break;
12873     default:
12874       internal_error (__FILE__, __LINE__,
12875                       _("unhandled tracepoint type %d"), (int) b->type);
12876     }
12877
12878   say_where (b);
12879 }
12880
12881 static void
12882 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
12883 {
12884   struct tracepoint *tp = (struct tracepoint *) self;
12885
12886   if (self->type == bp_fast_tracepoint)
12887     fprintf_unfiltered (fp, "ftrace");
12888   if (self->type == bp_static_tracepoint)
12889     fprintf_unfiltered (fp, "strace");
12890   else if (self->type == bp_tracepoint)
12891     fprintf_unfiltered (fp, "trace");
12892   else
12893     internal_error (__FILE__, __LINE__,
12894                     _("unhandled tracepoint type %d"), (int) self->type);
12895
12896   fprintf_unfiltered (fp, " %s", self->addr_string);
12897   print_recreate_thread (self, fp);
12898
12899   if (tp->pass_count)
12900     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
12901 }
12902
12903 static void
12904 tracepoint_create_sals_from_address (char **arg,
12905                                      struct linespec_result *canonical,
12906                                      enum bptype type_wanted,
12907                                      char *addr_start, char **copy_arg)
12908 {
12909   create_sals_from_address_default (arg, canonical, type_wanted,
12910                                     addr_start, copy_arg);
12911 }
12912
12913 static void
12914 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12915                                    struct linespec_result *canonical,
12916                                    struct linespec_sals *lsal,
12917                                    char *cond_string,
12918                                    char *extra_string,
12919                                    enum bptype type_wanted,
12920                                    enum bpdisp disposition,
12921                                    int thread,
12922                                    int task, int ignore_count,
12923                                    const struct breakpoint_ops *ops,
12924                                    int from_tty, int enabled,
12925                                    int internal, unsigned flags)
12926 {
12927   create_breakpoints_sal_default (gdbarch, canonical, lsal,
12928                                   cond_string, extra_string,
12929                                   type_wanted,
12930                                   disposition, thread, task,
12931                                   ignore_count, ops, from_tty,
12932                                   enabled, internal, flags);
12933 }
12934
12935 static void
12936 tracepoint_decode_linespec (struct breakpoint *b, char **s,
12937                             struct symtabs_and_lines *sals)
12938 {
12939   decode_linespec_default (b, s, sals);
12940 }
12941
12942 struct breakpoint_ops tracepoint_breakpoint_ops;
12943
12944 /* The breakpoint_ops structure to be use on tracepoints placed in a
12945    static probe.  */
12946
12947 static void
12948 tracepoint_probe_create_sals_from_address (char **arg,
12949                                            struct linespec_result *canonical,
12950                                            enum bptype type_wanted,
12951                                            char *addr_start, char **copy_arg)
12952 {
12953   /* We use the same method for breakpoint on probes.  */
12954   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
12955                                        addr_start, copy_arg);
12956 }
12957
12958 static void
12959 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
12960                                   struct symtabs_and_lines *sals)
12961 {
12962   /* We use the same method for breakpoint on probes.  */
12963   bkpt_probe_decode_linespec (b, s, sals);
12964 }
12965
12966 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
12967
12968 /* The breakpoint_ops structure to be used on static tracepoints with
12969    markers (`-m').  */
12970
12971 static void
12972 strace_marker_create_sals_from_address (char **arg,
12973                                         struct linespec_result *canonical,
12974                                         enum bptype type_wanted,
12975                                         char *addr_start, char **copy_arg)
12976 {
12977   struct linespec_sals lsal;
12978
12979   lsal.sals = decode_static_tracepoint_spec (arg);
12980
12981   *copy_arg = savestring (addr_start, *arg - addr_start);
12982
12983   canonical->addr_string = xstrdup (*copy_arg);
12984   lsal.canonical = xstrdup (*copy_arg);
12985   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
12986 }
12987
12988 static void
12989 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
12990                                       struct linespec_result *canonical,
12991                                       struct linespec_sals *lsal,
12992                                       char *cond_string,
12993                                       char *extra_string,
12994                                       enum bptype type_wanted,
12995                                       enum bpdisp disposition,
12996                                       int thread,
12997                                       int task, int ignore_count,
12998                                       const struct breakpoint_ops *ops,
12999                                       int from_tty, int enabled,
13000                                       int internal, unsigned flags)
13001 {
13002   int i;
13003
13004   /* If the user is creating a static tracepoint by marker id
13005      (strace -m MARKER_ID), then store the sals index, so that
13006      breakpoint_re_set can try to match up which of the newly
13007      found markers corresponds to this one, and, don't try to
13008      expand multiple locations for each sal, given than SALS
13009      already should contain all sals for MARKER_ID.  */
13010
13011   for (i = 0; i < lsal->sals.nelts; ++i)
13012     {
13013       struct symtabs_and_lines expanded;
13014       struct tracepoint *tp;
13015       struct cleanup *old_chain;
13016       char *addr_string;
13017
13018       expanded.nelts = 1;
13019       expanded.sals = &lsal->sals.sals[i];
13020
13021       addr_string = xstrdup (canonical->addr_string);
13022       old_chain = make_cleanup (xfree, addr_string);
13023
13024       tp = XCNEW (struct tracepoint);
13025       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13026                            addr_string, NULL,
13027                            cond_string, extra_string,
13028                            type_wanted, disposition,
13029                            thread, task, ignore_count, ops,
13030                            from_tty, enabled, internal, flags,
13031                            canonical->special_display);
13032       /* Given that its possible to have multiple markers with
13033          the same string id, if the user is creating a static
13034          tracepoint by marker id ("strace -m MARKER_ID"), then
13035          store the sals index, so that breakpoint_re_set can
13036          try to match up which of the newly found markers
13037          corresponds to this one  */
13038       tp->static_trace_marker_id_idx = i;
13039
13040       install_breakpoint (internal, &tp->base, 0);
13041
13042       discard_cleanups (old_chain);
13043     }
13044 }
13045
13046 static void
13047 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13048                                struct symtabs_and_lines *sals)
13049 {
13050   struct tracepoint *tp = (struct tracepoint *) b;
13051
13052   *sals = decode_static_tracepoint_spec (s);
13053   if (sals->nelts > tp->static_trace_marker_id_idx)
13054     {
13055       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13056       sals->nelts = 1;
13057     }
13058   else
13059     error (_("marker %s not found"), tp->static_trace_marker_id);
13060 }
13061
13062 static struct breakpoint_ops strace_marker_breakpoint_ops;
13063
13064 static int
13065 strace_marker_p (struct breakpoint *b)
13066 {
13067   return b->ops == &strace_marker_breakpoint_ops;
13068 }
13069
13070 /* Delete a breakpoint and clean up all traces of it in the data
13071    structures.  */
13072
13073 void
13074 delete_breakpoint (struct breakpoint *bpt)
13075 {
13076   struct breakpoint *b;
13077
13078   gdb_assert (bpt != NULL);
13079
13080   /* Has this bp already been deleted?  This can happen because
13081      multiple lists can hold pointers to bp's.  bpstat lists are
13082      especial culprits.
13083
13084      One example of this happening is a watchpoint's scope bp.  When
13085      the scope bp triggers, we notice that the watchpoint is out of
13086      scope, and delete it.  We also delete its scope bp.  But the
13087      scope bp is marked "auto-deleting", and is already on a bpstat.
13088      That bpstat is then checked for auto-deleting bp's, which are
13089      deleted.
13090
13091      A real solution to this problem might involve reference counts in
13092      bp's, and/or giving them pointers back to their referencing
13093      bpstat's, and teaching delete_breakpoint to only free a bp's
13094      storage when no more references were extent.  A cheaper bandaid
13095      was chosen.  */
13096   if (bpt->type == bp_none)
13097     return;
13098
13099   /* At least avoid this stale reference until the reference counting
13100      of breakpoints gets resolved.  */
13101   if (bpt->related_breakpoint != bpt)
13102     {
13103       struct breakpoint *related;
13104       struct watchpoint *w;
13105
13106       if (bpt->type == bp_watchpoint_scope)
13107         w = (struct watchpoint *) bpt->related_breakpoint;
13108       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13109         w = (struct watchpoint *) bpt;
13110       else
13111         w = NULL;
13112       if (w != NULL)
13113         watchpoint_del_at_next_stop (w);
13114
13115       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13116       for (related = bpt; related->related_breakpoint != bpt;
13117            related = related->related_breakpoint);
13118       related->related_breakpoint = bpt->related_breakpoint;
13119       bpt->related_breakpoint = bpt;
13120     }
13121
13122   /* watch_command_1 creates a watchpoint but only sets its number if
13123      update_watchpoint succeeds in creating its bp_locations.  If there's
13124      a problem in that process, we'll be asked to delete the half-created
13125      watchpoint.  In that case, don't announce the deletion.  */
13126   if (bpt->number)
13127     observer_notify_breakpoint_deleted (bpt);
13128
13129   if (breakpoint_chain == bpt)
13130     breakpoint_chain = bpt->next;
13131
13132   ALL_BREAKPOINTS (b)
13133     if (b->next == bpt)
13134     {
13135       b->next = bpt->next;
13136       break;
13137     }
13138
13139   /* Be sure no bpstat's are pointing at the breakpoint after it's
13140      been freed.  */
13141   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13142      in all threads for now.  Note that we cannot just remove bpstats
13143      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13144      commands are associated with the bpstat; if we remove it here,
13145      then the later call to bpstat_do_actions (&stop_bpstat); in
13146      event-top.c won't do anything, and temporary breakpoints with
13147      commands won't work.  */
13148
13149   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13150
13151   /* Now that breakpoint is removed from breakpoint list, update the
13152      global location list.  This will remove locations that used to
13153      belong to this breakpoint.  Do this before freeing the breakpoint
13154      itself, since remove_breakpoint looks at location's owner.  It
13155      might be better design to have location completely
13156      self-contained, but it's not the case now.  */
13157   update_global_location_list (0);
13158
13159   bpt->ops->dtor (bpt);
13160   /* On the chance that someone will soon try again to delete this
13161      same bp, we mark it as deleted before freeing its storage.  */
13162   bpt->type = bp_none;
13163   xfree (bpt);
13164 }
13165
13166 static void
13167 do_delete_breakpoint_cleanup (void *b)
13168 {
13169   delete_breakpoint (b);
13170 }
13171
13172 struct cleanup *
13173 make_cleanup_delete_breakpoint (struct breakpoint *b)
13174 {
13175   return make_cleanup (do_delete_breakpoint_cleanup, b);
13176 }
13177
13178 /* Iterator function to call a user-provided callback function once
13179    for each of B and its related breakpoints.  */
13180
13181 static void
13182 iterate_over_related_breakpoints (struct breakpoint *b,
13183                                   void (*function) (struct breakpoint *,
13184                                                     void *),
13185                                   void *data)
13186 {
13187   struct breakpoint *related;
13188
13189   related = b;
13190   do
13191     {
13192       struct breakpoint *next;
13193
13194       /* FUNCTION may delete RELATED.  */
13195       next = related->related_breakpoint;
13196
13197       if (next == related)
13198         {
13199           /* RELATED is the last ring entry.  */
13200           function (related, data);
13201
13202           /* FUNCTION may have deleted it, so we'd never reach back to
13203              B.  There's nothing left to do anyway, so just break
13204              out.  */
13205           break;
13206         }
13207       else
13208         function (related, data);
13209
13210       related = next;
13211     }
13212   while (related != b);
13213 }
13214
13215 static void
13216 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13217 {
13218   delete_breakpoint (b);
13219 }
13220
13221 /* A callback for map_breakpoint_numbers that calls
13222    delete_breakpoint.  */
13223
13224 static void
13225 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13226 {
13227   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13228 }
13229
13230 void
13231 delete_command (char *arg, int from_tty)
13232 {
13233   struct breakpoint *b, *b_tmp;
13234
13235   dont_repeat ();
13236
13237   if (arg == 0)
13238     {
13239       int breaks_to_delete = 0;
13240
13241       /* Delete all breakpoints if no argument.  Do not delete
13242          internal breakpoints, these have to be deleted with an
13243          explicit breakpoint number argument.  */
13244       ALL_BREAKPOINTS (b)
13245         if (user_breakpoint_p (b))
13246           {
13247             breaks_to_delete = 1;
13248             break;
13249           }
13250
13251       /* Ask user only if there are some breakpoints to delete.  */
13252       if (!from_tty
13253           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13254         {
13255           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13256             if (user_breakpoint_p (b))
13257               delete_breakpoint (b);
13258         }
13259     }
13260   else
13261     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13262 }
13263
13264 static int
13265 all_locations_are_pending (struct bp_location *loc)
13266 {
13267   for (; loc; loc = loc->next)
13268     if (!loc->shlib_disabled
13269         && !loc->pspace->executing_startup)
13270       return 0;
13271   return 1;
13272 }
13273
13274 /* Subroutine of update_breakpoint_locations to simplify it.
13275    Return non-zero if multiple fns in list LOC have the same name.
13276    Null names are ignored.  */
13277
13278 static int
13279 ambiguous_names_p (struct bp_location *loc)
13280 {
13281   struct bp_location *l;
13282   htab_t htab = htab_create_alloc (13, htab_hash_string,
13283                                    (int (*) (const void *, 
13284                                              const void *)) streq,
13285                                    NULL, xcalloc, xfree);
13286
13287   for (l = loc; l != NULL; l = l->next)
13288     {
13289       const char **slot;
13290       const char *name = l->function_name;
13291
13292       /* Allow for some names to be NULL, ignore them.  */
13293       if (name == NULL)
13294         continue;
13295
13296       slot = (const char **) htab_find_slot (htab, (const void *) name,
13297                                              INSERT);
13298       /* NOTE: We can assume slot != NULL here because xcalloc never
13299          returns NULL.  */
13300       if (*slot != NULL)
13301         {
13302           htab_delete (htab);
13303           return 1;
13304         }
13305       *slot = name;
13306     }
13307
13308   htab_delete (htab);
13309   return 0;
13310 }
13311
13312 /* When symbols change, it probably means the sources changed as well,
13313    and it might mean the static tracepoint markers are no longer at
13314    the same address or line numbers they used to be at last we
13315    checked.  Losing your static tracepoints whenever you rebuild is
13316    undesirable.  This function tries to resync/rematch gdb static
13317    tracepoints with the markers on the target, for static tracepoints
13318    that have not been set by marker id.  Static tracepoint that have
13319    been set by marker id are reset by marker id in breakpoint_re_set.
13320    The heuristic is:
13321
13322    1) For a tracepoint set at a specific address, look for a marker at
13323    the old PC.  If one is found there, assume to be the same marker.
13324    If the name / string id of the marker found is different from the
13325    previous known name, assume that means the user renamed the marker
13326    in the sources, and output a warning.
13327
13328    2) For a tracepoint set at a given line number, look for a marker
13329    at the new address of the old line number.  If one is found there,
13330    assume to be the same marker.  If the name / string id of the
13331    marker found is different from the previous known name, assume that
13332    means the user renamed the marker in the sources, and output a
13333    warning.
13334
13335    3) If a marker is no longer found at the same address or line, it
13336    may mean the marker no longer exists.  But it may also just mean
13337    the code changed a bit.  Maybe the user added a few lines of code
13338    that made the marker move up or down (in line number terms).  Ask
13339    the target for info about the marker with the string id as we knew
13340    it.  If found, update line number and address in the matching
13341    static tracepoint.  This will get confused if there's more than one
13342    marker with the same ID (possible in UST, although unadvised
13343    precisely because it confuses tools).  */
13344
13345 static struct symtab_and_line
13346 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13347 {
13348   struct tracepoint *tp = (struct tracepoint *) b;
13349   struct static_tracepoint_marker marker;
13350   CORE_ADDR pc;
13351
13352   pc = sal.pc;
13353   if (sal.line)
13354     find_line_pc (sal.symtab, sal.line, &pc);
13355
13356   if (target_static_tracepoint_marker_at (pc, &marker))
13357     {
13358       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13359         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13360                  b->number,
13361                  tp->static_trace_marker_id, marker.str_id);
13362
13363       xfree (tp->static_trace_marker_id);
13364       tp->static_trace_marker_id = xstrdup (marker.str_id);
13365       release_static_tracepoint_marker (&marker);
13366
13367       return sal;
13368     }
13369
13370   /* Old marker wasn't found on target at lineno.  Try looking it up
13371      by string ID.  */
13372   if (!sal.explicit_pc
13373       && sal.line != 0
13374       && sal.symtab != NULL
13375       && tp->static_trace_marker_id != NULL)
13376     {
13377       VEC(static_tracepoint_marker_p) *markers;
13378
13379       markers
13380         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13381
13382       if (!VEC_empty(static_tracepoint_marker_p, markers))
13383         {
13384           struct symtab_and_line sal2;
13385           struct symbol *sym;
13386           struct static_tracepoint_marker *tpmarker;
13387           struct ui_out *uiout = current_uiout;
13388
13389           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13390
13391           xfree (tp->static_trace_marker_id);
13392           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13393
13394           warning (_("marker for static tracepoint %d (%s) not "
13395                      "found at previous line number"),
13396                    b->number, tp->static_trace_marker_id);
13397
13398           init_sal (&sal2);
13399
13400           sal2.pc = tpmarker->address;
13401
13402           sal2 = find_pc_line (tpmarker->address, 0);
13403           sym = find_pc_sect_function (tpmarker->address, NULL);
13404           ui_out_text (uiout, "Now in ");
13405           if (sym)
13406             {
13407               ui_out_field_string (uiout, "func",
13408                                    SYMBOL_PRINT_NAME (sym));
13409               ui_out_text (uiout, " at ");
13410             }
13411           ui_out_field_string (uiout, "file", sal2.symtab->filename);
13412           ui_out_text (uiout, ":");
13413
13414           if (ui_out_is_mi_like_p (uiout))
13415             {
13416               char *fullname = symtab_to_fullname (sal2.symtab);
13417
13418               if (fullname)
13419                 ui_out_field_string (uiout, "fullname", fullname);
13420             }
13421
13422           ui_out_field_int (uiout, "line", sal2.line);
13423           ui_out_text (uiout, "\n");
13424
13425           b->loc->line_number = sal2.line;
13426
13427           xfree (b->loc->source_file);
13428           if (sym)
13429             b->loc->source_file = xstrdup (sal2.symtab->filename);
13430           else
13431             b->loc->source_file = NULL;
13432
13433           xfree (b->addr_string);
13434           b->addr_string = xstrprintf ("%s:%d",
13435                                        sal2.symtab->filename,
13436                                        b->loc->line_number);
13437
13438           /* Might be nice to check if function changed, and warn if
13439              so.  */
13440
13441           release_static_tracepoint_marker (tpmarker);
13442         }
13443     }
13444   return sal;
13445 }
13446
13447 /* Returns 1 iff locations A and B are sufficiently same that
13448    we don't need to report breakpoint as changed.  */
13449
13450 static int
13451 locations_are_equal (struct bp_location *a, struct bp_location *b)
13452 {
13453   while (a && b)
13454     {
13455       if (a->address != b->address)
13456         return 0;
13457
13458       if (a->shlib_disabled != b->shlib_disabled)
13459         return 0;
13460
13461       if (a->enabled != b->enabled)
13462         return 0;
13463
13464       a = a->next;
13465       b = b->next;
13466     }
13467
13468   if ((a == NULL) != (b == NULL))
13469     return 0;
13470
13471   return 1;
13472 }
13473
13474 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13475    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13476    a ranged breakpoint.  */
13477
13478 void
13479 update_breakpoint_locations (struct breakpoint *b,
13480                              struct symtabs_and_lines sals,
13481                              struct symtabs_and_lines sals_end)
13482 {
13483   int i;
13484   struct bp_location *existing_locations = b->loc;
13485
13486   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13487     {
13488       /* Ranged breakpoints have only one start location and one end
13489          location.  */
13490       b->enable_state = bp_disabled;
13491       update_global_location_list (1);
13492       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13493                            "multiple locations found\n"),
13494                          b->number);
13495       return;
13496     }
13497
13498   /* If there's no new locations, and all existing locations are
13499      pending, don't do anything.  This optimizes the common case where
13500      all locations are in the same shared library, that was unloaded.
13501      We'd like to retain the location, so that when the library is
13502      loaded again, we don't loose the enabled/disabled status of the
13503      individual locations.  */
13504   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13505     return;
13506
13507   b->loc = NULL;
13508
13509   for (i = 0; i < sals.nelts; ++i)
13510     {
13511       struct bp_location *new_loc;
13512
13513       switch_to_program_space_and_thread (sals.sals[i].pspace);
13514
13515       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13516
13517       /* Reparse conditions, they might contain references to the
13518          old symtab.  */
13519       if (b->cond_string != NULL)
13520         {
13521           char *s;
13522           volatile struct gdb_exception e;
13523
13524           s = b->cond_string;
13525           TRY_CATCH (e, RETURN_MASK_ERROR)
13526             {
13527               new_loc->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 
13528                                            0);
13529             }
13530           if (e.reason < 0)
13531             {
13532               warning (_("failed to reevaluate condition "
13533                          "for breakpoint %d: %s"), 
13534                        b->number, e.message);
13535               new_loc->enabled = 0;
13536             }
13537         }
13538
13539       if (sals_end.nelts)
13540         {
13541           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
13542
13543           new_loc->length = end - sals.sals[0].pc + 1;
13544         }
13545     }
13546
13547   /* Update locations of permanent breakpoints.  */
13548   if (b->enable_state == bp_permanent)
13549     make_breakpoint_permanent (b);
13550
13551   /* If possible, carry over 'disable' status from existing
13552      breakpoints.  */
13553   {
13554     struct bp_location *e = existing_locations;
13555     /* If there are multiple breakpoints with the same function name,
13556        e.g. for inline functions, comparing function names won't work.
13557        Instead compare pc addresses; this is just a heuristic as things
13558        may have moved, but in practice it gives the correct answer
13559        often enough until a better solution is found.  */
13560     int have_ambiguous_names = ambiguous_names_p (b->loc);
13561
13562     for (; e; e = e->next)
13563       {
13564         if (!e->enabled && e->function_name)
13565           {
13566             struct bp_location *l = b->loc;
13567             if (have_ambiguous_names)
13568               {
13569                 for (; l; l = l->next)
13570                   if (breakpoint_locations_match (e, l))
13571                     {
13572                       l->enabled = 0;
13573                       break;
13574                     }
13575               }
13576             else
13577               {
13578                 for (; l; l = l->next)
13579                   if (l->function_name
13580                       && strcmp (e->function_name, l->function_name) == 0)
13581                     {
13582                       l->enabled = 0;
13583                       break;
13584                     }
13585               }
13586           }
13587       }
13588   }
13589
13590   if (!locations_are_equal (existing_locations, b->loc))
13591     observer_notify_breakpoint_modified (b);
13592
13593   update_global_location_list (1);
13594 }
13595
13596 /* Find the SaL locations corresponding to the given ADDR_STRING.
13597    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
13598
13599 static struct symtabs_and_lines
13600 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
13601 {
13602   char *s;
13603   struct symtabs_and_lines sals = {0};
13604   volatile struct gdb_exception e;
13605
13606   gdb_assert (b->ops != NULL);
13607   s = addr_string;
13608
13609   TRY_CATCH (e, RETURN_MASK_ERROR)
13610     {
13611       b->ops->decode_linespec (b, &s, &sals);
13612     }
13613   if (e.reason < 0)
13614     {
13615       int not_found_and_ok = 0;
13616       /* For pending breakpoints, it's expected that parsing will
13617          fail until the right shared library is loaded.  User has
13618          already told to create pending breakpoints and don't need
13619          extra messages.  If breakpoint is in bp_shlib_disabled
13620          state, then user already saw the message about that
13621          breakpoint being disabled, and don't want to see more
13622          errors.  */
13623       if (e.error == NOT_FOUND_ERROR
13624           && (b->condition_not_parsed 
13625               || (b->loc && b->loc->shlib_disabled)
13626               || (b->loc && b->loc->pspace->executing_startup)
13627               || b->enable_state == bp_disabled))
13628         not_found_and_ok = 1;
13629
13630       if (!not_found_and_ok)
13631         {
13632           /* We surely don't want to warn about the same breakpoint
13633              10 times.  One solution, implemented here, is disable
13634              the breakpoint on error.  Another solution would be to
13635              have separate 'warning emitted' flag.  Since this
13636              happens only when a binary has changed, I don't know
13637              which approach is better.  */
13638           b->enable_state = bp_disabled;
13639           throw_exception (e);
13640         }
13641     }
13642
13643   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
13644     {
13645       int i;
13646
13647       for (i = 0; i < sals.nelts; ++i)
13648         resolve_sal_pc (&sals.sals[i]);
13649       if (b->condition_not_parsed && s && s[0])
13650         {
13651           char *cond_string = 0;
13652           int thread = -1;
13653           int task = 0;
13654           char *extra_string = NULL;
13655
13656           find_condition_and_thread (s, sals.sals[0].pc,
13657                                      &cond_string, &thread, &task,
13658                                      &extra_string);
13659           if (cond_string)
13660             b->cond_string = cond_string;
13661           b->thread = thread;
13662           b->task = task;
13663           if (extra_string)
13664             b->extra_string = extra_string;
13665           b->condition_not_parsed = 0;
13666         }
13667
13668       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
13669         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
13670
13671       *found = 1;
13672     }
13673   else
13674     *found = 0;
13675
13676   return sals;
13677 }
13678
13679 /* The default re_set method, for typical hardware or software
13680    breakpoints.  Reevaluate the breakpoint and recreate its
13681    locations.  */
13682
13683 static void
13684 breakpoint_re_set_default (struct breakpoint *b)
13685 {
13686   int found;
13687   struct symtabs_and_lines sals, sals_end;
13688   struct symtabs_and_lines expanded = {0};
13689   struct symtabs_and_lines expanded_end = {0};
13690
13691   sals = addr_string_to_sals (b, b->addr_string, &found);
13692   if (found)
13693     {
13694       make_cleanup (xfree, sals.sals);
13695       expanded = sals;
13696     }
13697
13698   if (b->addr_string_range_end)
13699     {
13700       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
13701       if (found)
13702         {
13703           make_cleanup (xfree, sals_end.sals);
13704           expanded_end = sals_end;
13705         }
13706     }
13707
13708   update_breakpoint_locations (b, expanded, expanded_end);
13709 }
13710
13711 /* Default method for creating SALs from an address string.  It basically
13712    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
13713
13714 static void
13715 create_sals_from_address_default (char **arg,
13716                                   struct linespec_result *canonical,
13717                                   enum bptype type_wanted,
13718                                   char *addr_start, char **copy_arg)
13719 {
13720   parse_breakpoint_sals (arg, canonical);
13721 }
13722
13723 /* Call create_breakpoints_sal for the given arguments.  This is the default
13724    function for the `create_breakpoints_sal' method of
13725    breakpoint_ops.  */
13726
13727 static void
13728 create_breakpoints_sal_default (struct gdbarch *gdbarch,
13729                                 struct linespec_result *canonical,
13730                                 struct linespec_sals *lsal,
13731                                 char *cond_string,
13732                                 char *extra_string,
13733                                 enum bptype type_wanted,
13734                                 enum bpdisp disposition,
13735                                 int thread,
13736                                 int task, int ignore_count,
13737                                 const struct breakpoint_ops *ops,
13738                                 int from_tty, int enabled,
13739                                 int internal, unsigned flags)
13740 {
13741   create_breakpoints_sal (gdbarch, canonical, cond_string,
13742                           extra_string,
13743                           type_wanted, disposition,
13744                           thread, task, ignore_count, ops, from_tty,
13745                           enabled, internal, flags);
13746 }
13747
13748 /* Decode the line represented by S by calling decode_line_full.  This is the
13749    default function for the `decode_linespec' method of breakpoint_ops.  */
13750
13751 static void
13752 decode_linespec_default (struct breakpoint *b, char **s,
13753                          struct symtabs_and_lines *sals)
13754 {
13755   struct linespec_result canonical;
13756
13757   init_linespec_result (&canonical);
13758   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
13759                     (struct symtab *) NULL, 0,
13760                     &canonical, multiple_symbols_all,
13761                     b->filter);
13762
13763   /* We should get 0 or 1 resulting SALs.  */
13764   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
13765
13766   if (VEC_length (linespec_sals, canonical.sals) > 0)
13767     {
13768       struct linespec_sals *lsal;
13769
13770       lsal = VEC_index (linespec_sals, canonical.sals, 0);
13771       *sals = lsal->sals;
13772       /* Arrange it so the destructor does not free the
13773          contents.  */
13774       lsal->sals.sals = NULL;
13775     }
13776
13777   destroy_linespec_result (&canonical);
13778 }
13779
13780 /* Prepare the global context for a re-set of breakpoint B.  */
13781
13782 static struct cleanup *
13783 prepare_re_set_context (struct breakpoint *b)
13784 {
13785   struct cleanup *cleanups;
13786
13787   input_radix = b->input_radix;
13788   cleanups = save_current_space_and_thread ();
13789   if (b->pspace != NULL)
13790     switch_to_program_space_and_thread (b->pspace);
13791   set_language (b->language);
13792
13793   return cleanups;
13794 }
13795
13796 /* Reset a breakpoint given it's struct breakpoint * BINT.
13797    The value we return ends up being the return value from catch_errors.
13798    Unused in this case.  */
13799
13800 static int
13801 breakpoint_re_set_one (void *bint)
13802 {
13803   /* Get past catch_errs.  */
13804   struct breakpoint *b = (struct breakpoint *) bint;
13805   struct cleanup *cleanups;
13806
13807   cleanups = prepare_re_set_context (b);
13808   b->ops->re_set (b);
13809   do_cleanups (cleanups);
13810   return 0;
13811 }
13812
13813 /* Re-set all breakpoints after symbols have been re-loaded.  */
13814 void
13815 breakpoint_re_set (void)
13816 {
13817   struct breakpoint *b, *b_tmp;
13818   enum language save_language;
13819   int save_input_radix;
13820   struct cleanup *old_chain;
13821
13822   save_language = current_language->la_language;
13823   save_input_radix = input_radix;
13824   old_chain = save_current_program_space ();
13825
13826   ALL_BREAKPOINTS_SAFE (b, b_tmp)
13827   {
13828     /* Format possible error msg.  */
13829     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
13830                                 b->number);
13831     struct cleanup *cleanups = make_cleanup (xfree, message);
13832     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
13833     do_cleanups (cleanups);
13834   }
13835   set_language (save_language);
13836   input_radix = save_input_radix;
13837
13838   jit_breakpoint_re_set ();
13839
13840   do_cleanups (old_chain);
13841
13842   create_overlay_event_breakpoint ();
13843   create_longjmp_master_breakpoint ();
13844   create_std_terminate_master_breakpoint ();
13845   create_exception_master_breakpoint ();
13846
13847   /* While we're at it, reset the skip list too.  */
13848   skip_re_set ();
13849 }
13850 \f
13851 /* Reset the thread number of this breakpoint:
13852
13853    - If the breakpoint is for all threads, leave it as-is.
13854    - Else, reset it to the current thread for inferior_ptid.  */
13855 void
13856 breakpoint_re_set_thread (struct breakpoint *b)
13857 {
13858   if (b->thread != -1)
13859     {
13860       if (in_thread_list (inferior_ptid))
13861         b->thread = pid_to_thread_id (inferior_ptid);
13862
13863       /* We're being called after following a fork.  The new fork is
13864          selected as current, and unless this was a vfork will have a
13865          different program space from the original thread.  Reset that
13866          as well.  */
13867       b->loc->pspace = current_program_space;
13868     }
13869 }
13870
13871 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
13872    If from_tty is nonzero, it prints a message to that effect,
13873    which ends with a period (no newline).  */
13874
13875 void
13876 set_ignore_count (int bptnum, int count, int from_tty)
13877 {
13878   struct breakpoint *b;
13879
13880   if (count < 0)
13881     count = 0;
13882
13883   ALL_BREAKPOINTS (b)
13884     if (b->number == bptnum)
13885     {
13886       if (is_tracepoint (b))
13887         {
13888           if (from_tty && count != 0)
13889             printf_filtered (_("Ignore count ignored for tracepoint %d."),
13890                              bptnum);
13891           return;
13892         }
13893       
13894       b->ignore_count = count;
13895       if (from_tty)
13896         {
13897           if (count == 0)
13898             printf_filtered (_("Will stop next time "
13899                                "breakpoint %d is reached."),
13900                              bptnum);
13901           else if (count == 1)
13902             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
13903                              bptnum);
13904           else
13905             printf_filtered (_("Will ignore next %d "
13906                                "crossings of breakpoint %d."),
13907                              count, bptnum);
13908         }
13909       breakpoints_changed ();
13910       observer_notify_breakpoint_modified (b);
13911       return;
13912     }
13913
13914   error (_("No breakpoint number %d."), bptnum);
13915 }
13916
13917 /* Command to set ignore-count of breakpoint N to COUNT.  */
13918
13919 static void
13920 ignore_command (char *args, int from_tty)
13921 {
13922   char *p = args;
13923   int num;
13924
13925   if (p == 0)
13926     error_no_arg (_("a breakpoint number"));
13927
13928   num = get_number (&p);
13929   if (num == 0)
13930     error (_("bad breakpoint number: '%s'"), args);
13931   if (*p == 0)
13932     error (_("Second argument (specified ignore-count) is missing."));
13933
13934   set_ignore_count (num,
13935                     longest_to_int (value_as_long (parse_and_eval (p))),
13936                     from_tty);
13937   if (from_tty)
13938     printf_filtered ("\n");
13939 }
13940 \f
13941 /* Call FUNCTION on each of the breakpoints
13942    whose numbers are given in ARGS.  */
13943
13944 static void
13945 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
13946                                                       void *),
13947                         void *data)
13948 {
13949   int num;
13950   struct breakpoint *b, *tmp;
13951   int match;
13952   struct get_number_or_range_state state;
13953
13954   if (args == 0)
13955     error_no_arg (_("one or more breakpoint numbers"));
13956
13957   init_number_or_range (&state, args);
13958
13959   while (!state.finished)
13960     {
13961       char *p = state.string;
13962
13963       match = 0;
13964
13965       num = get_number_or_range (&state);
13966       if (num == 0)
13967         {
13968           warning (_("bad breakpoint number at or near '%s'"), p);
13969         }
13970       else
13971         {
13972           ALL_BREAKPOINTS_SAFE (b, tmp)
13973             if (b->number == num)
13974               {
13975                 match = 1;
13976                 function (b, data);
13977                 break;
13978               }
13979           if (match == 0)
13980             printf_unfiltered (_("No breakpoint number %d.\n"), num);
13981         }
13982     }
13983 }
13984
13985 static struct bp_location *
13986 find_location_by_number (char *number)
13987 {
13988   char *dot = strchr (number, '.');
13989   char *p1;
13990   int bp_num;
13991   int loc_num;
13992   struct breakpoint *b;
13993   struct bp_location *loc;  
13994
13995   *dot = '\0';
13996
13997   p1 = number;
13998   bp_num = get_number (&p1);
13999   if (bp_num == 0)
14000     error (_("Bad breakpoint number '%s'"), number);
14001
14002   ALL_BREAKPOINTS (b)
14003     if (b->number == bp_num)
14004       {
14005         break;
14006       }
14007
14008   if (!b || b->number != bp_num)
14009     error (_("Bad breakpoint number '%s'"), number);
14010   
14011   p1 = dot+1;
14012   loc_num = get_number (&p1);
14013   if (loc_num == 0)
14014     error (_("Bad breakpoint location number '%s'"), number);
14015
14016   --loc_num;
14017   loc = b->loc;
14018   for (;loc_num && loc; --loc_num, loc = loc->next)
14019     ;
14020   if (!loc)
14021     error (_("Bad breakpoint location number '%s'"), dot+1);
14022     
14023   return loc;  
14024 }
14025
14026
14027 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14028    If from_tty is nonzero, it prints a message to that effect,
14029    which ends with a period (no newline).  */
14030
14031 void
14032 disable_breakpoint (struct breakpoint *bpt)
14033 {
14034   /* Never disable a watchpoint scope breakpoint; we want to
14035      hit them when we leave scope so we can delete both the
14036      watchpoint and its scope breakpoint at that time.  */
14037   if (bpt->type == bp_watchpoint_scope)
14038     return;
14039
14040   /* You can't disable permanent breakpoints.  */
14041   if (bpt->enable_state == bp_permanent)
14042     return;
14043
14044   bpt->enable_state = bp_disabled;
14045
14046   /* Mark breakpoint locations modified.  */
14047   mark_breakpoint_modified (bpt);
14048
14049   if (target_supports_enable_disable_tracepoint ()
14050       && current_trace_status ()->running && is_tracepoint (bpt))
14051     {
14052       struct bp_location *location;
14053      
14054       for (location = bpt->loc; location; location = location->next)
14055         target_disable_tracepoint (location);
14056     }
14057
14058   update_global_location_list (0);
14059
14060   observer_notify_breakpoint_modified (bpt);
14061 }
14062
14063 /* A callback for iterate_over_related_breakpoints.  */
14064
14065 static void
14066 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14067 {
14068   disable_breakpoint (b);
14069 }
14070
14071 /* A callback for map_breakpoint_numbers that calls
14072    disable_breakpoint.  */
14073
14074 static void
14075 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14076 {
14077   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14078 }
14079
14080 static void
14081 disable_command (char *args, int from_tty)
14082 {
14083   if (args == 0)
14084     {
14085       struct breakpoint *bpt;
14086
14087       ALL_BREAKPOINTS (bpt)
14088         if (user_breakpoint_p (bpt))
14089           disable_breakpoint (bpt);
14090     }
14091   else if (strchr (args, '.'))
14092     {
14093       struct bp_location *loc = find_location_by_number (args);
14094       if (loc)
14095         {
14096           if (loc->enabled)
14097             {
14098               loc->enabled = 0;
14099               mark_breakpoint_location_modified (loc);
14100             }
14101           if (target_supports_enable_disable_tracepoint ()
14102               && current_trace_status ()->running && loc->owner
14103               && is_tracepoint (loc->owner))
14104             target_disable_tracepoint (loc);
14105         }
14106       update_global_location_list (0);
14107     }
14108   else
14109     map_breakpoint_numbers (args, do_map_disable_breakpoint, NULL);
14110 }
14111
14112 static void
14113 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14114                         int count)
14115 {
14116   int target_resources_ok;
14117
14118   if (bpt->type == bp_hardware_breakpoint)
14119     {
14120       int i;
14121       i = hw_breakpoint_used_count ();
14122       target_resources_ok = 
14123         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14124                                             i + 1, 0);
14125       if (target_resources_ok == 0)
14126         error (_("No hardware breakpoint support in the target."));
14127       else if (target_resources_ok < 0)
14128         error (_("Hardware breakpoints used exceeds limit."));
14129     }
14130
14131   if (is_watchpoint (bpt))
14132     {
14133       /* Initialize it just to avoid a GCC false warning.  */
14134       enum enable_state orig_enable_state = 0;
14135       volatile struct gdb_exception e;
14136
14137       TRY_CATCH (e, RETURN_MASK_ALL)
14138         {
14139           struct watchpoint *w = (struct watchpoint *) bpt;
14140
14141           orig_enable_state = bpt->enable_state;
14142           bpt->enable_state = bp_enabled;
14143           update_watchpoint (w, 1 /* reparse */);
14144         }
14145       if (e.reason < 0)
14146         {
14147           bpt->enable_state = orig_enable_state;
14148           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14149                              bpt->number);
14150           return;
14151         }
14152     }
14153
14154   if (bpt->enable_state != bp_permanent)
14155     bpt->enable_state = bp_enabled;
14156
14157   bpt->enable_state = bp_enabled;
14158
14159   /* Mark breakpoint locations modified.  */
14160   mark_breakpoint_modified (bpt);
14161
14162   if (target_supports_enable_disable_tracepoint ()
14163       && current_trace_status ()->running && is_tracepoint (bpt))
14164     {
14165       struct bp_location *location;
14166
14167       for (location = bpt->loc; location; location = location->next)
14168         target_enable_tracepoint (location);
14169     }
14170
14171   bpt->disposition = disposition;
14172   bpt->enable_count = count;
14173   update_global_location_list (1);
14174   breakpoints_changed ();
14175   
14176   observer_notify_breakpoint_modified (bpt);
14177 }
14178
14179
14180 void
14181 enable_breakpoint (struct breakpoint *bpt)
14182 {
14183   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14184 }
14185
14186 static void
14187 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14188 {
14189   enable_breakpoint (bpt);
14190 }
14191
14192 /* A callback for map_breakpoint_numbers that calls
14193    enable_breakpoint.  */
14194
14195 static void
14196 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14197 {
14198   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14199 }
14200
14201 /* The enable command enables the specified breakpoints (or all defined
14202    breakpoints) so they once again become (or continue to be) effective
14203    in stopping the inferior.  */
14204
14205 static void
14206 enable_command (char *args, int from_tty)
14207 {
14208   if (args == 0)
14209     {
14210       struct breakpoint *bpt;
14211
14212       ALL_BREAKPOINTS (bpt)
14213         if (user_breakpoint_p (bpt))
14214           enable_breakpoint (bpt);
14215     }
14216   else if (strchr (args, '.'))
14217     {
14218       struct bp_location *loc = find_location_by_number (args);
14219       if (loc)
14220         {
14221           if (!loc->enabled)
14222             {
14223               loc->enabled = 1;
14224               mark_breakpoint_location_modified (loc);
14225             }
14226           if (target_supports_enable_disable_tracepoint ()
14227               && current_trace_status ()->running && loc->owner
14228               && is_tracepoint (loc->owner))
14229             target_enable_tracepoint (loc);
14230         }
14231       update_global_location_list (1);
14232     }
14233   else
14234     map_breakpoint_numbers (args, do_map_enable_breakpoint, NULL);
14235 }
14236
14237 /* This struct packages up disposition data for application to multiple
14238    breakpoints.  */
14239
14240 struct disp_data
14241 {
14242   enum bpdisp disp;
14243   int count;
14244 };
14245
14246 static void
14247 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14248 {
14249   struct disp_data disp_data = *(struct disp_data *) arg;
14250
14251   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14252 }
14253
14254 static void
14255 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14256 {
14257   struct disp_data disp = { disp_disable, 1 };
14258
14259   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14260 }
14261
14262 static void
14263 enable_once_command (char *args, int from_tty)
14264 {
14265   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14266 }
14267
14268 static void
14269 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14270 {
14271   struct disp_data disp = { disp_disable, *(int *) countptr };
14272
14273   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14274 }
14275
14276 static void
14277 enable_count_command (char *args, int from_tty)
14278 {
14279   int count = get_number (&args);
14280
14281   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14282 }
14283
14284 static void
14285 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14286 {
14287   struct disp_data disp = { disp_del, 1 };
14288
14289   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14290 }
14291
14292 static void
14293 enable_delete_command (char *args, int from_tty)
14294 {
14295   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14296 }
14297 \f
14298 static void
14299 set_breakpoint_cmd (char *args, int from_tty)
14300 {
14301 }
14302
14303 static void
14304 show_breakpoint_cmd (char *args, int from_tty)
14305 {
14306 }
14307
14308 /* Invalidate last known value of any hardware watchpoint if
14309    the memory which that value represents has been written to by
14310    GDB itself.  */
14311
14312 static void
14313 invalidate_bp_value_on_memory_change (CORE_ADDR addr, int len,
14314                                       const bfd_byte *data)
14315 {
14316   struct breakpoint *bp;
14317
14318   ALL_BREAKPOINTS (bp)
14319     if (bp->enable_state == bp_enabled
14320         && bp->type == bp_hardware_watchpoint)
14321       {
14322         struct watchpoint *wp = (struct watchpoint *) bp;
14323
14324         if (wp->val_valid && wp->val)
14325           {
14326             struct bp_location *loc;
14327
14328             for (loc = bp->loc; loc != NULL; loc = loc->next)
14329               if (loc->loc_type == bp_loc_hardware_watchpoint
14330                   && loc->address + loc->length > addr
14331                   && addr + len > loc->address)
14332                 {
14333                   value_free (wp->val);
14334                   wp->val = NULL;
14335                   wp->val_valid = 0;
14336                 }
14337           }
14338       }
14339 }
14340
14341 /* Use the last displayed codepoint's values, or nothing
14342    if they aren't valid.  */
14343
14344 struct symtabs_and_lines
14345 decode_line_spec_1 (char *string, int flags)
14346 {
14347   struct symtabs_and_lines sals;
14348
14349   if (string == 0)
14350     error (_("Empty line specification."));
14351   if (last_displayed_sal_is_valid ())
14352     sals = decode_line_1 (&string, flags,
14353                           get_last_displayed_symtab (),
14354                           get_last_displayed_line ());
14355   else
14356     sals = decode_line_1 (&string, flags, (struct symtab *) NULL, 0);
14357   if (*string)
14358     error (_("Junk at end of line specification: %s"), string);
14359   return sals;
14360 }
14361
14362 /* Create and insert a raw software breakpoint at PC.  Return an
14363    identifier, which should be used to remove the breakpoint later.
14364    In general, places which call this should be using something on the
14365    breakpoint chain instead; this function should be eliminated
14366    someday.  */
14367
14368 void *
14369 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
14370                                   struct address_space *aspace, CORE_ADDR pc)
14371 {
14372   struct bp_target_info *bp_tgt;
14373
14374   bp_tgt = XZALLOC (struct bp_target_info);
14375
14376   bp_tgt->placed_address_space = aspace;
14377   bp_tgt->placed_address = pc;
14378
14379   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
14380     {
14381       /* Could not insert the breakpoint.  */
14382       xfree (bp_tgt);
14383       return NULL;
14384     }
14385
14386   return bp_tgt;
14387 }
14388
14389 /* Remove a breakpoint BP inserted by
14390    deprecated_insert_raw_breakpoint.  */
14391
14392 int
14393 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
14394 {
14395   struct bp_target_info *bp_tgt = bp;
14396   int ret;
14397
14398   ret = target_remove_breakpoint (gdbarch, bp_tgt);
14399   xfree (bp_tgt);
14400
14401   return ret;
14402 }
14403
14404 /* One (or perhaps two) breakpoints used for software single
14405    stepping.  */
14406
14407 static void *single_step_breakpoints[2];
14408 static struct gdbarch *single_step_gdbarch[2];
14409
14410 /* Create and insert a breakpoint for software single step.  */
14411
14412 void
14413 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14414                                struct address_space *aspace, 
14415                                CORE_ADDR next_pc)
14416 {
14417   void **bpt_p;
14418
14419   if (single_step_breakpoints[0] == NULL)
14420     {
14421       bpt_p = &single_step_breakpoints[0];
14422       single_step_gdbarch[0] = gdbarch;
14423     }
14424   else
14425     {
14426       gdb_assert (single_step_breakpoints[1] == NULL);
14427       bpt_p = &single_step_breakpoints[1];
14428       single_step_gdbarch[1] = gdbarch;
14429     }
14430
14431   /* NOTE drow/2006-04-11: A future improvement to this function would
14432      be to only create the breakpoints once, and actually put them on
14433      the breakpoint chain.  That would let us use set_raw_breakpoint.
14434      We could adjust the addresses each time they were needed.  Doing
14435      this requires corresponding changes elsewhere where single step
14436      breakpoints are handled, however.  So, for now, we use this.  */
14437
14438   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
14439   if (*bpt_p == NULL)
14440     error (_("Could not insert single-step breakpoint at %s"),
14441              paddress (gdbarch, next_pc));
14442 }
14443
14444 /* Check if the breakpoints used for software single stepping
14445    were inserted or not.  */
14446
14447 int
14448 single_step_breakpoints_inserted (void)
14449 {
14450   return (single_step_breakpoints[0] != NULL
14451           || single_step_breakpoints[1] != NULL);
14452 }
14453
14454 /* Remove and delete any breakpoints used for software single step.  */
14455
14456 void
14457 remove_single_step_breakpoints (void)
14458 {
14459   gdb_assert (single_step_breakpoints[0] != NULL);
14460
14461   /* See insert_single_step_breakpoint for more about this deprecated
14462      call.  */
14463   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
14464                                     single_step_breakpoints[0]);
14465   single_step_gdbarch[0] = NULL;
14466   single_step_breakpoints[0] = NULL;
14467
14468   if (single_step_breakpoints[1] != NULL)
14469     {
14470       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
14471                                         single_step_breakpoints[1]);
14472       single_step_gdbarch[1] = NULL;
14473       single_step_breakpoints[1] = NULL;
14474     }
14475 }
14476
14477 /* Delete software single step breakpoints without removing them from
14478    the inferior.  This is intended to be used if the inferior's address
14479    space where they were inserted is already gone, e.g. after exit or
14480    exec.  */
14481
14482 void
14483 cancel_single_step_breakpoints (void)
14484 {
14485   int i;
14486
14487   for (i = 0; i < 2; i++)
14488     if (single_step_breakpoints[i])
14489       {
14490         xfree (single_step_breakpoints[i]);
14491         single_step_breakpoints[i] = NULL;
14492         single_step_gdbarch[i] = NULL;
14493       }
14494 }
14495
14496 /* Detach software single-step breakpoints from INFERIOR_PTID without
14497    removing them.  */
14498
14499 static void
14500 detach_single_step_breakpoints (void)
14501 {
14502   int i;
14503
14504   for (i = 0; i < 2; i++)
14505     if (single_step_breakpoints[i])
14506       target_remove_breakpoint (single_step_gdbarch[i],
14507                                 single_step_breakpoints[i]);
14508 }
14509
14510 /* Check whether a software single-step breakpoint is inserted at
14511    PC.  */
14512
14513 static int
14514 single_step_breakpoint_inserted_here_p (struct address_space *aspace, 
14515                                         CORE_ADDR pc)
14516 {
14517   int i;
14518
14519   for (i = 0; i < 2; i++)
14520     {
14521       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
14522       if (bp_tgt
14523           && breakpoint_address_match (bp_tgt->placed_address_space,
14524                                        bp_tgt->placed_address,
14525                                        aspace, pc))
14526         return 1;
14527     }
14528
14529   return 0;
14530 }
14531
14532 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
14533    non-zero otherwise.  */
14534 static int
14535 is_syscall_catchpoint_enabled (struct breakpoint *bp)
14536 {
14537   if (syscall_catchpoint_p (bp)
14538       && bp->enable_state != bp_disabled
14539       && bp->enable_state != bp_call_disabled)
14540     return 1;
14541   else
14542     return 0;
14543 }
14544
14545 int
14546 catch_syscall_enabled (void)
14547 {
14548   struct catch_syscall_inferior_data *inf_data
14549     = get_catch_syscall_inferior_data (current_inferior ());
14550
14551   return inf_data->total_syscalls_count != 0;
14552 }
14553
14554 int
14555 catching_syscall_number (int syscall_number)
14556 {
14557   struct breakpoint *bp;
14558
14559   ALL_BREAKPOINTS (bp)
14560     if (is_syscall_catchpoint_enabled (bp))
14561       {
14562         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
14563
14564         if (c->syscalls_to_be_caught)
14565           {
14566             int i, iter;
14567             for (i = 0;
14568                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
14569                  i++)
14570               if (syscall_number == iter)
14571                 return 1;
14572           }
14573         else
14574           return 1;
14575       }
14576
14577   return 0;
14578 }
14579
14580 /* Complete syscall names.  Used by "catch syscall".  */
14581 static VEC (char_ptr) *
14582 catch_syscall_completer (struct cmd_list_element *cmd,
14583                          char *text, char *word)
14584 {
14585   const char **list = get_syscall_names ();
14586   VEC (char_ptr) *retlist
14587     = (list == NULL) ? NULL : complete_on_enum (list, text, word);
14588
14589   xfree (list);
14590   return retlist;
14591 }
14592
14593 /* Tracepoint-specific operations.  */
14594
14595 /* Set tracepoint count to NUM.  */
14596 static void
14597 set_tracepoint_count (int num)
14598 {
14599   tracepoint_count = num;
14600   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14601 }
14602
14603 static void
14604 trace_command (char *arg, int from_tty)
14605 {
14606   struct breakpoint_ops *ops;
14607   const char *arg_cp = arg;
14608
14609   if (arg && probe_linespec_to_ops (&arg_cp))
14610     ops = &tracepoint_probe_breakpoint_ops;
14611   else
14612     ops = &tracepoint_breakpoint_ops;
14613
14614   if (create_breakpoint (get_current_arch (),
14615                          arg,
14616                          NULL, 0, NULL, 1 /* parse arg */,
14617                          0 /* tempflag */,
14618                          bp_tracepoint /* type_wanted */,
14619                          0 /* Ignore count */,
14620                          pending_break_support,
14621                          ops,
14622                          from_tty,
14623                          1 /* enabled */,
14624                          0 /* internal */, 0))
14625     set_tracepoint_count (breakpoint_count);
14626 }
14627
14628 static void
14629 ftrace_command (char *arg, int from_tty)
14630 {
14631   if (create_breakpoint (get_current_arch (),
14632                          arg,
14633                          NULL, 0, NULL, 1 /* parse arg */,
14634                          0 /* tempflag */,
14635                          bp_fast_tracepoint /* type_wanted */,
14636                          0 /* Ignore count */,
14637                          pending_break_support,
14638                          &tracepoint_breakpoint_ops,
14639                          from_tty,
14640                          1 /* enabled */,
14641                          0 /* internal */, 0))
14642     set_tracepoint_count (breakpoint_count);
14643 }
14644
14645 /* strace command implementation.  Creates a static tracepoint.  */
14646
14647 static void
14648 strace_command (char *arg, int from_tty)
14649 {
14650   struct breakpoint_ops *ops;
14651
14652   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14653      or with a normal static tracepoint.  */
14654   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
14655     ops = &strace_marker_breakpoint_ops;
14656   else
14657     ops = &tracepoint_breakpoint_ops;
14658
14659   if (create_breakpoint (get_current_arch (),
14660                          arg,
14661                          NULL, 0, NULL, 1 /* parse arg */,
14662                          0 /* tempflag */,
14663                          bp_static_tracepoint /* type_wanted */,
14664                          0 /* Ignore count */,
14665                          pending_break_support,
14666                          ops,
14667                          from_tty,
14668                          1 /* enabled */,
14669                          0 /* internal */, 0))
14670     set_tracepoint_count (breakpoint_count);
14671 }
14672
14673 /* Set up a fake reader function that gets command lines from a linked
14674    list that was acquired during tracepoint uploading.  */
14675
14676 static struct uploaded_tp *this_utp;
14677 static int next_cmd;
14678
14679 static char *
14680 read_uploaded_action (void)
14681 {
14682   char *rslt;
14683
14684   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14685
14686   next_cmd++;
14687
14688   return rslt;
14689 }
14690
14691 /* Given information about a tracepoint as recorded on a target (which
14692    can be either a live system or a trace file), attempt to create an
14693    equivalent GDB tracepoint.  This is not a reliable process, since
14694    the target does not necessarily have all the information used when
14695    the tracepoint was originally defined.  */
14696   
14697 struct tracepoint *
14698 create_tracepoint_from_upload (struct uploaded_tp *utp)
14699 {
14700   char *addr_str, small_buf[100];
14701   struct tracepoint *tp;
14702
14703   if (utp->at_string)
14704     addr_str = utp->at_string;
14705   else
14706     {
14707       /* In the absence of a source location, fall back to raw
14708          address.  Since there is no way to confirm that the address
14709          means the same thing as when the trace was started, warn the
14710          user.  */
14711       warning (_("Uploaded tracepoint %d has no "
14712                  "source location, using raw address"),
14713                utp->number);
14714       sprintf (small_buf, "*%s", hex_string (utp->addr));
14715       addr_str = small_buf;
14716     }
14717
14718   /* There's not much we can do with a sequence of bytecodes.  */
14719   if (utp->cond && !utp->cond_string)
14720     warning (_("Uploaded tracepoint %d condition "
14721                "has no source form, ignoring it"),
14722              utp->number);
14723
14724   if (!create_breakpoint (get_current_arch (),
14725                           addr_str,
14726                           utp->cond_string, -1, NULL,
14727                           0 /* parse cond/thread */,
14728                           0 /* tempflag */,
14729                           utp->type /* type_wanted */,
14730                           0 /* Ignore count */,
14731                           pending_break_support,
14732                           &tracepoint_breakpoint_ops,
14733                           0 /* from_tty */,
14734                           utp->enabled /* enabled */,
14735                           0 /* internal */,
14736                           CREATE_BREAKPOINT_FLAGS_INSERTED))
14737     return NULL;
14738
14739   set_tracepoint_count (breakpoint_count);
14740   
14741   /* Get the tracepoint we just created.  */
14742   tp = get_tracepoint (tracepoint_count);
14743   gdb_assert (tp != NULL);
14744
14745   if (utp->pass > 0)
14746     {
14747       sprintf (small_buf, "%d %d", utp->pass, tp->base.number);
14748
14749       trace_pass_command (small_buf, 0);
14750     }
14751
14752   /* If we have uploaded versions of the original commands, set up a
14753      special-purpose "reader" function and call the usual command line
14754      reader, then pass the result to the breakpoint command-setting
14755      function.  */
14756   if (!VEC_empty (char_ptr, utp->cmd_strings))
14757     {
14758       struct command_line *cmd_list;
14759
14760       this_utp = utp;
14761       next_cmd = 0;
14762
14763       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
14764
14765       breakpoint_set_commands (&tp->base, cmd_list);
14766     }
14767   else if (!VEC_empty (char_ptr, utp->actions)
14768            || !VEC_empty (char_ptr, utp->step_actions))
14769     warning (_("Uploaded tracepoint %d actions "
14770                "have no source form, ignoring them"),
14771              utp->number);
14772
14773   /* Copy any status information that might be available.  */
14774   tp->base.hit_count = utp->hit_count;
14775   tp->traceframe_usage = utp->traceframe_usage;
14776
14777   return tp;
14778 }
14779   
14780 /* Print information on tracepoint number TPNUM_EXP, or all if
14781    omitted.  */
14782
14783 static void
14784 tracepoints_info (char *args, int from_tty)
14785 {
14786   struct ui_out *uiout = current_uiout;
14787   int num_printed;
14788
14789   num_printed = breakpoint_1 (args, 0, is_tracepoint);
14790
14791   if (num_printed == 0)
14792     {
14793       if (args == NULL || *args == '\0')
14794         ui_out_message (uiout, 0, "No tracepoints.\n");
14795       else
14796         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
14797     }
14798
14799   default_collect_info ();
14800 }
14801
14802 /* The 'enable trace' command enables tracepoints.
14803    Not supported by all targets.  */
14804 static void
14805 enable_trace_command (char *args, int from_tty)
14806 {
14807   enable_command (args, from_tty);
14808 }
14809
14810 /* The 'disable trace' command disables tracepoints.
14811    Not supported by all targets.  */
14812 static void
14813 disable_trace_command (char *args, int from_tty)
14814 {
14815   disable_command (args, from_tty);
14816 }
14817
14818 /* Remove a tracepoint (or all if no argument).  */
14819 static void
14820 delete_trace_command (char *arg, int from_tty)
14821 {
14822   struct breakpoint *b, *b_tmp;
14823
14824   dont_repeat ();
14825
14826   if (arg == 0)
14827     {
14828       int breaks_to_delete = 0;
14829
14830       /* Delete all breakpoints if no argument.
14831          Do not delete internal or call-dummy breakpoints, these
14832          have to be deleted with an explicit breakpoint number 
14833          argument.  */
14834       ALL_TRACEPOINTS (b)
14835         if (is_tracepoint (b) && user_breakpoint_p (b))
14836           {
14837             breaks_to_delete = 1;
14838             break;
14839           }
14840
14841       /* Ask user only if there are some breakpoints to delete.  */
14842       if (!from_tty
14843           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
14844         {
14845           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14846             if (is_tracepoint (b) && user_breakpoint_p (b))
14847               delete_breakpoint (b);
14848         }
14849     }
14850   else
14851     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14852 }
14853
14854 /* Helper function for trace_pass_command.  */
14855
14856 static void
14857 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
14858 {
14859   tp->pass_count = count;
14860   observer_notify_tracepoint_modified (tp->base.number);
14861   if (from_tty)
14862     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
14863                      tp->base.number, count);
14864 }
14865
14866 /* Set passcount for tracepoint.
14867
14868    First command argument is passcount, second is tracepoint number.
14869    If tracepoint number omitted, apply to most recently defined.
14870    Also accepts special argument "all".  */
14871
14872 static void
14873 trace_pass_command (char *args, int from_tty)
14874 {
14875   struct tracepoint *t1;
14876   unsigned int count;
14877
14878   if (args == 0 || *args == 0)
14879     error (_("passcount command requires an "
14880              "argument (count + optional TP num)"));
14881
14882   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
14883
14884   while (*args && isspace ((int) *args))
14885     args++;
14886
14887   if (*args && strncasecmp (args, "all", 3) == 0)
14888     {
14889       struct breakpoint *b;
14890
14891       args += 3;                        /* Skip special argument "all".  */
14892       if (*args)
14893         error (_("Junk at end of arguments."));
14894
14895       ALL_TRACEPOINTS (b)
14896       {
14897         t1 = (struct tracepoint *) b;
14898         trace_pass_set_count (t1, count, from_tty);
14899       }
14900     }
14901   else if (*args == '\0')
14902     {
14903       t1 = get_tracepoint_by_number (&args, NULL, 1);
14904       if (t1)
14905         trace_pass_set_count (t1, count, from_tty);
14906     }
14907   else
14908     {
14909       struct get_number_or_range_state state;
14910
14911       init_number_or_range (&state, args);
14912       while (!state.finished)
14913         {
14914           t1 = get_tracepoint_by_number (&args, &state, 1);
14915           if (t1)
14916             trace_pass_set_count (t1, count, from_tty);
14917         }
14918     }
14919 }
14920
14921 struct tracepoint *
14922 get_tracepoint (int num)
14923 {
14924   struct breakpoint *t;
14925
14926   ALL_TRACEPOINTS (t)
14927     if (t->number == num)
14928       return (struct tracepoint *) t;
14929
14930   return NULL;
14931 }
14932
14933 /* Find the tracepoint with the given target-side number (which may be
14934    different from the tracepoint number after disconnecting and
14935    reconnecting).  */
14936
14937 struct tracepoint *
14938 get_tracepoint_by_number_on_target (int num)
14939 {
14940   struct breakpoint *b;
14941
14942   ALL_TRACEPOINTS (b)
14943     {
14944       struct tracepoint *t = (struct tracepoint *) b;
14945
14946       if (t->number_on_target == num)
14947         return t;
14948     }
14949
14950   return NULL;
14951 }
14952
14953 /* Utility: parse a tracepoint number and look it up in the list.
14954    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
14955    If OPTIONAL_P is true, then if the argument is missing, the most
14956    recent tracepoint (tracepoint_count) is returned.  */
14957 struct tracepoint *
14958 get_tracepoint_by_number (char **arg,
14959                           struct get_number_or_range_state *state,
14960                           int optional_p)
14961 {
14962   extern int tracepoint_count;
14963   struct breakpoint *t;
14964   int tpnum;
14965   char *instring = arg == NULL ? NULL : *arg;
14966
14967   if (state)
14968     {
14969       gdb_assert (!state->finished);
14970       tpnum = get_number_or_range (state);
14971     }
14972   else if (arg == NULL || *arg == NULL || ! **arg)
14973     {
14974       if (optional_p)
14975         tpnum = tracepoint_count;
14976       else
14977         error_no_arg (_("tracepoint number"));
14978     }
14979   else
14980     tpnum = get_number (arg);
14981
14982   if (tpnum <= 0)
14983     {
14984       if (instring && *instring)
14985         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
14986                          instring);
14987       else
14988         printf_filtered (_("Tracepoint argument missing "
14989                            "and no previous tracepoint\n"));
14990       return NULL;
14991     }
14992
14993   ALL_TRACEPOINTS (t)
14994     if (t->number == tpnum)
14995     {
14996       return (struct tracepoint *) t;
14997     }
14998
14999   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15000   return NULL;
15001 }
15002
15003 void
15004 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15005 {
15006   if (b->thread != -1)
15007     fprintf_unfiltered (fp, " thread %d", b->thread);
15008
15009   if (b->task != 0)
15010     fprintf_unfiltered (fp, " task %d", b->task);
15011
15012   fprintf_unfiltered (fp, "\n");
15013 }
15014
15015 /* Save information on user settable breakpoints (watchpoints, etc) to
15016    a new script file named FILENAME.  If FILTER is non-NULL, call it
15017    on each breakpoint and only include the ones for which it returns
15018    non-zero.  */
15019
15020 static void
15021 save_breakpoints (char *filename, int from_tty,
15022                   int (*filter) (const struct breakpoint *))
15023 {
15024   struct breakpoint *tp;
15025   int any = 0;
15026   char *pathname;
15027   struct cleanup *cleanup;
15028   struct ui_file *fp;
15029   int extra_trace_bits = 0;
15030
15031   if (filename == 0 || *filename == 0)
15032     error (_("Argument required (file name in which to save)"));
15033
15034   /* See if we have anything to save.  */
15035   ALL_BREAKPOINTS (tp)
15036   {
15037     /* Skip internal and momentary breakpoints.  */
15038     if (!user_breakpoint_p (tp))
15039       continue;
15040
15041     /* If we have a filter, only save the breakpoints it accepts.  */
15042     if (filter && !filter (tp))
15043       continue;
15044
15045     any = 1;
15046
15047     if (is_tracepoint (tp))
15048       {
15049         extra_trace_bits = 1;
15050
15051         /* We can stop searching.  */
15052         break;
15053       }
15054   }
15055
15056   if (!any)
15057     {
15058       warning (_("Nothing to save."));
15059       return;
15060     }
15061
15062   pathname = tilde_expand (filename);
15063   cleanup = make_cleanup (xfree, pathname);
15064   fp = gdb_fopen (pathname, "w");
15065   if (!fp)
15066     error (_("Unable to open file '%s' for saving (%s)"),
15067            filename, safe_strerror (errno));
15068   make_cleanup_ui_file_delete (fp);
15069
15070   if (extra_trace_bits)
15071     save_trace_state_variables (fp);
15072
15073   ALL_BREAKPOINTS (tp)
15074   {
15075     /* Skip internal and momentary breakpoints.  */
15076     if (!user_breakpoint_p (tp))
15077       continue;
15078
15079     /* If we have a filter, only save the breakpoints it accepts.  */
15080     if (filter && !filter (tp))
15081       continue;
15082
15083     tp->ops->print_recreate (tp, fp);
15084
15085     /* Note, we can't rely on tp->number for anything, as we can't
15086        assume the recreated breakpoint numbers will match.  Use $bpnum
15087        instead.  */
15088
15089     if (tp->cond_string)
15090       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15091
15092     if (tp->ignore_count)
15093       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15094
15095     if (tp->commands)
15096       {
15097         volatile struct gdb_exception ex;       
15098
15099         fprintf_unfiltered (fp, "  commands\n");
15100         
15101         ui_out_redirect (current_uiout, fp);
15102         TRY_CATCH (ex, RETURN_MASK_ALL)
15103           {
15104             print_command_lines (current_uiout, tp->commands->commands, 2);
15105           }
15106         ui_out_redirect (current_uiout, NULL);
15107
15108         if (ex.reason < 0)
15109           throw_exception (ex);
15110
15111         fprintf_unfiltered (fp, "  end\n");
15112       }
15113
15114     if (tp->enable_state == bp_disabled)
15115       fprintf_unfiltered (fp, "disable\n");
15116
15117     /* If this is a multi-location breakpoint, check if the locations
15118        should be individually disabled.  Watchpoint locations are
15119        special, and not user visible.  */
15120     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15121       {
15122         struct bp_location *loc;
15123         int n = 1;
15124
15125         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15126           if (!loc->enabled)
15127             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15128       }
15129   }
15130
15131   if (extra_trace_bits && *default_collect)
15132     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15133
15134   do_cleanups (cleanup);
15135   if (from_tty)
15136     printf_filtered (_("Saved to file '%s'.\n"), filename);
15137 }
15138
15139 /* The `save breakpoints' command.  */
15140
15141 static void
15142 save_breakpoints_command (char *args, int from_tty)
15143 {
15144   save_breakpoints (args, from_tty, NULL);
15145 }
15146
15147 /* The `save tracepoints' command.  */
15148
15149 static void
15150 save_tracepoints_command (char *args, int from_tty)
15151 {
15152   save_breakpoints (args, from_tty, is_tracepoint);
15153 }
15154
15155 /* Create a vector of all tracepoints.  */
15156
15157 VEC(breakpoint_p) *
15158 all_tracepoints (void)
15159 {
15160   VEC(breakpoint_p) *tp_vec = 0;
15161   struct breakpoint *tp;
15162
15163   ALL_TRACEPOINTS (tp)
15164   {
15165     VEC_safe_push (breakpoint_p, tp_vec, tp);
15166   }
15167
15168   return tp_vec;
15169 }
15170
15171 \f
15172 /* This help string is used for the break, hbreak, tbreak and thbreak
15173    commands.  It is defined as a macro to prevent duplication.
15174    COMMAND should be a string constant containing the name of the
15175    command.  */
15176 #define BREAK_ARGS_HELP(command) \
15177 command" [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15178 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15179 If a line number is specified, break at start of code for that line.\n\
15180 If a function is specified, break at start of code for that function.\n\
15181 If an address is specified, break at that exact address.\n\
15182 With no LOCATION, uses current execution address of the selected\n\
15183 stack frame.  This is useful for breaking on return to a stack frame.\n\
15184 \n\
15185 THREADNUM is the number from \"info threads\".\n\
15186 CONDITION is a boolean expression.\n\
15187 \n\
15188 Multiple breakpoints at one place are permitted, and useful if their\n\
15189 conditions are different.\n\
15190 \n\
15191 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15192
15193 /* List of subcommands for "catch".  */
15194 static struct cmd_list_element *catch_cmdlist;
15195
15196 /* List of subcommands for "tcatch".  */
15197 static struct cmd_list_element *tcatch_cmdlist;
15198
15199 void
15200 add_catch_command (char *name, char *docstring,
15201                    void (*sfunc) (char *args, int from_tty,
15202                                   struct cmd_list_element *command),
15203                    completer_ftype *completer,
15204                    void *user_data_catch,
15205                    void *user_data_tcatch)
15206 {
15207   struct cmd_list_element *command;
15208
15209   command = add_cmd (name, class_breakpoint, NULL, docstring,
15210                      &catch_cmdlist);
15211   set_cmd_sfunc (command, sfunc);
15212   set_cmd_context (command, user_data_catch);
15213   set_cmd_completer (command, completer);
15214
15215   command = add_cmd (name, class_breakpoint, NULL, docstring,
15216                      &tcatch_cmdlist);
15217   set_cmd_sfunc (command, sfunc);
15218   set_cmd_context (command, user_data_tcatch);
15219   set_cmd_completer (command, completer);
15220 }
15221
15222 static void
15223 clear_syscall_counts (struct inferior *inf)
15224 {
15225   struct catch_syscall_inferior_data *inf_data
15226     = get_catch_syscall_inferior_data (inf);
15227
15228   inf_data->total_syscalls_count = 0;
15229   inf_data->any_syscall_count = 0;
15230   VEC_free (int, inf_data->syscalls_counts);
15231 }
15232
15233 static void
15234 save_command (char *arg, int from_tty)
15235 {
15236   printf_unfiltered (_("\"save\" must be followed by "
15237                        "the name of a save subcommand.\n"));
15238   help_list (save_cmdlist, "save ", -1, gdb_stdout);
15239 }
15240
15241 struct breakpoint *
15242 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15243                           void *data)
15244 {
15245   struct breakpoint *b, *b_tmp;
15246
15247   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15248     {
15249       if ((*callback) (b, data))
15250         return b;
15251     }
15252
15253   return NULL;
15254 }
15255
15256 /* Zero if any of the breakpoint's locations could be a location where
15257    functions have been inlined, nonzero otherwise.  */
15258
15259 static int
15260 is_non_inline_function (struct breakpoint *b)
15261 {
15262   /* The shared library event breakpoint is set on the address of a
15263      non-inline function.  */
15264   if (b->type == bp_shlib_event)
15265     return 1;
15266
15267   return 0;
15268 }
15269
15270 /* Nonzero if the specified PC cannot be a location where functions
15271    have been inlined.  */
15272
15273 int
15274 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15275                            const struct target_waitstatus *ws)
15276 {
15277   struct breakpoint *b;
15278   struct bp_location *bl;
15279
15280   ALL_BREAKPOINTS (b)
15281     {
15282       if (!is_non_inline_function (b))
15283         continue;
15284
15285       for (bl = b->loc; bl != NULL; bl = bl->next)
15286         {
15287           if (!bl->shlib_disabled
15288               && bpstat_check_location (bl, aspace, pc, ws))
15289             return 1;
15290         }
15291     }
15292
15293   return 0;
15294 }
15295
15296 void
15297 initialize_breakpoint_ops (void)
15298 {
15299   static int initialized = 0;
15300
15301   struct breakpoint_ops *ops;
15302
15303   if (initialized)
15304     return;
15305   initialized = 1;
15306
15307   /* The breakpoint_ops structure to be inherit by all kinds of
15308      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15309      internal and momentary breakpoints, etc.).  */
15310   ops = &bkpt_base_breakpoint_ops;
15311   *ops = base_breakpoint_ops;
15312   ops->re_set = bkpt_re_set;
15313   ops->insert_location = bkpt_insert_location;
15314   ops->remove_location = bkpt_remove_location;
15315   ops->breakpoint_hit = bkpt_breakpoint_hit;
15316   ops->create_sals_from_address = bkpt_create_sals_from_address;
15317   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15318   ops->decode_linespec = bkpt_decode_linespec;
15319
15320   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15321   ops = &bkpt_breakpoint_ops;
15322   *ops = bkpt_base_breakpoint_ops;
15323   ops->re_set = bkpt_re_set;
15324   ops->resources_needed = bkpt_resources_needed;
15325   ops->print_it = bkpt_print_it;
15326   ops->print_mention = bkpt_print_mention;
15327   ops->print_recreate = bkpt_print_recreate;
15328
15329   /* Ranged breakpoints.  */
15330   ops = &ranged_breakpoint_ops;
15331   *ops = bkpt_breakpoint_ops;
15332   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15333   ops->resources_needed = resources_needed_ranged_breakpoint;
15334   ops->print_it = print_it_ranged_breakpoint;
15335   ops->print_one = print_one_ranged_breakpoint;
15336   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15337   ops->print_mention = print_mention_ranged_breakpoint;
15338   ops->print_recreate = print_recreate_ranged_breakpoint;
15339
15340   /* Internal breakpoints.  */
15341   ops = &internal_breakpoint_ops;
15342   *ops = bkpt_base_breakpoint_ops;
15343   ops->re_set = internal_bkpt_re_set;
15344   ops->check_status = internal_bkpt_check_status;
15345   ops->print_it = internal_bkpt_print_it;
15346   ops->print_mention = internal_bkpt_print_mention;
15347
15348   /* Momentary breakpoints.  */
15349   ops = &momentary_breakpoint_ops;
15350   *ops = bkpt_base_breakpoint_ops;
15351   ops->re_set = momentary_bkpt_re_set;
15352   ops->check_status = momentary_bkpt_check_status;
15353   ops->print_it = momentary_bkpt_print_it;
15354   ops->print_mention = momentary_bkpt_print_mention;
15355
15356   /* Probe breakpoints.  */
15357   ops = &bkpt_probe_breakpoint_ops;
15358   *ops = bkpt_breakpoint_ops;
15359   ops->insert_location = bkpt_probe_insert_location;
15360   ops->remove_location = bkpt_probe_remove_location;
15361   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15362   ops->decode_linespec = bkpt_probe_decode_linespec;
15363
15364   /* GNU v3 exception catchpoints.  */
15365   ops = &gnu_v3_exception_catchpoint_ops;
15366   *ops = bkpt_breakpoint_ops;
15367   ops->print_it = print_it_exception_catchpoint;
15368   ops->print_one = print_one_exception_catchpoint;
15369   ops->print_mention = print_mention_exception_catchpoint;
15370   ops->print_recreate = print_recreate_exception_catchpoint;
15371
15372   /* Watchpoints.  */
15373   ops = &watchpoint_breakpoint_ops;
15374   *ops = base_breakpoint_ops;
15375   ops->dtor = dtor_watchpoint;
15376   ops->re_set = re_set_watchpoint;
15377   ops->insert_location = insert_watchpoint;
15378   ops->remove_location = remove_watchpoint;
15379   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15380   ops->check_status = check_status_watchpoint;
15381   ops->resources_needed = resources_needed_watchpoint;
15382   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15383   ops->print_it = print_it_watchpoint;
15384   ops->print_mention = print_mention_watchpoint;
15385   ops->print_recreate = print_recreate_watchpoint;
15386
15387   /* Masked watchpoints.  */
15388   ops = &masked_watchpoint_breakpoint_ops;
15389   *ops = watchpoint_breakpoint_ops;
15390   ops->insert_location = insert_masked_watchpoint;
15391   ops->remove_location = remove_masked_watchpoint;
15392   ops->resources_needed = resources_needed_masked_watchpoint;
15393   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15394   ops->print_it = print_it_masked_watchpoint;
15395   ops->print_one_detail = print_one_detail_masked_watchpoint;
15396   ops->print_mention = print_mention_masked_watchpoint;
15397   ops->print_recreate = print_recreate_masked_watchpoint;
15398
15399   /* Tracepoints.  */
15400   ops = &tracepoint_breakpoint_ops;
15401   *ops = base_breakpoint_ops;
15402   ops->re_set = tracepoint_re_set;
15403   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15404   ops->print_one_detail = tracepoint_print_one_detail;
15405   ops->print_mention = tracepoint_print_mention;
15406   ops->print_recreate = tracepoint_print_recreate;
15407   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15408   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15409   ops->decode_linespec = tracepoint_decode_linespec;
15410
15411   /* Probe tracepoints.  */
15412   ops = &tracepoint_probe_breakpoint_ops;
15413   *ops = tracepoint_breakpoint_ops;
15414   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15415   ops->decode_linespec = tracepoint_probe_decode_linespec;
15416
15417   /* Static tracepoints with marker (`-m').  */
15418   ops = &strace_marker_breakpoint_ops;
15419   *ops = tracepoint_breakpoint_ops;
15420   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15421   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15422   ops->decode_linespec = strace_marker_decode_linespec;
15423
15424   /* Fork catchpoints.  */
15425   ops = &catch_fork_breakpoint_ops;
15426   *ops = base_breakpoint_ops;
15427   ops->insert_location = insert_catch_fork;
15428   ops->remove_location = remove_catch_fork;
15429   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15430   ops->print_it = print_it_catch_fork;
15431   ops->print_one = print_one_catch_fork;
15432   ops->print_mention = print_mention_catch_fork;
15433   ops->print_recreate = print_recreate_catch_fork;
15434
15435   /* Vfork catchpoints.  */
15436   ops = &catch_vfork_breakpoint_ops;
15437   *ops = base_breakpoint_ops;
15438   ops->insert_location = insert_catch_vfork;
15439   ops->remove_location = remove_catch_vfork;
15440   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15441   ops->print_it = print_it_catch_vfork;
15442   ops->print_one = print_one_catch_vfork;
15443   ops->print_mention = print_mention_catch_vfork;
15444   ops->print_recreate = print_recreate_catch_vfork;
15445
15446   /* Exec catchpoints.  */
15447   ops = &catch_exec_breakpoint_ops;
15448   *ops = base_breakpoint_ops;
15449   ops->dtor = dtor_catch_exec;
15450   ops->insert_location = insert_catch_exec;
15451   ops->remove_location = remove_catch_exec;
15452   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15453   ops->print_it = print_it_catch_exec;
15454   ops->print_one = print_one_catch_exec;
15455   ops->print_mention = print_mention_catch_exec;
15456   ops->print_recreate = print_recreate_catch_exec;
15457
15458   /* Syscall catchpoints.  */
15459   ops = &catch_syscall_breakpoint_ops;
15460   *ops = base_breakpoint_ops;
15461   ops->dtor = dtor_catch_syscall;
15462   ops->insert_location = insert_catch_syscall;
15463   ops->remove_location = remove_catch_syscall;
15464   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
15465   ops->print_it = print_it_catch_syscall;
15466   ops->print_one = print_one_catch_syscall;
15467   ops->print_mention = print_mention_catch_syscall;
15468   ops->print_recreate = print_recreate_catch_syscall;
15469
15470   /* Solib-related catchpoints.  */
15471   ops = &catch_solib_breakpoint_ops;
15472   *ops = base_breakpoint_ops;
15473   ops->dtor = dtor_catch_solib;
15474   ops->insert_location = insert_catch_solib;
15475   ops->remove_location = remove_catch_solib;
15476   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15477   ops->check_status = check_status_catch_solib;
15478   ops->print_it = print_it_catch_solib;
15479   ops->print_one = print_one_catch_solib;
15480   ops->print_mention = print_mention_catch_solib;
15481   ops->print_recreate = print_recreate_catch_solib;
15482
15483   ops = &dprintf_breakpoint_ops;
15484   *ops = bkpt_base_breakpoint_ops;
15485   ops->re_set = bkpt_re_set;
15486   ops->resources_needed = bkpt_resources_needed;
15487   ops->print_it = bkpt_print_it;
15488   ops->print_mention = bkpt_print_mention;
15489   ops->print_recreate = bkpt_print_recreate;
15490 }
15491
15492 void
15493 _initialize_breakpoint (void)
15494 {
15495   struct cmd_list_element *c;
15496
15497   initialize_breakpoint_ops ();
15498
15499   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15500   observer_attach_inferior_exit (clear_syscall_counts);
15501   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15502
15503   breakpoint_objfile_key
15504     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15505
15506   catch_syscall_inferior_data
15507     = register_inferior_data_with_cleanup (catch_syscall_inferior_data_cleanup);
15508
15509   breakpoint_chain = 0;
15510   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15511      before a breakpoint is set.  */
15512   breakpoint_count = 0;
15513
15514   tracepoint_count = 0;
15515
15516   add_com ("ignore", class_breakpoint, ignore_command, _("\
15517 Set ignore-count of breakpoint number N to COUNT.\n\
15518 Usage is `ignore N COUNT'."));
15519   if (xdb_commands)
15520     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15521
15522   add_com ("commands", class_breakpoint, commands_command, _("\
15523 Set commands to be executed when a breakpoint is hit.\n\
15524 Give breakpoint number as argument after \"commands\".\n\
15525 With no argument, the targeted breakpoint is the last one set.\n\
15526 The commands themselves follow starting on the next line.\n\
15527 Type a line containing \"end\" to indicate the end of them.\n\
15528 Give \"silent\" as the first line to make the breakpoint silent;\n\
15529 then no output is printed when it is hit, except what the commands print."));
15530
15531   add_com ("condition", class_breakpoint, condition_command, _("\
15532 Specify breakpoint number N to break only if COND is true.\n\
15533 Usage is `condition N COND', where N is an integer and COND is an\n\
15534 expression to be evaluated whenever breakpoint N is reached."));
15535
15536   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15537 Set a temporary breakpoint.\n\
15538 Like \"break\" except the breakpoint is only temporary,\n\
15539 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15540 by using \"enable delete\" on the breakpoint number.\n\
15541 \n"
15542 BREAK_ARGS_HELP ("tbreak")));
15543   set_cmd_completer (c, location_completer);
15544
15545   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15546 Set a hardware assisted breakpoint.\n\
15547 Like \"break\" except the breakpoint requires hardware support,\n\
15548 some target hardware may not have this support.\n\
15549 \n"
15550 BREAK_ARGS_HELP ("hbreak")));
15551   set_cmd_completer (c, location_completer);
15552
15553   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15554 Set a temporary hardware assisted breakpoint.\n\
15555 Like \"hbreak\" except the breakpoint is only temporary,\n\
15556 so it will be deleted when hit.\n\
15557 \n"
15558 BREAK_ARGS_HELP ("thbreak")));
15559   set_cmd_completer (c, location_completer);
15560
15561   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15562 Enable some breakpoints.\n\
15563 Give breakpoint numbers (separated by spaces) as arguments.\n\
15564 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15565 This is used to cancel the effect of the \"disable\" command.\n\
15566 With a subcommand you can enable temporarily."),
15567                   &enablelist, "enable ", 1, &cmdlist);
15568   if (xdb_commands)
15569     add_com ("ab", class_breakpoint, enable_command, _("\
15570 Enable some breakpoints.\n\
15571 Give breakpoint numbers (separated by spaces) as arguments.\n\
15572 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15573 This is used to cancel the effect of the \"disable\" command.\n\
15574 With a subcommand you can enable temporarily."));
15575
15576   add_com_alias ("en", "enable", class_breakpoint, 1);
15577
15578   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15579 Enable some breakpoints.\n\
15580 Give breakpoint numbers (separated by spaces) as arguments.\n\
15581 This is used to cancel the effect of the \"disable\" command.\n\
15582 May be abbreviated to simply \"enable\".\n"),
15583                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15584
15585   add_cmd ("once", no_class, enable_once_command, _("\
15586 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15587 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15588            &enablebreaklist);
15589
15590   add_cmd ("delete", no_class, enable_delete_command, _("\
15591 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15592 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15593            &enablebreaklist);
15594
15595   add_cmd ("count", no_class, enable_count_command, _("\
15596 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15597 If a breakpoint is hit while enabled in this fashion,\n\
15598 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15599            &enablebreaklist);
15600
15601   add_cmd ("delete", no_class, enable_delete_command, _("\
15602 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15603 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15604            &enablelist);
15605
15606   add_cmd ("once", no_class, enable_once_command, _("\
15607 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15608 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15609            &enablelist);
15610
15611   add_cmd ("count", no_class, enable_count_command, _("\
15612 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15613 If a breakpoint is hit while enabled in this fashion,\n\
15614 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15615            &enablelist);
15616
15617   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15618 Disable some breakpoints.\n\
15619 Arguments are breakpoint numbers with spaces in between.\n\
15620 To disable all breakpoints, give no argument.\n\
15621 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15622                   &disablelist, "disable ", 1, &cmdlist);
15623   add_com_alias ("dis", "disable", class_breakpoint, 1);
15624   add_com_alias ("disa", "disable", class_breakpoint, 1);
15625   if (xdb_commands)
15626     add_com ("sb", class_breakpoint, 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."));
15631
15632   add_cmd ("breakpoints", class_alias, disable_command, _("\
15633 Disable some breakpoints.\n\
15634 Arguments are breakpoint numbers with spaces in between.\n\
15635 To disable all breakpoints, give no argument.\n\
15636 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15637 This command may be abbreviated \"disable\"."),
15638            &disablelist);
15639
15640   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15641 Delete some breakpoints or auto-display expressions.\n\
15642 Arguments are breakpoint numbers with spaces in between.\n\
15643 To delete all breakpoints, give no argument.\n\
15644 \n\
15645 Also a prefix command for deletion of other GDB objects.\n\
15646 The \"unset\" command is also an alias for \"delete\"."),
15647                   &deletelist, "delete ", 1, &cmdlist);
15648   add_com_alias ("d", "delete", class_breakpoint, 1);
15649   add_com_alias ("del", "delete", class_breakpoint, 1);
15650   if (xdb_commands)
15651     add_com ("db", class_breakpoint, delete_command, _("\
15652 Delete some breakpoints.\n\
15653 Arguments are breakpoint numbers with spaces in between.\n\
15654 To delete all breakpoints, give no argument.\n"));
15655
15656   add_cmd ("breakpoints", class_alias, delete_command, _("\
15657 Delete some breakpoints or auto-display expressions.\n\
15658 Arguments are breakpoint numbers with spaces in between.\n\
15659 To delete all breakpoints, give no argument.\n\
15660 This command may be abbreviated \"delete\"."),
15661            &deletelist);
15662
15663   add_com ("clear", class_breakpoint, clear_command, _("\
15664 Clear breakpoint at specified line or function.\n\
15665 Argument may be line number, function name, or \"*\" and an address.\n\
15666 If line number is specified, all breakpoints in that line are cleared.\n\
15667 If function is specified, breakpoints at beginning of function are cleared.\n\
15668 If an address is specified, breakpoints at that address are cleared.\n\
15669 \n\
15670 With no argument, clears all breakpoints in the line that the selected frame\n\
15671 is executing in.\n\
15672 \n\
15673 See also the \"delete\" command which clears breakpoints by number."));
15674   add_com_alias ("cl", "clear", class_breakpoint, 1);
15675
15676   c = add_com ("break", class_breakpoint, break_command, _("\
15677 Set breakpoint at specified line or function.\n"
15678 BREAK_ARGS_HELP ("break")));
15679   set_cmd_completer (c, location_completer);
15680
15681   add_com_alias ("b", "break", class_run, 1);
15682   add_com_alias ("br", "break", class_run, 1);
15683   add_com_alias ("bre", "break", class_run, 1);
15684   add_com_alias ("brea", "break", class_run, 1);
15685
15686   if (xdb_commands)
15687    add_com_alias ("ba", "break", class_breakpoint, 1);
15688
15689   if (dbx_commands)
15690     {
15691       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15692 Break in function/address or break at a line in the current file."),
15693                              &stoplist, "stop ", 1, &cmdlist);
15694       add_cmd ("in", class_breakpoint, stopin_command,
15695                _("Break in function or address."), &stoplist);
15696       add_cmd ("at", class_breakpoint, stopat_command,
15697                _("Break at a line in the current file."), &stoplist);
15698       add_com ("status", class_info, breakpoints_info, _("\
15699 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15700 The \"Type\" column indicates one of:\n\
15701 \tbreakpoint     - normal breakpoint\n\
15702 \twatchpoint     - watchpoint\n\
15703 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15704 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15705 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15706 address and file/line number respectively.\n\
15707 \n\
15708 Convenience variable \"$_\" and default examine address for \"x\"\n\
15709 are set to the address of the last breakpoint listed unless the command\n\
15710 is prefixed with \"server \".\n\n\
15711 Convenience variable \"$bpnum\" contains the number of the last\n\
15712 breakpoint set."));
15713     }
15714
15715   add_info ("breakpoints", breakpoints_info, _("\
15716 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
15717 The \"Type\" column indicates one of:\n\
15718 \tbreakpoint     - normal breakpoint\n\
15719 \twatchpoint     - watchpoint\n\
15720 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15721 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15722 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15723 address and file/line number respectively.\n\
15724 \n\
15725 Convenience variable \"$_\" and default examine address for \"x\"\n\
15726 are set to the address of the last breakpoint listed unless the command\n\
15727 is prefixed with \"server \".\n\n\
15728 Convenience variable \"$bpnum\" contains the number of the last\n\
15729 breakpoint set."));
15730
15731   add_info_alias ("b", "breakpoints", 1);
15732
15733   if (xdb_commands)
15734     add_com ("lb", class_breakpoint, breakpoints_info, _("\
15735 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15736 The \"Type\" column indicates one of:\n\
15737 \tbreakpoint     - normal breakpoint\n\
15738 \twatchpoint     - watchpoint\n\
15739 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15740 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15741 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15742 address and file/line number respectively.\n\
15743 \n\
15744 Convenience variable \"$_\" and default examine address for \"x\"\n\
15745 are set to the address of the last breakpoint listed unless the command\n\
15746 is prefixed with \"server \".\n\n\
15747 Convenience variable \"$bpnum\" contains the number of the last\n\
15748 breakpoint set."));
15749
15750   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
15751 Status of all breakpoints, or breakpoint number NUMBER.\n\
15752 The \"Type\" column indicates one of:\n\
15753 \tbreakpoint     - normal breakpoint\n\
15754 \twatchpoint     - watchpoint\n\
15755 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
15756 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
15757 \tuntil          - internal breakpoint used by the \"until\" command\n\
15758 \tfinish         - internal breakpoint used by the \"finish\" command\n\
15759 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15760 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15761 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15762 address and file/line number respectively.\n\
15763 \n\
15764 Convenience variable \"$_\" and default examine address for \"x\"\n\
15765 are set to the address of the last breakpoint listed unless the command\n\
15766 is prefixed with \"server \".\n\n\
15767 Convenience variable \"$bpnum\" contains the number of the last\n\
15768 breakpoint set."),
15769            &maintenanceinfolist);
15770
15771   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
15772 Set catchpoints to catch events."),
15773                   &catch_cmdlist, "catch ",
15774                   0/*allow-unknown*/, &cmdlist);
15775
15776   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
15777 Set temporary catchpoints to catch events."),
15778                   &tcatch_cmdlist, "tcatch ",
15779                   0/*allow-unknown*/, &cmdlist);
15780
15781   /* Add catch and tcatch sub-commands.  */
15782   add_catch_command ("catch", _("\
15783 Catch an exception, when caught."),
15784                      catch_catch_command,
15785                      NULL,
15786                      CATCH_PERMANENT,
15787                      CATCH_TEMPORARY);
15788   add_catch_command ("throw", _("\
15789 Catch an exception, when thrown."),
15790                      catch_throw_command,
15791                      NULL,
15792                      CATCH_PERMANENT,
15793                      CATCH_TEMPORARY);
15794   add_catch_command ("fork", _("Catch calls to fork."),
15795                      catch_fork_command_1,
15796                      NULL,
15797                      (void *) (uintptr_t) catch_fork_permanent,
15798                      (void *) (uintptr_t) catch_fork_temporary);
15799   add_catch_command ("vfork", _("Catch calls to vfork."),
15800                      catch_fork_command_1,
15801                      NULL,
15802                      (void *) (uintptr_t) catch_vfork_permanent,
15803                      (void *) (uintptr_t) catch_vfork_temporary);
15804   add_catch_command ("exec", _("Catch calls to exec."),
15805                      catch_exec_command_1,
15806                      NULL,
15807                      CATCH_PERMANENT,
15808                      CATCH_TEMPORARY);
15809   add_catch_command ("load", _("Catch loads of shared libraries.\n\
15810 Usage: catch load [REGEX]\n\
15811 If REGEX is given, only stop for libraries matching the regular expression."),
15812                      catch_load_command_1,
15813                      NULL,
15814                      CATCH_PERMANENT,
15815                      CATCH_TEMPORARY);
15816   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
15817 Usage: catch unload [REGEX]\n\
15818 If REGEX is given, only stop for libraries matching the regular expression."),
15819                      catch_unload_command_1,
15820                      NULL,
15821                      CATCH_PERMANENT,
15822                      CATCH_TEMPORARY);
15823   add_catch_command ("syscall", _("\
15824 Catch system calls by their names and/or numbers.\n\
15825 Arguments say which system calls to catch.  If no arguments\n\
15826 are given, every system call will be caught.\n\
15827 Arguments, if given, should be one or more system call names\n\
15828 (if your system supports that), or system call numbers."),
15829                      catch_syscall_command_1,
15830                      catch_syscall_completer,
15831                      CATCH_PERMANENT,
15832                      CATCH_TEMPORARY);
15833
15834   c = add_com ("watch", class_breakpoint, watch_command, _("\
15835 Set a watchpoint for an expression.\n\
15836 Usage: watch [-l|-location] EXPRESSION\n\
15837 A watchpoint stops execution of your program whenever the value of\n\
15838 an expression changes.\n\
15839 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15840 the memory to which it refers."));
15841   set_cmd_completer (c, expression_completer);
15842
15843   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
15844 Set a read watchpoint for an expression.\n\
15845 Usage: rwatch [-l|-location] EXPRESSION\n\
15846 A watchpoint stops execution of your program whenever the value of\n\
15847 an expression is read.\n\
15848 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15849 the memory to which it refers."));
15850   set_cmd_completer (c, expression_completer);
15851
15852   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
15853 Set a watchpoint for an expression.\n\
15854 Usage: awatch [-l|-location] EXPRESSION\n\
15855 A watchpoint stops execution of your program whenever the value of\n\
15856 an expression is either read or written.\n\
15857 If -l or -location is given, this evaluates EXPRESSION and watches\n\
15858 the memory to which it refers."));
15859   set_cmd_completer (c, expression_completer);
15860
15861   add_info ("watchpoints", watchpoints_info, _("\
15862 Status of specified watchpoints (all watchpoints if no argument)."));
15863
15864   /* XXX: cagney/2005-02-23: This should be a boolean, and should
15865      respond to changes - contrary to the description.  */
15866   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
15867                             &can_use_hw_watchpoints, _("\
15868 Set debugger's willingness to use watchpoint hardware."), _("\
15869 Show debugger's willingness to use watchpoint hardware."), _("\
15870 If zero, gdb will not use hardware for new watchpoints, even if\n\
15871 such is available.  (However, any hardware watchpoints that were\n\
15872 created before setting this to nonzero, will continue to use watchpoint\n\
15873 hardware.)"),
15874                             NULL,
15875                             show_can_use_hw_watchpoints,
15876                             &setlist, &showlist);
15877
15878   can_use_hw_watchpoints = 1;
15879
15880   /* Tracepoint manipulation commands.  */
15881
15882   c = add_com ("trace", class_breakpoint, trace_command, _("\
15883 Set a tracepoint at specified line or function.\n\
15884 \n"
15885 BREAK_ARGS_HELP ("trace") "\n\
15886 Do \"help tracepoints\" for info on other tracepoint commands."));
15887   set_cmd_completer (c, location_completer);
15888
15889   add_com_alias ("tp", "trace", class_alias, 0);
15890   add_com_alias ("tr", "trace", class_alias, 1);
15891   add_com_alias ("tra", "trace", class_alias, 1);
15892   add_com_alias ("trac", "trace", class_alias, 1);
15893
15894   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
15895 Set a fast tracepoint at specified line or function.\n\
15896 \n"
15897 BREAK_ARGS_HELP ("ftrace") "\n\
15898 Do \"help tracepoints\" for info on other tracepoint commands."));
15899   set_cmd_completer (c, location_completer);
15900
15901   c = add_com ("strace", class_breakpoint, strace_command, _("\
15902 Set a static tracepoint at specified line, function or marker.\n\
15903 \n\
15904 strace [LOCATION] [if CONDITION]\n\
15905 LOCATION may be a line number, function name, \"*\" and an address,\n\
15906 or -m MARKER_ID.\n\
15907 If a line number is specified, probe the marker at start of code\n\
15908 for that line.  If a function is specified, probe the marker at start\n\
15909 of code for that function.  If an address is specified, probe the marker\n\
15910 at that exact address.  If a marker id is specified, probe the marker\n\
15911 with that name.  With no LOCATION, uses current execution address of\n\
15912 the selected stack frame.\n\
15913 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
15914 This collects arbitrary user data passed in the probe point call to the\n\
15915 tracing library.  You can inspect it when analyzing the trace buffer,\n\
15916 by printing the $_sdata variable like any other convenience variable.\n\
15917 \n\
15918 CONDITION is a boolean expression.\n\
15919 \n\
15920 Multiple tracepoints at one place are permitted, and useful if their\n\
15921 conditions are different.\n\
15922 \n\
15923 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
15924 Do \"help tracepoints\" for info on other tracepoint commands."));
15925   set_cmd_completer (c, location_completer);
15926
15927   add_info ("tracepoints", tracepoints_info, _("\
15928 Status of specified tracepoints (all tracepoints if no argument).\n\
15929 Convenience variable \"$tpnum\" contains the number of the\n\
15930 last tracepoint set."));
15931
15932   add_info_alias ("tp", "tracepoints", 1);
15933
15934   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
15935 Delete specified tracepoints.\n\
15936 Arguments are tracepoint numbers, separated by spaces.\n\
15937 No argument means delete all tracepoints."),
15938            &deletelist);
15939
15940   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
15941 Disable specified tracepoints.\n\
15942 Arguments are tracepoint numbers, separated by spaces.\n\
15943 No argument means disable all tracepoints."),
15944            &disablelist);
15945   deprecate_cmd (c, "disable");
15946
15947   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
15948 Enable specified tracepoints.\n\
15949 Arguments are tracepoint numbers, separated by spaces.\n\
15950 No argument means enable all tracepoints."),
15951            &enablelist);
15952   deprecate_cmd (c, "enable");
15953
15954   add_com ("passcount", class_trace, trace_pass_command, _("\
15955 Set the passcount for a tracepoint.\n\
15956 The trace will end when the tracepoint has been passed 'count' times.\n\
15957 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
15958 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
15959
15960   add_prefix_cmd ("save", class_breakpoint, save_command,
15961                   _("Save breakpoint definitions as a script."),
15962                   &save_cmdlist, "save ",
15963                   0/*allow-unknown*/, &cmdlist);
15964
15965   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
15966 Save current breakpoint definitions as a script.\n\
15967 This includes all types of breakpoints (breakpoints, watchpoints,\n\
15968 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
15969 session to restore them."),
15970                &save_cmdlist);
15971   set_cmd_completer (c, filename_completer);
15972
15973   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
15974 Save current tracepoint definitions as a script.\n\
15975 Use the 'source' command in another debug session to restore them."),
15976                &save_cmdlist);
15977   set_cmd_completer (c, filename_completer);
15978
15979   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
15980   deprecate_cmd (c, "save tracepoints");
15981
15982   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
15983 Breakpoint specific settings\n\
15984 Configure various breakpoint-specific variables such as\n\
15985 pending breakpoint behavior"),
15986                   &breakpoint_set_cmdlist, "set breakpoint ",
15987                   0/*allow-unknown*/, &setlist);
15988   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
15989 Breakpoint specific settings\n\
15990 Configure various breakpoint-specific variables such as\n\
15991 pending breakpoint behavior"),
15992                   &breakpoint_show_cmdlist, "show breakpoint ",
15993                   0/*allow-unknown*/, &showlist);
15994
15995   add_setshow_auto_boolean_cmd ("pending", no_class,
15996                                 &pending_break_support, _("\
15997 Set debugger's behavior regarding pending breakpoints."), _("\
15998 Show debugger's behavior regarding pending breakpoints."), _("\
15999 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16000 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16001 an error.  If auto, an unrecognized breakpoint location results in a\n\
16002 user-query to see if a pending breakpoint should be created."),
16003                                 NULL,
16004                                 show_pending_break_support,
16005                                 &breakpoint_set_cmdlist,
16006                                 &breakpoint_show_cmdlist);
16007
16008   pending_break_support = AUTO_BOOLEAN_AUTO;
16009
16010   add_setshow_boolean_cmd ("auto-hw", no_class,
16011                            &automatic_hardware_breakpoints, _("\
16012 Set automatic usage of hardware breakpoints."), _("\
16013 Show automatic usage of hardware breakpoints."), _("\
16014 If set, the debugger will automatically use hardware breakpoints for\n\
16015 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16016 a warning will be emitted for such breakpoints."),
16017                            NULL,
16018                            show_automatic_hardware_breakpoints,
16019                            &breakpoint_set_cmdlist,
16020                            &breakpoint_show_cmdlist);
16021
16022   add_setshow_enum_cmd ("always-inserted", class_support,
16023                         always_inserted_enums, &always_inserted_mode, _("\
16024 Set mode for inserting breakpoints."), _("\
16025 Show mode for inserting breakpoints."), _("\
16026 When this mode is off, breakpoints are inserted in inferior when it is\n\
16027 resumed, and removed when execution stops.  When this mode is on,\n\
16028 breakpoints are inserted immediately and removed only when the user\n\
16029 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16030 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16031 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16032 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16033 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16034                            NULL,
16035                            &show_always_inserted_mode,
16036                            &breakpoint_set_cmdlist,
16037                            &breakpoint_show_cmdlist);
16038
16039   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16040                         condition_evaluation_enums,
16041                         &condition_evaluation_mode_1, _("\
16042 Set mode of breakpoint condition evaluation."), _("\
16043 Show mode of breakpoint condition evaluation."), _("\
16044 When this is set to \"host\", breakpoint conditions will be\n\
16045 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16046 breakpoint conditions will be downloaded to the target (if the target\n\
16047 supports such feature) and conditions will be evaluated on the target's side.\n\
16048 If this is set to \"auto\" (default), this will be automatically set to\n\
16049 \"target\" if it supports condition evaluation, otherwise it will\n\
16050 be set to \"gdb\""),
16051                            &set_condition_evaluation_mode,
16052                            &show_condition_evaluation_mode,
16053                            &breakpoint_set_cmdlist,
16054                            &breakpoint_show_cmdlist);
16055
16056   add_com ("break-range", class_breakpoint, break_range_command, _("\
16057 Set a breakpoint for an address range.\n\
16058 break-range START-LOCATION, END-LOCATION\n\
16059 where START-LOCATION and END-LOCATION can be one of the following:\n\
16060   LINENUM, for that line in the current file,\n\
16061   FILE:LINENUM, for that line in that file,\n\
16062   +OFFSET, for that number of lines after the current line\n\
16063            or the start of the range\n\
16064   FUNCTION, for the first line in that function,\n\
16065   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16066   *ADDRESS, for the instruction at that address.\n\
16067 \n\
16068 The breakpoint will stop execution of the inferior whenever it executes\n\
16069 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16070 range (including START-LOCATION and END-LOCATION)."));
16071
16072   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16073 Set a dynamic printf at specified line or function.\n\
16074 dprintf location,format string,arg1,arg2,...\n\
16075 location may be a line number, function name, or \"*\" and an address.\n\
16076 If a line number is specified, break at start of code for that line.\n\
16077 If a function is specified, break at start of code for that function.\n\
16078 "));
16079   set_cmd_completer (c, location_completer);
16080
16081   add_setshow_enum_cmd ("dprintf-style", class_support,
16082                         dprintf_style_enums, &dprintf_style, _("\
16083 Set the style of usage for dynamic printf."), _("\
16084 Show the style of usage for dynamic printf."), _("\
16085 This setting chooses how GDB will do a dynamic printf.\n\
16086 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16087 console, as with the \"printf\" command.\n\
16088 If the value is \"call\", the print is done by calling a function in your\n\
16089 program; by default printf(), but you can choose a different function or\n\
16090 output stream by setting dprintf-function and dprintf-channel."),
16091                         update_dprintf_commands, NULL,
16092                         &setlist, &showlist);
16093
16094   dprintf_function = xstrdup ("printf");
16095   add_setshow_string_cmd ("dprintf-function", class_support,
16096                           &dprintf_function, _("\
16097 Set the function to use for dynamic printf"), _("\
16098 Show the function to use for dynamic printf"), NULL,
16099                           update_dprintf_commands, NULL,
16100                           &setlist, &showlist);
16101
16102   dprintf_channel = xstrdup ("");
16103   add_setshow_string_cmd ("dprintf-channel", class_support,
16104                           &dprintf_channel, _("\
16105 Set the channel to use for dynamic printf"), _("\
16106 Show the channel to use for dynamic printf"), NULL,
16107                           update_dprintf_commands, NULL,
16108                           &setlist, &showlist);
16109
16110   automatic_hardware_breakpoints = 1;
16111
16112   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16113 }