gdb: Fix std::{min, max}-related build breakage on 32-bit hosts
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2016 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 "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.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 "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "memattr.h"
55 #include "ada-lang.h"
56 #include "top.h"
57 #include "valprint.h"
58 #include "jit.h"
59 #include "parser-defs.h"
60 #include "gdb_regex.h"
61 #include "probe.h"
62 #include "cli/cli-utils.h"
63 #include "continuations.h"
64 #include "stack.h"
65 #include "skip.h"
66 #include "ax-gdb.h"
67 #include "dummy-frame.h"
68 #include "interps.h"
69 #include "format.h"
70 #include "location.h"
71 #include "thread-fsm.h"
72 #include "tid-parse.h"
73
74 /* readline include files */
75 #include "readline/readline.h"
76 #include "readline/history.h"
77
78 /* readline defines this.  */
79 #undef savestring
80
81 #include "mi/mi-common.h"
82 #include "extension.h"
83 #include <algorithm>
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void
116   create_sals_from_location_default (const struct event_location *location,
117                                      struct linespec_result *canonical,
118                                      enum bptype type_wanted);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             char *, char *, enum bptype,
123                                             enum bpdisp, int, int,
124                                             int,
125                                             const struct breakpoint_ops *,
126                                             int, int, int, unsigned);
127
128 static void decode_location_default (struct breakpoint *b,
129                                      const struct event_location *location,
130                                      struct program_space *search_pspace,
131                                      struct symtabs_and_lines *sals);
132
133 static void clear_command (char *, int);
134
135 static void catch_command (char *, int);
136
137 static int can_use_hardware_watchpoint (struct value *);
138
139 static void break_command_1 (char *, int, int);
140
141 static void mention (struct breakpoint *);
142
143 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
144                                                                enum bptype,
145                                                                const struct breakpoint_ops *);
146 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
147                                                        const struct symtab_and_line *);
148
149 /* This function is used in gdbtk sources and thus can not be made
150    static.  */
151 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
152                                        struct symtab_and_line,
153                                        enum bptype,
154                                        const struct breakpoint_ops *);
155
156 static struct breakpoint *
157   momentary_breakpoint_from_master (struct breakpoint *orig,
158                                     enum bptype type,
159                                     const struct breakpoint_ops *ops,
160                                     int loc_enabled);
161
162 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
163
164 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
165                                             CORE_ADDR bpaddr,
166                                             enum bptype bptype);
167
168 static void describe_other_breakpoints (struct gdbarch *,
169                                         struct program_space *, CORE_ADDR,
170                                         struct obj_section *, int);
171
172 static int watchpoint_locations_match (struct bp_location *loc1,
173                                        struct bp_location *loc2);
174
175 static int breakpoint_location_address_match (struct bp_location *bl,
176                                               struct address_space *aspace,
177                                               CORE_ADDR addr);
178
179 static int breakpoint_location_address_range_overlap (struct bp_location *,
180                                                       struct address_space *,
181                                                       CORE_ADDR, int);
182
183 static void breakpoints_info (char *, int);
184
185 static void watchpoints_info (char *, int);
186
187 static int breakpoint_1 (char *, int, 
188                          int (*) (const struct breakpoint *));
189
190 static int breakpoint_cond_eval (void *);
191
192 static void cleanup_executing_breakpoints (void *);
193
194 static void commands_command (char *, int);
195
196 static void condition_command (char *, int);
197
198 static int remove_breakpoint (struct bp_location *);
199 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
200
201 static enum print_stop_action print_bp_stop_message (bpstat bs);
202
203 static int watchpoint_check (void *);
204
205 static void maintenance_info_breakpoints (char *, int);
206
207 static int hw_breakpoint_used_count (void);
208
209 static int hw_watchpoint_use_count (struct breakpoint *);
210
211 static int hw_watchpoint_used_count_others (struct breakpoint *except,
212                                             enum bptype type,
213                                             int *other_type_used);
214
215 static void hbreak_command (char *, int);
216
217 static void thbreak_command (char *, int);
218
219 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
220                                     int count);
221
222 static void stop_command (char *arg, int from_tty);
223
224 static void stopin_command (char *arg, int from_tty);
225
226 static void stopat_command (char *arg, int from_tty);
227
228 static void tcatch_command (char *arg, int from_tty);
229
230 static void free_bp_location (struct bp_location *loc);
231 static void incref_bp_location (struct bp_location *loc);
232 static void decref_bp_location (struct bp_location **loc);
233
234 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
235
236 /* update_global_location_list's modes of operation wrt to whether to
237    insert locations now.  */
238 enum ugll_insert_mode
239 {
240   /* Don't insert any breakpoint locations into the inferior, only
241      remove already-inserted locations that no longer should be
242      inserted.  Functions that delete a breakpoint or breakpoints
243      should specify this mode, so that deleting a breakpoint doesn't
244      have the side effect of inserting the locations of other
245      breakpoints that are marked not-inserted, but should_be_inserted
246      returns true on them.
247
248      This behavior is useful is situations close to tear-down -- e.g.,
249      after an exec, while the target still has execution, but
250      breakpoint shadows of the previous executable image should *NOT*
251      be restored to the new image; or before detaching, where the
252      target still has execution and wants to delete breakpoints from
253      GDB's lists, and all breakpoints had already been removed from
254      the inferior.  */
255   UGLL_DONT_INSERT,
256
257   /* May insert breakpoints iff breakpoints_should_be_inserted_now
258      claims breakpoints should be inserted now.  */
259   UGLL_MAY_INSERT,
260
261   /* Insert locations now, irrespective of
262      breakpoints_should_be_inserted_now.  E.g., say all threads are
263      stopped right now, and the user did "continue".  We need to
264      insert breakpoints _before_ resuming the target, but
265      UGLL_MAY_INSERT wouldn't insert them, because
266      breakpoints_should_be_inserted_now returns false at that point,
267      as no thread is running yet.  */
268   UGLL_INSERT
269 };
270
271 static void update_global_location_list (enum ugll_insert_mode);
272
273 static void update_global_location_list_nothrow (enum ugll_insert_mode);
274
275 static int is_hardware_watchpoint (const struct breakpoint *bpt);
276
277 static void insert_breakpoint_locations (void);
278
279 static void tracepoints_info (char *, int);
280
281 static void delete_trace_command (char *, int);
282
283 static void enable_trace_command (char *, int);
284
285 static void disable_trace_command (char *, int);
286
287 static void trace_pass_command (char *, int);
288
289 static void set_tracepoint_count (int num);
290
291 static int is_masked_watchpoint (const struct breakpoint *b);
292
293 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
294
295 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
296    otherwise.  */
297
298 static int strace_marker_p (struct breakpoint *b);
299
300 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
301    that are implemented on top of software or hardware breakpoints
302    (user breakpoints, internal and momentary breakpoints, etc.).  */
303 static struct breakpoint_ops bkpt_base_breakpoint_ops;
304
305 /* Internal breakpoints class type.  */
306 static struct breakpoint_ops internal_breakpoint_ops;
307
308 /* Momentary breakpoints class type.  */
309 static struct breakpoint_ops momentary_breakpoint_ops;
310
311 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
312 static struct breakpoint_ops longjmp_breakpoint_ops;
313
314 /* The breakpoint_ops structure to be used in regular user created
315    breakpoints.  */
316 struct breakpoint_ops bkpt_breakpoint_ops;
317
318 /* Breakpoints set on probes.  */
319 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
320
321 /* Dynamic printf class type.  */
322 struct breakpoint_ops dprintf_breakpoint_ops;
323
324 /* The style in which to perform a dynamic printf.  This is a user
325    option because different output options have different tradeoffs;
326    if GDB does the printing, there is better error handling if there
327    is a problem with any of the arguments, but using an inferior
328    function lets you have special-purpose printers and sending of
329    output to the same place as compiled-in print functions.  */
330
331 static const char dprintf_style_gdb[] = "gdb";
332 static const char dprintf_style_call[] = "call";
333 static const char dprintf_style_agent[] = "agent";
334 static const char *const dprintf_style_enums[] = {
335   dprintf_style_gdb,
336   dprintf_style_call,
337   dprintf_style_agent,
338   NULL
339 };
340 static const char *dprintf_style = dprintf_style_gdb;
341
342 /* The function to use for dynamic printf if the preferred style is to
343    call into the inferior.  The value is simply a string that is
344    copied into the command, so it can be anything that GDB can
345    evaluate to a callable address, not necessarily a function name.  */
346
347 static char *dprintf_function = "";
348
349 /* The channel to use for dynamic printf if the preferred style is to
350    call into the inferior; if a nonempty string, it will be passed to
351    the call as the first argument, with the format string as the
352    second.  As with the dprintf function, this can be anything that
353    GDB knows how to evaluate, so in addition to common choices like
354    "stderr", this could be an app-specific expression like
355    "mystreams[curlogger]".  */
356
357 static char *dprintf_channel = "";
358
359 /* True if dprintf commands should continue to operate even if GDB
360    has disconnected.  */
361 static int disconnected_dprintf = 1;
362
363 /* A reference-counted struct command_line.  This lets multiple
364    breakpoints share a single command list.  */
365 struct counted_command_line
366 {
367   /* The reference count.  */
368   int refc;
369
370   /* The command list.  */
371   struct command_line *commands;
372 };
373
374 struct command_line *
375 breakpoint_commands (struct breakpoint *b)
376 {
377   return b->commands ? b->commands->commands : NULL;
378 }
379
380 /* Flag indicating that a command has proceeded the inferior past the
381    current breakpoint.  */
382
383 static int breakpoint_proceeded;
384
385 const char *
386 bpdisp_text (enum bpdisp disp)
387 {
388   /* NOTE: the following values are a part of MI protocol and
389      represent values of 'disp' field returned when inferior stops at
390      a breakpoint.  */
391   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
392
393   return bpdisps[(int) disp];
394 }
395
396 /* Prototypes for exported functions.  */
397 /* If FALSE, gdb will not use hardware support for watchpoints, even
398    if such is available.  */
399 static int can_use_hw_watchpoints;
400
401 static void
402 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
403                              struct cmd_list_element *c,
404                              const char *value)
405 {
406   fprintf_filtered (file,
407                     _("Debugger's willingness to use "
408                       "watchpoint hardware is %s.\n"),
409                     value);
410 }
411
412 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
413    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
414    for unrecognized breakpoint locations.
415    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
416 static enum auto_boolean pending_break_support;
417 static void
418 show_pending_break_support (struct ui_file *file, int from_tty,
419                             struct cmd_list_element *c,
420                             const char *value)
421 {
422   fprintf_filtered (file,
423                     _("Debugger's behavior regarding "
424                       "pending breakpoints is %s.\n"),
425                     value);
426 }
427
428 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
429    set with "break" but falling in read-only memory.
430    If 0, gdb will warn about such breakpoints, but won't automatically
431    use hardware breakpoints.  */
432 static int automatic_hardware_breakpoints;
433 static void
434 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
435                                      struct cmd_list_element *c,
436                                      const char *value)
437 {
438   fprintf_filtered (file,
439                     _("Automatic usage of hardware breakpoints is %s.\n"),
440                     value);
441 }
442
443 /* If on, GDB keeps breakpoints inserted even if the inferior is
444    stopped, and immediately inserts any new breakpoints as soon as
445    they're created.  If off (default), GDB keeps breakpoints off of
446    the target as long as possible.  That is, it delays inserting
447    breakpoints until the next resume, and removes them again when the
448    target fully stops.  This is a bit safer in case GDB crashes while
449    processing user input.  */
450 static int always_inserted_mode = 0;
451
452 static void
453 show_always_inserted_mode (struct ui_file *file, int from_tty,
454                      struct cmd_list_element *c, const char *value)
455 {
456   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
457                     value);
458 }
459
460 /* See breakpoint.h.  */
461
462 int
463 breakpoints_should_be_inserted_now (void)
464 {
465   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
466     {
467       /* If breakpoints are global, they should be inserted even if no
468          thread under gdb's control is running, or even if there are
469          no threads under GDB's control yet.  */
470       return 1;
471     }
472   else if (target_has_execution)
473     {
474       struct thread_info *tp;
475
476       if (always_inserted_mode)
477         {
478           /* The user wants breakpoints inserted even if all threads
479              are stopped.  */
480           return 1;
481         }
482
483       if (threads_are_executing ())
484         return 1;
485
486       /* Don't remove breakpoints yet if, even though all threads are
487          stopped, we still have events to process.  */
488       ALL_NON_EXITED_THREADS (tp)
489         if (tp->resumed
490             && tp->suspend.waitstatus_pending_p)
491           return 1;
492     }
493   return 0;
494 }
495
496 static const char condition_evaluation_both[] = "host or target";
497
498 /* Modes for breakpoint condition evaluation.  */
499 static const char condition_evaluation_auto[] = "auto";
500 static const char condition_evaluation_host[] = "host";
501 static const char condition_evaluation_target[] = "target";
502 static const char *const condition_evaluation_enums[] = {
503   condition_evaluation_auto,
504   condition_evaluation_host,
505   condition_evaluation_target,
506   NULL
507 };
508
509 /* Global that holds the current mode for breakpoint condition evaluation.  */
510 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
511
512 /* Global that we use to display information to the user (gets its value from
513    condition_evaluation_mode_1.  */
514 static const char *condition_evaluation_mode = condition_evaluation_auto;
515
516 /* Translate a condition evaluation mode MODE into either "host"
517    or "target".  This is used mostly to translate from "auto" to the
518    real setting that is being used.  It returns the translated
519    evaluation mode.  */
520
521 static const char *
522 translate_condition_evaluation_mode (const char *mode)
523 {
524   if (mode == condition_evaluation_auto)
525     {
526       if (target_supports_evaluation_of_breakpoint_conditions ())
527         return condition_evaluation_target;
528       else
529         return condition_evaluation_host;
530     }
531   else
532     return mode;
533 }
534
535 /* Discovers what condition_evaluation_auto translates to.  */
536
537 static const char *
538 breakpoint_condition_evaluation_mode (void)
539 {
540   return translate_condition_evaluation_mode (condition_evaluation_mode);
541 }
542
543 /* Return true if GDB should evaluate breakpoint conditions or false
544    otherwise.  */
545
546 static int
547 gdb_evaluates_breakpoint_condition_p (void)
548 {
549   const char *mode = breakpoint_condition_evaluation_mode ();
550
551   return (mode == condition_evaluation_host);
552 }
553
554 void _initialize_breakpoint (void);
555
556 /* Are we executing breakpoint commands?  */
557 static int executing_breakpoint_commands;
558
559 /* Are overlay event breakpoints enabled? */
560 static int overlay_events_enabled;
561
562 /* See description in breakpoint.h. */
563 int target_exact_watchpoints = 0;
564
565 /* Walk the following statement or block through all breakpoints.
566    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
567    current breakpoint.  */
568
569 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
570
571 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
572         for (B = breakpoint_chain;      \
573              B ? (TMP=B->next, 1): 0;   \
574              B = TMP)
575
576 /* Similar iterator for the low-level breakpoints.  SAFE variant is
577    not provided so update_global_location_list must not be called
578    while executing the block of ALL_BP_LOCATIONS.  */
579
580 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
581         for (BP_TMP = bp_location;                                      \
582              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
583              BP_TMP++)
584
585 /* Iterates through locations with address ADDRESS for the currently selected
586    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
587    to where the loop should start from.
588    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
589    appropriate location to start with.  */
590
591 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
592         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
593              BP_LOCP_TMP = BP_LOCP_START;                               \
594              BP_LOCP_START                                              \
595              && (BP_LOCP_TMP < bp_location + bp_location_count          \
596              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
597              BP_LOCP_TMP++)
598
599 /* Iterator for tracepoints only.  */
600
601 #define ALL_TRACEPOINTS(B)  \
602   for (B = breakpoint_chain; B; B = B->next)  \
603     if (is_tracepoint (B))
604
605 /* Chains of all breakpoints defined.  */
606
607 struct breakpoint *breakpoint_chain;
608
609 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
610
611 static struct bp_location **bp_location;
612
613 /* Number of elements of BP_LOCATION.  */
614
615 static unsigned bp_location_count;
616
617 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
618    ADDRESS for the current elements of BP_LOCATION which get a valid
619    result from bp_location_has_shadow.  You can use it for roughly
620    limiting the subrange of BP_LOCATION to scan for shadow bytes for
621    an address you need to read.  */
622
623 static CORE_ADDR bp_location_placed_address_before_address_max;
624
625 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
626    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
627    BP_LOCATION which get a valid result from bp_location_has_shadow.
628    You can use it for roughly limiting the subrange of BP_LOCATION to
629    scan for shadow bytes for an address you need to read.  */
630
631 static CORE_ADDR bp_location_shadow_len_after_address_max;
632
633 /* The locations that no longer correspond to any breakpoint, unlinked
634    from bp_location array, but for which a hit may still be reported
635    by a target.  */
636 VEC(bp_location_p) *moribund_locations = NULL;
637
638 /* Number of last breakpoint made.  */
639
640 static int breakpoint_count;
641
642 /* The value of `breakpoint_count' before the last command that
643    created breakpoints.  If the last (break-like) command created more
644    than one breakpoint, then the difference between BREAKPOINT_COUNT
645    and PREV_BREAKPOINT_COUNT is more than one.  */
646 static int prev_breakpoint_count;
647
648 /* Number of last tracepoint made.  */
649
650 static int tracepoint_count;
651
652 static struct cmd_list_element *breakpoint_set_cmdlist;
653 static struct cmd_list_element *breakpoint_show_cmdlist;
654 struct cmd_list_element *save_cmdlist;
655
656 /* See declaration at breakpoint.h.  */
657
658 struct breakpoint *
659 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
660                     void *user_data)
661 {
662   struct breakpoint *b = NULL;
663
664   ALL_BREAKPOINTS (b)
665     {
666       if (func (b, user_data) != 0)
667         break;
668     }
669
670   return b;
671 }
672
673 /* Return whether a breakpoint is an active enabled breakpoint.  */
674 static int
675 breakpoint_enabled (struct breakpoint *b)
676 {
677   return (b->enable_state == bp_enabled);
678 }
679
680 /* Set breakpoint count to NUM.  */
681
682 static void
683 set_breakpoint_count (int num)
684 {
685   prev_breakpoint_count = breakpoint_count;
686   breakpoint_count = num;
687   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
688 }
689
690 /* Used by `start_rbreak_breakpoints' below, to record the current
691    breakpoint count before "rbreak" creates any breakpoint.  */
692 static int rbreak_start_breakpoint_count;
693
694 /* Called at the start an "rbreak" command to record the first
695    breakpoint made.  */
696
697 void
698 start_rbreak_breakpoints (void)
699 {
700   rbreak_start_breakpoint_count = breakpoint_count;
701 }
702
703 /* Called at the end of an "rbreak" command to record the last
704    breakpoint made.  */
705
706 void
707 end_rbreak_breakpoints (void)
708 {
709   prev_breakpoint_count = rbreak_start_breakpoint_count;
710 }
711
712 /* Used in run_command to zero the hit count when a new run starts.  */
713
714 void
715 clear_breakpoint_hit_counts (void)
716 {
717   struct breakpoint *b;
718
719   ALL_BREAKPOINTS (b)
720     b->hit_count = 0;
721 }
722
723 /* Allocate a new counted_command_line with reference count of 1.
724    The new structure owns COMMANDS.  */
725
726 static struct counted_command_line *
727 alloc_counted_command_line (struct command_line *commands)
728 {
729   struct counted_command_line *result = XNEW (struct counted_command_line);
730
731   result->refc = 1;
732   result->commands = commands;
733
734   return result;
735 }
736
737 /* Increment reference count.  This does nothing if CMD is NULL.  */
738
739 static void
740 incref_counted_command_line (struct counted_command_line *cmd)
741 {
742   if (cmd)
743     ++cmd->refc;
744 }
745
746 /* Decrement reference count.  If the reference count reaches 0,
747    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
748    nothing if *CMDP is NULL.  */
749
750 static void
751 decref_counted_command_line (struct counted_command_line **cmdp)
752 {
753   if (*cmdp)
754     {
755       if (--(*cmdp)->refc == 0)
756         {
757           free_command_lines (&(*cmdp)->commands);
758           xfree (*cmdp);
759         }
760       *cmdp = NULL;
761     }
762 }
763
764 /* A cleanup function that calls decref_counted_command_line.  */
765
766 static void
767 do_cleanup_counted_command_line (void *arg)
768 {
769   decref_counted_command_line ((struct counted_command_line **) arg);
770 }
771
772 /* Create a cleanup that calls decref_counted_command_line on the
773    argument.  */
774
775 static struct cleanup *
776 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
777 {
778   return make_cleanup (do_cleanup_counted_command_line, cmdp);
779 }
780
781 \f
782 /* Return the breakpoint with the specified number, or NULL
783    if the number does not refer to an existing breakpoint.  */
784
785 struct breakpoint *
786 get_breakpoint (int num)
787 {
788   struct breakpoint *b;
789
790   ALL_BREAKPOINTS (b)
791     if (b->number == num)
792       return b;
793   
794   return NULL;
795 }
796
797 \f
798
799 /* Mark locations as "conditions have changed" in case the target supports
800    evaluating conditions on its side.  */
801
802 static void
803 mark_breakpoint_modified (struct breakpoint *b)
804 {
805   struct bp_location *loc;
806
807   /* This is only meaningful if the target is
808      evaluating conditions and if the user has
809      opted for condition evaluation on the target's
810      side.  */
811   if (gdb_evaluates_breakpoint_condition_p ()
812       || !target_supports_evaluation_of_breakpoint_conditions ())
813     return;
814
815   if (!is_breakpoint (b))
816     return;
817
818   for (loc = b->loc; loc; loc = loc->next)
819     loc->condition_changed = condition_modified;
820 }
821
822 /* Mark location as "conditions have changed" in case the target supports
823    evaluating conditions on its side.  */
824
825 static void
826 mark_breakpoint_location_modified (struct bp_location *loc)
827 {
828   /* This is only meaningful if the target is
829      evaluating conditions and if the user has
830      opted for condition evaluation on the target's
831      side.  */
832   if (gdb_evaluates_breakpoint_condition_p ()
833       || !target_supports_evaluation_of_breakpoint_conditions ())
834
835     return;
836
837   if (!is_breakpoint (loc->owner))
838     return;
839
840   loc->condition_changed = condition_modified;
841 }
842
843 /* Sets the condition-evaluation mode using the static global
844    condition_evaluation_mode.  */
845
846 static void
847 set_condition_evaluation_mode (char *args, int from_tty,
848                                struct cmd_list_element *c)
849 {
850   const char *old_mode, *new_mode;
851
852   if ((condition_evaluation_mode_1 == condition_evaluation_target)
853       && !target_supports_evaluation_of_breakpoint_conditions ())
854     {
855       condition_evaluation_mode_1 = condition_evaluation_mode;
856       warning (_("Target does not support breakpoint condition evaluation.\n"
857                  "Using host evaluation mode instead."));
858       return;
859     }
860
861   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
862   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
863
864   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
865      settings was "auto".  */
866   condition_evaluation_mode = condition_evaluation_mode_1;
867
868   /* Only update the mode if the user picked a different one.  */
869   if (new_mode != old_mode)
870     {
871       struct bp_location *loc, **loc_tmp;
872       /* If the user switched to a different evaluation mode, we
873          need to synch the changes with the target as follows:
874
875          "host" -> "target": Send all (valid) conditions to the target.
876          "target" -> "host": Remove all the conditions from the target.
877       */
878
879       if (new_mode == condition_evaluation_target)
880         {
881           /* Mark everything modified and synch conditions with the
882              target.  */
883           ALL_BP_LOCATIONS (loc, loc_tmp)
884             mark_breakpoint_location_modified (loc);
885         }
886       else
887         {
888           /* Manually mark non-duplicate locations to synch conditions
889              with the target.  We do this to remove all the conditions the
890              target knows about.  */
891           ALL_BP_LOCATIONS (loc, loc_tmp)
892             if (is_breakpoint (loc->owner) && loc->inserted)
893               loc->needs_update = 1;
894         }
895
896       /* Do the update.  */
897       update_global_location_list (UGLL_MAY_INSERT);
898     }
899
900   return;
901 }
902
903 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
904    what "auto" is translating to.  */
905
906 static void
907 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
908                                 struct cmd_list_element *c, const char *value)
909 {
910   if (condition_evaluation_mode == condition_evaluation_auto)
911     fprintf_filtered (file,
912                       _("Breakpoint condition evaluation "
913                         "mode is %s (currently %s).\n"),
914                       value,
915                       breakpoint_condition_evaluation_mode ());
916   else
917     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
918                       value);
919 }
920
921 /* A comparison function for bp_location AP and BP that is used by
922    bsearch.  This comparison function only cares about addresses, unlike
923    the more general bp_location_compare function.  */
924
925 static int
926 bp_location_compare_addrs (const void *ap, const void *bp)
927 {
928   const struct bp_location *a = *(const struct bp_location **) ap;
929   const struct bp_location *b = *(const struct bp_location **) bp;
930
931   if (a->address == b->address)
932     return 0;
933   else
934     return ((a->address > b->address) - (a->address < b->address));
935 }
936
937 /* Helper function to skip all bp_locations with addresses
938    less than ADDRESS.  It returns the first bp_location that
939    is greater than or equal to ADDRESS.  If none is found, just
940    return NULL.  */
941
942 static struct bp_location **
943 get_first_locp_gte_addr (CORE_ADDR address)
944 {
945   struct bp_location dummy_loc;
946   struct bp_location *dummy_locp = &dummy_loc;
947   struct bp_location **locp_found = NULL;
948
949   /* Initialize the dummy location's address field.  */
950   memset (&dummy_loc, 0, sizeof (struct bp_location));
951   dummy_loc.address = address;
952
953   /* Find a close match to the first location at ADDRESS.  */
954   locp_found = ((struct bp_location **)
955                 bsearch (&dummy_locp, bp_location, bp_location_count,
956                          sizeof (struct bp_location **),
957                          bp_location_compare_addrs));
958
959   /* Nothing was found, nothing left to do.  */
960   if (locp_found == NULL)
961     return NULL;
962
963   /* We may have found a location that is at ADDRESS but is not the first in the
964      location's list.  Go backwards (if possible) and locate the first one.  */
965   while ((locp_found - 1) >= bp_location
966          && (*(locp_found - 1))->address == address)
967     locp_found--;
968
969   return locp_found;
970 }
971
972 void
973 set_breakpoint_condition (struct breakpoint *b, const char *exp,
974                           int from_tty)
975 {
976   xfree (b->cond_string);
977   b->cond_string = NULL;
978
979   if (is_watchpoint (b))
980     {
981       struct watchpoint *w = (struct watchpoint *) b;
982
983       xfree (w->cond_exp);
984       w->cond_exp = NULL;
985     }
986   else
987     {
988       struct bp_location *loc;
989
990       for (loc = b->loc; loc; loc = loc->next)
991         {
992           xfree (loc->cond);
993           loc->cond = NULL;
994
995           /* No need to free the condition agent expression
996              bytecode (if we have one).  We will handle this
997              when we go through update_global_location_list.  */
998         }
999     }
1000
1001   if (*exp == 0)
1002     {
1003       if (from_tty)
1004         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1005     }
1006   else
1007     {
1008       const char *arg = exp;
1009
1010       /* I don't know if it matters whether this is the string the user
1011          typed in or the decompiled expression.  */
1012       b->cond_string = xstrdup (arg);
1013       b->condition_not_parsed = 0;
1014
1015       if (is_watchpoint (b))
1016         {
1017           struct watchpoint *w = (struct watchpoint *) b;
1018
1019           innermost_block = NULL;
1020           arg = exp;
1021           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1022           if (*arg)
1023             error (_("Junk at end of expression"));
1024           w->cond_exp_valid_block = innermost_block;
1025         }
1026       else
1027         {
1028           struct bp_location *loc;
1029
1030           for (loc = b->loc; loc; loc = loc->next)
1031             {
1032               arg = exp;
1033               loc->cond =
1034                 parse_exp_1 (&arg, loc->address,
1035                              block_for_pc (loc->address), 0);
1036               if (*arg)
1037                 error (_("Junk at end of expression"));
1038             }
1039         }
1040     }
1041   mark_breakpoint_modified (b);
1042
1043   observer_notify_breakpoint_modified (b);
1044 }
1045
1046 /* Completion for the "condition" command.  */
1047
1048 static VEC (char_ptr) *
1049 condition_completer (struct cmd_list_element *cmd,
1050                      const char *text, const char *word)
1051 {
1052   const char *space;
1053
1054   text = skip_spaces_const (text);
1055   space = skip_to_space_const (text);
1056   if (*space == '\0')
1057     {
1058       int len;
1059       struct breakpoint *b;
1060       VEC (char_ptr) *result = NULL;
1061
1062       if (text[0] == '$')
1063         {
1064           /* We don't support completion of history indices.  */
1065           if (isdigit (text[1]))
1066             return NULL;
1067           return complete_internalvar (&text[1]);
1068         }
1069
1070       /* We're completing the breakpoint number.  */
1071       len = strlen (text);
1072
1073       ALL_BREAKPOINTS (b)
1074         {
1075           char number[50];
1076
1077           xsnprintf (number, sizeof (number), "%d", b->number);
1078
1079           if (strncmp (number, text, len) == 0)
1080             VEC_safe_push (char_ptr, result, xstrdup (number));
1081         }
1082
1083       return result;
1084     }
1085
1086   /* We're completing the expression part.  */
1087   text = skip_spaces_const (space);
1088   return expression_completer (cmd, text, word);
1089 }
1090
1091 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1092
1093 static void
1094 condition_command (char *arg, int from_tty)
1095 {
1096   struct breakpoint *b;
1097   char *p;
1098   int bnum;
1099
1100   if (arg == 0)
1101     error_no_arg (_("breakpoint number"));
1102
1103   p = arg;
1104   bnum = get_number (&p);
1105   if (bnum == 0)
1106     error (_("Bad breakpoint argument: '%s'"), arg);
1107
1108   ALL_BREAKPOINTS (b)
1109     if (b->number == bnum)
1110       {
1111         /* Check if this breakpoint has a "stop" method implemented in an
1112            extension language.  This method and conditions entered into GDB
1113            from the CLI are mutually exclusive.  */
1114         const struct extension_language_defn *extlang
1115           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1116
1117         if (extlang != NULL)
1118           {
1119             error (_("Only one stop condition allowed.  There is currently"
1120                      " a %s stop condition defined for this breakpoint."),
1121                    ext_lang_capitalized_name (extlang));
1122           }
1123         set_breakpoint_condition (b, p, from_tty);
1124
1125         if (is_breakpoint (b))
1126           update_global_location_list (UGLL_MAY_INSERT);
1127
1128         return;
1129       }
1130
1131   error (_("No breakpoint number %d."), bnum);
1132 }
1133
1134 /* Check that COMMAND do not contain commands that are suitable
1135    only for tracepoints and not suitable for ordinary breakpoints.
1136    Throw if any such commands is found.  */
1137
1138 static void
1139 check_no_tracepoint_commands (struct command_line *commands)
1140 {
1141   struct command_line *c;
1142
1143   for (c = commands; c; c = c->next)
1144     {
1145       int i;
1146
1147       if (c->control_type == while_stepping_control)
1148         error (_("The 'while-stepping' command can "
1149                  "only be used for tracepoints"));
1150
1151       for (i = 0; i < c->body_count; ++i)
1152         check_no_tracepoint_commands ((c->body_list)[i]);
1153
1154       /* Not that command parsing removes leading whitespace and comment
1155          lines and also empty lines.  So, we only need to check for
1156          command directly.  */
1157       if (strstr (c->line, "collect ") == c->line)
1158         error (_("The 'collect' command can only be used for tracepoints"));
1159
1160       if (strstr (c->line, "teval ") == c->line)
1161         error (_("The 'teval' command can only be used for tracepoints"));
1162     }
1163 }
1164
1165 /* Encapsulate tests for different types of tracepoints.  */
1166
1167 static int
1168 is_tracepoint_type (enum bptype type)
1169 {
1170   return (type == bp_tracepoint
1171           || type == bp_fast_tracepoint
1172           || type == bp_static_tracepoint);
1173 }
1174
1175 int
1176 is_tracepoint (const struct breakpoint *b)
1177 {
1178   return is_tracepoint_type (b->type);
1179 }
1180
1181 /* A helper function that validates that COMMANDS are valid for a
1182    breakpoint.  This function will throw an exception if a problem is
1183    found.  */
1184
1185 static void
1186 validate_commands_for_breakpoint (struct breakpoint *b,
1187                                   struct command_line *commands)
1188 {
1189   if (is_tracepoint (b))
1190     {
1191       struct tracepoint *t = (struct tracepoint *) b;
1192       struct command_line *c;
1193       struct command_line *while_stepping = 0;
1194
1195       /* Reset the while-stepping step count.  The previous commands
1196          might have included a while-stepping action, while the new
1197          ones might not.  */
1198       t->step_count = 0;
1199
1200       /* We need to verify that each top-level element of commands is
1201          valid for tracepoints, that there's at most one
1202          while-stepping element, and that the while-stepping's body
1203          has valid tracing commands excluding nested while-stepping.
1204          We also need to validate the tracepoint action line in the
1205          context of the tracepoint --- validate_actionline actually
1206          has side effects, like setting the tracepoint's
1207          while-stepping STEP_COUNT, in addition to checking if the
1208          collect/teval actions parse and make sense in the
1209          tracepoint's context.  */
1210       for (c = commands; c; c = c->next)
1211         {
1212           if (c->control_type == while_stepping_control)
1213             {
1214               if (b->type == bp_fast_tracepoint)
1215                 error (_("The 'while-stepping' command "
1216                          "cannot be used for fast tracepoint"));
1217               else if (b->type == bp_static_tracepoint)
1218                 error (_("The 'while-stepping' command "
1219                          "cannot be used for static tracepoint"));
1220
1221               if (while_stepping)
1222                 error (_("The 'while-stepping' command "
1223                          "can be used only once"));
1224               else
1225                 while_stepping = c;
1226             }
1227
1228           validate_actionline (c->line, b);
1229         }
1230       if (while_stepping)
1231         {
1232           struct command_line *c2;
1233
1234           gdb_assert (while_stepping->body_count == 1);
1235           c2 = while_stepping->body_list[0];
1236           for (; c2; c2 = c2->next)
1237             {
1238               if (c2->control_type == while_stepping_control)
1239                 error (_("The 'while-stepping' command cannot be nested"));
1240             }
1241         }
1242     }
1243   else
1244     {
1245       check_no_tracepoint_commands (commands);
1246     }
1247 }
1248
1249 /* Return a vector of all the static tracepoints set at ADDR.  The
1250    caller is responsible for releasing the vector.  */
1251
1252 VEC(breakpoint_p) *
1253 static_tracepoints_here (CORE_ADDR addr)
1254 {
1255   struct breakpoint *b;
1256   VEC(breakpoint_p) *found = 0;
1257   struct bp_location *loc;
1258
1259   ALL_BREAKPOINTS (b)
1260     if (b->type == bp_static_tracepoint)
1261       {
1262         for (loc = b->loc; loc; loc = loc->next)
1263           if (loc->address == addr)
1264             VEC_safe_push(breakpoint_p, found, b);
1265       }
1266
1267   return found;
1268 }
1269
1270 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1271    validate that only allowed commands are included.  */
1272
1273 void
1274 breakpoint_set_commands (struct breakpoint *b, 
1275                          struct command_line *commands)
1276 {
1277   validate_commands_for_breakpoint (b, commands);
1278
1279   decref_counted_command_line (&b->commands);
1280   b->commands = alloc_counted_command_line (commands);
1281   observer_notify_breakpoint_modified (b);
1282 }
1283
1284 /* Set the internal `silent' flag on the breakpoint.  Note that this
1285    is not the same as the "silent" that may appear in the breakpoint's
1286    commands.  */
1287
1288 void
1289 breakpoint_set_silent (struct breakpoint *b, int silent)
1290 {
1291   int old_silent = b->silent;
1292
1293   b->silent = silent;
1294   if (old_silent != silent)
1295     observer_notify_breakpoint_modified (b);
1296 }
1297
1298 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1299    breakpoint work for any thread.  */
1300
1301 void
1302 breakpoint_set_thread (struct breakpoint *b, int thread)
1303 {
1304   int old_thread = b->thread;
1305
1306   b->thread = thread;
1307   if (old_thread != thread)
1308     observer_notify_breakpoint_modified (b);
1309 }
1310
1311 /* Set the task for this breakpoint.  If TASK is 0, make the
1312    breakpoint work for any task.  */
1313
1314 void
1315 breakpoint_set_task (struct breakpoint *b, int task)
1316 {
1317   int old_task = b->task;
1318
1319   b->task = task;
1320   if (old_task != task)
1321     observer_notify_breakpoint_modified (b);
1322 }
1323
1324 void
1325 check_tracepoint_command (char *line, void *closure)
1326 {
1327   struct breakpoint *b = (struct breakpoint *) closure;
1328
1329   validate_actionline (line, b);
1330 }
1331
1332 /* A structure used to pass information through
1333    map_breakpoint_numbers.  */
1334
1335 struct commands_info
1336 {
1337   /* True if the command was typed at a tty.  */
1338   int from_tty;
1339
1340   /* The breakpoint range spec.  */
1341   char *arg;
1342
1343   /* Non-NULL if the body of the commands are being read from this
1344      already-parsed command.  */
1345   struct command_line *control;
1346
1347   /* The command lines read from the user, or NULL if they have not
1348      yet been read.  */
1349   struct counted_command_line *cmd;
1350 };
1351
1352 /* A callback for map_breakpoint_numbers that sets the commands for
1353    commands_command.  */
1354
1355 static void
1356 do_map_commands_command (struct breakpoint *b, void *data)
1357 {
1358   struct commands_info *info = (struct commands_info *) data;
1359
1360   if (info->cmd == NULL)
1361     {
1362       struct command_line *l;
1363
1364       if (info->control != NULL)
1365         l = copy_command_lines (info->control->body_list[0]);
1366       else
1367         {
1368           struct cleanup *old_chain;
1369           char *str;
1370
1371           str = xstrprintf (_("Type commands for breakpoint(s) "
1372                               "%s, one per line."),
1373                             info->arg);
1374
1375           old_chain = make_cleanup (xfree, str);
1376
1377           l = read_command_lines (str,
1378                                   info->from_tty, 1,
1379                                   (is_tracepoint (b)
1380                                    ? check_tracepoint_command : 0),
1381                                   b);
1382
1383           do_cleanups (old_chain);
1384         }
1385
1386       info->cmd = alloc_counted_command_line (l);
1387     }
1388
1389   /* If a breakpoint was on the list more than once, we don't need to
1390      do anything.  */
1391   if (b->commands != info->cmd)
1392     {
1393       validate_commands_for_breakpoint (b, info->cmd->commands);
1394       incref_counted_command_line (info->cmd);
1395       decref_counted_command_line (&b->commands);
1396       b->commands = info->cmd;
1397       observer_notify_breakpoint_modified (b);
1398     }
1399 }
1400
1401 static void
1402 commands_command_1 (char *arg, int from_tty, 
1403                     struct command_line *control)
1404 {
1405   struct cleanup *cleanups;
1406   struct commands_info info;
1407
1408   info.from_tty = from_tty;
1409   info.control = control;
1410   info.cmd = NULL;
1411   /* If we read command lines from the user, then `info' will hold an
1412      extra reference to the commands that we must clean up.  */
1413   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1414
1415   if (arg == NULL || !*arg)
1416     {
1417       if (breakpoint_count - prev_breakpoint_count > 1)
1418         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1419                           breakpoint_count);
1420       else if (breakpoint_count > 0)
1421         arg = xstrprintf ("%d", breakpoint_count);
1422       else
1423         {
1424           /* So that we don't try to free the incoming non-NULL
1425              argument in the cleanup below.  Mapping breakpoint
1426              numbers will fail in this case.  */
1427           arg = NULL;
1428         }
1429     }
1430   else
1431     /* The command loop has some static state, so we need to preserve
1432        our argument.  */
1433     arg = xstrdup (arg);
1434
1435   if (arg != NULL)
1436     make_cleanup (xfree, arg);
1437
1438   info.arg = arg;
1439
1440   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1441
1442   if (info.cmd == NULL)
1443     error (_("No breakpoints specified."));
1444
1445   do_cleanups (cleanups);
1446 }
1447
1448 static void
1449 commands_command (char *arg, int from_tty)
1450 {
1451   commands_command_1 (arg, from_tty, NULL);
1452 }
1453
1454 /* Like commands_command, but instead of reading the commands from
1455    input stream, takes them from an already parsed command structure.
1456
1457    This is used by cli-script.c to DTRT with breakpoint commands
1458    that are part of if and while bodies.  */
1459 enum command_control_type
1460 commands_from_control_command (char *arg, struct command_line *cmd)
1461 {
1462   commands_command_1 (arg, 0, cmd);
1463   return simple_control;
1464 }
1465
1466 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1467
1468 static int
1469 bp_location_has_shadow (struct bp_location *bl)
1470 {
1471   if (bl->loc_type != bp_loc_software_breakpoint)
1472     return 0;
1473   if (!bl->inserted)
1474     return 0;
1475   if (bl->target_info.shadow_len == 0)
1476     /* BL isn't valid, or doesn't shadow memory.  */
1477     return 0;
1478   return 1;
1479 }
1480
1481 /* Update BUF, which is LEN bytes read from the target address
1482    MEMADDR, by replacing a memory breakpoint with its shadowed
1483    contents.
1484
1485    If READBUF is not NULL, this buffer must not overlap with the of
1486    the breakpoint location's shadow_contents buffer.  Otherwise, a
1487    failed assertion internal error will be raised.  */
1488
1489 static void
1490 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1491                             const gdb_byte *writebuf_org,
1492                             ULONGEST memaddr, LONGEST len,
1493                             struct bp_target_info *target_info,
1494                             struct gdbarch *gdbarch)
1495 {
1496   /* Now do full processing of the found relevant range of elements.  */
1497   CORE_ADDR bp_addr = 0;
1498   int bp_size = 0;
1499   int bptoffset = 0;
1500
1501   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1502                                  current_program_space->aspace, 0))
1503     {
1504       /* The breakpoint is inserted in a different address space.  */
1505       return;
1506     }
1507
1508   /* Addresses and length of the part of the breakpoint that
1509      we need to copy.  */
1510   bp_addr = target_info->placed_address;
1511   bp_size = target_info->shadow_len;
1512
1513   if (bp_addr + bp_size <= memaddr)
1514     {
1515       /* The breakpoint is entirely before the chunk of memory we are
1516          reading.  */
1517       return;
1518     }
1519
1520   if (bp_addr >= memaddr + len)
1521     {
1522       /* The breakpoint is entirely after the chunk of memory we are
1523          reading.  */
1524       return;
1525     }
1526
1527   /* Offset within shadow_contents.  */
1528   if (bp_addr < memaddr)
1529     {
1530       /* Only copy the second part of the breakpoint.  */
1531       bp_size -= memaddr - bp_addr;
1532       bptoffset = memaddr - bp_addr;
1533       bp_addr = memaddr;
1534     }
1535
1536   if (bp_addr + bp_size > memaddr + len)
1537     {
1538       /* Only copy the first part of the breakpoint.  */
1539       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1540     }
1541
1542   if (readbuf != NULL)
1543     {
1544       /* Verify that the readbuf buffer does not overlap with the
1545          shadow_contents buffer.  */
1546       gdb_assert (target_info->shadow_contents >= readbuf + len
1547                   || readbuf >= (target_info->shadow_contents
1548                                  + target_info->shadow_len));
1549
1550       /* Update the read buffer with this inserted breakpoint's
1551          shadow.  */
1552       memcpy (readbuf + bp_addr - memaddr,
1553               target_info->shadow_contents + bptoffset, bp_size);
1554     }
1555   else
1556     {
1557       const unsigned char *bp;
1558       CORE_ADDR addr = target_info->reqstd_address;
1559       int placed_size;
1560
1561       /* Update the shadow with what we want to write to memory.  */
1562       memcpy (target_info->shadow_contents + bptoffset,
1563               writebuf_org + bp_addr - memaddr, bp_size);
1564
1565       /* Determine appropriate breakpoint contents and size for this
1566          address.  */
1567       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1568
1569       /* Update the final write buffer with this inserted
1570          breakpoint's INSN.  */
1571       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1572     }
1573 }
1574
1575 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1576    by replacing any memory breakpoints with their shadowed contents.
1577
1578    If READBUF is not NULL, this buffer must not overlap with any of
1579    the breakpoint location's shadow_contents buffers.  Otherwise,
1580    a failed assertion internal error will be raised.
1581
1582    The range of shadowed area by each bp_location is:
1583      bl->address - bp_location_placed_address_before_address_max
1584      up to bl->address + bp_location_shadow_len_after_address_max
1585    The range we were requested to resolve shadows for is:
1586      memaddr ... memaddr + len
1587    Thus the safe cutoff boundaries for performance optimization are
1588      memaddr + len <= (bl->address
1589                        - bp_location_placed_address_before_address_max)
1590    and:
1591      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1592
1593 void
1594 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1595                         const gdb_byte *writebuf_org,
1596                         ULONGEST memaddr, LONGEST len)
1597 {
1598   /* Left boundary, right boundary and median element of our binary
1599      search.  */
1600   unsigned bc_l, bc_r, bc;
1601
1602   /* Find BC_L which is a leftmost element which may affect BUF
1603      content.  It is safe to report lower value but a failure to
1604      report higher one.  */
1605
1606   bc_l = 0;
1607   bc_r = bp_location_count;
1608   while (bc_l + 1 < bc_r)
1609     {
1610       struct bp_location *bl;
1611
1612       bc = (bc_l + bc_r) / 2;
1613       bl = bp_location[bc];
1614
1615       /* Check first BL->ADDRESS will not overflow due to the added
1616          constant.  Then advance the left boundary only if we are sure
1617          the BC element can in no way affect the BUF content (MEMADDR
1618          to MEMADDR + LEN range).
1619
1620          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1621          offset so that we cannot miss a breakpoint with its shadow
1622          range tail still reaching MEMADDR.  */
1623
1624       if ((bl->address + bp_location_shadow_len_after_address_max
1625            >= bl->address)
1626           && (bl->address + bp_location_shadow_len_after_address_max
1627               <= memaddr))
1628         bc_l = bc;
1629       else
1630         bc_r = bc;
1631     }
1632
1633   /* Due to the binary search above, we need to make sure we pick the
1634      first location that's at BC_L's address.  E.g., if there are
1635      multiple locations at the same address, BC_L may end up pointing
1636      at a duplicate location, and miss the "master"/"inserted"
1637      location.  Say, given locations L1, L2 and L3 at addresses A and
1638      B:
1639
1640       L1@A, L2@A, L3@B, ...
1641
1642      BC_L could end up pointing at location L2, while the "master"
1643      location could be L1.  Since the `loc->inserted' flag is only set
1644      on "master" locations, we'd forget to restore the shadow of L1
1645      and L2.  */
1646   while (bc_l > 0
1647          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1648     bc_l--;
1649
1650   /* Now do full processing of the found relevant range of elements.  */
1651
1652   for (bc = bc_l; bc < bp_location_count; bc++)
1653   {
1654     struct bp_location *bl = bp_location[bc];
1655
1656     /* bp_location array has BL->OWNER always non-NULL.  */
1657     if (bl->owner->type == bp_none)
1658       warning (_("reading through apparently deleted breakpoint #%d?"),
1659                bl->owner->number);
1660
1661     /* Performance optimization: any further element can no longer affect BUF
1662        content.  */
1663
1664     if (bl->address >= bp_location_placed_address_before_address_max
1665         && memaddr + len <= (bl->address
1666                              - bp_location_placed_address_before_address_max))
1667       break;
1668
1669     if (!bp_location_has_shadow (bl))
1670       continue;
1671
1672     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1673                                 memaddr, len, &bl->target_info, bl->gdbarch);
1674   }
1675 }
1676
1677 \f
1678
1679 /* Return true if BPT is either a software breakpoint or a hardware
1680    breakpoint.  */
1681
1682 int
1683 is_breakpoint (const struct breakpoint *bpt)
1684 {
1685   return (bpt->type == bp_breakpoint
1686           || bpt->type == bp_hardware_breakpoint
1687           || bpt->type == bp_dprintf);
1688 }
1689
1690 /* Return true if BPT is of any hardware watchpoint kind.  */
1691
1692 static int
1693 is_hardware_watchpoint (const struct breakpoint *bpt)
1694 {
1695   return (bpt->type == bp_hardware_watchpoint
1696           || bpt->type == bp_read_watchpoint
1697           || bpt->type == bp_access_watchpoint);
1698 }
1699
1700 /* Return true if BPT is of any watchpoint kind, hardware or
1701    software.  */
1702
1703 int
1704 is_watchpoint (const struct breakpoint *bpt)
1705 {
1706   return (is_hardware_watchpoint (bpt)
1707           || bpt->type == bp_watchpoint);
1708 }
1709
1710 /* Returns true if the current thread and its running state are safe
1711    to evaluate or update watchpoint B.  Watchpoints on local
1712    expressions need to be evaluated in the context of the thread that
1713    was current when the watchpoint was created, and, that thread needs
1714    to be stopped to be able to select the correct frame context.
1715    Watchpoints on global expressions can be evaluated on any thread,
1716    and in any state.  It is presently left to the target allowing
1717    memory accesses when threads are running.  */
1718
1719 static int
1720 watchpoint_in_thread_scope (struct watchpoint *b)
1721 {
1722   return (b->base.pspace == current_program_space
1723           && (ptid_equal (b->watchpoint_thread, null_ptid)
1724               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1725                   && !is_executing (inferior_ptid))));
1726 }
1727
1728 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1729    associated bp_watchpoint_scope breakpoint.  */
1730
1731 static void
1732 watchpoint_del_at_next_stop (struct watchpoint *w)
1733 {
1734   struct breakpoint *b = &w->base;
1735
1736   if (b->related_breakpoint != b)
1737     {
1738       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1739       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1740       b->related_breakpoint->disposition = disp_del_at_next_stop;
1741       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1742       b->related_breakpoint = b;
1743     }
1744   b->disposition = disp_del_at_next_stop;
1745 }
1746
1747 /* Extract a bitfield value from value VAL using the bit parameters contained in
1748    watchpoint W.  */
1749
1750 static struct value *
1751 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1752 {
1753   struct value *bit_val;
1754
1755   if (val == NULL)
1756     return NULL;
1757
1758   bit_val = allocate_value (value_type (val));
1759
1760   unpack_value_bitfield (bit_val,
1761                          w->val_bitpos,
1762                          w->val_bitsize,
1763                          value_contents_for_printing (val),
1764                          value_offset (val),
1765                          val);
1766
1767   return bit_val;
1768 }
1769
1770 /* Allocate a dummy location and add it to B, which must be a software
1771    watchpoint.  This is required because even if a software watchpoint
1772    is not watching any memory, bpstat_stop_status requires a location
1773    to be able to report stops.  */
1774
1775 static void
1776 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1777                                             struct program_space *pspace)
1778 {
1779   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1780
1781   b->loc = allocate_bp_location (b);
1782   b->loc->pspace = pspace;
1783   b->loc->address = -1;
1784   b->loc->length = -1;
1785 }
1786
1787 /* Returns true if B is a software watchpoint that is not watching any
1788    memory (e.g., "watch $pc").  */
1789
1790 static int
1791 is_no_memory_software_watchpoint (struct breakpoint *b)
1792 {
1793   return (b->type == bp_watchpoint
1794           && b->loc != NULL
1795           && b->loc->next == NULL
1796           && b->loc->address == -1
1797           && b->loc->length == -1);
1798 }
1799
1800 /* Assuming that B is a watchpoint:
1801    - Reparse watchpoint expression, if REPARSE is non-zero
1802    - Evaluate expression and store the result in B->val
1803    - Evaluate the condition if there is one, and store the result
1804      in b->loc->cond.
1805    - Update the list of values that must be watched in B->loc.
1806
1807    If the watchpoint disposition is disp_del_at_next_stop, then do
1808    nothing.  If this is local watchpoint that is out of scope, delete
1809    it.
1810
1811    Even with `set breakpoint always-inserted on' the watchpoints are
1812    removed + inserted on each stop here.  Normal breakpoints must
1813    never be removed because they might be missed by a running thread
1814    when debugging in non-stop mode.  On the other hand, hardware
1815    watchpoints (is_hardware_watchpoint; processed here) are specific
1816    to each LWP since they are stored in each LWP's hardware debug
1817    registers.  Therefore, such LWP must be stopped first in order to
1818    be able to modify its hardware watchpoints.
1819
1820    Hardware watchpoints must be reset exactly once after being
1821    presented to the user.  It cannot be done sooner, because it would
1822    reset the data used to present the watchpoint hit to the user.  And
1823    it must not be done later because it could display the same single
1824    watchpoint hit during multiple GDB stops.  Note that the latter is
1825    relevant only to the hardware watchpoint types bp_read_watchpoint
1826    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1827    not user-visible - its hit is suppressed if the memory content has
1828    not changed.
1829
1830    The following constraints influence the location where we can reset
1831    hardware watchpoints:
1832
1833    * target_stopped_by_watchpoint and target_stopped_data_address are
1834      called several times when GDB stops.
1835
1836    [linux] 
1837    * Multiple hardware watchpoints can be hit at the same time,
1838      causing GDB to stop.  GDB only presents one hardware watchpoint
1839      hit at a time as the reason for stopping, and all the other hits
1840      are presented later, one after the other, each time the user
1841      requests the execution to be resumed.  Execution is not resumed
1842      for the threads still having pending hit event stored in
1843      LWP_INFO->STATUS.  While the watchpoint is already removed from
1844      the inferior on the first stop the thread hit event is kept being
1845      reported from its cached value by linux_nat_stopped_data_address
1846      until the real thread resume happens after the watchpoint gets
1847      presented and thus its LWP_INFO->STATUS gets reset.
1848
1849    Therefore the hardware watchpoint hit can get safely reset on the
1850    watchpoint removal from inferior.  */
1851
1852 static void
1853 update_watchpoint (struct watchpoint *b, int reparse)
1854 {
1855   int within_current_scope;
1856   struct frame_id saved_frame_id;
1857   int frame_saved;
1858
1859   /* If this is a local watchpoint, we only want to check if the
1860      watchpoint frame is in scope if the current thread is the thread
1861      that was used to create the watchpoint.  */
1862   if (!watchpoint_in_thread_scope (b))
1863     return;
1864
1865   if (b->base.disposition == disp_del_at_next_stop)
1866     return;
1867  
1868   frame_saved = 0;
1869
1870   /* Determine if the watchpoint is within scope.  */
1871   if (b->exp_valid_block == NULL)
1872     within_current_scope = 1;
1873   else
1874     {
1875       struct frame_info *fi = get_current_frame ();
1876       struct gdbarch *frame_arch = get_frame_arch (fi);
1877       CORE_ADDR frame_pc = get_frame_pc (fi);
1878
1879       /* If we're at a point where the stack has been destroyed
1880          (e.g. in a function epilogue), unwinding may not work
1881          properly. Do not attempt to recreate locations at this
1882          point.  See similar comments in watchpoint_check.  */
1883       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1884         return;
1885
1886       /* Save the current frame's ID so we can restore it after
1887          evaluating the watchpoint expression on its own frame.  */
1888       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1889          took a frame parameter, so that we didn't have to change the
1890          selected frame.  */
1891       frame_saved = 1;
1892       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1893
1894       fi = frame_find_by_id (b->watchpoint_frame);
1895       within_current_scope = (fi != NULL);
1896       if (within_current_scope)
1897         select_frame (fi);
1898     }
1899
1900   /* We don't free locations.  They are stored in the bp_location array
1901      and update_global_location_list will eventually delete them and
1902      remove breakpoints if needed.  */
1903   b->base.loc = NULL;
1904
1905   if (within_current_scope && reparse)
1906     {
1907       const char *s;
1908
1909       if (b->exp)
1910         {
1911           xfree (b->exp);
1912           b->exp = NULL;
1913         }
1914       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1915       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1916       /* If the meaning of expression itself changed, the old value is
1917          no longer relevant.  We don't want to report a watchpoint hit
1918          to the user when the old value and the new value may actually
1919          be completely different objects.  */
1920       value_free (b->val);
1921       b->val = NULL;
1922       b->val_valid = 0;
1923
1924       /* Note that unlike with breakpoints, the watchpoint's condition
1925          expression is stored in the breakpoint object, not in the
1926          locations (re)created below.  */
1927       if (b->base.cond_string != NULL)
1928         {
1929           if (b->cond_exp != NULL)
1930             {
1931               xfree (b->cond_exp);
1932               b->cond_exp = NULL;
1933             }
1934
1935           s = b->base.cond_string;
1936           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1937         }
1938     }
1939
1940   /* If we failed to parse the expression, for example because
1941      it refers to a global variable in a not-yet-loaded shared library,
1942      don't try to insert watchpoint.  We don't automatically delete
1943      such watchpoint, though, since failure to parse expression
1944      is different from out-of-scope watchpoint.  */
1945   if (!target_has_execution)
1946     {
1947       /* Without execution, memory can't change.  No use to try and
1948          set watchpoint locations.  The watchpoint will be reset when
1949          the target gains execution, through breakpoint_re_set.  */
1950       if (!can_use_hw_watchpoints)
1951         {
1952           if (b->base.ops->works_in_software_mode (&b->base))
1953             b->base.type = bp_watchpoint;
1954           else
1955             error (_("Can't set read/access watchpoint when "
1956                      "hardware watchpoints are disabled."));
1957         }
1958     }
1959   else if (within_current_scope && b->exp)
1960     {
1961       int pc = 0;
1962       struct value *val_chain, *v, *result, *next;
1963       struct program_space *frame_pspace;
1964
1965       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1966
1967       /* Avoid setting b->val if it's already set.  The meaning of
1968          b->val is 'the last value' user saw, and we should update
1969          it only if we reported that last value to user.  As it
1970          happens, the code that reports it updates b->val directly.
1971          We don't keep track of the memory value for masked
1972          watchpoints.  */
1973       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1974         {
1975           if (b->val_bitsize != 0)
1976             {
1977               v = extract_bitfield_from_watchpoint_value (b, v);
1978               if (v != NULL)
1979                 release_value (v);
1980             }
1981           b->val = v;
1982           b->val_valid = 1;
1983         }
1984
1985       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1986
1987       /* Look at each value on the value chain.  */
1988       for (v = val_chain; v; v = value_next (v))
1989         {
1990           /* If it's a memory location, and GDB actually needed
1991              its contents to evaluate the expression, then we
1992              must watch it.  If the first value returned is
1993              still lazy, that means an error occurred reading it;
1994              watch it anyway in case it becomes readable.  */
1995           if (VALUE_LVAL (v) == lval_memory
1996               && (v == val_chain || ! value_lazy (v)))
1997             {
1998               struct type *vtype = check_typedef (value_type (v));
1999
2000               /* We only watch structs and arrays if user asked
2001                  for it explicitly, never if they just happen to
2002                  appear in the middle of some value chain.  */
2003               if (v == result
2004                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2005                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2006                 {
2007                   CORE_ADDR addr;
2008                   enum target_hw_bp_type type;
2009                   struct bp_location *loc, **tmp;
2010                   int bitpos = 0, bitsize = 0;
2011
2012                   if (value_bitsize (v) != 0)
2013                     {
2014                       /* Extract the bit parameters out from the bitfield
2015                          sub-expression.  */
2016                       bitpos = value_bitpos (v);
2017                       bitsize = value_bitsize (v);
2018                     }
2019                   else if (v == result && b->val_bitsize != 0)
2020                     {
2021                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2022                         lvalue whose bit parameters are saved in the fields
2023                         VAL_BITPOS and VAL_BITSIZE.  */
2024                       bitpos = b->val_bitpos;
2025                       bitsize = b->val_bitsize;
2026                     }
2027
2028                   addr = value_address (v);
2029                   if (bitsize != 0)
2030                     {
2031                       /* Skip the bytes that don't contain the bitfield.  */
2032                       addr += bitpos / 8;
2033                     }
2034
2035                   type = hw_write;
2036                   if (b->base.type == bp_read_watchpoint)
2037                     type = hw_read;
2038                   else if (b->base.type == bp_access_watchpoint)
2039                     type = hw_access;
2040
2041                   loc = allocate_bp_location (&b->base);
2042                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2043                     ;
2044                   *tmp = loc;
2045                   loc->gdbarch = get_type_arch (value_type (v));
2046
2047                   loc->pspace = frame_pspace;
2048                   loc->address = addr;
2049
2050                   if (bitsize != 0)
2051                     {
2052                       /* Just cover the bytes that make up the bitfield.  */
2053                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2054                     }
2055                   else
2056                     loc->length = TYPE_LENGTH (value_type (v));
2057
2058                   loc->watchpoint_type = type;
2059                 }
2060             }
2061         }
2062
2063       /* Change the type of breakpoint between hardware assisted or
2064          an ordinary watchpoint depending on the hardware support
2065          and free hardware slots.  REPARSE is set when the inferior
2066          is started.  */
2067       if (reparse)
2068         {
2069           int reg_cnt;
2070           enum bp_loc_type loc_type;
2071           struct bp_location *bl;
2072
2073           reg_cnt = can_use_hardware_watchpoint (val_chain);
2074
2075           if (reg_cnt)
2076             {
2077               int i, target_resources_ok, other_type_used;
2078               enum bptype type;
2079
2080               /* Use an exact watchpoint when there's only one memory region to be
2081                  watched, and only one debug register is needed to watch it.  */
2082               b->exact = target_exact_watchpoints && reg_cnt == 1;
2083
2084               /* We need to determine how many resources are already
2085                  used for all other hardware watchpoints plus this one
2086                  to see if we still have enough resources to also fit
2087                  this watchpoint in as well.  */
2088
2089               /* If this is a software watchpoint, we try to turn it
2090                  to a hardware one -- count resources as if B was of
2091                  hardware watchpoint type.  */
2092               type = b->base.type;
2093               if (type == bp_watchpoint)
2094                 type = bp_hardware_watchpoint;
2095
2096               /* This watchpoint may or may not have been placed on
2097                  the list yet at this point (it won't be in the list
2098                  if we're trying to create it for the first time,
2099                  through watch_command), so always account for it
2100                  manually.  */
2101
2102               /* Count resources used by all watchpoints except B.  */
2103               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2104
2105               /* Add in the resources needed for B.  */
2106               i += hw_watchpoint_use_count (&b->base);
2107
2108               target_resources_ok
2109                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2110               if (target_resources_ok <= 0)
2111                 {
2112                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2113
2114                   if (target_resources_ok == 0 && !sw_mode)
2115                     error (_("Target does not support this type of "
2116                              "hardware watchpoint."));
2117                   else if (target_resources_ok < 0 && !sw_mode)
2118                     error (_("There are not enough available hardware "
2119                              "resources for this watchpoint."));
2120
2121                   /* Downgrade to software watchpoint.  */
2122                   b->base.type = bp_watchpoint;
2123                 }
2124               else
2125                 {
2126                   /* If this was a software watchpoint, we've just
2127                      found we have enough resources to turn it to a
2128                      hardware watchpoint.  Otherwise, this is a
2129                      nop.  */
2130                   b->base.type = type;
2131                 }
2132             }
2133           else if (!b->base.ops->works_in_software_mode (&b->base))
2134             {
2135               if (!can_use_hw_watchpoints)
2136                 error (_("Can't set read/access watchpoint when "
2137                          "hardware watchpoints are disabled."));
2138               else
2139                 error (_("Expression cannot be implemented with "
2140                          "read/access watchpoint."));
2141             }
2142           else
2143             b->base.type = bp_watchpoint;
2144
2145           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2146                       : bp_loc_hardware_watchpoint);
2147           for (bl = b->base.loc; bl; bl = bl->next)
2148             bl->loc_type = loc_type;
2149         }
2150
2151       for (v = val_chain; v; v = next)
2152         {
2153           next = value_next (v);
2154           if (v != b->val)
2155             value_free (v);
2156         }
2157
2158       /* If a software watchpoint is not watching any memory, then the
2159          above left it without any location set up.  But,
2160          bpstat_stop_status requires a location to be able to report
2161          stops, so make sure there's at least a dummy one.  */
2162       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2163         software_watchpoint_add_no_memory_location (&b->base, frame_pspace);
2164     }
2165   else if (!within_current_scope)
2166     {
2167       printf_filtered (_("\
2168 Watchpoint %d deleted because the program has left the block\n\
2169 in which its expression is valid.\n"),
2170                        b->base.number);
2171       watchpoint_del_at_next_stop (b);
2172     }
2173
2174   /* Restore the selected frame.  */
2175   if (frame_saved)
2176     select_frame (frame_find_by_id (saved_frame_id));
2177 }
2178
2179
2180 /* Returns 1 iff breakpoint location should be
2181    inserted in the inferior.  We don't differentiate the type of BL's owner
2182    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2183    breakpoint_ops is not defined, because in insert_bp_location,
2184    tracepoint's insert_location will not be called.  */
2185 static int
2186 should_be_inserted (struct bp_location *bl)
2187 {
2188   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2189     return 0;
2190
2191   if (bl->owner->disposition == disp_del_at_next_stop)
2192     return 0;
2193
2194   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2195     return 0;
2196
2197   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2198     return 0;
2199
2200   /* This is set for example, when we're attached to the parent of a
2201      vfork, and have detached from the child.  The child is running
2202      free, and we expect it to do an exec or exit, at which point the
2203      OS makes the parent schedulable again (and the target reports
2204      that the vfork is done).  Until the child is done with the shared
2205      memory region, do not insert breakpoints in the parent, otherwise
2206      the child could still trip on the parent's breakpoints.  Since
2207      the parent is blocked anyway, it won't miss any breakpoint.  */
2208   if (bl->pspace->breakpoints_not_allowed)
2209     return 0;
2210
2211   /* Don't insert a breakpoint if we're trying to step past its
2212      location, except if the breakpoint is a single-step breakpoint,
2213      and the breakpoint's thread is the thread which is stepping past
2214      a breakpoint.  */
2215   if ((bl->loc_type == bp_loc_software_breakpoint
2216        || bl->loc_type == bp_loc_hardware_breakpoint)
2217       && stepping_past_instruction_at (bl->pspace->aspace,
2218                                        bl->address)
2219       /* The single-step breakpoint may be inserted at the location
2220          we're trying to step if the instruction branches to itself.
2221          However, the instruction won't be executed at all and it may
2222          break the semantics of the instruction, for example, the
2223          instruction is a conditional branch or updates some flags.
2224          We can't fix it unless GDB is able to emulate the instruction
2225          or switch to displaced stepping.  */
2226       && !(bl->owner->type == bp_single_step
2227            && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2228     {
2229       if (debug_infrun)
2230         {
2231           fprintf_unfiltered (gdb_stdlog,
2232                               "infrun: skipping breakpoint: "
2233                               "stepping past insn at: %s\n",
2234                               paddress (bl->gdbarch, bl->address));
2235         }
2236       return 0;
2237     }
2238
2239   /* Don't insert watchpoints if we're trying to step past the
2240      instruction that triggered one.  */
2241   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2242       && stepping_past_nonsteppable_watchpoint ())
2243     {
2244       if (debug_infrun)
2245         {
2246           fprintf_unfiltered (gdb_stdlog,
2247                               "infrun: stepping past non-steppable watchpoint. "
2248                               "skipping watchpoint at %s:%d\n",
2249                               paddress (bl->gdbarch, bl->address),
2250                               bl->length);
2251         }
2252       return 0;
2253     }
2254
2255   return 1;
2256 }
2257
2258 /* Same as should_be_inserted but does the check assuming
2259    that the location is not duplicated.  */
2260
2261 static int
2262 unduplicated_should_be_inserted (struct bp_location *bl)
2263 {
2264   int result;
2265   const int save_duplicate = bl->duplicate;
2266
2267   bl->duplicate = 0;
2268   result = should_be_inserted (bl);
2269   bl->duplicate = save_duplicate;
2270   return result;
2271 }
2272
2273 /* Parses a conditional described by an expression COND into an
2274    agent expression bytecode suitable for evaluation
2275    by the bytecode interpreter.  Return NULL if there was
2276    any error during parsing.  */
2277
2278 static struct agent_expr *
2279 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2280 {
2281   struct agent_expr *aexpr = NULL;
2282
2283   if (!cond)
2284     return NULL;
2285
2286   /* We don't want to stop processing, so catch any errors
2287      that may show up.  */
2288   TRY
2289     {
2290       aexpr = gen_eval_for_expr (scope, cond);
2291     }
2292
2293   CATCH (ex, RETURN_MASK_ERROR)
2294     {
2295       /* If we got here, it means the condition could not be parsed to a valid
2296          bytecode expression and thus can't be evaluated on the target's side.
2297          It's no use iterating through the conditions.  */
2298       return NULL;
2299     }
2300   END_CATCH
2301
2302   /* We have a valid agent expression.  */
2303   return aexpr;
2304 }
2305
2306 /* Based on location BL, create a list of breakpoint conditions to be
2307    passed on to the target.  If we have duplicated locations with different
2308    conditions, we will add such conditions to the list.  The idea is that the
2309    target will evaluate the list of conditions and will only notify GDB when
2310    one of them is true.  */
2311
2312 static void
2313 build_target_condition_list (struct bp_location *bl)
2314 {
2315   struct bp_location **locp = NULL, **loc2p;
2316   int null_condition_or_parse_error = 0;
2317   int modified = bl->needs_update;
2318   struct bp_location *loc;
2319
2320   /* Release conditions left over from a previous insert.  */
2321   VEC_free (agent_expr_p, bl->target_info.conditions);
2322
2323   /* This is only meaningful if the target is
2324      evaluating conditions and if the user has
2325      opted for condition evaluation on the target's
2326      side.  */
2327   if (gdb_evaluates_breakpoint_condition_p ()
2328       || !target_supports_evaluation_of_breakpoint_conditions ())
2329     return;
2330
2331   /* Do a first pass to check for locations with no assigned
2332      conditions or conditions that fail to parse to a valid agent expression
2333      bytecode.  If any of these happen, then it's no use to send conditions
2334      to the target since this location will always trigger and generate a
2335      response back to GDB.  */
2336   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2337     {
2338       loc = (*loc2p);
2339       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2340         {
2341           if (modified)
2342             {
2343               struct agent_expr *aexpr;
2344
2345               /* Re-parse the conditions since something changed.  In that
2346                  case we already freed the condition bytecodes (see
2347                  force_breakpoint_reinsertion).  We just
2348                  need to parse the condition to bytecodes again.  */
2349               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2350               loc->cond_bytecode = aexpr;
2351             }
2352
2353           /* If we have a NULL bytecode expression, it means something
2354              went wrong or we have a null condition expression.  */
2355           if (!loc->cond_bytecode)
2356             {
2357               null_condition_or_parse_error = 1;
2358               break;
2359             }
2360         }
2361     }
2362
2363   /* If any of these happened, it means we will have to evaluate the conditions
2364      for the location's address on gdb's side.  It is no use keeping bytecodes
2365      for all the other duplicate locations, thus we free all of them here.
2366
2367      This is so we have a finer control over which locations' conditions are
2368      being evaluated by GDB or the remote stub.  */
2369   if (null_condition_or_parse_error)
2370     {
2371       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2372         {
2373           loc = (*loc2p);
2374           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2375             {
2376               /* Only go as far as the first NULL bytecode is
2377                  located.  */
2378               if (!loc->cond_bytecode)
2379                 return;
2380
2381               free_agent_expr (loc->cond_bytecode);
2382               loc->cond_bytecode = NULL;
2383             }
2384         }
2385     }
2386
2387   /* No NULL conditions or failed bytecode generation.  Build a condition list
2388      for this location's address.  */
2389   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2390     {
2391       loc = (*loc2p);
2392       if (loc->cond
2393           && is_breakpoint (loc->owner)
2394           && loc->pspace->num == bl->pspace->num
2395           && loc->owner->enable_state == bp_enabled
2396           && loc->enabled)
2397         /* Add the condition to the vector.  This will be used later to send the
2398            conditions to the target.  */
2399         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2400                        loc->cond_bytecode);
2401     }
2402
2403   return;
2404 }
2405
2406 /* Parses a command described by string CMD into an agent expression
2407    bytecode suitable for evaluation by the bytecode interpreter.
2408    Return NULL if there was any error during parsing.  */
2409
2410 static struct agent_expr *
2411 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2412 {
2413   struct cleanup *old_cleanups = 0;
2414   struct expression *expr, **argvec;
2415   struct agent_expr *aexpr = NULL;
2416   const char *cmdrest;
2417   const char *format_start, *format_end;
2418   struct format_piece *fpieces;
2419   int nargs;
2420   struct gdbarch *gdbarch = get_current_arch ();
2421
2422   if (!cmd)
2423     return NULL;
2424
2425   cmdrest = cmd;
2426
2427   if (*cmdrest == ',')
2428     ++cmdrest;
2429   cmdrest = skip_spaces_const (cmdrest);
2430
2431   if (*cmdrest++ != '"')
2432     error (_("No format string following the location"));
2433
2434   format_start = cmdrest;
2435
2436   fpieces = parse_format_string (&cmdrest);
2437
2438   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2439
2440   format_end = cmdrest;
2441
2442   if (*cmdrest++ != '"')
2443     error (_("Bad format string, non-terminated '\"'."));
2444   
2445   cmdrest = skip_spaces_const (cmdrest);
2446
2447   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2448     error (_("Invalid argument syntax"));
2449
2450   if (*cmdrest == ',')
2451     cmdrest++;
2452   cmdrest = skip_spaces_const (cmdrest);
2453
2454   /* For each argument, make an expression.  */
2455
2456   argvec = (struct expression **) alloca (strlen (cmd)
2457                                          * sizeof (struct expression *));
2458
2459   nargs = 0;
2460   while (*cmdrest != '\0')
2461     {
2462       const char *cmd1;
2463
2464       cmd1 = cmdrest;
2465       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2466       argvec[nargs++] = expr;
2467       cmdrest = cmd1;
2468       if (*cmdrest == ',')
2469         ++cmdrest;
2470     }
2471
2472   /* We don't want to stop processing, so catch any errors
2473      that may show up.  */
2474   TRY
2475     {
2476       aexpr = gen_printf (scope, gdbarch, 0, 0,
2477                           format_start, format_end - format_start,
2478                           fpieces, nargs, argvec);
2479     }
2480   CATCH (ex, RETURN_MASK_ERROR)
2481     {
2482       /* If we got here, it means the command could not be parsed to a valid
2483          bytecode expression and thus can't be evaluated on the target's side.
2484          It's no use iterating through the other commands.  */
2485       aexpr = NULL;
2486     }
2487   END_CATCH
2488
2489   do_cleanups (old_cleanups);
2490
2491   /* We have a valid agent expression, return it.  */
2492   return aexpr;
2493 }
2494
2495 /* Based on location BL, create a list of breakpoint commands to be
2496    passed on to the target.  If we have duplicated locations with
2497    different commands, we will add any such to the list.  */
2498
2499 static void
2500 build_target_command_list (struct bp_location *bl)
2501 {
2502   struct bp_location **locp = NULL, **loc2p;
2503   int null_command_or_parse_error = 0;
2504   int modified = bl->needs_update;
2505   struct bp_location *loc;
2506
2507   /* Release commands left over from a previous insert.  */
2508   VEC_free (agent_expr_p, bl->target_info.tcommands);
2509
2510   if (!target_can_run_breakpoint_commands ())
2511     return;
2512
2513   /* For now, limit to agent-style dprintf breakpoints.  */
2514   if (dprintf_style != dprintf_style_agent)
2515     return;
2516
2517   /* For now, if we have any duplicate location that isn't a dprintf,
2518      don't install the target-side commands, as that would make the
2519      breakpoint not be reported to the core, and we'd lose
2520      control.  */
2521   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2522     {
2523       loc = (*loc2p);
2524       if (is_breakpoint (loc->owner)
2525           && loc->pspace->num == bl->pspace->num
2526           && loc->owner->type != bp_dprintf)
2527         return;
2528     }
2529
2530   /* Do a first pass to check for locations with no assigned
2531      conditions or conditions that fail to parse to a valid agent expression
2532      bytecode.  If any of these happen, then it's no use to send conditions
2533      to the target since this location will always trigger and generate a
2534      response back to GDB.  */
2535   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2536     {
2537       loc = (*loc2p);
2538       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2539         {
2540           if (modified)
2541             {
2542               struct agent_expr *aexpr;
2543
2544               /* Re-parse the commands since something changed.  In that
2545                  case we already freed the command bytecodes (see
2546                  force_breakpoint_reinsertion).  We just
2547                  need to parse the command to bytecodes again.  */
2548               aexpr = parse_cmd_to_aexpr (bl->address,
2549                                           loc->owner->extra_string);
2550               loc->cmd_bytecode = aexpr;
2551             }
2552
2553           /* If we have a NULL bytecode expression, it means something
2554              went wrong or we have a null command expression.  */
2555           if (!loc->cmd_bytecode)
2556             {
2557               null_command_or_parse_error = 1;
2558               break;
2559             }
2560         }
2561     }
2562
2563   /* If anything failed, then we're not doing target-side commands,
2564      and so clean up.  */
2565   if (null_command_or_parse_error)
2566     {
2567       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2568         {
2569           loc = (*loc2p);
2570           if (is_breakpoint (loc->owner)
2571               && loc->pspace->num == bl->pspace->num)
2572             {
2573               /* Only go as far as the first NULL bytecode is
2574                  located.  */
2575               if (loc->cmd_bytecode == NULL)
2576                 return;
2577
2578               free_agent_expr (loc->cmd_bytecode);
2579               loc->cmd_bytecode = NULL;
2580             }
2581         }
2582     }
2583
2584   /* No NULL commands or failed bytecode generation.  Build a command list
2585      for this location's address.  */
2586   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2587     {
2588       loc = (*loc2p);
2589       if (loc->owner->extra_string
2590           && is_breakpoint (loc->owner)
2591           && loc->pspace->num == bl->pspace->num
2592           && loc->owner->enable_state == bp_enabled
2593           && loc->enabled)
2594         /* Add the command to the vector.  This will be used later
2595            to send the commands to the target.  */
2596         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2597                        loc->cmd_bytecode);
2598     }
2599
2600   bl->target_info.persist = 0;
2601   /* Maybe flag this location as persistent.  */
2602   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2603     bl->target_info.persist = 1;
2604 }
2605
2606 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2607    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2608    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2609    Returns 0 for success, 1 if the bp_location type is not supported or
2610    -1 for failure.
2611
2612    NOTE drow/2003-09-09: This routine could be broken down to an
2613    object-style method for each breakpoint or catchpoint type.  */
2614 static int
2615 insert_bp_location (struct bp_location *bl,
2616                     struct ui_file *tmp_error_stream,
2617                     int *disabled_breaks,
2618                     int *hw_breakpoint_error,
2619                     int *hw_bp_error_explained_already)
2620 {
2621   enum errors bp_err = GDB_NO_ERROR;
2622   const char *bp_err_message = NULL;
2623
2624   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2625     return 0;
2626
2627   /* Note we don't initialize bl->target_info, as that wipes out
2628      the breakpoint location's shadow_contents if the breakpoint
2629      is still inserted at that location.  This in turn breaks
2630      target_read_memory which depends on these buffers when
2631      a memory read is requested at the breakpoint location:
2632      Once the target_info has been wiped, we fail to see that
2633      we have a breakpoint inserted at that address and thus
2634      read the breakpoint instead of returning the data saved in
2635      the breakpoint location's shadow contents.  */
2636   bl->target_info.reqstd_address = bl->address;
2637   bl->target_info.placed_address_space = bl->pspace->aspace;
2638   bl->target_info.length = bl->length;
2639
2640   /* When working with target-side conditions, we must pass all the conditions
2641      for the same breakpoint address down to the target since GDB will not
2642      insert those locations.  With a list of breakpoint conditions, the target
2643      can decide when to stop and notify GDB.  */
2644
2645   if (is_breakpoint (bl->owner))
2646     {
2647       build_target_condition_list (bl);
2648       build_target_command_list (bl);
2649       /* Reset the modification marker.  */
2650       bl->needs_update = 0;
2651     }
2652
2653   if (bl->loc_type == bp_loc_software_breakpoint
2654       || bl->loc_type == bp_loc_hardware_breakpoint)
2655     {
2656       if (bl->owner->type != bp_hardware_breakpoint)
2657         {
2658           /* If the explicitly specified breakpoint type
2659              is not hardware breakpoint, check the memory map to see
2660              if the breakpoint address is in read only memory or not.
2661
2662              Two important cases are:
2663              - location type is not hardware breakpoint, memory
2664              is readonly.  We change the type of the location to
2665              hardware breakpoint.
2666              - location type is hardware breakpoint, memory is
2667              read-write.  This means we've previously made the
2668              location hardware one, but then the memory map changed,
2669              so we undo.
2670              
2671              When breakpoints are removed, remove_breakpoints will use
2672              location types we've just set here, the only possible
2673              problem is that memory map has changed during running
2674              program, but it's not going to work anyway with current
2675              gdb.  */
2676           struct mem_region *mr 
2677             = lookup_mem_region (bl->target_info.reqstd_address);
2678           
2679           if (mr)
2680             {
2681               if (automatic_hardware_breakpoints)
2682                 {
2683                   enum bp_loc_type new_type;
2684                   
2685                   if (mr->attrib.mode != MEM_RW)
2686                     new_type = bp_loc_hardware_breakpoint;
2687                   else 
2688                     new_type = bp_loc_software_breakpoint;
2689                   
2690                   if (new_type != bl->loc_type)
2691                     {
2692                       static int said = 0;
2693
2694                       bl->loc_type = new_type;
2695                       if (!said)
2696                         {
2697                           fprintf_filtered (gdb_stdout,
2698                                             _("Note: automatically using "
2699                                               "hardware breakpoints for "
2700                                               "read-only addresses.\n"));
2701                           said = 1;
2702                         }
2703                     }
2704                 }
2705               else if (bl->loc_type == bp_loc_software_breakpoint
2706                        && mr->attrib.mode != MEM_RW)
2707                 {
2708                   fprintf_unfiltered (tmp_error_stream,
2709                                       _("Cannot insert breakpoint %d.\n"
2710                                         "Cannot set software breakpoint "
2711                                         "at read-only address %s\n"),
2712                                       bl->owner->number,
2713                                       paddress (bl->gdbarch, bl->address));
2714                   return 1;
2715                 }
2716             }
2717         }
2718         
2719       /* First check to see if we have to handle an overlay.  */
2720       if (overlay_debugging == ovly_off
2721           || bl->section == NULL
2722           || !(section_is_overlay (bl->section)))
2723         {
2724           /* No overlay handling: just set the breakpoint.  */
2725           TRY
2726             {
2727               int val;
2728
2729               val = bl->owner->ops->insert_location (bl);
2730               if (val)
2731                 bp_err = GENERIC_ERROR;
2732             }
2733           CATCH (e, RETURN_MASK_ALL)
2734             {
2735               bp_err = e.error;
2736               bp_err_message = e.message;
2737             }
2738           END_CATCH
2739         }
2740       else
2741         {
2742           /* This breakpoint is in an overlay section.
2743              Shall we set a breakpoint at the LMA?  */
2744           if (!overlay_events_enabled)
2745             {
2746               /* Yes -- overlay event support is not active, 
2747                  so we must try to set a breakpoint at the LMA.
2748                  This will not work for a hardware breakpoint.  */
2749               if (bl->loc_type == bp_loc_hardware_breakpoint)
2750                 warning (_("hardware breakpoint %d not supported in overlay!"),
2751                          bl->owner->number);
2752               else
2753                 {
2754                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2755                                                              bl->section);
2756                   /* Set a software (trap) breakpoint at the LMA.  */
2757                   bl->overlay_target_info = bl->target_info;
2758                   bl->overlay_target_info.reqstd_address = addr;
2759
2760                   /* No overlay handling: just set the breakpoint.  */
2761                   TRY
2762                     {
2763                       int val;
2764
2765                       val = target_insert_breakpoint (bl->gdbarch,
2766                                                       &bl->overlay_target_info);
2767                       if (val)
2768                         bp_err = GENERIC_ERROR;
2769                     }
2770                   CATCH (e, RETURN_MASK_ALL)
2771                     {
2772                       bp_err = e.error;
2773                       bp_err_message = e.message;
2774                     }
2775                   END_CATCH
2776
2777                   if (bp_err != GDB_NO_ERROR)
2778                     fprintf_unfiltered (tmp_error_stream,
2779                                         "Overlay breakpoint %d "
2780                                         "failed: in ROM?\n",
2781                                         bl->owner->number);
2782                 }
2783             }
2784           /* Shall we set a breakpoint at the VMA? */
2785           if (section_is_mapped (bl->section))
2786             {
2787               /* Yes.  This overlay section is mapped into memory.  */
2788               TRY
2789                 {
2790                   int val;
2791
2792                   val = bl->owner->ops->insert_location (bl);
2793                   if (val)
2794                     bp_err = GENERIC_ERROR;
2795                 }
2796               CATCH (e, RETURN_MASK_ALL)
2797                 {
2798                   bp_err = e.error;
2799                   bp_err_message = e.message;
2800                 }
2801               END_CATCH
2802             }
2803           else
2804             {
2805               /* No.  This breakpoint will not be inserted.  
2806                  No error, but do not mark the bp as 'inserted'.  */
2807               return 0;
2808             }
2809         }
2810
2811       if (bp_err != GDB_NO_ERROR)
2812         {
2813           /* Can't set the breakpoint.  */
2814
2815           /* In some cases, we might not be able to insert a
2816              breakpoint in a shared library that has already been
2817              removed, but we have not yet processed the shlib unload
2818              event.  Unfortunately, some targets that implement
2819              breakpoint insertion themselves can't tell why the
2820              breakpoint insertion failed (e.g., the remote target
2821              doesn't define error codes), so we must treat generic
2822              errors as memory errors.  */
2823           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2824               && bl->loc_type == bp_loc_software_breakpoint
2825               && (solib_name_from_address (bl->pspace, bl->address)
2826                   || shared_objfile_contains_address_p (bl->pspace,
2827                                                         bl->address)))
2828             {
2829               /* See also: disable_breakpoints_in_shlibs.  */
2830               bl->shlib_disabled = 1;
2831               observer_notify_breakpoint_modified (bl->owner);
2832               if (!*disabled_breaks)
2833                 {
2834                   fprintf_unfiltered (tmp_error_stream, 
2835                                       "Cannot insert breakpoint %d.\n", 
2836                                       bl->owner->number);
2837                   fprintf_unfiltered (tmp_error_stream, 
2838                                       "Temporarily disabling shared "
2839                                       "library breakpoints:\n");
2840                 }
2841               *disabled_breaks = 1;
2842               fprintf_unfiltered (tmp_error_stream,
2843                                   "breakpoint #%d\n", bl->owner->number);
2844               return 0;
2845             }
2846           else
2847             {
2848               if (bl->loc_type == bp_loc_hardware_breakpoint)
2849                 {
2850                   *hw_breakpoint_error = 1;
2851                   *hw_bp_error_explained_already = bp_err_message != NULL;
2852                   fprintf_unfiltered (tmp_error_stream,
2853                                       "Cannot insert hardware breakpoint %d%s",
2854                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2855                   if (bp_err_message != NULL)
2856                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2857                 }
2858               else
2859                 {
2860                   if (bp_err_message == NULL)
2861                     {
2862                       char *message
2863                         = memory_error_message (TARGET_XFER_E_IO,
2864                                                 bl->gdbarch, bl->address);
2865                       struct cleanup *old_chain = make_cleanup (xfree, message);
2866
2867                       fprintf_unfiltered (tmp_error_stream,
2868                                           "Cannot insert breakpoint %d.\n"
2869                                           "%s\n",
2870                                           bl->owner->number, message);
2871                       do_cleanups (old_chain);
2872                     }
2873                   else
2874                     {
2875                       fprintf_unfiltered (tmp_error_stream,
2876                                           "Cannot insert breakpoint %d: %s\n",
2877                                           bl->owner->number,
2878                                           bp_err_message);
2879                     }
2880                 }
2881               return 1;
2882
2883             }
2884         }
2885       else
2886         bl->inserted = 1;
2887
2888       return 0;
2889     }
2890
2891   else if (bl->loc_type == bp_loc_hardware_watchpoint
2892            /* NOTE drow/2003-09-08: This state only exists for removing
2893               watchpoints.  It's not clear that it's necessary...  */
2894            && bl->owner->disposition != disp_del_at_next_stop)
2895     {
2896       int val;
2897
2898       gdb_assert (bl->owner->ops != NULL
2899                   && bl->owner->ops->insert_location != NULL);
2900
2901       val = bl->owner->ops->insert_location (bl);
2902
2903       /* If trying to set a read-watchpoint, and it turns out it's not
2904          supported, try emulating one with an access watchpoint.  */
2905       if (val == 1 && bl->watchpoint_type == hw_read)
2906         {
2907           struct bp_location *loc, **loc_temp;
2908
2909           /* But don't try to insert it, if there's already another
2910              hw_access location that would be considered a duplicate
2911              of this one.  */
2912           ALL_BP_LOCATIONS (loc, loc_temp)
2913             if (loc != bl
2914                 && loc->watchpoint_type == hw_access
2915                 && watchpoint_locations_match (bl, loc))
2916               {
2917                 bl->duplicate = 1;
2918                 bl->inserted = 1;
2919                 bl->target_info = loc->target_info;
2920                 bl->watchpoint_type = hw_access;
2921                 val = 0;
2922                 break;
2923               }
2924
2925           if (val == 1)
2926             {
2927               bl->watchpoint_type = hw_access;
2928               val = bl->owner->ops->insert_location (bl);
2929
2930               if (val)
2931                 /* Back to the original value.  */
2932                 bl->watchpoint_type = hw_read;
2933             }
2934         }
2935
2936       bl->inserted = (val == 0);
2937     }
2938
2939   else if (bl->owner->type == bp_catchpoint)
2940     {
2941       int val;
2942
2943       gdb_assert (bl->owner->ops != NULL
2944                   && bl->owner->ops->insert_location != NULL);
2945
2946       val = bl->owner->ops->insert_location (bl);
2947       if (val)
2948         {
2949           bl->owner->enable_state = bp_disabled;
2950
2951           if (val == 1)
2952             warning (_("\
2953 Error inserting catchpoint %d: Your system does not support this type\n\
2954 of catchpoint."), bl->owner->number);
2955           else
2956             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2957         }
2958
2959       bl->inserted = (val == 0);
2960
2961       /* We've already printed an error message if there was a problem
2962          inserting this catchpoint, and we've disabled the catchpoint,
2963          so just return success.  */
2964       return 0;
2965     }
2966
2967   return 0;
2968 }
2969
2970 /* This function is called when program space PSPACE is about to be
2971    deleted.  It takes care of updating breakpoints to not reference
2972    PSPACE anymore.  */
2973
2974 void
2975 breakpoint_program_space_exit (struct program_space *pspace)
2976 {
2977   struct breakpoint *b, *b_temp;
2978   struct bp_location *loc, **loc_temp;
2979
2980   /* Remove any breakpoint that was set through this program space.  */
2981   ALL_BREAKPOINTS_SAFE (b, b_temp)
2982     {
2983       if (b->pspace == pspace)
2984         delete_breakpoint (b);
2985     }
2986
2987   /* Breakpoints set through other program spaces could have locations
2988      bound to PSPACE as well.  Remove those.  */
2989   ALL_BP_LOCATIONS (loc, loc_temp)
2990     {
2991       struct bp_location *tmp;
2992
2993       if (loc->pspace == pspace)
2994         {
2995           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2996           if (loc->owner->loc == loc)
2997             loc->owner->loc = loc->next;
2998           else
2999             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
3000               if (tmp->next == loc)
3001                 {
3002                   tmp->next = loc->next;
3003                   break;
3004                 }
3005         }
3006     }
3007
3008   /* Now update the global location list to permanently delete the
3009      removed locations above.  */
3010   update_global_location_list (UGLL_DONT_INSERT);
3011 }
3012
3013 /* Make sure all breakpoints are inserted in inferior.
3014    Throws exception on any error.
3015    A breakpoint that is already inserted won't be inserted
3016    again, so calling this function twice is safe.  */
3017 void
3018 insert_breakpoints (void)
3019 {
3020   struct breakpoint *bpt;
3021
3022   ALL_BREAKPOINTS (bpt)
3023     if (is_hardware_watchpoint (bpt))
3024       {
3025         struct watchpoint *w = (struct watchpoint *) bpt;
3026
3027         update_watchpoint (w, 0 /* don't reparse.  */);
3028       }
3029
3030   /* Updating watchpoints creates new locations, so update the global
3031      location list.  Explicitly tell ugll to insert locations and
3032      ignore breakpoints_always_inserted_mode.  */
3033   update_global_location_list (UGLL_INSERT);
3034 }
3035
3036 /* Invoke CALLBACK for each of bp_location.  */
3037
3038 void
3039 iterate_over_bp_locations (walk_bp_location_callback callback)
3040 {
3041   struct bp_location *loc, **loc_tmp;
3042
3043   ALL_BP_LOCATIONS (loc, loc_tmp)
3044     {
3045       callback (loc, NULL);
3046     }
3047 }
3048
3049 /* This is used when we need to synch breakpoint conditions between GDB and the
3050    target.  It is the case with deleting and disabling of breakpoints when using
3051    always-inserted mode.  */
3052
3053 static void
3054 update_inserted_breakpoint_locations (void)
3055 {
3056   struct bp_location *bl, **blp_tmp;
3057   int error_flag = 0;
3058   int val = 0;
3059   int disabled_breaks = 0;
3060   int hw_breakpoint_error = 0;
3061   int hw_bp_details_reported = 0;
3062
3063   struct ui_file *tmp_error_stream = mem_fileopen ();
3064   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3065
3066   /* Explicitly mark the warning -- this will only be printed if
3067      there was an error.  */
3068   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3069
3070   save_current_space_and_thread ();
3071
3072   ALL_BP_LOCATIONS (bl, blp_tmp)
3073     {
3074       /* We only want to update software breakpoints and hardware
3075          breakpoints.  */
3076       if (!is_breakpoint (bl->owner))
3077         continue;
3078
3079       /* We only want to update locations that are already inserted
3080          and need updating.  This is to avoid unwanted insertion during
3081          deletion of breakpoints.  */
3082       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3083         continue;
3084
3085       switch_to_program_space_and_thread (bl->pspace);
3086
3087       /* For targets that support global breakpoints, there's no need
3088          to select an inferior to insert breakpoint to.  In fact, even
3089          if we aren't attached to any process yet, we should still
3090          insert breakpoints.  */
3091       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3092           && ptid_equal (inferior_ptid, null_ptid))
3093         continue;
3094
3095       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3096                                     &hw_breakpoint_error, &hw_bp_details_reported);
3097       if (val)
3098         error_flag = val;
3099     }
3100
3101   if (error_flag)
3102     {
3103       target_terminal_ours_for_output ();
3104       error_stream (tmp_error_stream);
3105     }
3106
3107   do_cleanups (cleanups);
3108 }
3109
3110 /* Used when starting or continuing the program.  */
3111
3112 static void
3113 insert_breakpoint_locations (void)
3114 {
3115   struct breakpoint *bpt;
3116   struct bp_location *bl, **blp_tmp;
3117   int error_flag = 0;
3118   int val = 0;
3119   int disabled_breaks = 0;
3120   int hw_breakpoint_error = 0;
3121   int hw_bp_error_explained_already = 0;
3122
3123   struct ui_file *tmp_error_stream = mem_fileopen ();
3124   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3125   
3126   /* Explicitly mark the warning -- this will only be printed if
3127      there was an error.  */
3128   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3129
3130   save_current_space_and_thread ();
3131
3132   ALL_BP_LOCATIONS (bl, blp_tmp)
3133     {
3134       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3135         continue;
3136
3137       /* There is no point inserting thread-specific breakpoints if
3138          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3139          has BL->OWNER always non-NULL.  */
3140       if (bl->owner->thread != -1
3141           && !valid_global_thread_id (bl->owner->thread))
3142         continue;
3143
3144       switch_to_program_space_and_thread (bl->pspace);
3145
3146       /* For targets that support global breakpoints, there's no need
3147          to select an inferior to insert breakpoint to.  In fact, even
3148          if we aren't attached to any process yet, we should still
3149          insert breakpoints.  */
3150       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3151           && ptid_equal (inferior_ptid, null_ptid))
3152         continue;
3153
3154       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3155                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3156       if (val)
3157         error_flag = val;
3158     }
3159
3160   /* If we failed to insert all locations of a watchpoint, remove
3161      them, as half-inserted watchpoint is of limited use.  */
3162   ALL_BREAKPOINTS (bpt)  
3163     {
3164       int some_failed = 0;
3165       struct bp_location *loc;
3166
3167       if (!is_hardware_watchpoint (bpt))
3168         continue;
3169
3170       if (!breakpoint_enabled (bpt))
3171         continue;
3172
3173       if (bpt->disposition == disp_del_at_next_stop)
3174         continue;
3175       
3176       for (loc = bpt->loc; loc; loc = loc->next)
3177         if (!loc->inserted && should_be_inserted (loc))
3178           {
3179             some_failed = 1;
3180             break;
3181           }
3182       if (some_failed)
3183         {
3184           for (loc = bpt->loc; loc; loc = loc->next)
3185             if (loc->inserted)
3186               remove_breakpoint (loc);
3187
3188           hw_breakpoint_error = 1;
3189           fprintf_unfiltered (tmp_error_stream,
3190                               "Could not insert hardware watchpoint %d.\n", 
3191                               bpt->number);
3192           error_flag = -1;
3193         }
3194     }
3195
3196   if (error_flag)
3197     {
3198       /* If a hardware breakpoint or watchpoint was inserted, add a
3199          message about possibly exhausted resources.  */
3200       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3201         {
3202           fprintf_unfiltered (tmp_error_stream, 
3203                               "Could not insert hardware breakpoints:\n\
3204 You may have requested too many hardware breakpoints/watchpoints.\n");
3205         }
3206       target_terminal_ours_for_output ();
3207       error_stream (tmp_error_stream);
3208     }
3209
3210   do_cleanups (cleanups);
3211 }
3212
3213 /* Used when the program stops.
3214    Returns zero if successful, or non-zero if there was a problem
3215    removing a breakpoint location.  */
3216
3217 int
3218 remove_breakpoints (void)
3219 {
3220   struct bp_location *bl, **blp_tmp;
3221   int val = 0;
3222
3223   ALL_BP_LOCATIONS (bl, blp_tmp)
3224   {
3225     if (bl->inserted && !is_tracepoint (bl->owner))
3226       val |= remove_breakpoint (bl);
3227   }
3228   return val;
3229 }
3230
3231 /* When a thread exits, remove breakpoints that are related to
3232    that thread.  */
3233
3234 static void
3235 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3236 {
3237   struct breakpoint *b, *b_tmp;
3238
3239   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3240     {
3241       if (b->thread == tp->global_num && user_breakpoint_p (b))
3242         {
3243           b->disposition = disp_del_at_next_stop;
3244
3245           printf_filtered (_("\
3246 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3247                            b->number, print_thread_id (tp));
3248
3249           /* Hide it from the user.  */
3250           b->number = 0;
3251        }
3252     }
3253 }
3254
3255 /* Remove breakpoints of process PID.  */
3256
3257 int
3258 remove_breakpoints_pid (int pid)
3259 {
3260   struct bp_location *bl, **blp_tmp;
3261   int val;
3262   struct inferior *inf = find_inferior_pid (pid);
3263
3264   ALL_BP_LOCATIONS (bl, blp_tmp)
3265   {
3266     if (bl->pspace != inf->pspace)
3267       continue;
3268
3269     if (bl->inserted && !bl->target_info.persist)
3270       {
3271         val = remove_breakpoint (bl);
3272         if (val != 0)
3273           return val;
3274       }
3275   }
3276   return 0;
3277 }
3278
3279 int
3280 reattach_breakpoints (int pid)
3281 {
3282   struct cleanup *old_chain;
3283   struct bp_location *bl, **blp_tmp;
3284   int val;
3285   struct ui_file *tmp_error_stream;
3286   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3287   struct inferior *inf;
3288   struct thread_info *tp;
3289
3290   tp = any_live_thread_of_process (pid);
3291   if (tp == NULL)
3292     return 1;
3293
3294   inf = find_inferior_pid (pid);
3295   old_chain = save_inferior_ptid ();
3296
3297   inferior_ptid = tp->ptid;
3298
3299   tmp_error_stream = mem_fileopen ();
3300   make_cleanup_ui_file_delete (tmp_error_stream);
3301
3302   ALL_BP_LOCATIONS (bl, blp_tmp)
3303   {
3304     if (bl->pspace != inf->pspace)
3305       continue;
3306
3307     if (bl->inserted)
3308       {
3309         bl->inserted = 0;
3310         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3311         if (val != 0)
3312           {
3313             do_cleanups (old_chain);
3314             return val;
3315           }
3316       }
3317   }
3318   do_cleanups (old_chain);
3319   return 0;
3320 }
3321
3322 static int internal_breakpoint_number = -1;
3323
3324 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3325    If INTERNAL is non-zero, the breakpoint number will be populated
3326    from internal_breakpoint_number and that variable decremented.
3327    Otherwise the breakpoint number will be populated from
3328    breakpoint_count and that value incremented.  Internal breakpoints
3329    do not set the internal var bpnum.  */
3330 static void
3331 set_breakpoint_number (int internal, struct breakpoint *b)
3332 {
3333   if (internal)
3334     b->number = internal_breakpoint_number--;
3335   else
3336     {
3337       set_breakpoint_count (breakpoint_count + 1);
3338       b->number = breakpoint_count;
3339     }
3340 }
3341
3342 static struct breakpoint *
3343 create_internal_breakpoint (struct gdbarch *gdbarch,
3344                             CORE_ADDR address, enum bptype type,
3345                             const struct breakpoint_ops *ops)
3346 {
3347   struct symtab_and_line sal;
3348   struct breakpoint *b;
3349
3350   init_sal (&sal);              /* Initialize to zeroes.  */
3351
3352   sal.pc = address;
3353   sal.section = find_pc_overlay (sal.pc);
3354   sal.pspace = current_program_space;
3355
3356   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3357   b->number = internal_breakpoint_number--;
3358   b->disposition = disp_donttouch;
3359
3360   return b;
3361 }
3362
3363 static const char *const longjmp_names[] =
3364   {
3365     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3366   };
3367 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3368
3369 /* Per-objfile data private to breakpoint.c.  */
3370 struct breakpoint_objfile_data
3371 {
3372   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3373   struct bound_minimal_symbol overlay_msym;
3374
3375   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3376   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3377
3378   /* True if we have looked for longjmp probes.  */
3379   int longjmp_searched;
3380
3381   /* SystemTap probe points for longjmp (if any).  */
3382   VEC (probe_p) *longjmp_probes;
3383
3384   /* Minimal symbol for "std::terminate()" (if any).  */
3385   struct bound_minimal_symbol terminate_msym;
3386
3387   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3388   struct bound_minimal_symbol exception_msym;
3389
3390   /* True if we have looked for exception probes.  */
3391   int exception_searched;
3392
3393   /* SystemTap probe points for unwinding (if any).  */
3394   VEC (probe_p) *exception_probes;
3395 };
3396
3397 static const struct objfile_data *breakpoint_objfile_key;
3398
3399 /* Minimal symbol not found sentinel.  */
3400 static struct minimal_symbol msym_not_found;
3401
3402 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3403
3404 static int
3405 msym_not_found_p (const struct minimal_symbol *msym)
3406 {
3407   return msym == &msym_not_found;
3408 }
3409
3410 /* Return per-objfile data needed by breakpoint.c.
3411    Allocate the data if necessary.  */
3412
3413 static struct breakpoint_objfile_data *
3414 get_breakpoint_objfile_data (struct objfile *objfile)
3415 {
3416   struct breakpoint_objfile_data *bp_objfile_data;
3417
3418   bp_objfile_data = ((struct breakpoint_objfile_data *)
3419                      objfile_data (objfile, breakpoint_objfile_key));
3420   if (bp_objfile_data == NULL)
3421     {
3422       bp_objfile_data =
3423         XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3424
3425       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3426       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3427     }
3428   return bp_objfile_data;
3429 }
3430
3431 static void
3432 free_breakpoint_probes (struct objfile *obj, void *data)
3433 {
3434   struct breakpoint_objfile_data *bp_objfile_data
3435     = (struct breakpoint_objfile_data *) data;
3436
3437   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3438   VEC_free (probe_p, bp_objfile_data->exception_probes);
3439 }
3440
3441 static void
3442 create_overlay_event_breakpoint (void)
3443 {
3444   struct objfile *objfile;
3445   const char *const func_name = "_ovly_debug_event";
3446
3447   ALL_OBJFILES (objfile)
3448     {
3449       struct breakpoint *b;
3450       struct breakpoint_objfile_data *bp_objfile_data;
3451       CORE_ADDR addr;
3452       struct explicit_location explicit_loc;
3453
3454       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3455
3456       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3457         continue;
3458
3459       if (bp_objfile_data->overlay_msym.minsym == NULL)
3460         {
3461           struct bound_minimal_symbol m;
3462
3463           m = lookup_minimal_symbol_text (func_name, objfile);
3464           if (m.minsym == NULL)
3465             {
3466               /* Avoid future lookups in this objfile.  */
3467               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3468               continue;
3469             }
3470           bp_objfile_data->overlay_msym = m;
3471         }
3472
3473       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3474       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3475                                       bp_overlay_event,
3476                                       &internal_breakpoint_ops);
3477       initialize_explicit_location (&explicit_loc);
3478       explicit_loc.function_name = ASTRDUP (func_name);
3479       b->location = new_explicit_location (&explicit_loc);
3480
3481       if (overlay_debugging == ovly_auto)
3482         {
3483           b->enable_state = bp_enabled;
3484           overlay_events_enabled = 1;
3485         }
3486       else
3487        {
3488          b->enable_state = bp_disabled;
3489          overlay_events_enabled = 0;
3490        }
3491     }
3492 }
3493
3494 static void
3495 create_longjmp_master_breakpoint (void)
3496 {
3497   struct program_space *pspace;
3498   struct cleanup *old_chain;
3499
3500   old_chain = save_current_program_space ();
3501
3502   ALL_PSPACES (pspace)
3503   {
3504     struct objfile *objfile;
3505
3506     set_current_program_space (pspace);
3507
3508     ALL_OBJFILES (objfile)
3509     {
3510       int i;
3511       struct gdbarch *gdbarch;
3512       struct breakpoint_objfile_data *bp_objfile_data;
3513
3514       gdbarch = get_objfile_arch (objfile);
3515
3516       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3517
3518       if (!bp_objfile_data->longjmp_searched)
3519         {
3520           VEC (probe_p) *ret;
3521
3522           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3523           if (ret != NULL)
3524             {
3525               /* We are only interested in checking one element.  */
3526               struct probe *p = VEC_index (probe_p, ret, 0);
3527
3528               if (!can_evaluate_probe_arguments (p))
3529                 {
3530                   /* We cannot use the probe interface here, because it does
3531                      not know how to evaluate arguments.  */
3532                   VEC_free (probe_p, ret);
3533                   ret = NULL;
3534                 }
3535             }
3536           bp_objfile_data->longjmp_probes = ret;
3537           bp_objfile_data->longjmp_searched = 1;
3538         }
3539
3540       if (bp_objfile_data->longjmp_probes != NULL)
3541         {
3542           int i;
3543           struct probe *probe;
3544           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3545
3546           for (i = 0;
3547                VEC_iterate (probe_p,
3548                             bp_objfile_data->longjmp_probes,
3549                             i, probe);
3550                ++i)
3551             {
3552               struct breakpoint *b;
3553
3554               b = create_internal_breakpoint (gdbarch,
3555                                               get_probe_address (probe,
3556                                                                  objfile),
3557                                               bp_longjmp_master,
3558                                               &internal_breakpoint_ops);
3559               b->location
3560                 = new_probe_location ("-probe-stap libc:longjmp");
3561               b->enable_state = bp_disabled;
3562             }
3563
3564           continue;
3565         }
3566
3567       if (!gdbarch_get_longjmp_target_p (gdbarch))
3568         continue;
3569
3570       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3571         {
3572           struct breakpoint *b;
3573           const char *func_name;
3574           CORE_ADDR addr;
3575           struct explicit_location explicit_loc;
3576
3577           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3578             continue;
3579
3580           func_name = longjmp_names[i];
3581           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3582             {
3583               struct bound_minimal_symbol m;
3584
3585               m = lookup_minimal_symbol_text (func_name, objfile);
3586               if (m.minsym == NULL)
3587                 {
3588                   /* Prevent future lookups in this objfile.  */
3589                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3590                   continue;
3591                 }
3592               bp_objfile_data->longjmp_msym[i] = m;
3593             }
3594
3595           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3596           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3597                                           &internal_breakpoint_ops);
3598           initialize_explicit_location (&explicit_loc);
3599           explicit_loc.function_name = ASTRDUP (func_name);
3600           b->location = new_explicit_location (&explicit_loc);
3601           b->enable_state = bp_disabled;
3602         }
3603     }
3604   }
3605
3606   do_cleanups (old_chain);
3607 }
3608
3609 /* Create a master std::terminate breakpoint.  */
3610 static void
3611 create_std_terminate_master_breakpoint (void)
3612 {
3613   struct program_space *pspace;
3614   struct cleanup *old_chain;
3615   const char *const func_name = "std::terminate()";
3616
3617   old_chain = save_current_program_space ();
3618
3619   ALL_PSPACES (pspace)
3620   {
3621     struct objfile *objfile;
3622     CORE_ADDR addr;
3623
3624     set_current_program_space (pspace);
3625
3626     ALL_OBJFILES (objfile)
3627     {
3628       struct breakpoint *b;
3629       struct breakpoint_objfile_data *bp_objfile_data;
3630       struct explicit_location explicit_loc;
3631
3632       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3633
3634       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3635         continue;
3636
3637       if (bp_objfile_data->terminate_msym.minsym == NULL)
3638         {
3639           struct bound_minimal_symbol m;
3640
3641           m = lookup_minimal_symbol (func_name, NULL, objfile);
3642           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3643                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3644             {
3645               /* Prevent future lookups in this objfile.  */
3646               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3647               continue;
3648             }
3649           bp_objfile_data->terminate_msym = m;
3650         }
3651
3652       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3653       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3654                                       bp_std_terminate_master,
3655                                       &internal_breakpoint_ops);
3656       initialize_explicit_location (&explicit_loc);
3657       explicit_loc.function_name = ASTRDUP (func_name);
3658       b->location = new_explicit_location (&explicit_loc);
3659       b->enable_state = bp_disabled;
3660     }
3661   }
3662
3663   do_cleanups (old_chain);
3664 }
3665
3666 /* Install a master breakpoint on the unwinder's debug hook.  */
3667
3668 static void
3669 create_exception_master_breakpoint (void)
3670 {
3671   struct objfile *objfile;
3672   const char *const func_name = "_Unwind_DebugHook";
3673
3674   ALL_OBJFILES (objfile)
3675     {
3676       struct breakpoint *b;
3677       struct gdbarch *gdbarch;
3678       struct breakpoint_objfile_data *bp_objfile_data;
3679       CORE_ADDR addr;
3680       struct explicit_location explicit_loc;
3681
3682       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3683
3684       /* We prefer the SystemTap probe point if it exists.  */
3685       if (!bp_objfile_data->exception_searched)
3686         {
3687           VEC (probe_p) *ret;
3688
3689           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3690
3691           if (ret != NULL)
3692             {
3693               /* We are only interested in checking one element.  */
3694               struct probe *p = VEC_index (probe_p, ret, 0);
3695
3696               if (!can_evaluate_probe_arguments (p))
3697                 {
3698                   /* We cannot use the probe interface here, because it does
3699                      not know how to evaluate arguments.  */
3700                   VEC_free (probe_p, ret);
3701                   ret = NULL;
3702                 }
3703             }
3704           bp_objfile_data->exception_probes = ret;
3705           bp_objfile_data->exception_searched = 1;
3706         }
3707
3708       if (bp_objfile_data->exception_probes != NULL)
3709         {
3710           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3711           int i;
3712           struct probe *probe;
3713
3714           for (i = 0;
3715                VEC_iterate (probe_p,
3716                             bp_objfile_data->exception_probes,
3717                             i, probe);
3718                ++i)
3719             {
3720               struct breakpoint *b;
3721
3722               b = create_internal_breakpoint (gdbarch,
3723                                               get_probe_address (probe,
3724                                                                  objfile),
3725                                               bp_exception_master,
3726                                               &internal_breakpoint_ops);
3727               b->location
3728                 = new_probe_location ("-probe-stap libgcc:unwind");
3729               b->enable_state = bp_disabled;
3730             }
3731
3732           continue;
3733         }
3734
3735       /* Otherwise, try the hook function.  */
3736
3737       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3738         continue;
3739
3740       gdbarch = get_objfile_arch (objfile);
3741
3742       if (bp_objfile_data->exception_msym.minsym == NULL)
3743         {
3744           struct bound_minimal_symbol debug_hook;
3745
3746           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3747           if (debug_hook.minsym == NULL)
3748             {
3749               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3750               continue;
3751             }
3752
3753           bp_objfile_data->exception_msym = debug_hook;
3754         }
3755
3756       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3757       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3758                                                  &current_target);
3759       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3760                                       &internal_breakpoint_ops);
3761       initialize_explicit_location (&explicit_loc);
3762       explicit_loc.function_name = ASTRDUP (func_name);
3763       b->location = new_explicit_location (&explicit_loc);
3764       b->enable_state = bp_disabled;
3765     }
3766 }
3767
3768 /* Does B have a location spec?  */
3769
3770 static int
3771 breakpoint_event_location_empty_p (const struct breakpoint *b)
3772 {
3773   return b->location != NULL && event_location_empty_p (b->location);
3774 }
3775
3776 void
3777 update_breakpoints_after_exec (void)
3778 {
3779   struct breakpoint *b, *b_tmp;
3780   struct bp_location *bploc, **bplocp_tmp;
3781
3782   /* We're about to delete breakpoints from GDB's lists.  If the
3783      INSERTED flag is true, GDB will try to lift the breakpoints by
3784      writing the breakpoints' "shadow contents" back into memory.  The
3785      "shadow contents" are NOT valid after an exec, so GDB should not
3786      do that.  Instead, the target is responsible from marking
3787      breakpoints out as soon as it detects an exec.  We don't do that
3788      here instead, because there may be other attempts to delete
3789      breakpoints after detecting an exec and before reaching here.  */
3790   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3791     if (bploc->pspace == current_program_space)
3792       gdb_assert (!bploc->inserted);
3793
3794   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3795   {
3796     if (b->pspace != current_program_space)
3797       continue;
3798
3799     /* Solib breakpoints must be explicitly reset after an exec().  */
3800     if (b->type == bp_shlib_event)
3801       {
3802         delete_breakpoint (b);
3803         continue;
3804       }
3805
3806     /* JIT breakpoints must be explicitly reset after an exec().  */
3807     if (b->type == bp_jit_event)
3808       {
3809         delete_breakpoint (b);
3810         continue;
3811       }
3812
3813     /* Thread event breakpoints must be set anew after an exec(),
3814        as must overlay event and longjmp master breakpoints.  */
3815     if (b->type == bp_thread_event || b->type == bp_overlay_event
3816         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3817         || b->type == bp_exception_master)
3818       {
3819         delete_breakpoint (b);
3820         continue;
3821       }
3822
3823     /* Step-resume breakpoints are meaningless after an exec().  */
3824     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3825       {
3826         delete_breakpoint (b);
3827         continue;
3828       }
3829
3830     /* Just like single-step breakpoints.  */
3831     if (b->type == bp_single_step)
3832       {
3833         delete_breakpoint (b);
3834         continue;
3835       }
3836
3837     /* Longjmp and longjmp-resume breakpoints are also meaningless
3838        after an exec.  */
3839     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3840         || b->type == bp_longjmp_call_dummy
3841         || b->type == bp_exception || b->type == bp_exception_resume)
3842       {
3843         delete_breakpoint (b);
3844         continue;
3845       }
3846
3847     if (b->type == bp_catchpoint)
3848       {
3849         /* For now, none of the bp_catchpoint breakpoints need to
3850            do anything at this point.  In the future, if some of
3851            the catchpoints need to something, we will need to add
3852            a new method, and call this method from here.  */
3853         continue;
3854       }
3855
3856     /* bp_finish is a special case.  The only way we ought to be able
3857        to see one of these when an exec() has happened, is if the user
3858        caught a vfork, and then said "finish".  Ordinarily a finish just
3859        carries them to the call-site of the current callee, by setting
3860        a temporary bp there and resuming.  But in this case, the finish
3861        will carry them entirely through the vfork & exec.
3862
3863        We don't want to allow a bp_finish to remain inserted now.  But
3864        we can't safely delete it, 'cause finish_command has a handle to
3865        the bp on a bpstat, and will later want to delete it.  There's a
3866        chance (and I've seen it happen) that if we delete the bp_finish
3867        here, that its storage will get reused by the time finish_command
3868        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3869        We really must allow finish_command to delete a bp_finish.
3870
3871        In the absence of a general solution for the "how do we know
3872        it's safe to delete something others may have handles to?"
3873        problem, what we'll do here is just uninsert the bp_finish, and
3874        let finish_command delete it.
3875
3876        (We know the bp_finish is "doomed" in the sense that it's
3877        momentary, and will be deleted as soon as finish_command sees
3878        the inferior stopped.  So it doesn't matter that the bp's
3879        address is probably bogus in the new a.out, unlike e.g., the
3880        solib breakpoints.)  */
3881
3882     if (b->type == bp_finish)
3883       {
3884         continue;
3885       }
3886
3887     /* Without a symbolic address, we have little hope of the
3888        pre-exec() address meaning the same thing in the post-exec()
3889        a.out.  */
3890     if (breakpoint_event_location_empty_p (b))
3891       {
3892         delete_breakpoint (b);
3893         continue;
3894       }
3895   }
3896 }
3897
3898 int
3899 detach_breakpoints (ptid_t ptid)
3900 {
3901   struct bp_location *bl, **blp_tmp;
3902   int val = 0;
3903   struct cleanup *old_chain = save_inferior_ptid ();
3904   struct inferior *inf = current_inferior ();
3905
3906   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3907     error (_("Cannot detach breakpoints of inferior_ptid"));
3908
3909   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3910   inferior_ptid = ptid;
3911   ALL_BP_LOCATIONS (bl, blp_tmp)
3912   {
3913     if (bl->pspace != inf->pspace)
3914       continue;
3915
3916     /* This function must physically remove breakpoints locations
3917        from the specified ptid, without modifying the breakpoint
3918        package's state.  Locations of type bp_loc_other are only
3919        maintained at GDB side.  So, there is no need to remove
3920        these bp_loc_other locations.  Moreover, removing these
3921        would modify the breakpoint package's state.  */
3922     if (bl->loc_type == bp_loc_other)
3923       continue;
3924
3925     if (bl->inserted)
3926       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3927   }
3928
3929   do_cleanups (old_chain);
3930   return val;
3931 }
3932
3933 /* Remove the breakpoint location BL from the current address space.
3934    Note that this is used to detach breakpoints from a child fork.
3935    When we get here, the child isn't in the inferior list, and neither
3936    do we have objects to represent its address space --- we should
3937    *not* look at bl->pspace->aspace here.  */
3938
3939 static int
3940 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3941 {
3942   int val;
3943
3944   /* BL is never in moribund_locations by our callers.  */
3945   gdb_assert (bl->owner != NULL);
3946
3947   /* The type of none suggests that owner is actually deleted.
3948      This should not ever happen.  */
3949   gdb_assert (bl->owner->type != bp_none);
3950
3951   if (bl->loc_type == bp_loc_software_breakpoint
3952       || bl->loc_type == bp_loc_hardware_breakpoint)
3953     {
3954       /* "Normal" instruction breakpoint: either the standard
3955          trap-instruction bp (bp_breakpoint), or a
3956          bp_hardware_breakpoint.  */
3957
3958       /* First check to see if we have to handle an overlay.  */
3959       if (overlay_debugging == ovly_off
3960           || bl->section == NULL
3961           || !(section_is_overlay (bl->section)))
3962         {
3963           /* No overlay handling: just remove the breakpoint.  */
3964
3965           /* If we're trying to uninsert a memory breakpoint that we
3966              know is set in a dynamic object that is marked
3967              shlib_disabled, then either the dynamic object was
3968              removed with "remove-symbol-file" or with
3969              "nosharedlibrary".  In the former case, we don't know
3970              whether another dynamic object might have loaded over the
3971              breakpoint's address -- the user might well let us know
3972              about it next with add-symbol-file (the whole point of
3973              add-symbol-file is letting the user manually maintain a
3974              list of dynamically loaded objects).  If we have the
3975              breakpoint's shadow memory, that is, this is a software
3976              breakpoint managed by GDB, check whether the breakpoint
3977              is still inserted in memory, to avoid overwriting wrong
3978              code with stale saved shadow contents.  Note that HW
3979              breakpoints don't have shadow memory, as they're
3980              implemented using a mechanism that is not dependent on
3981              being able to modify the target's memory, and as such
3982              they should always be removed.  */
3983           if (bl->shlib_disabled
3984               && bl->target_info.shadow_len != 0
3985               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3986             val = 0;
3987           else
3988             val = bl->owner->ops->remove_location (bl, reason);
3989         }
3990       else
3991         {
3992           /* This breakpoint is in an overlay section.
3993              Did we set a breakpoint at the LMA?  */
3994           if (!overlay_events_enabled)
3995               {
3996                 /* Yes -- overlay event support is not active, so we
3997                    should have set a breakpoint at the LMA.  Remove it.  
3998                 */
3999                 /* Ignore any failures: if the LMA is in ROM, we will
4000                    have already warned when we failed to insert it.  */
4001                 if (bl->loc_type == bp_loc_hardware_breakpoint)
4002                   target_remove_hw_breakpoint (bl->gdbarch,
4003                                                &bl->overlay_target_info);
4004                 else
4005                   target_remove_breakpoint (bl->gdbarch,
4006                                             &bl->overlay_target_info,
4007                                             reason);
4008               }
4009           /* Did we set a breakpoint at the VMA? 
4010              If so, we will have marked the breakpoint 'inserted'.  */
4011           if (bl->inserted)
4012             {
4013               /* Yes -- remove it.  Previously we did not bother to
4014                  remove the breakpoint if the section had been
4015                  unmapped, but let's not rely on that being safe.  We
4016                  don't know what the overlay manager might do.  */
4017
4018               /* However, we should remove *software* breakpoints only
4019                  if the section is still mapped, or else we overwrite
4020                  wrong code with the saved shadow contents.  */
4021               if (bl->loc_type == bp_loc_hardware_breakpoint
4022                   || section_is_mapped (bl->section))
4023                 val = bl->owner->ops->remove_location (bl, reason);
4024               else
4025                 val = 0;
4026             }
4027           else
4028             {
4029               /* No -- not inserted, so no need to remove.  No error.  */
4030               val = 0;
4031             }
4032         }
4033
4034       /* In some cases, we might not be able to remove a breakpoint in
4035          a shared library that has already been removed, but we have
4036          not yet processed the shlib unload event.  Similarly for an
4037          unloaded add-symbol-file object - the user might not yet have
4038          had the chance to remove-symbol-file it.  shlib_disabled will
4039          be set if the library/object has already been removed, but
4040          the breakpoint hasn't been uninserted yet, e.g., after
4041          "nosharedlibrary" or "remove-symbol-file" with breakpoints
4042          always-inserted mode.  */
4043       if (val
4044           && (bl->loc_type == bp_loc_software_breakpoint
4045               && (bl->shlib_disabled
4046                   || solib_name_from_address (bl->pspace, bl->address)
4047                   || shared_objfile_contains_address_p (bl->pspace,
4048                                                         bl->address))))
4049         val = 0;
4050
4051       if (val)
4052         return val;
4053       bl->inserted = (reason == DETACH_BREAKPOINT);
4054     }
4055   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4056     {
4057       gdb_assert (bl->owner->ops != NULL
4058                   && bl->owner->ops->remove_location != NULL);
4059
4060       bl->inserted = (reason == DETACH_BREAKPOINT);
4061       bl->owner->ops->remove_location (bl, reason);
4062
4063       /* Failure to remove any of the hardware watchpoints comes here.  */
4064       if (reason == REMOVE_BREAKPOINT && bl->inserted)
4065         warning (_("Could not remove hardware watchpoint %d."),
4066                  bl->owner->number);
4067     }
4068   else if (bl->owner->type == bp_catchpoint
4069            && breakpoint_enabled (bl->owner)
4070            && !bl->duplicate)
4071     {
4072       gdb_assert (bl->owner->ops != NULL
4073                   && bl->owner->ops->remove_location != NULL);
4074
4075       val = bl->owner->ops->remove_location (bl, reason);
4076       if (val)
4077         return val;
4078
4079       bl->inserted = (reason == DETACH_BREAKPOINT);
4080     }
4081
4082   return 0;
4083 }
4084
4085 static int
4086 remove_breakpoint (struct bp_location *bl)
4087 {
4088   int ret;
4089   struct cleanup *old_chain;
4090
4091   /* BL is never in moribund_locations by our callers.  */
4092   gdb_assert (bl->owner != NULL);
4093
4094   /* The type of none suggests that owner is actually deleted.
4095      This should not ever happen.  */
4096   gdb_assert (bl->owner->type != bp_none);
4097
4098   old_chain = save_current_space_and_thread ();
4099
4100   switch_to_program_space_and_thread (bl->pspace);
4101
4102   ret = remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4103
4104   do_cleanups (old_chain);
4105   return ret;
4106 }
4107
4108 /* Clear the "inserted" flag in all breakpoints.  */
4109
4110 void
4111 mark_breakpoints_out (void)
4112 {
4113   struct bp_location *bl, **blp_tmp;
4114
4115   ALL_BP_LOCATIONS (bl, blp_tmp)
4116     if (bl->pspace == current_program_space)
4117       bl->inserted = 0;
4118 }
4119
4120 /* Clear the "inserted" flag in all breakpoints and delete any
4121    breakpoints which should go away between runs of the program.
4122
4123    Plus other such housekeeping that has to be done for breakpoints
4124    between runs.
4125
4126    Note: this function gets called at the end of a run (by
4127    generic_mourn_inferior) and when a run begins (by
4128    init_wait_for_inferior).  */
4129
4130
4131
4132 void
4133 breakpoint_init_inferior (enum inf_context context)
4134 {
4135   struct breakpoint *b, *b_tmp;
4136   struct bp_location *bl;
4137   int ix;
4138   struct program_space *pspace = current_program_space;
4139
4140   /* If breakpoint locations are shared across processes, then there's
4141      nothing to do.  */
4142   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4143     return;
4144
4145   mark_breakpoints_out ();
4146
4147   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4148   {
4149     if (b->loc && b->loc->pspace != pspace)
4150       continue;
4151
4152     switch (b->type)
4153       {
4154       case bp_call_dummy:
4155       case bp_longjmp_call_dummy:
4156
4157         /* If the call dummy breakpoint is at the entry point it will
4158            cause problems when the inferior is rerun, so we better get
4159            rid of it.  */
4160
4161       case bp_watchpoint_scope:
4162
4163         /* Also get rid of scope breakpoints.  */
4164
4165       case bp_shlib_event:
4166
4167         /* Also remove solib event breakpoints.  Their addresses may
4168            have changed since the last time we ran the program.
4169            Actually we may now be debugging against different target;
4170            and so the solib backend that installed this breakpoint may
4171            not be used in by the target.  E.g.,
4172
4173            (gdb) file prog-linux
4174            (gdb) run               # native linux target
4175            ...
4176            (gdb) kill
4177            (gdb) file prog-win.exe
4178            (gdb) tar rem :9999     # remote Windows gdbserver.
4179         */
4180
4181       case bp_step_resume:
4182
4183         /* Also remove step-resume breakpoints.  */
4184
4185       case bp_single_step:
4186
4187         /* Also remove single-step breakpoints.  */
4188
4189         delete_breakpoint (b);
4190         break;
4191
4192       case bp_watchpoint:
4193       case bp_hardware_watchpoint:
4194       case bp_read_watchpoint:
4195       case bp_access_watchpoint:
4196         {
4197           struct watchpoint *w = (struct watchpoint *) b;
4198
4199           /* Likewise for watchpoints on local expressions.  */
4200           if (w->exp_valid_block != NULL)
4201             delete_breakpoint (b);
4202           else
4203             {
4204               /* Get rid of existing locations, which are no longer
4205                  valid.  New ones will be created in
4206                  update_watchpoint, when the inferior is restarted.
4207                  The next update_global_location_list call will
4208                  garbage collect them.  */
4209               b->loc = NULL;
4210
4211               if (context == inf_starting)
4212                 {
4213                   /* Reset val field to force reread of starting value in
4214                      insert_breakpoints.  */
4215                   if (w->val)
4216                     value_free (w->val);
4217                   w->val = NULL;
4218                   w->val_valid = 0;
4219                 }
4220             }
4221         }
4222         break;
4223       default:
4224         break;
4225       }
4226   }
4227
4228   /* Get rid of the moribund locations.  */
4229   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4230     decref_bp_location (&bl);
4231   VEC_free (bp_location_p, moribund_locations);
4232 }
4233
4234 /* These functions concern about actual breakpoints inserted in the
4235    target --- to e.g. check if we need to do decr_pc adjustment or if
4236    we need to hop over the bkpt --- so we check for address space
4237    match, not program space.  */
4238
4239 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4240    exists at PC.  It returns ordinary_breakpoint_here if it's an
4241    ordinary breakpoint, or permanent_breakpoint_here if it's a
4242    permanent breakpoint.
4243    - When continuing from a location with an ordinary breakpoint, we
4244      actually single step once before calling insert_breakpoints.
4245    - When continuing from a location with a permanent breakpoint, we
4246      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4247      the target, to advance the PC past the breakpoint.  */
4248
4249 enum breakpoint_here
4250 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4251 {
4252   struct bp_location *bl, **blp_tmp;
4253   int any_breakpoint_here = 0;
4254
4255   ALL_BP_LOCATIONS (bl, blp_tmp)
4256     {
4257       if (bl->loc_type != bp_loc_software_breakpoint
4258           && bl->loc_type != bp_loc_hardware_breakpoint)
4259         continue;
4260
4261       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4262       if ((breakpoint_enabled (bl->owner)
4263            || bl->permanent)
4264           && breakpoint_location_address_match (bl, aspace, pc))
4265         {
4266           if (overlay_debugging 
4267               && section_is_overlay (bl->section)
4268               && !section_is_mapped (bl->section))
4269             continue;           /* unmapped overlay -- can't be a match */
4270           else if (bl->permanent)
4271             return permanent_breakpoint_here;
4272           else
4273             any_breakpoint_here = 1;
4274         }
4275     }
4276
4277   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4278 }
4279
4280 /* See breakpoint.h.  */
4281
4282 int
4283 breakpoint_in_range_p (struct address_space *aspace,
4284                        CORE_ADDR addr, ULONGEST len)
4285 {
4286   struct bp_location *bl, **blp_tmp;
4287
4288   ALL_BP_LOCATIONS (bl, blp_tmp)
4289     {
4290       if (bl->loc_type != bp_loc_software_breakpoint
4291           && bl->loc_type != bp_loc_hardware_breakpoint)
4292         continue;
4293
4294       if ((breakpoint_enabled (bl->owner)
4295            || bl->permanent)
4296           && breakpoint_location_address_range_overlap (bl, aspace,
4297                                                         addr, len))
4298         {
4299           if (overlay_debugging
4300               && section_is_overlay (bl->section)
4301               && !section_is_mapped (bl->section))
4302             {
4303               /* Unmapped overlay -- can't be a match.  */
4304               continue;
4305             }
4306
4307           return 1;
4308         }
4309     }
4310
4311   return 0;
4312 }
4313
4314 /* Return true if there's a moribund breakpoint at PC.  */
4315
4316 int
4317 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4318 {
4319   struct bp_location *loc;
4320   int ix;
4321
4322   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4323     if (breakpoint_location_address_match (loc, aspace, pc))
4324       return 1;
4325
4326   return 0;
4327 }
4328
4329 /* Returns non-zero iff BL is inserted at PC, in address space
4330    ASPACE.  */
4331
4332 static int
4333 bp_location_inserted_here_p (struct bp_location *bl,
4334                              struct address_space *aspace, CORE_ADDR pc)
4335 {
4336   if (bl->inserted
4337       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4338                                    aspace, pc))
4339     {
4340       if (overlay_debugging
4341           && section_is_overlay (bl->section)
4342           && !section_is_mapped (bl->section))
4343         return 0;               /* unmapped overlay -- can't be a match */
4344       else
4345         return 1;
4346     }
4347   return 0;
4348 }
4349
4350 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4351
4352 int
4353 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4354 {
4355   struct bp_location **blp, **blp_tmp = NULL;
4356
4357   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4358     {
4359       struct bp_location *bl = *blp;
4360
4361       if (bl->loc_type != bp_loc_software_breakpoint
4362           && bl->loc_type != bp_loc_hardware_breakpoint)
4363         continue;
4364
4365       if (bp_location_inserted_here_p (bl, aspace, pc))
4366         return 1;
4367     }
4368   return 0;
4369 }
4370
4371 /* This function returns non-zero iff there is a software breakpoint
4372    inserted at PC.  */
4373
4374 int
4375 software_breakpoint_inserted_here_p (struct address_space *aspace,
4376                                      CORE_ADDR pc)
4377 {
4378   struct bp_location **blp, **blp_tmp = NULL;
4379
4380   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4381     {
4382       struct bp_location *bl = *blp;
4383
4384       if (bl->loc_type != bp_loc_software_breakpoint)
4385         continue;
4386
4387       if (bp_location_inserted_here_p (bl, aspace, pc))
4388         return 1;
4389     }
4390
4391   return 0;
4392 }
4393
4394 /* See breakpoint.h.  */
4395
4396 int
4397 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4398                                      CORE_ADDR pc)
4399 {
4400   struct bp_location **blp, **blp_tmp = NULL;
4401
4402   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4403     {
4404       struct bp_location *bl = *blp;
4405
4406       if (bl->loc_type != bp_loc_hardware_breakpoint)
4407         continue;
4408
4409       if (bp_location_inserted_here_p (bl, aspace, pc))
4410         return 1;
4411     }
4412
4413   return 0;
4414 }
4415
4416 int
4417 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4418                                        CORE_ADDR addr, ULONGEST len)
4419 {
4420   struct breakpoint *bpt;
4421
4422   ALL_BREAKPOINTS (bpt)
4423     {
4424       struct bp_location *loc;
4425
4426       if (bpt->type != bp_hardware_watchpoint
4427           && bpt->type != bp_access_watchpoint)
4428         continue;
4429
4430       if (!breakpoint_enabled (bpt))
4431         continue;
4432
4433       for (loc = bpt->loc; loc; loc = loc->next)
4434         if (loc->pspace->aspace == aspace && loc->inserted)
4435           {
4436             CORE_ADDR l, h;
4437
4438             /* Check for intersection.  */
4439             l = std::max<CORE_ADDR> (loc->address, addr);
4440             h = std::min<CORE_ADDR> (loc->address + loc->length, addr + len);
4441             if (l < h)
4442               return 1;
4443           }
4444     }
4445   return 0;
4446 }
4447 \f
4448
4449 /* bpstat stuff.  External routines' interfaces are documented
4450    in breakpoint.h.  */
4451
4452 int
4453 is_catchpoint (struct breakpoint *ep)
4454 {
4455   return (ep->type == bp_catchpoint);
4456 }
4457
4458 /* Frees any storage that is part of a bpstat.  Does not walk the
4459    'next' chain.  */
4460
4461 static void
4462 bpstat_free (bpstat bs)
4463 {
4464   if (bs->old_val != NULL)
4465     value_free (bs->old_val);
4466   decref_counted_command_line (&bs->commands);
4467   decref_bp_location (&bs->bp_location_at);
4468   xfree (bs);
4469 }
4470
4471 /* Clear a bpstat so that it says we are not at any breakpoint.
4472    Also free any storage that is part of a bpstat.  */
4473
4474 void
4475 bpstat_clear (bpstat *bsp)
4476 {
4477   bpstat p;
4478   bpstat q;
4479
4480   if (bsp == 0)
4481     return;
4482   p = *bsp;
4483   while (p != NULL)
4484     {
4485       q = p->next;
4486       bpstat_free (p);
4487       p = q;
4488     }
4489   *bsp = NULL;
4490 }
4491
4492 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4493    is part of the bpstat is copied as well.  */
4494
4495 bpstat
4496 bpstat_copy (bpstat bs)
4497 {
4498   bpstat p = NULL;
4499   bpstat tmp;
4500   bpstat retval = NULL;
4501
4502   if (bs == NULL)
4503     return bs;
4504
4505   for (; bs != NULL; bs = bs->next)
4506     {
4507       tmp = (bpstat) xmalloc (sizeof (*tmp));
4508       memcpy (tmp, bs, sizeof (*tmp));
4509       incref_counted_command_line (tmp->commands);
4510       incref_bp_location (tmp->bp_location_at);
4511       if (bs->old_val != NULL)
4512         {
4513           tmp->old_val = value_copy (bs->old_val);
4514           release_value (tmp->old_val);
4515         }
4516
4517       if (p == NULL)
4518         /* This is the first thing in the chain.  */
4519         retval = tmp;
4520       else
4521         p->next = tmp;
4522       p = tmp;
4523     }
4524   p->next = NULL;
4525   return retval;
4526 }
4527
4528 /* Find the bpstat associated with this breakpoint.  */
4529
4530 bpstat
4531 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4532 {
4533   if (bsp == NULL)
4534     return NULL;
4535
4536   for (; bsp != NULL; bsp = bsp->next)
4537     {
4538       if (bsp->breakpoint_at == breakpoint)
4539         return bsp;
4540     }
4541   return NULL;
4542 }
4543
4544 /* See breakpoint.h.  */
4545
4546 int
4547 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4548 {
4549   for (; bsp != NULL; bsp = bsp->next)
4550     {
4551       if (bsp->breakpoint_at == NULL)
4552         {
4553           /* A moribund location can never explain a signal other than
4554              GDB_SIGNAL_TRAP.  */
4555           if (sig == GDB_SIGNAL_TRAP)
4556             return 1;
4557         }
4558       else
4559         {
4560           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4561                                                         sig))
4562             return 1;
4563         }
4564     }
4565
4566   return 0;
4567 }
4568
4569 /* Put in *NUM the breakpoint number of the first breakpoint we are
4570    stopped at.  *BSP upon return is a bpstat which points to the
4571    remaining breakpoints stopped at (but which is not guaranteed to be
4572    good for anything but further calls to bpstat_num).
4573
4574    Return 0 if passed a bpstat which does not indicate any breakpoints.
4575    Return -1 if stopped at a breakpoint that has been deleted since
4576    we set it.
4577    Return 1 otherwise.  */
4578
4579 int
4580 bpstat_num (bpstat *bsp, int *num)
4581 {
4582   struct breakpoint *b;
4583
4584   if ((*bsp) == NULL)
4585     return 0;                   /* No more breakpoint values */
4586
4587   /* We assume we'll never have several bpstats that correspond to a
4588      single breakpoint -- otherwise, this function might return the
4589      same number more than once and this will look ugly.  */
4590   b = (*bsp)->breakpoint_at;
4591   *bsp = (*bsp)->next;
4592   if (b == NULL)
4593     return -1;                  /* breakpoint that's been deleted since */
4594
4595   *num = b->number;             /* We have its number */
4596   return 1;
4597 }
4598
4599 /* See breakpoint.h.  */
4600
4601 void
4602 bpstat_clear_actions (void)
4603 {
4604   struct thread_info *tp;
4605   bpstat bs;
4606
4607   if (ptid_equal (inferior_ptid, null_ptid))
4608     return;
4609
4610   tp = find_thread_ptid (inferior_ptid);
4611   if (tp == NULL)
4612     return;
4613
4614   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4615     {
4616       decref_counted_command_line (&bs->commands);
4617
4618       if (bs->old_val != NULL)
4619         {
4620           value_free (bs->old_val);
4621           bs->old_val = NULL;
4622         }
4623     }
4624 }
4625
4626 /* Called when a command is about to proceed the inferior.  */
4627
4628 static void
4629 breakpoint_about_to_proceed (void)
4630 {
4631   if (!ptid_equal (inferior_ptid, null_ptid))
4632     {
4633       struct thread_info *tp = inferior_thread ();
4634
4635       /* Allow inferior function calls in breakpoint commands to not
4636          interrupt the command list.  When the call finishes
4637          successfully, the inferior will be standing at the same
4638          breakpoint as if nothing happened.  */
4639       if (tp->control.in_infcall)
4640         return;
4641     }
4642
4643   breakpoint_proceeded = 1;
4644 }
4645
4646 /* Stub for cleaning up our state if we error-out of a breakpoint
4647    command.  */
4648 static void
4649 cleanup_executing_breakpoints (void *ignore)
4650 {
4651   executing_breakpoint_commands = 0;
4652 }
4653
4654 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4655    or its equivalent.  */
4656
4657 static int
4658 command_line_is_silent (struct command_line *cmd)
4659 {
4660   return cmd && (strcmp ("silent", cmd->line) == 0);
4661 }
4662
4663 /* Execute all the commands associated with all the breakpoints at
4664    this location.  Any of these commands could cause the process to
4665    proceed beyond this point, etc.  We look out for such changes by
4666    checking the global "breakpoint_proceeded" after each command.
4667
4668    Returns true if a breakpoint command resumed the inferior.  In that
4669    case, it is the caller's responsibility to recall it again with the
4670    bpstat of the current thread.  */
4671
4672 static int
4673 bpstat_do_actions_1 (bpstat *bsp)
4674 {
4675   bpstat bs;
4676   struct cleanup *old_chain;
4677   int again = 0;
4678
4679   /* Avoid endless recursion if a `source' command is contained
4680      in bs->commands.  */
4681   if (executing_breakpoint_commands)
4682     return 0;
4683
4684   executing_breakpoint_commands = 1;
4685   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4686
4687   prevent_dont_repeat ();
4688
4689   /* This pointer will iterate over the list of bpstat's.  */
4690   bs = *bsp;
4691
4692   breakpoint_proceeded = 0;
4693   for (; bs != NULL; bs = bs->next)
4694     {
4695       struct counted_command_line *ccmd;
4696       struct command_line *cmd;
4697       struct cleanup *this_cmd_tree_chain;
4698
4699       /* Take ownership of the BSP's command tree, if it has one.
4700
4701          The command tree could legitimately contain commands like
4702          'step' and 'next', which call clear_proceed_status, which
4703          frees stop_bpstat's command tree.  To make sure this doesn't
4704          free the tree we're executing out from under us, we need to
4705          take ownership of the tree ourselves.  Since a given bpstat's
4706          commands are only executed once, we don't need to copy it; we
4707          can clear the pointer in the bpstat, and make sure we free
4708          the tree when we're done.  */
4709       ccmd = bs->commands;
4710       bs->commands = NULL;
4711       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4712       cmd = ccmd ? ccmd->commands : NULL;
4713       if (command_line_is_silent (cmd))
4714         {
4715           /* The action has been already done by bpstat_stop_status.  */
4716           cmd = cmd->next;
4717         }
4718
4719       while (cmd != NULL)
4720         {
4721           execute_control_command (cmd);
4722
4723           if (breakpoint_proceeded)
4724             break;
4725           else
4726             cmd = cmd->next;
4727         }
4728
4729       /* We can free this command tree now.  */
4730       do_cleanups (this_cmd_tree_chain);
4731
4732       if (breakpoint_proceeded)
4733         {
4734           if (current_ui->async)
4735             /* If we are in async mode, then the target might be still
4736                running, not stopped at any breakpoint, so nothing for
4737                us to do here -- just return to the event loop.  */
4738             ;
4739           else
4740             /* In sync mode, when execute_control_command returns
4741                we're already standing on the next breakpoint.
4742                Breakpoint commands for that stop were not run, since
4743                execute_command does not run breakpoint commands --
4744                only command_line_handler does, but that one is not
4745                involved in execution of breakpoint commands.  So, we
4746                can now execute breakpoint commands.  It should be
4747                noted that making execute_command do bpstat actions is
4748                not an option -- in this case we'll have recursive
4749                invocation of bpstat for each breakpoint with a
4750                command, and can easily blow up GDB stack.  Instead, we
4751                return true, which will trigger the caller to recall us
4752                with the new stop_bpstat.  */
4753             again = 1;
4754           break;
4755         }
4756     }
4757   do_cleanups (old_chain);
4758   return again;
4759 }
4760
4761 void
4762 bpstat_do_actions (void)
4763 {
4764   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4765
4766   /* Do any commands attached to breakpoint we are stopped at.  */
4767   while (!ptid_equal (inferior_ptid, null_ptid)
4768          && target_has_execution
4769          && !is_exited (inferior_ptid)
4770          && !is_executing (inferior_ptid))
4771     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4772        and only return when it is stopped at the next breakpoint, we
4773        keep doing breakpoint actions until it returns false to
4774        indicate the inferior was not resumed.  */
4775     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4776       break;
4777
4778   discard_cleanups (cleanup_if_error);
4779 }
4780
4781 /* Print out the (old or new) value associated with a watchpoint.  */
4782
4783 static void
4784 watchpoint_value_print (struct value *val, struct ui_file *stream)
4785 {
4786   if (val == NULL)
4787     fprintf_unfiltered (stream, _("<unreadable>"));
4788   else
4789     {
4790       struct value_print_options opts;
4791       get_user_print_options (&opts);
4792       value_print (val, stream, &opts);
4793     }
4794 }
4795
4796 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4797    debugging multiple threads.  */
4798
4799 void
4800 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4801 {
4802   if (ui_out_is_mi_like_p (uiout))
4803     return;
4804
4805   ui_out_text (uiout, "\n");
4806
4807   if (show_thread_that_caused_stop ())
4808     {
4809       const char *name;
4810       struct thread_info *thr = inferior_thread ();
4811
4812       ui_out_text (uiout, "Thread ");
4813       ui_out_field_fmt (uiout, "thread-id", "%s", print_thread_id (thr));
4814
4815       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4816       if (name != NULL)
4817         {
4818           ui_out_text (uiout, " \"");
4819           ui_out_field_fmt (uiout, "name", "%s", name);
4820           ui_out_text (uiout, "\"");
4821         }
4822
4823       ui_out_text (uiout, " hit ");
4824     }
4825 }
4826
4827 /* Generic routine for printing messages indicating why we
4828    stopped.  The behavior of this function depends on the value
4829    'print_it' in the bpstat structure.  Under some circumstances we
4830    may decide not to print anything here and delegate the task to
4831    normal_stop().  */
4832
4833 static enum print_stop_action
4834 print_bp_stop_message (bpstat bs)
4835 {
4836   switch (bs->print_it)
4837     {
4838     case print_it_noop:
4839       /* Nothing should be printed for this bpstat entry.  */
4840       return PRINT_UNKNOWN;
4841       break;
4842
4843     case print_it_done:
4844       /* We still want to print the frame, but we already printed the
4845          relevant messages.  */
4846       return PRINT_SRC_AND_LOC;
4847       break;
4848
4849     case print_it_normal:
4850       {
4851         struct breakpoint *b = bs->breakpoint_at;
4852
4853         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4854            which has since been deleted.  */
4855         if (b == NULL)
4856           return PRINT_UNKNOWN;
4857
4858         /* Normal case.  Call the breakpoint's print_it method.  */
4859         return b->ops->print_it (bs);
4860       }
4861       break;
4862
4863     default:
4864       internal_error (__FILE__, __LINE__,
4865                       _("print_bp_stop_message: unrecognized enum value"));
4866       break;
4867     }
4868 }
4869
4870 /* A helper function that prints a shared library stopped event.  */
4871
4872 static void
4873 print_solib_event (int is_catchpoint)
4874 {
4875   int any_deleted
4876     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4877   int any_added
4878     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4879
4880   if (!is_catchpoint)
4881     {
4882       if (any_added || any_deleted)
4883         ui_out_text (current_uiout,
4884                      _("Stopped due to shared library event:\n"));
4885       else
4886         ui_out_text (current_uiout,
4887                      _("Stopped due to shared library event (no "
4888                        "libraries added or removed)\n"));
4889     }
4890
4891   if (ui_out_is_mi_like_p (current_uiout))
4892     ui_out_field_string (current_uiout, "reason",
4893                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4894
4895   if (any_deleted)
4896     {
4897       struct cleanup *cleanup;
4898       char *name;
4899       int ix;
4900
4901       ui_out_text (current_uiout, _("  Inferior unloaded "));
4902       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4903                                                     "removed");
4904       for (ix = 0;
4905            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4906                         ix, name);
4907            ++ix)
4908         {
4909           if (ix > 0)
4910             ui_out_text (current_uiout, "    ");
4911           ui_out_field_string (current_uiout, "library", name);
4912           ui_out_text (current_uiout, "\n");
4913         }
4914
4915       do_cleanups (cleanup);
4916     }
4917
4918   if (any_added)
4919     {
4920       struct so_list *iter;
4921       int ix;
4922       struct cleanup *cleanup;
4923
4924       ui_out_text (current_uiout, _("  Inferior loaded "));
4925       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4926                                                     "added");
4927       for (ix = 0;
4928            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4929                         ix, iter);
4930            ++ix)
4931         {
4932           if (ix > 0)
4933             ui_out_text (current_uiout, "    ");
4934           ui_out_field_string (current_uiout, "library", iter->so_name);
4935           ui_out_text (current_uiout, "\n");
4936         }
4937
4938       do_cleanups (cleanup);
4939     }
4940 }
4941
4942 /* Print a message indicating what happened.  This is called from
4943    normal_stop().  The input to this routine is the head of the bpstat
4944    list - a list of the eventpoints that caused this stop.  KIND is
4945    the target_waitkind for the stopping event.  This
4946    routine calls the generic print routine for printing a message
4947    about reasons for stopping.  This will print (for example) the
4948    "Breakpoint n," part of the output.  The return value of this
4949    routine is one of:
4950
4951    PRINT_UNKNOWN: Means we printed nothing.
4952    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4953    code to print the location.  An example is 
4954    "Breakpoint 1, " which should be followed by
4955    the location.
4956    PRINT_SRC_ONLY: Means we printed something, but there is no need
4957    to also print the location part of the message.
4958    An example is the catch/throw messages, which
4959    don't require a location appended to the end.
4960    PRINT_NOTHING: We have done some printing and we don't need any 
4961    further info to be printed.  */
4962
4963 enum print_stop_action
4964 bpstat_print (bpstat bs, int kind)
4965 {
4966   enum print_stop_action val;
4967
4968   /* Maybe another breakpoint in the chain caused us to stop.
4969      (Currently all watchpoints go on the bpstat whether hit or not.
4970      That probably could (should) be changed, provided care is taken
4971      with respect to bpstat_explains_signal).  */
4972   for (; bs; bs = bs->next)
4973     {
4974       val = print_bp_stop_message (bs);
4975       if (val == PRINT_SRC_ONLY 
4976           || val == PRINT_SRC_AND_LOC 
4977           || val == PRINT_NOTHING)
4978         return val;
4979     }
4980
4981   /* If we had hit a shared library event breakpoint,
4982      print_bp_stop_message would print out this message.  If we hit an
4983      OS-level shared library event, do the same thing.  */
4984   if (kind == TARGET_WAITKIND_LOADED)
4985     {
4986       print_solib_event (0);
4987       return PRINT_NOTHING;
4988     }
4989
4990   /* We reached the end of the chain, or we got a null BS to start
4991      with and nothing was printed.  */
4992   return PRINT_UNKNOWN;
4993 }
4994
4995 /* Evaluate the expression EXP and return 1 if value is zero.
4996    This returns the inverse of the condition because it is called
4997    from catch_errors which returns 0 if an exception happened, and if an
4998    exception happens we want execution to stop.
4999    The argument is a "struct expression *" that has been cast to a
5000    "void *" to make it pass through catch_errors.  */
5001
5002 static int
5003 breakpoint_cond_eval (void *exp)
5004 {
5005   struct value *mark = value_mark ();
5006   int i = !value_true (evaluate_expression ((struct expression *) exp));
5007
5008   value_free_to_mark (mark);
5009   return i;
5010 }
5011
5012 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
5013
5014 static bpstat
5015 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5016 {
5017   bpstat bs;
5018
5019   bs = (bpstat) xmalloc (sizeof (*bs));
5020   bs->next = NULL;
5021   **bs_link_pointer = bs;
5022   *bs_link_pointer = &bs->next;
5023   bs->breakpoint_at = bl->owner;
5024   bs->bp_location_at = bl;
5025   incref_bp_location (bl);
5026   /* If the condition is false, etc., don't do the commands.  */
5027   bs->commands = NULL;
5028   bs->old_val = NULL;
5029   bs->print_it = print_it_normal;
5030   return bs;
5031 }
5032 \f
5033 /* The target has stopped with waitstatus WS.  Check if any hardware
5034    watchpoints have triggered, according to the target.  */
5035
5036 int
5037 watchpoints_triggered (struct target_waitstatus *ws)
5038 {
5039   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5040   CORE_ADDR addr;
5041   struct breakpoint *b;
5042
5043   if (!stopped_by_watchpoint)
5044     {
5045       /* We were not stopped by a watchpoint.  Mark all watchpoints
5046          as not triggered.  */
5047       ALL_BREAKPOINTS (b)
5048         if (is_hardware_watchpoint (b))
5049           {
5050             struct watchpoint *w = (struct watchpoint *) b;
5051
5052             w->watchpoint_triggered = watch_triggered_no;
5053           }
5054
5055       return 0;
5056     }
5057
5058   if (!target_stopped_data_address (&current_target, &addr))
5059     {
5060       /* We were stopped by a watchpoint, but we don't know where.
5061          Mark all watchpoints as unknown.  */
5062       ALL_BREAKPOINTS (b)
5063         if (is_hardware_watchpoint (b))
5064           {
5065             struct watchpoint *w = (struct watchpoint *) b;
5066
5067             w->watchpoint_triggered = watch_triggered_unknown;
5068           }
5069
5070       return 1;
5071     }
5072
5073   /* The target could report the data address.  Mark watchpoints
5074      affected by this data address as triggered, and all others as not
5075      triggered.  */
5076
5077   ALL_BREAKPOINTS (b)
5078     if (is_hardware_watchpoint (b))
5079       {
5080         struct watchpoint *w = (struct watchpoint *) b;
5081         struct bp_location *loc;
5082
5083         w->watchpoint_triggered = watch_triggered_no;
5084         for (loc = b->loc; loc; loc = loc->next)
5085           {
5086             if (is_masked_watchpoint (b))
5087               {
5088                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5089                 CORE_ADDR start = loc->address & w->hw_wp_mask;
5090
5091                 if (newaddr == start)
5092                   {
5093                     w->watchpoint_triggered = watch_triggered_yes;
5094                     break;
5095                   }
5096               }
5097             /* Exact match not required.  Within range is sufficient.  */
5098             else if (target_watchpoint_addr_within_range (&current_target,
5099                                                          addr, loc->address,
5100                                                          loc->length))
5101               {
5102                 w->watchpoint_triggered = watch_triggered_yes;
5103                 break;
5104               }
5105           }
5106       }
5107
5108   return 1;
5109 }
5110
5111 /* Possible return values for watchpoint_check (this can't be an enum
5112    because of check_errors).  */
5113 /* The watchpoint has been deleted.  */
5114 #define WP_DELETED 1
5115 /* The value has changed.  */
5116 #define WP_VALUE_CHANGED 2
5117 /* The value has not changed.  */
5118 #define WP_VALUE_NOT_CHANGED 3
5119 /* Ignore this watchpoint, no matter if the value changed or not.  */
5120 #define WP_IGNORE 4
5121
5122 #define BP_TEMPFLAG 1
5123 #define BP_HARDWAREFLAG 2
5124
5125 /* Evaluate watchpoint condition expression and check if its value
5126    changed.
5127
5128    P should be a pointer to struct bpstat, but is defined as a void *
5129    in order for this function to be usable with catch_errors.  */
5130
5131 static int
5132 watchpoint_check (void *p)
5133 {
5134   bpstat bs = (bpstat) p;
5135   struct watchpoint *b;
5136   struct frame_info *fr;
5137   int within_current_scope;
5138
5139   /* BS is built from an existing struct breakpoint.  */
5140   gdb_assert (bs->breakpoint_at != NULL);
5141   b = (struct watchpoint *) bs->breakpoint_at;
5142
5143   /* If this is a local watchpoint, we only want to check if the
5144      watchpoint frame is in scope if the current thread is the thread
5145      that was used to create the watchpoint.  */
5146   if (!watchpoint_in_thread_scope (b))
5147     return WP_IGNORE;
5148
5149   if (b->exp_valid_block == NULL)
5150     within_current_scope = 1;
5151   else
5152     {
5153       struct frame_info *frame = get_current_frame ();
5154       struct gdbarch *frame_arch = get_frame_arch (frame);
5155       CORE_ADDR frame_pc = get_frame_pc (frame);
5156
5157       /* stack_frame_destroyed_p() returns a non-zero value if we're
5158          still in the function but the stack frame has already been
5159          invalidated.  Since we can't rely on the values of local
5160          variables after the stack has been destroyed, we are treating
5161          the watchpoint in that state as `not changed' without further
5162          checking.  Don't mark watchpoints as changed if the current
5163          frame is in an epilogue - even if they are in some other
5164          frame, our view of the stack is likely to be wrong and
5165          frame_find_by_id could error out.  */
5166       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5167         return WP_IGNORE;
5168
5169       fr = frame_find_by_id (b->watchpoint_frame);
5170       within_current_scope = (fr != NULL);
5171
5172       /* If we've gotten confused in the unwinder, we might have
5173          returned a frame that can't describe this variable.  */
5174       if (within_current_scope)
5175         {
5176           struct symbol *function;
5177
5178           function = get_frame_function (fr);
5179           if (function == NULL
5180               || !contained_in (b->exp_valid_block,
5181                                 SYMBOL_BLOCK_VALUE (function)))
5182             within_current_scope = 0;
5183         }
5184
5185       if (within_current_scope)
5186         /* If we end up stopping, the current frame will get selected
5187            in normal_stop.  So this call to select_frame won't affect
5188            the user.  */
5189         select_frame (fr);
5190     }
5191
5192   if (within_current_scope)
5193     {
5194       /* We use value_{,free_to_}mark because it could be a *long*
5195          time before we return to the command level and call
5196          free_all_values.  We can't call free_all_values because we
5197          might be in the middle of evaluating a function call.  */
5198
5199       int pc = 0;
5200       struct value *mark;
5201       struct value *new_val;
5202
5203       if (is_masked_watchpoint (&b->base))
5204         /* Since we don't know the exact trigger address (from
5205            stopped_data_address), just tell the user we've triggered
5206            a mask watchpoint.  */
5207         return WP_VALUE_CHANGED;
5208
5209       mark = value_mark ();
5210       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5211
5212       if (b->val_bitsize != 0)
5213         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5214
5215       /* We use value_equal_contents instead of value_equal because
5216          the latter coerces an array to a pointer, thus comparing just
5217          the address of the array instead of its contents.  This is
5218          not what we want.  */
5219       if ((b->val != NULL) != (new_val != NULL)
5220           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5221         {
5222           if (new_val != NULL)
5223             {
5224               release_value (new_val);
5225               value_free_to_mark (mark);
5226             }
5227           bs->old_val = b->val;
5228           b->val = new_val;
5229           b->val_valid = 1;
5230           return WP_VALUE_CHANGED;
5231         }
5232       else
5233         {
5234           /* Nothing changed.  */
5235           value_free_to_mark (mark);
5236           return WP_VALUE_NOT_CHANGED;
5237         }
5238     }
5239   else
5240     {
5241       struct switch_thru_all_uis state;
5242
5243       /* This seems like the only logical thing to do because
5244          if we temporarily ignored the watchpoint, then when
5245          we reenter the block in which it is valid it contains
5246          garbage (in the case of a function, it may have two
5247          garbage values, one before and one after the prologue).
5248          So we can't even detect the first assignment to it and
5249          watch after that (since the garbage may or may not equal
5250          the first value assigned).  */
5251       /* We print all the stop information in
5252          breakpoint_ops->print_it, but in this case, by the time we
5253          call breakpoint_ops->print_it this bp will be deleted
5254          already.  So we have no choice but print the information
5255          here.  */
5256
5257       SWITCH_THRU_ALL_UIS (state)
5258         {
5259           struct ui_out *uiout = current_uiout;
5260
5261           if (ui_out_is_mi_like_p (uiout))
5262             ui_out_field_string
5263               (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5264           ui_out_text (uiout, "\nWatchpoint ");
5265           ui_out_field_int (uiout, "wpnum", b->base.number);
5266           ui_out_text (uiout,
5267                        " deleted because the program has left the block in\n"
5268                        "which its expression is valid.\n");
5269         }
5270
5271       /* Make sure the watchpoint's commands aren't executed.  */
5272       decref_counted_command_line (&b->base.commands);
5273       watchpoint_del_at_next_stop (b);
5274
5275       return WP_DELETED;
5276     }
5277 }
5278
5279 /* Return true if it looks like target has stopped due to hitting
5280    breakpoint location BL.  This function does not check if we should
5281    stop, only if BL explains the stop.  */
5282
5283 static int
5284 bpstat_check_location (const struct bp_location *bl,
5285                        struct address_space *aspace, CORE_ADDR bp_addr,
5286                        const struct target_waitstatus *ws)
5287 {
5288   struct breakpoint *b = bl->owner;
5289
5290   /* BL is from an existing breakpoint.  */
5291   gdb_assert (b != NULL);
5292
5293   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5294 }
5295
5296 /* Determine if the watched values have actually changed, and we
5297    should stop.  If not, set BS->stop to 0.  */
5298
5299 static void
5300 bpstat_check_watchpoint (bpstat bs)
5301 {
5302   const struct bp_location *bl;
5303   struct watchpoint *b;
5304
5305   /* BS is built for existing struct breakpoint.  */
5306   bl = bs->bp_location_at;
5307   gdb_assert (bl != NULL);
5308   b = (struct watchpoint *) bs->breakpoint_at;
5309   gdb_assert (b != NULL);
5310
5311     {
5312       int must_check_value = 0;
5313       
5314       if (b->base.type == bp_watchpoint)
5315         /* For a software watchpoint, we must always check the
5316            watched value.  */
5317         must_check_value = 1;
5318       else if (b->watchpoint_triggered == watch_triggered_yes)
5319         /* We have a hardware watchpoint (read, write, or access)
5320            and the target earlier reported an address watched by
5321            this watchpoint.  */
5322         must_check_value = 1;
5323       else if (b->watchpoint_triggered == watch_triggered_unknown
5324                && b->base.type == bp_hardware_watchpoint)
5325         /* We were stopped by a hardware watchpoint, but the target could
5326            not report the data address.  We must check the watchpoint's
5327            value.  Access and read watchpoints are out of luck; without
5328            a data address, we can't figure it out.  */
5329         must_check_value = 1;
5330
5331       if (must_check_value)
5332         {
5333           char *message
5334             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5335                           b->base.number);
5336           struct cleanup *cleanups = make_cleanup (xfree, message);
5337           int e = catch_errors (watchpoint_check, bs, message,
5338                                 RETURN_MASK_ALL);
5339           do_cleanups (cleanups);
5340           switch (e)
5341             {
5342             case WP_DELETED:
5343               /* We've already printed what needs to be printed.  */
5344               bs->print_it = print_it_done;
5345               /* Stop.  */
5346               break;
5347             case WP_IGNORE:
5348               bs->print_it = print_it_noop;
5349               bs->stop = 0;
5350               break;
5351             case WP_VALUE_CHANGED:
5352               if (b->base.type == bp_read_watchpoint)
5353                 {
5354                   /* There are two cases to consider here:
5355
5356                      1. We're watching the triggered memory for reads.
5357                      In that case, trust the target, and always report
5358                      the watchpoint hit to the user.  Even though
5359                      reads don't cause value changes, the value may
5360                      have changed since the last time it was read, and
5361                      since we're not trapping writes, we will not see
5362                      those, and as such we should ignore our notion of
5363                      old value.
5364
5365                      2. We're watching the triggered memory for both
5366                      reads and writes.  There are two ways this may
5367                      happen:
5368
5369                      2.1. This is a target that can't break on data
5370                      reads only, but can break on accesses (reads or
5371                      writes), such as e.g., x86.  We detect this case
5372                      at the time we try to insert read watchpoints.
5373
5374                      2.2. Otherwise, the target supports read
5375                      watchpoints, but, the user set an access or write
5376                      watchpoint watching the same memory as this read
5377                      watchpoint.
5378
5379                      If we're watching memory writes as well as reads,
5380                      ignore watchpoint hits when we find that the
5381                      value hasn't changed, as reads don't cause
5382                      changes.  This still gives false positives when
5383                      the program writes the same value to memory as
5384                      what there was already in memory (we will confuse
5385                      it for a read), but it's much better than
5386                      nothing.  */
5387
5388                   int other_write_watchpoint = 0;
5389
5390                   if (bl->watchpoint_type == hw_read)
5391                     {
5392                       struct breakpoint *other_b;
5393
5394                       ALL_BREAKPOINTS (other_b)
5395                         if (other_b->type == bp_hardware_watchpoint
5396                             || other_b->type == bp_access_watchpoint)
5397                           {
5398                             struct watchpoint *other_w =
5399                               (struct watchpoint *) other_b;
5400
5401                             if (other_w->watchpoint_triggered
5402                                 == watch_triggered_yes)
5403                               {
5404                                 other_write_watchpoint = 1;
5405                                 break;
5406                               }
5407                           }
5408                     }
5409
5410                   if (other_write_watchpoint
5411                       || bl->watchpoint_type == hw_access)
5412                     {
5413                       /* We're watching the same memory for writes,
5414                          and the value changed since the last time we
5415                          updated it, so this trap must be for a write.
5416                          Ignore it.  */
5417                       bs->print_it = print_it_noop;
5418                       bs->stop = 0;
5419                     }
5420                 }
5421               break;
5422             case WP_VALUE_NOT_CHANGED:
5423               if (b->base.type == bp_hardware_watchpoint
5424                   || b->base.type == bp_watchpoint)
5425                 {
5426                   /* Don't stop: write watchpoints shouldn't fire if
5427                      the value hasn't changed.  */
5428                   bs->print_it = print_it_noop;
5429                   bs->stop = 0;
5430                 }
5431               /* Stop.  */
5432               break;
5433             default:
5434               /* Can't happen.  */
5435             case 0:
5436               /* Error from catch_errors.  */
5437               {
5438                 struct switch_thru_all_uis state;
5439
5440                 SWITCH_THRU_ALL_UIS (state)
5441                   {
5442                     printf_filtered (_("Watchpoint %d deleted.\n"),
5443                                      b->base.number);
5444                   }
5445                 watchpoint_del_at_next_stop (b);
5446                 /* We've already printed what needs to be printed.  */
5447                 bs->print_it = print_it_done;
5448               }
5449               break;
5450             }
5451         }
5452       else      /* must_check_value == 0 */
5453         {
5454           /* This is a case where some watchpoint(s) triggered, but
5455              not at the address of this watchpoint, or else no
5456              watchpoint triggered after all.  So don't print
5457              anything for this watchpoint.  */
5458           bs->print_it = print_it_noop;
5459           bs->stop = 0;
5460         }
5461     }
5462 }
5463
5464 /* For breakpoints that are currently marked as telling gdb to stop,
5465    check conditions (condition proper, frame, thread and ignore count)
5466    of breakpoint referred to by BS.  If we should not stop for this
5467    breakpoint, set BS->stop to 0.  */
5468
5469 static void
5470 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5471 {
5472   const struct bp_location *bl;
5473   struct breakpoint *b;
5474   int value_is_zero = 0;
5475   struct expression *cond;
5476
5477   gdb_assert (bs->stop);
5478
5479   /* BS is built for existing struct breakpoint.  */
5480   bl = bs->bp_location_at;
5481   gdb_assert (bl != NULL);
5482   b = bs->breakpoint_at;
5483   gdb_assert (b != NULL);
5484
5485   /* Even if the target evaluated the condition on its end and notified GDB, we
5486      need to do so again since GDB does not know if we stopped due to a
5487      breakpoint or a single step breakpoint.  */
5488
5489   if (frame_id_p (b->frame_id)
5490       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5491     {
5492       bs->stop = 0;
5493       return;
5494     }
5495
5496   /* If this is a thread/task-specific breakpoint, don't waste cpu
5497      evaluating the condition if this isn't the specified
5498      thread/task.  */
5499   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5500       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5501
5502     {
5503       bs->stop = 0;
5504       return;
5505     }
5506
5507   /* Evaluate extension language breakpoints that have a "stop" method
5508      implemented.  */
5509   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5510
5511   if (is_watchpoint (b))
5512     {
5513       struct watchpoint *w = (struct watchpoint *) b;
5514
5515       cond = w->cond_exp;
5516     }
5517   else
5518     cond = bl->cond;
5519
5520   if (cond && b->disposition != disp_del_at_next_stop)
5521     {
5522       int within_current_scope = 1;
5523       struct watchpoint * w;
5524
5525       /* We use value_mark and value_free_to_mark because it could
5526          be a long time before we return to the command level and
5527          call free_all_values.  We can't call free_all_values
5528          because we might be in the middle of evaluating a
5529          function call.  */
5530       struct value *mark = value_mark ();
5531
5532       if (is_watchpoint (b))
5533         w = (struct watchpoint *) b;
5534       else
5535         w = NULL;
5536
5537       /* Need to select the frame, with all that implies so that
5538          the conditions will have the right context.  Because we
5539          use the frame, we will not see an inlined function's
5540          variables when we arrive at a breakpoint at the start
5541          of the inlined function; the current frame will be the
5542          call site.  */
5543       if (w == NULL || w->cond_exp_valid_block == NULL)
5544         select_frame (get_current_frame ());
5545       else
5546         {
5547           struct frame_info *frame;
5548
5549           /* For local watchpoint expressions, which particular
5550              instance of a local is being watched matters, so we
5551              keep track of the frame to evaluate the expression
5552              in.  To evaluate the condition however, it doesn't
5553              really matter which instantiation of the function
5554              where the condition makes sense triggers the
5555              watchpoint.  This allows an expression like "watch
5556              global if q > 10" set in `func', catch writes to
5557              global on all threads that call `func', or catch
5558              writes on all recursive calls of `func' by a single
5559              thread.  We simply always evaluate the condition in
5560              the innermost frame that's executing where it makes
5561              sense to evaluate the condition.  It seems
5562              intuitive.  */
5563           frame = block_innermost_frame (w->cond_exp_valid_block);
5564           if (frame != NULL)
5565             select_frame (frame);
5566           else
5567             within_current_scope = 0;
5568         }
5569       if (within_current_scope)
5570         value_is_zero
5571           = catch_errors (breakpoint_cond_eval, cond,
5572                           "Error in testing breakpoint condition:\n",
5573                           RETURN_MASK_ALL);
5574       else
5575         {
5576           warning (_("Watchpoint condition cannot be tested "
5577                      "in the current scope"));
5578           /* If we failed to set the right context for this
5579              watchpoint, unconditionally report it.  */
5580           value_is_zero = 0;
5581         }
5582       /* FIXME-someday, should give breakpoint #.  */
5583       value_free_to_mark (mark);
5584     }
5585
5586   if (cond && value_is_zero)
5587     {
5588       bs->stop = 0;
5589     }
5590   else if (b->ignore_count > 0)
5591     {
5592       b->ignore_count--;
5593       bs->stop = 0;
5594       /* Increase the hit count even though we don't stop.  */
5595       ++(b->hit_count);
5596       observer_notify_breakpoint_modified (b);
5597     }   
5598 }
5599
5600 /* Returns true if we need to track moribund locations of LOC's type
5601    on the current target.  */
5602
5603 static int
5604 need_moribund_for_location_type (struct bp_location *loc)
5605 {
5606   return ((loc->loc_type == bp_loc_software_breakpoint
5607            && !target_supports_stopped_by_sw_breakpoint ())
5608           || (loc->loc_type == bp_loc_hardware_breakpoint
5609               && !target_supports_stopped_by_hw_breakpoint ()));
5610 }
5611
5612
5613 /* Get a bpstat associated with having just stopped at address
5614    BP_ADDR in thread PTID.
5615
5616    Determine whether we stopped at a breakpoint, etc, or whether we
5617    don't understand this stop.  Result is a chain of bpstat's such
5618    that:
5619
5620    if we don't understand the stop, the result is a null pointer.
5621
5622    if we understand why we stopped, the result is not null.
5623
5624    Each element of the chain refers to a particular breakpoint or
5625    watchpoint at which we have stopped.  (We may have stopped for
5626    several reasons concurrently.)
5627
5628    Each element of the chain has valid next, breakpoint_at,
5629    commands, FIXME??? fields.  */
5630
5631 bpstat
5632 bpstat_stop_status (struct address_space *aspace,
5633                     CORE_ADDR bp_addr, ptid_t ptid,
5634                     const struct target_waitstatus *ws)
5635 {
5636   struct breakpoint *b = NULL;
5637   struct bp_location *bl;
5638   struct bp_location *loc;
5639   /* First item of allocated bpstat's.  */
5640   bpstat bs_head = NULL, *bs_link = &bs_head;
5641   /* Pointer to the last thing in the chain currently.  */
5642   bpstat bs;
5643   int ix;
5644   int need_remove_insert;
5645   int removed_any;
5646
5647   /* First, build the bpstat chain with locations that explain a
5648      target stop, while being careful to not set the target running,
5649      as that may invalidate locations (in particular watchpoint
5650      locations are recreated).  Resuming will happen here with
5651      breakpoint conditions or watchpoint expressions that include
5652      inferior function calls.  */
5653
5654   ALL_BREAKPOINTS (b)
5655     {
5656       if (!breakpoint_enabled (b))
5657         continue;
5658
5659       for (bl = b->loc; bl != NULL; bl = bl->next)
5660         {
5661           /* For hardware watchpoints, we look only at the first
5662              location.  The watchpoint_check function will work on the
5663              entire expression, not the individual locations.  For
5664              read watchpoints, the watchpoints_triggered function has
5665              checked all locations already.  */
5666           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5667             break;
5668
5669           if (!bl->enabled || bl->shlib_disabled)
5670             continue;
5671
5672           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5673             continue;
5674
5675           /* Come here if it's a watchpoint, or if the break address
5676              matches.  */
5677
5678           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5679                                                    explain stop.  */
5680
5681           /* Assume we stop.  Should we find a watchpoint that is not
5682              actually triggered, or if the condition of the breakpoint
5683              evaluates as false, we'll reset 'stop' to 0.  */
5684           bs->stop = 1;
5685           bs->print = 1;
5686
5687           /* If this is a scope breakpoint, mark the associated
5688              watchpoint as triggered so that we will handle the
5689              out-of-scope event.  We'll get to the watchpoint next
5690              iteration.  */
5691           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5692             {
5693               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5694
5695               w->watchpoint_triggered = watch_triggered_yes;
5696             }
5697         }
5698     }
5699
5700   /* Check if a moribund breakpoint explains the stop.  */
5701   if (!target_supports_stopped_by_sw_breakpoint ()
5702       || !target_supports_stopped_by_hw_breakpoint ())
5703     {
5704       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5705         {
5706           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5707               && need_moribund_for_location_type (loc))
5708             {
5709               bs = bpstat_alloc (loc, &bs_link);
5710               /* For hits of moribund locations, we should just proceed.  */
5711               bs->stop = 0;
5712               bs->print = 0;
5713               bs->print_it = print_it_noop;
5714             }
5715         }
5716     }
5717
5718   /* A bit of special processing for shlib breakpoints.  We need to
5719      process solib loading here, so that the lists of loaded and
5720      unloaded libraries are correct before we handle "catch load" and
5721      "catch unload".  */
5722   for (bs = bs_head; bs != NULL; bs = bs->next)
5723     {
5724       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5725         {
5726           handle_solib_event ();
5727           break;
5728         }
5729     }
5730
5731   /* Now go through the locations that caused the target to stop, and
5732      check whether we're interested in reporting this stop to higher
5733      layers, or whether we should resume the target transparently.  */
5734
5735   removed_any = 0;
5736
5737   for (bs = bs_head; bs != NULL; bs = bs->next)
5738     {
5739       if (!bs->stop)
5740         continue;
5741
5742       b = bs->breakpoint_at;
5743       b->ops->check_status (bs);
5744       if (bs->stop)
5745         {
5746           bpstat_check_breakpoint_conditions (bs, ptid);
5747
5748           if (bs->stop)
5749             {
5750               ++(b->hit_count);
5751               observer_notify_breakpoint_modified (b);
5752
5753               /* We will stop here.  */
5754               if (b->disposition == disp_disable)
5755                 {
5756                   --(b->enable_count);
5757                   if (b->enable_count <= 0)
5758                     b->enable_state = bp_disabled;
5759                   removed_any = 1;
5760                 }
5761               if (b->silent)
5762                 bs->print = 0;
5763               bs->commands = b->commands;
5764               incref_counted_command_line (bs->commands);
5765               if (command_line_is_silent (bs->commands
5766                                           ? bs->commands->commands : NULL))
5767                 bs->print = 0;
5768
5769               b->ops->after_condition_true (bs);
5770             }
5771
5772         }
5773
5774       /* Print nothing for this entry if we don't stop or don't
5775          print.  */
5776       if (!bs->stop || !bs->print)
5777         bs->print_it = print_it_noop;
5778     }
5779
5780   /* If we aren't stopping, the value of some hardware watchpoint may
5781      not have changed, but the intermediate memory locations we are
5782      watching may have.  Don't bother if we're stopping; this will get
5783      done later.  */
5784   need_remove_insert = 0;
5785   if (! bpstat_causes_stop (bs_head))
5786     for (bs = bs_head; bs != NULL; bs = bs->next)
5787       if (!bs->stop
5788           && bs->breakpoint_at
5789           && is_hardware_watchpoint (bs->breakpoint_at))
5790         {
5791           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5792
5793           update_watchpoint (w, 0 /* don't reparse.  */);
5794           need_remove_insert = 1;
5795         }
5796
5797   if (need_remove_insert)
5798     update_global_location_list (UGLL_MAY_INSERT);
5799   else if (removed_any)
5800     update_global_location_list (UGLL_DONT_INSERT);
5801
5802   return bs_head;
5803 }
5804
5805 static void
5806 handle_jit_event (void)
5807 {
5808   struct frame_info *frame;
5809   struct gdbarch *gdbarch;
5810
5811   if (debug_infrun)
5812     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5813
5814   /* Switch terminal for any messages produced by
5815      breakpoint_re_set.  */
5816   target_terminal_ours_for_output ();
5817
5818   frame = get_current_frame ();
5819   gdbarch = get_frame_arch (frame);
5820
5821   jit_event_handler (gdbarch);
5822
5823   target_terminal_inferior ();
5824 }
5825
5826 /* Prepare WHAT final decision for infrun.  */
5827
5828 /* Decide what infrun needs to do with this bpstat.  */
5829
5830 struct bpstat_what
5831 bpstat_what (bpstat bs_head)
5832 {
5833   struct bpstat_what retval;
5834   bpstat bs;
5835
5836   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5837   retval.call_dummy = STOP_NONE;
5838   retval.is_longjmp = 0;
5839
5840   for (bs = bs_head; bs != NULL; bs = bs->next)
5841     {
5842       /* Extract this BS's action.  After processing each BS, we check
5843          if its action overrides all we've seem so far.  */
5844       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5845       enum bptype bptype;
5846
5847       if (bs->breakpoint_at == NULL)
5848         {
5849           /* I suspect this can happen if it was a momentary
5850              breakpoint which has since been deleted.  */
5851           bptype = bp_none;
5852         }
5853       else
5854         bptype = bs->breakpoint_at->type;
5855
5856       switch (bptype)
5857         {
5858         case bp_none:
5859           break;
5860         case bp_breakpoint:
5861         case bp_hardware_breakpoint:
5862         case bp_single_step:
5863         case bp_until:
5864         case bp_finish:
5865         case bp_shlib_event:
5866           if (bs->stop)
5867             {
5868               if (bs->print)
5869                 this_action = BPSTAT_WHAT_STOP_NOISY;
5870               else
5871                 this_action = BPSTAT_WHAT_STOP_SILENT;
5872             }
5873           else
5874             this_action = BPSTAT_WHAT_SINGLE;
5875           break;
5876         case bp_watchpoint:
5877         case bp_hardware_watchpoint:
5878         case bp_read_watchpoint:
5879         case bp_access_watchpoint:
5880           if (bs->stop)
5881             {
5882               if (bs->print)
5883                 this_action = BPSTAT_WHAT_STOP_NOISY;
5884               else
5885                 this_action = BPSTAT_WHAT_STOP_SILENT;
5886             }
5887           else
5888             {
5889               /* There was a watchpoint, but we're not stopping.
5890                  This requires no further action.  */
5891             }
5892           break;
5893         case bp_longjmp:
5894         case bp_longjmp_call_dummy:
5895         case bp_exception:
5896           if (bs->stop)
5897             {
5898               this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5899               retval.is_longjmp = bptype != bp_exception;
5900             }
5901           else
5902             this_action = BPSTAT_WHAT_SINGLE;
5903           break;
5904         case bp_longjmp_resume:
5905         case bp_exception_resume:
5906           if (bs->stop)
5907             {
5908               this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5909               retval.is_longjmp = bptype == bp_longjmp_resume;
5910             }
5911           else
5912             this_action = BPSTAT_WHAT_SINGLE;
5913           break;
5914         case bp_step_resume:
5915           if (bs->stop)
5916             this_action = BPSTAT_WHAT_STEP_RESUME;
5917           else
5918             {
5919               /* It is for the wrong frame.  */
5920               this_action = BPSTAT_WHAT_SINGLE;
5921             }
5922           break;
5923         case bp_hp_step_resume:
5924           if (bs->stop)
5925             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5926           else
5927             {
5928               /* It is for the wrong frame.  */
5929               this_action = BPSTAT_WHAT_SINGLE;
5930             }
5931           break;
5932         case bp_watchpoint_scope:
5933         case bp_thread_event:
5934         case bp_overlay_event:
5935         case bp_longjmp_master:
5936         case bp_std_terminate_master:
5937         case bp_exception_master:
5938           this_action = BPSTAT_WHAT_SINGLE;
5939           break;
5940         case bp_catchpoint:
5941           if (bs->stop)
5942             {
5943               if (bs->print)
5944                 this_action = BPSTAT_WHAT_STOP_NOISY;
5945               else
5946                 this_action = BPSTAT_WHAT_STOP_SILENT;
5947             }
5948           else
5949             {
5950               /* There was a catchpoint, but we're not stopping.
5951                  This requires no further action.  */
5952             }
5953           break;
5954         case bp_jit_event:
5955           this_action = BPSTAT_WHAT_SINGLE;
5956           break;
5957         case bp_call_dummy:
5958           /* Make sure the action is stop (silent or noisy),
5959              so infrun.c pops the dummy frame.  */
5960           retval.call_dummy = STOP_STACK_DUMMY;
5961           this_action = BPSTAT_WHAT_STOP_SILENT;
5962           break;
5963         case bp_std_terminate:
5964           /* Make sure the action is stop (silent or noisy),
5965              so infrun.c pops the dummy frame.  */
5966           retval.call_dummy = STOP_STD_TERMINATE;
5967           this_action = BPSTAT_WHAT_STOP_SILENT;
5968           break;
5969         case bp_tracepoint:
5970         case bp_fast_tracepoint:
5971         case bp_static_tracepoint:
5972           /* Tracepoint hits should not be reported back to GDB, and
5973              if one got through somehow, it should have been filtered
5974              out already.  */
5975           internal_error (__FILE__, __LINE__,
5976                           _("bpstat_what: tracepoint encountered"));
5977           break;
5978         case bp_gnu_ifunc_resolver:
5979           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5980           this_action = BPSTAT_WHAT_SINGLE;
5981           break;
5982         case bp_gnu_ifunc_resolver_return:
5983           /* The breakpoint will be removed, execution will restart from the
5984              PC of the former breakpoint.  */
5985           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5986           break;
5987
5988         case bp_dprintf:
5989           if (bs->stop)
5990             this_action = BPSTAT_WHAT_STOP_SILENT;
5991           else
5992             this_action = BPSTAT_WHAT_SINGLE;
5993           break;
5994
5995         default:
5996           internal_error (__FILE__, __LINE__,
5997                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5998         }
5999
6000       retval.main_action = std::max (retval.main_action, this_action);
6001     }
6002
6003   return retval;
6004 }
6005
6006 void
6007 bpstat_run_callbacks (bpstat bs_head)
6008 {
6009   bpstat bs;
6010
6011   for (bs = bs_head; bs != NULL; bs = bs->next)
6012     {
6013       struct breakpoint *b = bs->breakpoint_at;
6014
6015       if (b == NULL)
6016         continue;
6017       switch (b->type)
6018         {
6019         case bp_jit_event:
6020           handle_jit_event ();
6021           break;
6022         case bp_gnu_ifunc_resolver:
6023           gnu_ifunc_resolver_stop (b);
6024           break;
6025         case bp_gnu_ifunc_resolver_return:
6026           gnu_ifunc_resolver_return_stop (b);
6027           break;
6028         }
6029     }
6030 }
6031
6032 /* Nonzero if we should step constantly (e.g. watchpoints on machines
6033    without hardware support).  This isn't related to a specific bpstat,
6034    just to things like whether watchpoints are set.  */
6035
6036 int
6037 bpstat_should_step (void)
6038 {
6039   struct breakpoint *b;
6040
6041   ALL_BREAKPOINTS (b)
6042     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6043       return 1;
6044   return 0;
6045 }
6046
6047 int
6048 bpstat_causes_stop (bpstat bs)
6049 {
6050   for (; bs != NULL; bs = bs->next)
6051     if (bs->stop)
6052       return 1;
6053
6054   return 0;
6055 }
6056
6057 \f
6058
6059 /* Compute a string of spaces suitable to indent the next line
6060    so it starts at the position corresponding to the table column
6061    named COL_NAME in the currently active table of UIOUT.  */
6062
6063 static char *
6064 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6065 {
6066   static char wrap_indent[80];
6067   int i, total_width, width, align;
6068   char *text;
6069
6070   total_width = 0;
6071   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
6072     {
6073       if (strcmp (text, col_name) == 0)
6074         {
6075           gdb_assert (total_width < sizeof wrap_indent);
6076           memset (wrap_indent, ' ', total_width);
6077           wrap_indent[total_width] = 0;
6078
6079           return wrap_indent;
6080         }
6081
6082       total_width += width + 1;
6083     }
6084
6085   return NULL;
6086 }
6087
6088 /* Determine if the locations of this breakpoint will have their conditions
6089    evaluated by the target, host or a mix of both.  Returns the following:
6090
6091     "host": Host evals condition.
6092     "host or target": Host or Target evals condition.
6093     "target": Target evals condition.
6094 */
6095
6096 static const char *
6097 bp_condition_evaluator (struct breakpoint *b)
6098 {
6099   struct bp_location *bl;
6100   char host_evals = 0;
6101   char target_evals = 0;
6102
6103   if (!b)
6104     return NULL;
6105
6106   if (!is_breakpoint (b))
6107     return NULL;
6108
6109   if (gdb_evaluates_breakpoint_condition_p ()
6110       || !target_supports_evaluation_of_breakpoint_conditions ())
6111     return condition_evaluation_host;
6112
6113   for (bl = b->loc; bl; bl = bl->next)
6114     {
6115       if (bl->cond_bytecode)
6116         target_evals++;
6117       else
6118         host_evals++;
6119     }
6120
6121   if (host_evals && target_evals)
6122     return condition_evaluation_both;
6123   else if (target_evals)
6124     return condition_evaluation_target;
6125   else
6126     return condition_evaluation_host;
6127 }
6128
6129 /* Determine the breakpoint location's condition evaluator.  This is
6130    similar to bp_condition_evaluator, but for locations.  */
6131
6132 static const char *
6133 bp_location_condition_evaluator (struct bp_location *bl)
6134 {
6135   if (bl && !is_breakpoint (bl->owner))
6136     return NULL;
6137
6138   if (gdb_evaluates_breakpoint_condition_p ()
6139       || !target_supports_evaluation_of_breakpoint_conditions ())
6140     return condition_evaluation_host;
6141
6142   if (bl && bl->cond_bytecode)
6143     return condition_evaluation_target;
6144   else
6145     return condition_evaluation_host;
6146 }
6147
6148 /* Print the LOC location out of the list of B->LOC locations.  */
6149
6150 static void
6151 print_breakpoint_location (struct breakpoint *b,
6152                            struct bp_location *loc)
6153 {
6154   struct ui_out *uiout = current_uiout;
6155   struct cleanup *old_chain = save_current_program_space ();
6156
6157   if (loc != NULL && loc->shlib_disabled)
6158     loc = NULL;
6159
6160   if (loc != NULL)
6161     set_current_program_space (loc->pspace);
6162
6163   if (b->display_canonical)
6164     ui_out_field_string (uiout, "what",
6165                          event_location_to_string (b->location));
6166   else if (loc && loc->symtab)
6167     {
6168       struct symbol *sym 
6169         = find_pc_sect_function (loc->address, loc->section);
6170       if (sym)
6171         {
6172           ui_out_text (uiout, "in ");
6173           ui_out_field_string (uiout, "func",
6174                                SYMBOL_PRINT_NAME (sym));
6175           ui_out_text (uiout, " ");
6176           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
6177           ui_out_text (uiout, "at ");
6178         }
6179       ui_out_field_string (uiout, "file",
6180                            symtab_to_filename_for_display (loc->symtab));
6181       ui_out_text (uiout, ":");
6182
6183       if (ui_out_is_mi_like_p (uiout))
6184         ui_out_field_string (uiout, "fullname",
6185                              symtab_to_fullname (loc->symtab));
6186       
6187       ui_out_field_int (uiout, "line", loc->line_number);
6188     }
6189   else if (loc)
6190     {
6191       struct ui_file *stb = mem_fileopen ();
6192       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
6193
6194       print_address_symbolic (loc->gdbarch, loc->address, stb,
6195                               demangle, "");
6196       ui_out_field_stream (uiout, "at", stb);
6197
6198       do_cleanups (stb_chain);
6199     }
6200   else
6201     {
6202       ui_out_field_string (uiout, "pending",
6203                            event_location_to_string (b->location));
6204       /* If extra_string is available, it could be holding a condition
6205          or dprintf arguments.  In either case, make sure it is printed,
6206          too, but only for non-MI streams.  */
6207       if (!ui_out_is_mi_like_p (uiout) && b->extra_string != NULL)
6208         {
6209           if (b->type == bp_dprintf)
6210             ui_out_text (uiout, ",");
6211           else
6212             ui_out_text (uiout, " ");
6213           ui_out_text (uiout, b->extra_string);
6214         }
6215     }
6216
6217   if (loc && is_breakpoint (b)
6218       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6219       && bp_condition_evaluator (b) == condition_evaluation_both)
6220     {
6221       ui_out_text (uiout, " (");
6222       ui_out_field_string (uiout, "evaluated-by",
6223                            bp_location_condition_evaluator (loc));
6224       ui_out_text (uiout, ")");
6225     }
6226
6227   do_cleanups (old_chain);
6228 }
6229
6230 static const char *
6231 bptype_string (enum bptype type)
6232 {
6233   struct ep_type_description
6234     {
6235       enum bptype type;
6236       char *description;
6237     };
6238   static struct ep_type_description bptypes[] =
6239   {
6240     {bp_none, "?deleted?"},
6241     {bp_breakpoint, "breakpoint"},
6242     {bp_hardware_breakpoint, "hw breakpoint"},
6243     {bp_single_step, "sw single-step"},
6244     {bp_until, "until"},
6245     {bp_finish, "finish"},
6246     {bp_watchpoint, "watchpoint"},
6247     {bp_hardware_watchpoint, "hw watchpoint"},
6248     {bp_read_watchpoint, "read watchpoint"},
6249     {bp_access_watchpoint, "acc watchpoint"},
6250     {bp_longjmp, "longjmp"},
6251     {bp_longjmp_resume, "longjmp resume"},
6252     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6253     {bp_exception, "exception"},
6254     {bp_exception_resume, "exception resume"},
6255     {bp_step_resume, "step resume"},
6256     {bp_hp_step_resume, "high-priority step resume"},
6257     {bp_watchpoint_scope, "watchpoint scope"},
6258     {bp_call_dummy, "call dummy"},
6259     {bp_std_terminate, "std::terminate"},
6260     {bp_shlib_event, "shlib events"},
6261     {bp_thread_event, "thread events"},
6262     {bp_overlay_event, "overlay events"},
6263     {bp_longjmp_master, "longjmp master"},
6264     {bp_std_terminate_master, "std::terminate master"},
6265     {bp_exception_master, "exception master"},
6266     {bp_catchpoint, "catchpoint"},
6267     {bp_tracepoint, "tracepoint"},
6268     {bp_fast_tracepoint, "fast tracepoint"},
6269     {bp_static_tracepoint, "static tracepoint"},
6270     {bp_dprintf, "dprintf"},
6271     {bp_jit_event, "jit events"},
6272     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6273     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6274   };
6275
6276   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6277       || ((int) type != bptypes[(int) type].type))
6278     internal_error (__FILE__, __LINE__,
6279                     _("bptypes table does not describe type #%d."),
6280                     (int) type);
6281
6282   return bptypes[(int) type].description;
6283 }
6284
6285 /* For MI, output a field named 'thread-groups' with a list as the value.
6286    For CLI, prefix the list with the string 'inf'. */
6287
6288 static void
6289 output_thread_groups (struct ui_out *uiout,
6290                       const char *field_name,
6291                       VEC(int) *inf_num,
6292                       int mi_only)
6293 {
6294   struct cleanup *back_to;
6295   int is_mi = ui_out_is_mi_like_p (uiout);
6296   int inf;
6297   int i;
6298
6299   /* For backward compatibility, don't display inferiors in CLI unless
6300      there are several.  Always display them for MI. */
6301   if (!is_mi && mi_only)
6302     return;
6303
6304   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6305
6306   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6307     {
6308       if (is_mi)
6309         {
6310           char mi_group[10];
6311
6312           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6313           ui_out_field_string (uiout, NULL, mi_group);
6314         }
6315       else
6316         {
6317           if (i == 0)
6318             ui_out_text (uiout, " inf ");
6319           else
6320             ui_out_text (uiout, ", ");
6321         
6322           ui_out_text (uiout, plongest (inf));
6323         }
6324     }
6325
6326   do_cleanups (back_to);
6327 }
6328
6329 /* Print B to gdb_stdout.  */
6330
6331 static void
6332 print_one_breakpoint_location (struct breakpoint *b,
6333                                struct bp_location *loc,
6334                                int loc_number,
6335                                struct bp_location **last_loc,
6336                                int allflag)
6337 {
6338   struct command_line *l;
6339   static char bpenables[] = "nynny";
6340
6341   struct ui_out *uiout = current_uiout;
6342   int header_of_multiple = 0;
6343   int part_of_multiple = (loc != NULL);
6344   struct value_print_options opts;
6345
6346   get_user_print_options (&opts);
6347
6348   gdb_assert (!loc || loc_number != 0);
6349   /* See comment in print_one_breakpoint concerning treatment of
6350      breakpoints with single disabled location.  */
6351   if (loc == NULL 
6352       && (b->loc != NULL 
6353           && (b->loc->next != NULL || !b->loc->enabled)))
6354     header_of_multiple = 1;
6355   if (loc == NULL)
6356     loc = b->loc;
6357
6358   annotate_record ();
6359
6360   /* 1 */
6361   annotate_field (0);
6362   if (part_of_multiple)
6363     {
6364       char *formatted;
6365       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6366       ui_out_field_string (uiout, "number", formatted);
6367       xfree (formatted);
6368     }
6369   else
6370     {
6371       ui_out_field_int (uiout, "number", b->number);
6372     }
6373
6374   /* 2 */
6375   annotate_field (1);
6376   if (part_of_multiple)
6377     ui_out_field_skip (uiout, "type");
6378   else
6379     ui_out_field_string (uiout, "type", bptype_string (b->type));
6380
6381   /* 3 */
6382   annotate_field (2);
6383   if (part_of_multiple)
6384     ui_out_field_skip (uiout, "disp");
6385   else
6386     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6387
6388
6389   /* 4 */
6390   annotate_field (3);
6391   if (part_of_multiple)
6392     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6393   else
6394     ui_out_field_fmt (uiout, "enabled", "%c", 
6395                       bpenables[(int) b->enable_state]);
6396   ui_out_spaces (uiout, 2);
6397
6398   
6399   /* 5 and 6 */
6400   if (b->ops != NULL && b->ops->print_one != NULL)
6401     {
6402       /* Although the print_one can possibly print all locations,
6403          calling it here is not likely to get any nice result.  So,
6404          make sure there's just one location.  */
6405       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6406       b->ops->print_one (b, last_loc);
6407     }
6408   else
6409     switch (b->type)
6410       {
6411       case bp_none:
6412         internal_error (__FILE__, __LINE__,
6413                         _("print_one_breakpoint: bp_none encountered\n"));
6414         break;
6415
6416       case bp_watchpoint:
6417       case bp_hardware_watchpoint:
6418       case bp_read_watchpoint:
6419       case bp_access_watchpoint:
6420         {
6421           struct watchpoint *w = (struct watchpoint *) b;
6422
6423           /* Field 4, the address, is omitted (which makes the columns
6424              not line up too nicely with the headers, but the effect
6425              is relatively readable).  */
6426           if (opts.addressprint)
6427             ui_out_field_skip (uiout, "addr");
6428           annotate_field (5);
6429           ui_out_field_string (uiout, "what", w->exp_string);
6430         }
6431         break;
6432
6433       case bp_breakpoint:
6434       case bp_hardware_breakpoint:
6435       case bp_single_step:
6436       case bp_until:
6437       case bp_finish:
6438       case bp_longjmp:
6439       case bp_longjmp_resume:
6440       case bp_longjmp_call_dummy:
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_longjmp_master:
6452       case bp_std_terminate_master:
6453       case bp_exception_master:
6454       case bp_tracepoint:
6455       case bp_fast_tracepoint:
6456       case bp_static_tracepoint:
6457       case bp_dprintf:
6458       case bp_jit_event:
6459       case bp_gnu_ifunc_resolver:
6460       case bp_gnu_ifunc_resolver_return:
6461         if (opts.addressprint)
6462           {
6463             annotate_field (4);
6464             if (header_of_multiple)
6465               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6466             else if (b->loc == NULL || loc->shlib_disabled)
6467               ui_out_field_string (uiout, "addr", "<PENDING>");
6468             else
6469               ui_out_field_core_addr (uiout, "addr",
6470                                       loc->gdbarch, loc->address);
6471           }
6472         annotate_field (5);
6473         if (!header_of_multiple)
6474           print_breakpoint_location (b, loc);
6475         if (b->loc)
6476           *last_loc = b->loc;
6477         break;
6478       }
6479
6480
6481   if (loc != NULL && !header_of_multiple)
6482     {
6483       struct inferior *inf;
6484       VEC(int) *inf_num = NULL;
6485       int mi_only = 1;
6486
6487       ALL_INFERIORS (inf)
6488         {
6489           if (inf->pspace == loc->pspace)
6490             VEC_safe_push (int, inf_num, inf->num);
6491         }
6492
6493         /* For backward compatibility, don't display inferiors in CLI unless
6494            there are several.  Always display for MI. */
6495         if (allflag
6496             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6497                 && (number_of_program_spaces () > 1
6498                     || number_of_inferiors () > 1)
6499                 /* LOC is for existing B, it cannot be in
6500                    moribund_locations and thus having NULL OWNER.  */
6501                 && loc->owner->type != bp_catchpoint))
6502         mi_only = 0;
6503       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6504       VEC_free (int, inf_num);
6505     }
6506
6507   if (!part_of_multiple)
6508     {
6509       if (b->thread != -1)
6510         {
6511           /* FIXME: This seems to be redundant and lost here; see the
6512              "stop only in" line a little further down.  */
6513           ui_out_text (uiout, " thread ");
6514           ui_out_field_int (uiout, "thread", b->thread);
6515         }
6516       else if (b->task != 0)
6517         {
6518           ui_out_text (uiout, " task ");
6519           ui_out_field_int (uiout, "task", b->task);
6520         }
6521     }
6522
6523   ui_out_text (uiout, "\n");
6524
6525   if (!part_of_multiple)
6526     b->ops->print_one_detail (b, uiout);
6527
6528   if (part_of_multiple && frame_id_p (b->frame_id))
6529     {
6530       annotate_field (6);
6531       ui_out_text (uiout, "\tstop only in stack frame at ");
6532       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6533          the frame ID.  */
6534       ui_out_field_core_addr (uiout, "frame",
6535                               b->gdbarch, b->frame_id.stack_addr);
6536       ui_out_text (uiout, "\n");
6537     }
6538   
6539   if (!part_of_multiple && b->cond_string)
6540     {
6541       annotate_field (7);
6542       if (is_tracepoint (b))
6543         ui_out_text (uiout, "\ttrace only if ");
6544       else
6545         ui_out_text (uiout, "\tstop only if ");
6546       ui_out_field_string (uiout, "cond", b->cond_string);
6547
6548       /* Print whether the target is doing the breakpoint's condition
6549          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6550       if (is_breakpoint (b)
6551           && breakpoint_condition_evaluation_mode ()
6552           == condition_evaluation_target)
6553         {
6554           ui_out_text (uiout, " (");
6555           ui_out_field_string (uiout, "evaluated-by",
6556                                bp_condition_evaluator (b));
6557           ui_out_text (uiout, " evals)");
6558         }
6559       ui_out_text (uiout, "\n");
6560     }
6561
6562   if (!part_of_multiple && b->thread != -1)
6563     {
6564       /* FIXME should make an annotation for this.  */
6565       ui_out_text (uiout, "\tstop only in thread ");
6566       if (ui_out_is_mi_like_p (uiout))
6567         ui_out_field_int (uiout, "thread", b->thread);
6568       else
6569         {
6570           struct thread_info *thr = find_thread_global_id (b->thread);
6571
6572           ui_out_field_string (uiout, "thread", print_thread_id (thr));
6573         }
6574       ui_out_text (uiout, "\n");
6575     }
6576   
6577   if (!part_of_multiple)
6578     {
6579       if (b->hit_count)
6580         {
6581           /* FIXME should make an annotation for this.  */
6582           if (is_catchpoint (b))
6583             ui_out_text (uiout, "\tcatchpoint");
6584           else if (is_tracepoint (b))
6585             ui_out_text (uiout, "\ttracepoint");
6586           else
6587             ui_out_text (uiout, "\tbreakpoint");
6588           ui_out_text (uiout, " already hit ");
6589           ui_out_field_int (uiout, "times", b->hit_count);
6590           if (b->hit_count == 1)
6591             ui_out_text (uiout, " time\n");
6592           else
6593             ui_out_text (uiout, " times\n");
6594         }
6595       else
6596         {
6597           /* Output the count also if it is zero, but only if this is mi.  */
6598           if (ui_out_is_mi_like_p (uiout))
6599             ui_out_field_int (uiout, "times", b->hit_count);
6600         }
6601     }
6602
6603   if (!part_of_multiple && b->ignore_count)
6604     {
6605       annotate_field (8);
6606       ui_out_text (uiout, "\tignore next ");
6607       ui_out_field_int (uiout, "ignore", b->ignore_count);
6608       ui_out_text (uiout, " hits\n");
6609     }
6610
6611   /* Note that an enable count of 1 corresponds to "enable once"
6612      behavior, which is reported by the combination of enablement and
6613      disposition, so we don't need to mention it here.  */
6614   if (!part_of_multiple && b->enable_count > 1)
6615     {
6616       annotate_field (8);
6617       ui_out_text (uiout, "\tdisable after ");
6618       /* Tweak the wording to clarify that ignore and enable counts
6619          are distinct, and have additive effect.  */
6620       if (b->ignore_count)
6621         ui_out_text (uiout, "additional ");
6622       else
6623         ui_out_text (uiout, "next ");
6624       ui_out_field_int (uiout, "enable", b->enable_count);
6625       ui_out_text (uiout, " hits\n");
6626     }
6627
6628   if (!part_of_multiple && is_tracepoint (b))
6629     {
6630       struct tracepoint *tp = (struct tracepoint *) b;
6631
6632       if (tp->traceframe_usage)
6633         {
6634           ui_out_text (uiout, "\ttrace buffer usage ");
6635           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6636           ui_out_text (uiout, " bytes\n");
6637         }
6638     }
6639
6640   l = b->commands ? b->commands->commands : NULL;
6641   if (!part_of_multiple && l)
6642     {
6643       struct cleanup *script_chain;
6644
6645       annotate_field (9);
6646       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6647       print_command_lines (uiout, l, 4);
6648       do_cleanups (script_chain);
6649     }
6650
6651   if (is_tracepoint (b))
6652     {
6653       struct tracepoint *t = (struct tracepoint *) b;
6654
6655       if (!part_of_multiple && t->pass_count)
6656         {
6657           annotate_field (10);
6658           ui_out_text (uiout, "\tpass count ");
6659           ui_out_field_int (uiout, "pass", t->pass_count);
6660           ui_out_text (uiout, " \n");
6661         }
6662
6663       /* Don't display it when tracepoint or tracepoint location is
6664          pending.   */
6665       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6666         {
6667           annotate_field (11);
6668
6669           if (ui_out_is_mi_like_p (uiout))
6670             ui_out_field_string (uiout, "installed",
6671                                  loc->inserted ? "y" : "n");
6672           else
6673             {
6674               if (loc->inserted)
6675                 ui_out_text (uiout, "\t");
6676               else
6677                 ui_out_text (uiout, "\tnot ");
6678               ui_out_text (uiout, "installed on target\n");
6679             }
6680         }
6681     }
6682
6683   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6684     {
6685       if (is_watchpoint (b))
6686         {
6687           struct watchpoint *w = (struct watchpoint *) b;
6688
6689           ui_out_field_string (uiout, "original-location", w->exp_string);
6690         }
6691       else if (b->location != NULL
6692                && event_location_to_string (b->location) != NULL)
6693         ui_out_field_string (uiout, "original-location",
6694                              event_location_to_string (b->location));
6695     }
6696 }
6697
6698 static void
6699 print_one_breakpoint (struct breakpoint *b,
6700                       struct bp_location **last_loc, 
6701                       int allflag)
6702 {
6703   struct cleanup *bkpt_chain;
6704   struct ui_out *uiout = current_uiout;
6705
6706   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6707
6708   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6709   do_cleanups (bkpt_chain);
6710
6711   /* If this breakpoint has custom print function,
6712      it's already printed.  Otherwise, print individual
6713      locations, if any.  */
6714   if (b->ops == NULL || b->ops->print_one == NULL)
6715     {
6716       /* If breakpoint has a single location that is disabled, we
6717          print it as if it had several locations, since otherwise it's
6718          hard to represent "breakpoint enabled, location disabled"
6719          situation.
6720
6721          Note that while hardware watchpoints have several locations
6722          internally, that's not a property exposed to user.  */
6723       if (b->loc 
6724           && !is_hardware_watchpoint (b)
6725           && (b->loc->next || !b->loc->enabled))
6726         {
6727           struct bp_location *loc;
6728           int n = 1;
6729
6730           for (loc = b->loc; loc; loc = loc->next, ++n)
6731             {
6732               struct cleanup *inner2 =
6733                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6734               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6735               do_cleanups (inner2);
6736             }
6737         }
6738     }
6739 }
6740
6741 static int
6742 breakpoint_address_bits (struct breakpoint *b)
6743 {
6744   int print_address_bits = 0;
6745   struct bp_location *loc;
6746
6747   /* Software watchpoints that aren't watching memory don't have an
6748      address to print.  */
6749   if (is_no_memory_software_watchpoint (b))
6750     return 0;
6751
6752   for (loc = b->loc; loc; loc = loc->next)
6753     {
6754       int addr_bit;
6755
6756       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6757       if (addr_bit > print_address_bits)
6758         print_address_bits = addr_bit;
6759     }
6760
6761   return print_address_bits;
6762 }
6763
6764 struct captured_breakpoint_query_args
6765   {
6766     int bnum;
6767   };
6768
6769 static int
6770 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6771 {
6772   struct captured_breakpoint_query_args *args
6773     = (struct captured_breakpoint_query_args *) data;
6774   struct breakpoint *b;
6775   struct bp_location *dummy_loc = NULL;
6776
6777   ALL_BREAKPOINTS (b)
6778     {
6779       if (args->bnum == b->number)
6780         {
6781           print_one_breakpoint (b, &dummy_loc, 0);
6782           return GDB_RC_OK;
6783         }
6784     }
6785   return GDB_RC_NONE;
6786 }
6787
6788 enum gdb_rc
6789 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6790                       char **error_message)
6791 {
6792   struct captured_breakpoint_query_args args;
6793
6794   args.bnum = bnum;
6795   /* For the moment we don't trust print_one_breakpoint() to not throw
6796      an error.  */
6797   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6798                                  error_message, RETURN_MASK_ALL) < 0)
6799     return GDB_RC_FAIL;
6800   else
6801     return GDB_RC_OK;
6802 }
6803
6804 /* Return true if this breakpoint was set by the user, false if it is
6805    internal or momentary.  */
6806
6807 int
6808 user_breakpoint_p (struct breakpoint *b)
6809 {
6810   return b->number > 0;
6811 }
6812
6813 /* See breakpoint.h.  */
6814
6815 int
6816 pending_breakpoint_p (struct breakpoint *b)
6817 {
6818   return b->loc == NULL;
6819 }
6820
6821 /* Print information on user settable breakpoint (watchpoint, etc)
6822    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6823    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6824    FILTER is non-NULL, call it on each breakpoint and only include the
6825    ones for which it returns non-zero.  Return the total number of
6826    breakpoints listed.  */
6827
6828 static int
6829 breakpoint_1 (char *args, int allflag, 
6830               int (*filter) (const struct breakpoint *))
6831 {
6832   struct breakpoint *b;
6833   struct bp_location *last_loc = NULL;
6834   int nr_printable_breakpoints;
6835   struct cleanup *bkpttbl_chain;
6836   struct value_print_options opts;
6837   int print_address_bits = 0;
6838   int print_type_col_width = 14;
6839   struct ui_out *uiout = current_uiout;
6840
6841   get_user_print_options (&opts);
6842
6843   /* Compute the number of rows in the table, as well as the size
6844      required for address fields.  */
6845   nr_printable_breakpoints = 0;
6846   ALL_BREAKPOINTS (b)
6847     {
6848       /* If we have a filter, only list the breakpoints it accepts.  */
6849       if (filter && !filter (b))
6850         continue;
6851
6852       /* If we have an "args" string, it is a list of breakpoints to 
6853          accept.  Skip the others.  */
6854       if (args != NULL && *args != '\0')
6855         {
6856           if (allflag && parse_and_eval_long (args) != b->number)
6857             continue;
6858           if (!allflag && !number_is_in_list (args, b->number))
6859             continue;
6860         }
6861
6862       if (allflag || user_breakpoint_p (b))
6863         {
6864           int addr_bit, type_len;
6865
6866           addr_bit = breakpoint_address_bits (b);
6867           if (addr_bit > print_address_bits)
6868             print_address_bits = addr_bit;
6869
6870           type_len = strlen (bptype_string (b->type));
6871           if (type_len > print_type_col_width)
6872             print_type_col_width = type_len;
6873
6874           nr_printable_breakpoints++;
6875         }
6876     }
6877
6878   if (opts.addressprint)
6879     bkpttbl_chain 
6880       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6881                                              nr_printable_breakpoints,
6882                                              "BreakpointTable");
6883   else
6884     bkpttbl_chain 
6885       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6886                                              nr_printable_breakpoints,
6887                                              "BreakpointTable");
6888
6889   if (nr_printable_breakpoints > 0)
6890     annotate_breakpoints_headers ();
6891   if (nr_printable_breakpoints > 0)
6892     annotate_field (0);
6893   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6894   if (nr_printable_breakpoints > 0)
6895     annotate_field (1);
6896   ui_out_table_header (uiout, print_type_col_width, ui_left,
6897                        "type", "Type");                         /* 2 */
6898   if (nr_printable_breakpoints > 0)
6899     annotate_field (2);
6900   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6901   if (nr_printable_breakpoints > 0)
6902     annotate_field (3);
6903   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6904   if (opts.addressprint)
6905     {
6906       if (nr_printable_breakpoints > 0)
6907         annotate_field (4);
6908       if (print_address_bits <= 32)
6909         ui_out_table_header (uiout, 10, ui_left, 
6910                              "addr", "Address");                /* 5 */
6911       else
6912         ui_out_table_header (uiout, 18, ui_left, 
6913                              "addr", "Address");                /* 5 */
6914     }
6915   if (nr_printable_breakpoints > 0)
6916     annotate_field (5);
6917   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6918   ui_out_table_body (uiout);
6919   if (nr_printable_breakpoints > 0)
6920     annotate_breakpoints_table ();
6921
6922   ALL_BREAKPOINTS (b)
6923     {
6924       QUIT;
6925       /* If we have a filter, only list the breakpoints it accepts.  */
6926       if (filter && !filter (b))
6927         continue;
6928
6929       /* If we have an "args" string, it is a list of breakpoints to 
6930          accept.  Skip the others.  */
6931
6932       if (args != NULL && *args != '\0')
6933         {
6934           if (allflag)  /* maintenance info breakpoint */
6935             {
6936               if (parse_and_eval_long (args) != b->number)
6937                 continue;
6938             }
6939           else          /* all others */
6940             {
6941               if (!number_is_in_list (args, b->number))
6942                 continue;
6943             }
6944         }
6945       /* We only print out user settable breakpoints unless the
6946          allflag is set.  */
6947       if (allflag || user_breakpoint_p (b))
6948         print_one_breakpoint (b, &last_loc, allflag);
6949     }
6950
6951   do_cleanups (bkpttbl_chain);
6952
6953   if (nr_printable_breakpoints == 0)
6954     {
6955       /* If there's a filter, let the caller decide how to report
6956          empty list.  */
6957       if (!filter)
6958         {
6959           if (args == NULL || *args == '\0')
6960             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6961           else
6962             ui_out_message (uiout, 0, 
6963                             "No breakpoint or watchpoint matching '%s'.\n",
6964                             args);
6965         }
6966     }
6967   else
6968     {
6969       if (last_loc && !server_command)
6970         set_next_address (last_loc->gdbarch, last_loc->address);
6971     }
6972
6973   /* FIXME?  Should this be moved up so that it is only called when
6974      there have been breakpoints? */
6975   annotate_breakpoints_table_end ();
6976
6977   return nr_printable_breakpoints;
6978 }
6979
6980 /* Display the value of default-collect in a way that is generally
6981    compatible with the breakpoint list.  */
6982
6983 static void
6984 default_collect_info (void)
6985 {
6986   struct ui_out *uiout = current_uiout;
6987
6988   /* If it has no value (which is frequently the case), say nothing; a
6989      message like "No default-collect." gets in user's face when it's
6990      not wanted.  */
6991   if (!*default_collect)
6992     return;
6993
6994   /* The following phrase lines up nicely with per-tracepoint collect
6995      actions.  */
6996   ui_out_text (uiout, "default collect ");
6997   ui_out_field_string (uiout, "default-collect", default_collect);
6998   ui_out_text (uiout, " \n");
6999 }
7000   
7001 static void
7002 breakpoints_info (char *args, int from_tty)
7003 {
7004   breakpoint_1 (args, 0, NULL);
7005
7006   default_collect_info ();
7007 }
7008
7009 static void
7010 watchpoints_info (char *args, int from_tty)
7011 {
7012   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
7013   struct ui_out *uiout = current_uiout;
7014
7015   if (num_printed == 0)
7016     {
7017       if (args == NULL || *args == '\0')
7018         ui_out_message (uiout, 0, "No watchpoints.\n");
7019       else
7020         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
7021     }
7022 }
7023
7024 static void
7025 maintenance_info_breakpoints (char *args, int from_tty)
7026 {
7027   breakpoint_1 (args, 1, NULL);
7028
7029   default_collect_info ();
7030 }
7031
7032 static int
7033 breakpoint_has_pc (struct breakpoint *b,
7034                    struct program_space *pspace,
7035                    CORE_ADDR pc, struct obj_section *section)
7036 {
7037   struct bp_location *bl = b->loc;
7038
7039   for (; bl; bl = bl->next)
7040     {
7041       if (bl->pspace == pspace
7042           && bl->address == pc
7043           && (!overlay_debugging || bl->section == section))
7044         return 1;         
7045     }
7046   return 0;
7047 }
7048
7049 /* Print a message describing any user-breakpoints set at PC.  This
7050    concerns with logical breakpoints, so we match program spaces, not
7051    address spaces.  */
7052
7053 static void
7054 describe_other_breakpoints (struct gdbarch *gdbarch,
7055                             struct program_space *pspace, CORE_ADDR pc,
7056                             struct obj_section *section, int thread)
7057 {
7058   int others = 0;
7059   struct breakpoint *b;
7060
7061   ALL_BREAKPOINTS (b)
7062     others += (user_breakpoint_p (b)
7063                && breakpoint_has_pc (b, pspace, pc, section));
7064   if (others > 0)
7065     {
7066       if (others == 1)
7067         printf_filtered (_("Note: breakpoint "));
7068       else /* if (others == ???) */
7069         printf_filtered (_("Note: breakpoints "));
7070       ALL_BREAKPOINTS (b)
7071         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7072           {
7073             others--;
7074             printf_filtered ("%d", b->number);
7075             if (b->thread == -1 && thread != -1)
7076               printf_filtered (" (all threads)");
7077             else if (b->thread != -1)
7078               printf_filtered (" (thread %d)", b->thread);
7079             printf_filtered ("%s%s ",
7080                              ((b->enable_state == bp_disabled
7081                                || b->enable_state == bp_call_disabled)
7082                               ? " (disabled)"
7083                               : ""),
7084                              (others > 1) ? "," 
7085                              : ((others == 1) ? " and" : ""));
7086           }
7087       printf_filtered (_("also set at pc "));
7088       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7089       printf_filtered (".\n");
7090     }
7091 }
7092 \f
7093
7094 /* Return true iff it is meaningful to use the address member of
7095    BPT locations.  For some breakpoint types, the locations' address members
7096    are irrelevant and it makes no sense to attempt to compare them to other
7097    addresses (or use them for any other purpose either).
7098
7099    More specifically, each of the following breakpoint types will
7100    always have a zero valued location address and we don't want to mark
7101    breakpoints of any of these types to be a duplicate of an actual
7102    breakpoint location at address zero:
7103
7104       bp_watchpoint
7105       bp_catchpoint
7106
7107 */
7108
7109 static int
7110 breakpoint_address_is_meaningful (struct breakpoint *bpt)
7111 {
7112   enum bptype type = bpt->type;
7113
7114   return (type != bp_watchpoint && type != bp_catchpoint);
7115 }
7116
7117 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7118    true if LOC1 and LOC2 represent the same watchpoint location.  */
7119
7120 static int
7121 watchpoint_locations_match (struct bp_location *loc1, 
7122                             struct bp_location *loc2)
7123 {
7124   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7125   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7126
7127   /* Both of them must exist.  */
7128   gdb_assert (w1 != NULL);
7129   gdb_assert (w2 != NULL);
7130
7131   /* If the target can evaluate the condition expression in hardware,
7132      then we we need to insert both watchpoints even if they are at
7133      the same place.  Otherwise the watchpoint will only trigger when
7134      the condition of whichever watchpoint was inserted evaluates to
7135      true, not giving a chance for GDB to check the condition of the
7136      other watchpoint.  */
7137   if ((w1->cond_exp
7138        && target_can_accel_watchpoint_condition (loc1->address, 
7139                                                  loc1->length,
7140                                                  loc1->watchpoint_type,
7141                                                  w1->cond_exp))
7142       || (w2->cond_exp
7143           && target_can_accel_watchpoint_condition (loc2->address, 
7144                                                     loc2->length,
7145                                                     loc2->watchpoint_type,
7146                                                     w2->cond_exp)))
7147     return 0;
7148
7149   /* Note that this checks the owner's type, not the location's.  In
7150      case the target does not support read watchpoints, but does
7151      support access watchpoints, we'll have bp_read_watchpoint
7152      watchpoints with hw_access locations.  Those should be considered
7153      duplicates of hw_read locations.  The hw_read locations will
7154      become hw_access locations later.  */
7155   return (loc1->owner->type == loc2->owner->type
7156           && loc1->pspace->aspace == loc2->pspace->aspace
7157           && loc1->address == loc2->address
7158           && loc1->length == loc2->length);
7159 }
7160
7161 /* See breakpoint.h.  */
7162
7163 int
7164 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7165                           struct address_space *aspace2, CORE_ADDR addr2)
7166 {
7167   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7168            || aspace1 == aspace2)
7169           && addr1 == addr2);
7170 }
7171
7172 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7173    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7174    matches ASPACE2.  On targets that have global breakpoints, the address
7175    space doesn't really matter.  */
7176
7177 static int
7178 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7179                                 int len1, struct address_space *aspace2,
7180                                 CORE_ADDR addr2)
7181 {
7182   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7183            || aspace1 == aspace2)
7184           && addr2 >= addr1 && addr2 < addr1 + len1);
7185 }
7186
7187 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7188    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7189    matches the breakpoint's address space.  On targets that have global
7190    breakpoints, the address space doesn't really matter.  */
7191
7192 static int
7193 breakpoint_location_address_match (struct bp_location *bl,
7194                                    struct address_space *aspace,
7195                                    CORE_ADDR addr)
7196 {
7197   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7198                                     aspace, addr)
7199           || (bl->length
7200               && breakpoint_address_match_range (bl->pspace->aspace,
7201                                                  bl->address, bl->length,
7202                                                  aspace, addr)));
7203 }
7204
7205 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7206    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
7207    match happens only if ASPACE matches the breakpoint's address
7208    space.  On targets that have global breakpoints, the address space
7209    doesn't really matter.  */
7210
7211 static int
7212 breakpoint_location_address_range_overlap (struct bp_location *bl,
7213                                            struct address_space *aspace,
7214                                            CORE_ADDR addr, int len)
7215 {
7216   if (gdbarch_has_global_breakpoints (target_gdbarch ())
7217       || bl->pspace->aspace == aspace)
7218     {
7219       int bl_len = bl->length != 0 ? bl->length : 1;
7220
7221       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7222         return 1;
7223     }
7224   return 0;
7225 }
7226
7227 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7228    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7229    true, otherwise returns false.  */
7230
7231 static int
7232 tracepoint_locations_match (struct bp_location *loc1,
7233                             struct bp_location *loc2)
7234 {
7235   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7236     /* Since tracepoint locations are never duplicated with others', tracepoint
7237        locations at the same address of different tracepoints are regarded as
7238        different locations.  */
7239     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7240   else
7241     return 0;
7242 }
7243
7244 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7245    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7246    represent the same location.  */
7247
7248 static int
7249 breakpoint_locations_match (struct bp_location *loc1, 
7250                             struct bp_location *loc2)
7251 {
7252   int hw_point1, hw_point2;
7253
7254   /* Both of them must not be in moribund_locations.  */
7255   gdb_assert (loc1->owner != NULL);
7256   gdb_assert (loc2->owner != NULL);
7257
7258   hw_point1 = is_hardware_watchpoint (loc1->owner);
7259   hw_point2 = is_hardware_watchpoint (loc2->owner);
7260
7261   if (hw_point1 != hw_point2)
7262     return 0;
7263   else if (hw_point1)
7264     return watchpoint_locations_match (loc1, loc2);
7265   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7266     return tracepoint_locations_match (loc1, loc2);
7267   else
7268     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7269     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7270                                      loc2->pspace->aspace, loc2->address)
7271             && loc1->length == loc2->length);
7272 }
7273
7274 static void
7275 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7276                                int bnum, int have_bnum)
7277 {
7278   /* The longest string possibly returned by hex_string_custom
7279      is 50 chars.  These must be at least that big for safety.  */
7280   char astr1[64];
7281   char astr2[64];
7282
7283   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7284   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7285   if (have_bnum)
7286     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7287              bnum, astr1, astr2);
7288   else
7289     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7290 }
7291
7292 /* Adjust a breakpoint's address to account for architectural
7293    constraints on breakpoint placement.  Return the adjusted address.
7294    Note: Very few targets require this kind of adjustment.  For most
7295    targets, this function is simply the identity function.  */
7296
7297 static CORE_ADDR
7298 adjust_breakpoint_address (struct gdbarch *gdbarch,
7299                            CORE_ADDR bpaddr, enum bptype bptype)
7300 {
7301   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7302     {
7303       /* Very few targets need any kind of breakpoint adjustment.  */
7304       return bpaddr;
7305     }
7306   else if (bptype == bp_watchpoint
7307            || bptype == bp_hardware_watchpoint
7308            || bptype == bp_read_watchpoint
7309            || bptype == bp_access_watchpoint
7310            || bptype == bp_catchpoint)
7311     {
7312       /* Watchpoints and the various bp_catch_* eventpoints should not
7313          have their addresses modified.  */
7314       return bpaddr;
7315     }
7316   else if (bptype == bp_single_step)
7317     {
7318       /* Single-step breakpoints should not have their addresses
7319          modified.  If there's any architectural constrain that
7320          applies to this address, then it should have already been
7321          taken into account when the breakpoint was created in the
7322          first place.  If we didn't do this, stepping through e.g.,
7323          Thumb-2 IT blocks would break.  */
7324       return bpaddr;
7325     }
7326   else
7327     {
7328       CORE_ADDR adjusted_bpaddr;
7329
7330       /* Some targets have architectural constraints on the placement
7331          of breakpoint instructions.  Obtain the adjusted address.  */
7332       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7333
7334       /* An adjusted breakpoint address can significantly alter
7335          a user's expectations.  Print a warning if an adjustment
7336          is required.  */
7337       if (adjusted_bpaddr != bpaddr)
7338         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7339
7340       return adjusted_bpaddr;
7341     }
7342 }
7343
7344 void
7345 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7346                   struct breakpoint *owner)
7347 {
7348   memset (loc, 0, sizeof (*loc));
7349
7350   gdb_assert (ops != NULL);
7351
7352   loc->ops = ops;
7353   loc->owner = owner;
7354   loc->cond = NULL;
7355   loc->cond_bytecode = NULL;
7356   loc->shlib_disabled = 0;
7357   loc->enabled = 1;
7358
7359   switch (owner->type)
7360     {
7361     case bp_breakpoint:
7362     case bp_single_step:
7363     case bp_until:
7364     case bp_finish:
7365     case bp_longjmp:
7366     case bp_longjmp_resume:
7367     case bp_longjmp_call_dummy:
7368     case bp_exception:
7369     case bp_exception_resume:
7370     case bp_step_resume:
7371     case bp_hp_step_resume:
7372     case bp_watchpoint_scope:
7373     case bp_call_dummy:
7374     case bp_std_terminate:
7375     case bp_shlib_event:
7376     case bp_thread_event:
7377     case bp_overlay_event:
7378     case bp_jit_event:
7379     case bp_longjmp_master:
7380     case bp_std_terminate_master:
7381     case bp_exception_master:
7382     case bp_gnu_ifunc_resolver:
7383     case bp_gnu_ifunc_resolver_return:
7384     case bp_dprintf:
7385       loc->loc_type = bp_loc_software_breakpoint;
7386       mark_breakpoint_location_modified (loc);
7387       break;
7388     case bp_hardware_breakpoint:
7389       loc->loc_type = bp_loc_hardware_breakpoint;
7390       mark_breakpoint_location_modified (loc);
7391       break;
7392     case bp_hardware_watchpoint:
7393     case bp_read_watchpoint:
7394     case bp_access_watchpoint:
7395       loc->loc_type = bp_loc_hardware_watchpoint;
7396       break;
7397     case bp_watchpoint:
7398     case bp_catchpoint:
7399     case bp_tracepoint:
7400     case bp_fast_tracepoint:
7401     case bp_static_tracepoint:
7402       loc->loc_type = bp_loc_other;
7403       break;
7404     default:
7405       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7406     }
7407
7408   loc->refc = 1;
7409 }
7410
7411 /* Allocate a struct bp_location.  */
7412
7413 static struct bp_location *
7414 allocate_bp_location (struct breakpoint *bpt)
7415 {
7416   return bpt->ops->allocate_location (bpt);
7417 }
7418
7419 static void
7420 free_bp_location (struct bp_location *loc)
7421 {
7422   loc->ops->dtor (loc);
7423   xfree (loc);
7424 }
7425
7426 /* Increment reference count.  */
7427
7428 static void
7429 incref_bp_location (struct bp_location *bl)
7430 {
7431   ++bl->refc;
7432 }
7433
7434 /* Decrement reference count.  If the reference count reaches 0,
7435    destroy the bp_location.  Sets *BLP to NULL.  */
7436
7437 static void
7438 decref_bp_location (struct bp_location **blp)
7439 {
7440   gdb_assert ((*blp)->refc > 0);
7441
7442   if (--(*blp)->refc == 0)
7443     free_bp_location (*blp);
7444   *blp = NULL;
7445 }
7446
7447 /* Add breakpoint B at the end of the global breakpoint chain.  */
7448
7449 static void
7450 add_to_breakpoint_chain (struct breakpoint *b)
7451 {
7452   struct breakpoint *b1;
7453
7454   /* Add this breakpoint to the end of the chain so that a list of
7455      breakpoints will come out in order of increasing numbers.  */
7456
7457   b1 = breakpoint_chain;
7458   if (b1 == 0)
7459     breakpoint_chain = b;
7460   else
7461     {
7462       while (b1->next)
7463         b1 = b1->next;
7464       b1->next = b;
7465     }
7466 }
7467
7468 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7469
7470 static void
7471 init_raw_breakpoint_without_location (struct breakpoint *b,
7472                                       struct gdbarch *gdbarch,
7473                                       enum bptype bptype,
7474                                       const struct breakpoint_ops *ops)
7475 {
7476   memset (b, 0, sizeof (*b));
7477
7478   gdb_assert (ops != NULL);
7479
7480   b->ops = ops;
7481   b->type = bptype;
7482   b->gdbarch = gdbarch;
7483   b->language = current_language->la_language;
7484   b->input_radix = input_radix;
7485   b->thread = -1;
7486   b->enable_state = bp_enabled;
7487   b->next = 0;
7488   b->silent = 0;
7489   b->ignore_count = 0;
7490   b->commands = NULL;
7491   b->frame_id = null_frame_id;
7492   b->condition_not_parsed = 0;
7493   b->py_bp_object = NULL;
7494   b->related_breakpoint = b;
7495   b->location = NULL;
7496 }
7497
7498 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7499    that has type BPTYPE and has no locations as yet.  */
7500
7501 static struct breakpoint *
7502 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7503                                      enum bptype bptype,
7504                                      const struct breakpoint_ops *ops)
7505 {
7506   struct breakpoint *b = XNEW (struct breakpoint);
7507
7508   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7509   add_to_breakpoint_chain (b);
7510   return b;
7511 }
7512
7513 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7514    resolutions should be made as the user specified the location explicitly
7515    enough.  */
7516
7517 static void
7518 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7519 {
7520   gdb_assert (loc->owner != NULL);
7521
7522   if (loc->owner->type == bp_breakpoint
7523       || loc->owner->type == bp_hardware_breakpoint
7524       || is_tracepoint (loc->owner))
7525     {
7526       int is_gnu_ifunc;
7527       const char *function_name;
7528       CORE_ADDR func_addr;
7529
7530       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7531                                           &func_addr, NULL, &is_gnu_ifunc);
7532
7533       if (is_gnu_ifunc && !explicit_loc)
7534         {
7535           struct breakpoint *b = loc->owner;
7536
7537           gdb_assert (loc->pspace == current_program_space);
7538           if (gnu_ifunc_resolve_name (function_name,
7539                                       &loc->requested_address))
7540             {
7541               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7542               loc->address = adjust_breakpoint_address (loc->gdbarch,
7543                                                         loc->requested_address,
7544                                                         b->type);
7545             }
7546           else if (b->type == bp_breakpoint && b->loc == loc
7547                    && loc->next == NULL && b->related_breakpoint == b)
7548             {
7549               /* Create only the whole new breakpoint of this type but do not
7550                  mess more complicated breakpoints with multiple locations.  */
7551               b->type = bp_gnu_ifunc_resolver;
7552               /* Remember the resolver's address for use by the return
7553                  breakpoint.  */
7554               loc->related_address = func_addr;
7555             }
7556         }
7557
7558       if (function_name)
7559         loc->function_name = xstrdup (function_name);
7560     }
7561 }
7562
7563 /* Attempt to determine architecture of location identified by SAL.  */
7564 struct gdbarch *
7565 get_sal_arch (struct symtab_and_line sal)
7566 {
7567   if (sal.section)
7568     return get_objfile_arch (sal.section->objfile);
7569   if (sal.symtab)
7570     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7571
7572   return NULL;
7573 }
7574
7575 /* Low level routine for partially initializing a breakpoint of type
7576    BPTYPE.  The newly created breakpoint's address, section, source
7577    file name, and line number are provided by SAL.
7578
7579    It is expected that the caller will complete the initialization of
7580    the newly created breakpoint struct as well as output any status
7581    information regarding the creation of a new breakpoint.  */
7582
7583 static void
7584 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7585                      struct symtab_and_line sal, enum bptype bptype,
7586                      const struct breakpoint_ops *ops)
7587 {
7588   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7589
7590   add_location_to_breakpoint (b, &sal);
7591
7592   if (bptype != bp_catchpoint)
7593     gdb_assert (sal.pspace != NULL);
7594
7595   /* Store the program space that was used to set the breakpoint,
7596      except for ordinary breakpoints, which are independent of the
7597      program space.  */
7598   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7599     b->pspace = sal.pspace;
7600 }
7601
7602 /* set_raw_breakpoint is a low level routine for allocating and
7603    partially initializing a breakpoint of type BPTYPE.  The newly
7604    created breakpoint's address, section, source file name, and line
7605    number are provided by SAL.  The newly created and partially
7606    initialized breakpoint is added to the breakpoint chain and
7607    is also returned as the value of this function.
7608
7609    It is expected that the caller will complete the initialization of
7610    the newly created breakpoint struct as well as output any status
7611    information regarding the creation of a new breakpoint.  In
7612    particular, set_raw_breakpoint does NOT set the breakpoint
7613    number!  Care should be taken to not allow an error to occur
7614    prior to completing the initialization of the breakpoint.  If this
7615    should happen, a bogus breakpoint will be left on the chain.  */
7616
7617 struct breakpoint *
7618 set_raw_breakpoint (struct gdbarch *gdbarch,
7619                     struct symtab_and_line sal, enum bptype bptype,
7620                     const struct breakpoint_ops *ops)
7621 {
7622   struct breakpoint *b = XNEW (struct breakpoint);
7623
7624   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7625   add_to_breakpoint_chain (b);
7626   return b;
7627 }
7628
7629 /* Call this routine when stepping and nexting to enable a breakpoint
7630    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7631    initiated the operation.  */
7632
7633 void
7634 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7635 {
7636   struct breakpoint *b, *b_tmp;
7637   int thread = tp->global_num;
7638
7639   /* To avoid having to rescan all objfile symbols at every step,
7640      we maintain a list of continually-inserted but always disabled
7641      longjmp "master" breakpoints.  Here, we simply create momentary
7642      clones of those and enable them for the requested thread.  */
7643   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7644     if (b->pspace == current_program_space
7645         && (b->type == bp_longjmp_master
7646             || b->type == bp_exception_master))
7647       {
7648         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7649         struct breakpoint *clone;
7650
7651         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7652            after their removal.  */
7653         clone = momentary_breakpoint_from_master (b, type,
7654                                                   &longjmp_breakpoint_ops, 1);
7655         clone->thread = thread;
7656       }
7657
7658   tp->initiating_frame = frame;
7659 }
7660
7661 /* Delete all longjmp breakpoints from THREAD.  */
7662 void
7663 delete_longjmp_breakpoint (int thread)
7664 {
7665   struct breakpoint *b, *b_tmp;
7666
7667   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7668     if (b->type == bp_longjmp || b->type == bp_exception)
7669       {
7670         if (b->thread == thread)
7671           delete_breakpoint (b);
7672       }
7673 }
7674
7675 void
7676 delete_longjmp_breakpoint_at_next_stop (int thread)
7677 {
7678   struct breakpoint *b, *b_tmp;
7679
7680   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7681     if (b->type == bp_longjmp || b->type == bp_exception)
7682       {
7683         if (b->thread == thread)
7684           b->disposition = disp_del_at_next_stop;
7685       }
7686 }
7687
7688 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7689    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7690    pointer to any of them.  Return NULL if this system cannot place longjmp
7691    breakpoints.  */
7692
7693 struct breakpoint *
7694 set_longjmp_breakpoint_for_call_dummy (void)
7695 {
7696   struct breakpoint *b, *retval = NULL;
7697
7698   ALL_BREAKPOINTS (b)
7699     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7700       {
7701         struct breakpoint *new_b;
7702
7703         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7704                                                   &momentary_breakpoint_ops,
7705                                                   1);
7706         new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7707
7708         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7709
7710         gdb_assert (new_b->related_breakpoint == new_b);
7711         if (retval == NULL)
7712           retval = new_b;
7713         new_b->related_breakpoint = retval;
7714         while (retval->related_breakpoint != new_b->related_breakpoint)
7715           retval = retval->related_breakpoint;
7716         retval->related_breakpoint = new_b;
7717       }
7718
7719   return retval;
7720 }
7721
7722 /* Verify all existing dummy frames and their associated breakpoints for
7723    TP.  Remove those which can no longer be found in the current frame
7724    stack.
7725
7726    You should call this function only at places where it is safe to currently
7727    unwind the whole stack.  Failed stack unwind would discard live dummy
7728    frames.  */
7729
7730 void
7731 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7732 {
7733   struct breakpoint *b, *b_tmp;
7734
7735   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7736     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7737       {
7738         struct breakpoint *dummy_b = b->related_breakpoint;
7739
7740         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7741           dummy_b = dummy_b->related_breakpoint;
7742         if (dummy_b->type != bp_call_dummy
7743             || frame_find_by_id (dummy_b->frame_id) != NULL)
7744           continue;
7745         
7746         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7747
7748         while (b->related_breakpoint != b)
7749           {
7750             if (b_tmp == b->related_breakpoint)
7751               b_tmp = b->related_breakpoint->next;
7752             delete_breakpoint (b->related_breakpoint);
7753           }
7754         delete_breakpoint (b);
7755       }
7756 }
7757
7758 void
7759 enable_overlay_breakpoints (void)
7760 {
7761   struct breakpoint *b;
7762
7763   ALL_BREAKPOINTS (b)
7764     if (b->type == bp_overlay_event)
7765     {
7766       b->enable_state = bp_enabled;
7767       update_global_location_list (UGLL_MAY_INSERT);
7768       overlay_events_enabled = 1;
7769     }
7770 }
7771
7772 void
7773 disable_overlay_breakpoints (void)
7774 {
7775   struct breakpoint *b;
7776
7777   ALL_BREAKPOINTS (b)
7778     if (b->type == bp_overlay_event)
7779     {
7780       b->enable_state = bp_disabled;
7781       update_global_location_list (UGLL_DONT_INSERT);
7782       overlay_events_enabled = 0;
7783     }
7784 }
7785
7786 /* Set an active std::terminate breakpoint for each std::terminate
7787    master breakpoint.  */
7788 void
7789 set_std_terminate_breakpoint (void)
7790 {
7791   struct breakpoint *b, *b_tmp;
7792
7793   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7794     if (b->pspace == current_program_space
7795         && b->type == bp_std_terminate_master)
7796       {
7797         momentary_breakpoint_from_master (b, bp_std_terminate,
7798                                           &momentary_breakpoint_ops, 1);
7799       }
7800 }
7801
7802 /* Delete all the std::terminate breakpoints.  */
7803 void
7804 delete_std_terminate_breakpoint (void)
7805 {
7806   struct breakpoint *b, *b_tmp;
7807
7808   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7809     if (b->type == bp_std_terminate)
7810       delete_breakpoint (b);
7811 }
7812
7813 struct breakpoint *
7814 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7815 {
7816   struct breakpoint *b;
7817
7818   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7819                                   &internal_breakpoint_ops);
7820
7821   b->enable_state = bp_enabled;
7822   /* location has to be used or breakpoint_re_set will delete me.  */
7823   b->location = new_address_location (b->loc->address, NULL, 0);
7824
7825   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7826
7827   return b;
7828 }
7829
7830 struct lang_and_radix
7831   {
7832     enum language lang;
7833     int radix;
7834   };
7835
7836 /* Create a breakpoint for JIT code registration and unregistration.  */
7837
7838 struct breakpoint *
7839 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7840 {
7841   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7842                                      &internal_breakpoint_ops);
7843 }
7844
7845 /* Remove JIT code registration and unregistration breakpoint(s).  */
7846
7847 void
7848 remove_jit_event_breakpoints (void)
7849 {
7850   struct breakpoint *b, *b_tmp;
7851
7852   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7853     if (b->type == bp_jit_event
7854         && b->loc->pspace == current_program_space)
7855       delete_breakpoint (b);
7856 }
7857
7858 void
7859 remove_solib_event_breakpoints (void)
7860 {
7861   struct breakpoint *b, *b_tmp;
7862
7863   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7864     if (b->type == bp_shlib_event
7865         && b->loc->pspace == current_program_space)
7866       delete_breakpoint (b);
7867 }
7868
7869 /* See breakpoint.h.  */
7870
7871 void
7872 remove_solib_event_breakpoints_at_next_stop (void)
7873 {
7874   struct breakpoint *b, *b_tmp;
7875
7876   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7877     if (b->type == bp_shlib_event
7878         && b->loc->pspace == current_program_space)
7879       b->disposition = disp_del_at_next_stop;
7880 }
7881
7882 /* Helper for create_solib_event_breakpoint /
7883    create_and_insert_solib_event_breakpoint.  Allows specifying which
7884    INSERT_MODE to pass through to update_global_location_list.  */
7885
7886 static struct breakpoint *
7887 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7888                                  enum ugll_insert_mode insert_mode)
7889 {
7890   struct breakpoint *b;
7891
7892   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7893                                   &internal_breakpoint_ops);
7894   update_global_location_list_nothrow (insert_mode);
7895   return b;
7896 }
7897
7898 struct breakpoint *
7899 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7900 {
7901   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7902 }
7903
7904 /* See breakpoint.h.  */
7905
7906 struct breakpoint *
7907 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7908 {
7909   struct breakpoint *b;
7910
7911   /* Explicitly tell update_global_location_list to insert
7912      locations.  */
7913   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7914   if (!b->loc->inserted)
7915     {
7916       delete_breakpoint (b);
7917       return NULL;
7918     }
7919   return b;
7920 }
7921
7922 /* Disable any breakpoints that are on code in shared libraries.  Only
7923    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7924
7925 void
7926 disable_breakpoints_in_shlibs (void)
7927 {
7928   struct bp_location *loc, **locp_tmp;
7929
7930   ALL_BP_LOCATIONS (loc, locp_tmp)
7931   {
7932     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7933     struct breakpoint *b = loc->owner;
7934
7935     /* We apply the check to all breakpoints, including disabled for
7936        those with loc->duplicate set.  This is so that when breakpoint
7937        becomes enabled, or the duplicate is removed, gdb will try to
7938        insert all breakpoints.  If we don't set shlib_disabled here,
7939        we'll try to insert those breakpoints and fail.  */
7940     if (((b->type == bp_breakpoint)
7941          || (b->type == bp_jit_event)
7942          || (b->type == bp_hardware_breakpoint)
7943          || (is_tracepoint (b)))
7944         && loc->pspace == current_program_space
7945         && !loc->shlib_disabled
7946         && solib_name_from_address (loc->pspace, loc->address)
7947         )
7948       {
7949         loc->shlib_disabled = 1;
7950       }
7951   }
7952 }
7953
7954 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7955    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7956    disabled ones can just stay disabled.  */
7957
7958 static void
7959 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7960 {
7961   struct bp_location *loc, **locp_tmp;
7962   int disabled_shlib_breaks = 0;
7963
7964   /* SunOS a.out shared libraries are always mapped, so do not
7965      disable breakpoints; they will only be reported as unloaded
7966      through clear_solib when GDB discards its shared library
7967      list.  See clear_solib for more information.  */
7968   if (exec_bfd != NULL
7969       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7970     return;
7971
7972   ALL_BP_LOCATIONS (loc, locp_tmp)
7973   {
7974     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7975     struct breakpoint *b = loc->owner;
7976
7977     if (solib->pspace == loc->pspace
7978         && !loc->shlib_disabled
7979         && (((b->type == bp_breakpoint
7980               || b->type == bp_jit_event
7981               || b->type == bp_hardware_breakpoint)
7982              && (loc->loc_type == bp_loc_hardware_breakpoint
7983                  || loc->loc_type == bp_loc_software_breakpoint))
7984             || is_tracepoint (b))
7985         && solib_contains_address_p (solib, loc->address))
7986       {
7987         loc->shlib_disabled = 1;
7988         /* At this point, we cannot rely on remove_breakpoint
7989            succeeding so we must mark the breakpoint as not inserted
7990            to prevent future errors occurring in remove_breakpoints.  */
7991         loc->inserted = 0;
7992
7993         /* This may cause duplicate notifications for the same breakpoint.  */
7994         observer_notify_breakpoint_modified (b);
7995
7996         if (!disabled_shlib_breaks)
7997           {
7998             target_terminal_ours_for_output ();
7999             warning (_("Temporarily disabling breakpoints "
8000                        "for unloaded shared library \"%s\""),
8001                      solib->so_name);
8002           }
8003         disabled_shlib_breaks = 1;
8004       }
8005   }
8006 }
8007
8008 /* Disable any breakpoints and tracepoints in OBJFILE upon
8009    notification of free_objfile.  Only apply to enabled breakpoints,
8010    disabled ones can just stay disabled.  */
8011
8012 static void
8013 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
8014 {
8015   struct breakpoint *b;
8016
8017   if (objfile == NULL)
8018     return;
8019
8020   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
8021      managed by the user with add-symbol-file/remove-symbol-file.
8022      Similarly to how breakpoints in shared libraries are handled in
8023      response to "nosharedlibrary", mark breakpoints in such modules
8024      shlib_disabled so they end up uninserted on the next global
8025      location list update.  Shared libraries not loaded by the user
8026      aren't handled here -- they're already handled in
8027      disable_breakpoints_in_unloaded_shlib, called by solib.c's
8028      solib_unloaded observer.  We skip objfiles that are not
8029      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
8030      main objfile).  */
8031   if ((objfile->flags & OBJF_SHARED) == 0
8032       || (objfile->flags & OBJF_USERLOADED) == 0)
8033     return;
8034
8035   ALL_BREAKPOINTS (b)
8036     {
8037       struct bp_location *loc;
8038       int bp_modified = 0;
8039
8040       if (!is_breakpoint (b) && !is_tracepoint (b))
8041         continue;
8042
8043       for (loc = b->loc; loc != NULL; loc = loc->next)
8044         {
8045           CORE_ADDR loc_addr = loc->address;
8046
8047           if (loc->loc_type != bp_loc_hardware_breakpoint
8048               && loc->loc_type != bp_loc_software_breakpoint)
8049             continue;
8050
8051           if (loc->shlib_disabled != 0)
8052             continue;
8053
8054           if (objfile->pspace != loc->pspace)
8055             continue;
8056
8057           if (loc->loc_type != bp_loc_hardware_breakpoint
8058               && loc->loc_type != bp_loc_software_breakpoint)
8059             continue;
8060
8061           if (is_addr_in_objfile (loc_addr, objfile))
8062             {
8063               loc->shlib_disabled = 1;
8064               /* At this point, we don't know whether the object was
8065                  unmapped from the inferior or not, so leave the
8066                  inserted flag alone.  We'll handle failure to
8067                  uninsert quietly, in case the object was indeed
8068                  unmapped.  */
8069
8070               mark_breakpoint_location_modified (loc);
8071
8072               bp_modified = 1;
8073             }
8074         }
8075
8076       if (bp_modified)
8077         observer_notify_breakpoint_modified (b);
8078     }
8079 }
8080
8081 /* FORK & VFORK catchpoints.  */
8082
8083 /* An instance of this type is used to represent a fork or vfork
8084    catchpoint.  It includes a "struct breakpoint" as a kind of base
8085    class; users downcast to "struct breakpoint *" when needed.  A
8086    breakpoint is really of this type iff its ops pointer points to
8087    CATCH_FORK_BREAKPOINT_OPS.  */
8088
8089 struct fork_catchpoint
8090 {
8091   /* The base class.  */
8092   struct breakpoint base;
8093
8094   /* Process id of a child process whose forking triggered this
8095      catchpoint.  This field is only valid immediately after this
8096      catchpoint has triggered.  */
8097   ptid_t forked_inferior_pid;
8098 };
8099
8100 /* Implement the "insert" breakpoint_ops method for fork
8101    catchpoints.  */
8102
8103 static int
8104 insert_catch_fork (struct bp_location *bl)
8105 {
8106   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8107 }
8108
8109 /* Implement the "remove" breakpoint_ops method for fork
8110    catchpoints.  */
8111
8112 static int
8113 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8114 {
8115   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8116 }
8117
8118 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8119    catchpoints.  */
8120
8121 static int
8122 breakpoint_hit_catch_fork (const struct bp_location *bl,
8123                            struct address_space *aspace, CORE_ADDR bp_addr,
8124                            const struct target_waitstatus *ws)
8125 {
8126   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8127
8128   if (ws->kind != TARGET_WAITKIND_FORKED)
8129     return 0;
8130
8131   c->forked_inferior_pid = ws->value.related_pid;
8132   return 1;
8133 }
8134
8135 /* Implement the "print_it" breakpoint_ops method for fork
8136    catchpoints.  */
8137
8138 static enum print_stop_action
8139 print_it_catch_fork (bpstat bs)
8140 {
8141   struct ui_out *uiout = current_uiout;
8142   struct breakpoint *b = bs->breakpoint_at;
8143   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8144
8145   annotate_catchpoint (b->number);
8146   maybe_print_thread_hit_breakpoint (uiout);
8147   if (b->disposition == disp_del)
8148     ui_out_text (uiout, "Temporary catchpoint ");
8149   else
8150     ui_out_text (uiout, "Catchpoint ");
8151   if (ui_out_is_mi_like_p (uiout))
8152     {
8153       ui_out_field_string (uiout, "reason",
8154                            async_reason_lookup (EXEC_ASYNC_FORK));
8155       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8156     }
8157   ui_out_field_int (uiout, "bkptno", b->number);
8158   ui_out_text (uiout, " (forked process ");
8159   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8160   ui_out_text (uiout, "), ");
8161   return PRINT_SRC_AND_LOC;
8162 }
8163
8164 /* Implement the "print_one" breakpoint_ops method for fork
8165    catchpoints.  */
8166
8167 static void
8168 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8169 {
8170   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8171   struct value_print_options opts;
8172   struct ui_out *uiout = current_uiout;
8173
8174   get_user_print_options (&opts);
8175
8176   /* Field 4, the address, is omitted (which makes the columns not
8177      line up too nicely with the headers, but the effect is relatively
8178      readable).  */
8179   if (opts.addressprint)
8180     ui_out_field_skip (uiout, "addr");
8181   annotate_field (5);
8182   ui_out_text (uiout, "fork");
8183   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8184     {
8185       ui_out_text (uiout, ", process ");
8186       ui_out_field_int (uiout, "what",
8187                         ptid_get_pid (c->forked_inferior_pid));
8188       ui_out_spaces (uiout, 1);
8189     }
8190
8191   if (ui_out_is_mi_like_p (uiout))
8192     ui_out_field_string (uiout, "catch-type", "fork");
8193 }
8194
8195 /* Implement the "print_mention" breakpoint_ops method for fork
8196    catchpoints.  */
8197
8198 static void
8199 print_mention_catch_fork (struct breakpoint *b)
8200 {
8201   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8202 }
8203
8204 /* Implement the "print_recreate" breakpoint_ops method for fork
8205    catchpoints.  */
8206
8207 static void
8208 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8209 {
8210   fprintf_unfiltered (fp, "catch fork");
8211   print_recreate_thread (b, fp);
8212 }
8213
8214 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8215
8216 static struct breakpoint_ops catch_fork_breakpoint_ops;
8217
8218 /* Implement the "insert" breakpoint_ops method for vfork
8219    catchpoints.  */
8220
8221 static int
8222 insert_catch_vfork (struct bp_location *bl)
8223 {
8224   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8225 }
8226
8227 /* Implement the "remove" breakpoint_ops method for vfork
8228    catchpoints.  */
8229
8230 static int
8231 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8232 {
8233   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8234 }
8235
8236 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8237    catchpoints.  */
8238
8239 static int
8240 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8241                             struct address_space *aspace, CORE_ADDR bp_addr,
8242                             const struct target_waitstatus *ws)
8243 {
8244   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8245
8246   if (ws->kind != TARGET_WAITKIND_VFORKED)
8247     return 0;
8248
8249   c->forked_inferior_pid = ws->value.related_pid;
8250   return 1;
8251 }
8252
8253 /* Implement the "print_it" breakpoint_ops method for vfork
8254    catchpoints.  */
8255
8256 static enum print_stop_action
8257 print_it_catch_vfork (bpstat bs)
8258 {
8259   struct ui_out *uiout = current_uiout;
8260   struct breakpoint *b = bs->breakpoint_at;
8261   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8262
8263   annotate_catchpoint (b->number);
8264   maybe_print_thread_hit_breakpoint (uiout);
8265   if (b->disposition == disp_del)
8266     ui_out_text (uiout, "Temporary catchpoint ");
8267   else
8268     ui_out_text (uiout, "Catchpoint ");
8269   if (ui_out_is_mi_like_p (uiout))
8270     {
8271       ui_out_field_string (uiout, "reason",
8272                            async_reason_lookup (EXEC_ASYNC_VFORK));
8273       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8274     }
8275   ui_out_field_int (uiout, "bkptno", b->number);
8276   ui_out_text (uiout, " (vforked process ");
8277   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8278   ui_out_text (uiout, "), ");
8279   return PRINT_SRC_AND_LOC;
8280 }
8281
8282 /* Implement the "print_one" breakpoint_ops method for vfork
8283    catchpoints.  */
8284
8285 static void
8286 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8287 {
8288   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8289   struct value_print_options opts;
8290   struct ui_out *uiout = current_uiout;
8291
8292   get_user_print_options (&opts);
8293   /* Field 4, the address, is omitted (which makes the columns not
8294      line up too nicely with the headers, but the effect is relatively
8295      readable).  */
8296   if (opts.addressprint)
8297     ui_out_field_skip (uiout, "addr");
8298   annotate_field (5);
8299   ui_out_text (uiout, "vfork");
8300   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8301     {
8302       ui_out_text (uiout, ", process ");
8303       ui_out_field_int (uiout, "what",
8304                         ptid_get_pid (c->forked_inferior_pid));
8305       ui_out_spaces (uiout, 1);
8306     }
8307
8308   if (ui_out_is_mi_like_p (uiout))
8309     ui_out_field_string (uiout, "catch-type", "vfork");
8310 }
8311
8312 /* Implement the "print_mention" breakpoint_ops method for vfork
8313    catchpoints.  */
8314
8315 static void
8316 print_mention_catch_vfork (struct breakpoint *b)
8317 {
8318   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8319 }
8320
8321 /* Implement the "print_recreate" breakpoint_ops method for vfork
8322    catchpoints.  */
8323
8324 static void
8325 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8326 {
8327   fprintf_unfiltered (fp, "catch vfork");
8328   print_recreate_thread (b, fp);
8329 }
8330
8331 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8332
8333 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8334
8335 /* An instance of this type is used to represent an solib catchpoint.
8336    It includes a "struct breakpoint" as a kind of base class; users
8337    downcast to "struct breakpoint *" when needed.  A breakpoint is
8338    really of this type iff its ops pointer points to
8339    CATCH_SOLIB_BREAKPOINT_OPS.  */
8340
8341 struct solib_catchpoint
8342 {
8343   /* The base class.  */
8344   struct breakpoint base;
8345
8346   /* True for "catch load", false for "catch unload".  */
8347   unsigned char is_load;
8348
8349   /* Regular expression to match, if any.  COMPILED is only valid when
8350      REGEX is non-NULL.  */
8351   char *regex;
8352   regex_t compiled;
8353 };
8354
8355 static void
8356 dtor_catch_solib (struct breakpoint *b)
8357 {
8358   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8359
8360   if (self->regex)
8361     regfree (&self->compiled);
8362   xfree (self->regex);
8363
8364   base_breakpoint_ops.dtor (b);
8365 }
8366
8367 static int
8368 insert_catch_solib (struct bp_location *ignore)
8369 {
8370   return 0;
8371 }
8372
8373 static int
8374 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8375 {
8376   return 0;
8377 }
8378
8379 static int
8380 breakpoint_hit_catch_solib (const struct bp_location *bl,
8381                             struct address_space *aspace,
8382                             CORE_ADDR bp_addr,
8383                             const struct target_waitstatus *ws)
8384 {
8385   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8386   struct breakpoint *other;
8387
8388   if (ws->kind == TARGET_WAITKIND_LOADED)
8389     return 1;
8390
8391   ALL_BREAKPOINTS (other)
8392   {
8393     struct bp_location *other_bl;
8394
8395     if (other == bl->owner)
8396       continue;
8397
8398     if (other->type != bp_shlib_event)
8399       continue;
8400
8401     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8402       continue;
8403
8404     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8405       {
8406         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8407           return 1;
8408       }
8409   }
8410
8411   return 0;
8412 }
8413
8414 static void
8415 check_status_catch_solib (struct bpstats *bs)
8416 {
8417   struct solib_catchpoint *self
8418     = (struct solib_catchpoint *) bs->breakpoint_at;
8419   int ix;
8420
8421   if (self->is_load)
8422     {
8423       struct so_list *iter;
8424
8425       for (ix = 0;
8426            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8427                         ix, iter);
8428            ++ix)
8429         {
8430           if (!self->regex
8431               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8432             return;
8433         }
8434     }
8435   else
8436     {
8437       char *iter;
8438
8439       for (ix = 0;
8440            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8441                         ix, iter);
8442            ++ix)
8443         {
8444           if (!self->regex
8445               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8446             return;
8447         }
8448     }
8449
8450   bs->stop = 0;
8451   bs->print_it = print_it_noop;
8452 }
8453
8454 static enum print_stop_action
8455 print_it_catch_solib (bpstat bs)
8456 {
8457   struct breakpoint *b = bs->breakpoint_at;
8458   struct ui_out *uiout = current_uiout;
8459
8460   annotate_catchpoint (b->number);
8461   maybe_print_thread_hit_breakpoint (uiout);
8462   if (b->disposition == disp_del)
8463     ui_out_text (uiout, "Temporary catchpoint ");
8464   else
8465     ui_out_text (uiout, "Catchpoint ");
8466   ui_out_field_int (uiout, "bkptno", b->number);
8467   ui_out_text (uiout, "\n");
8468   if (ui_out_is_mi_like_p (uiout))
8469     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8470   print_solib_event (1);
8471   return PRINT_SRC_AND_LOC;
8472 }
8473
8474 static void
8475 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8476 {
8477   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8478   struct value_print_options opts;
8479   struct ui_out *uiout = current_uiout;
8480   char *msg;
8481
8482   get_user_print_options (&opts);
8483   /* Field 4, the address, is omitted (which makes the columns not
8484      line up too nicely with the headers, but the effect is relatively
8485      readable).  */
8486   if (opts.addressprint)
8487     {
8488       annotate_field (4);
8489       ui_out_field_skip (uiout, "addr");
8490     }
8491
8492   annotate_field (5);
8493   if (self->is_load)
8494     {
8495       if (self->regex)
8496         msg = xstrprintf (_("load of library matching %s"), self->regex);
8497       else
8498         msg = xstrdup (_("load of library"));
8499     }
8500   else
8501     {
8502       if (self->regex)
8503         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8504       else
8505         msg = xstrdup (_("unload of library"));
8506     }
8507   ui_out_field_string (uiout, "what", msg);
8508   xfree (msg);
8509
8510   if (ui_out_is_mi_like_p (uiout))
8511     ui_out_field_string (uiout, "catch-type",
8512                          self->is_load ? "load" : "unload");
8513 }
8514
8515 static void
8516 print_mention_catch_solib (struct breakpoint *b)
8517 {
8518   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8519
8520   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8521                    self->is_load ? "load" : "unload");
8522 }
8523
8524 static void
8525 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8526 {
8527   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8528
8529   fprintf_unfiltered (fp, "%s %s",
8530                       b->disposition == disp_del ? "tcatch" : "catch",
8531                       self->is_load ? "load" : "unload");
8532   if (self->regex)
8533     fprintf_unfiltered (fp, " %s", self->regex);
8534   fprintf_unfiltered (fp, "\n");
8535 }
8536
8537 static struct breakpoint_ops catch_solib_breakpoint_ops;
8538
8539 /* Shared helper function (MI and CLI) for creating and installing
8540    a shared object event catchpoint.  If IS_LOAD is non-zero then
8541    the events to be caught are load events, otherwise they are
8542    unload events.  If IS_TEMP is non-zero the catchpoint is a
8543    temporary one.  If ENABLED is non-zero the catchpoint is
8544    created in an enabled state.  */
8545
8546 void
8547 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8548 {
8549   struct solib_catchpoint *c;
8550   struct gdbarch *gdbarch = get_current_arch ();
8551   struct cleanup *cleanup;
8552
8553   if (!arg)
8554     arg = "";
8555   arg = skip_spaces (arg);
8556
8557   c = XCNEW (struct solib_catchpoint);
8558   cleanup = make_cleanup (xfree, c);
8559
8560   if (*arg != '\0')
8561     {
8562       int errcode;
8563
8564       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8565       if (errcode != 0)
8566         {
8567           char *err = get_regcomp_error (errcode, &c->compiled);
8568
8569           make_cleanup (xfree, err);
8570           error (_("Invalid regexp (%s): %s"), err, arg);
8571         }
8572       c->regex = xstrdup (arg);
8573     }
8574
8575   c->is_load = is_load;
8576   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8577                    &catch_solib_breakpoint_ops);
8578
8579   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8580
8581   discard_cleanups (cleanup);
8582   install_breakpoint (0, &c->base, 1);
8583 }
8584
8585 /* A helper function that does all the work for "catch load" and
8586    "catch unload".  */
8587
8588 static void
8589 catch_load_or_unload (char *arg, int from_tty, int is_load,
8590                       struct cmd_list_element *command)
8591 {
8592   int tempflag;
8593   const int enabled = 1;
8594
8595   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8596
8597   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8598 }
8599
8600 static void
8601 catch_load_command_1 (char *arg, int from_tty,
8602                       struct cmd_list_element *command)
8603 {
8604   catch_load_or_unload (arg, from_tty, 1, command);
8605 }
8606
8607 static void
8608 catch_unload_command_1 (char *arg, int from_tty,
8609                         struct cmd_list_element *command)
8610 {
8611   catch_load_or_unload (arg, from_tty, 0, command);
8612 }
8613
8614 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8615    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8616    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8617    the breakpoint_ops structure associated to the catchpoint.  */
8618
8619 void
8620 init_catchpoint (struct breakpoint *b,
8621                  struct gdbarch *gdbarch, int tempflag,
8622                  char *cond_string,
8623                  const struct breakpoint_ops *ops)
8624 {
8625   struct symtab_and_line sal;
8626
8627   init_sal (&sal);
8628   sal.pspace = current_program_space;
8629
8630   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8631
8632   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8633   b->disposition = tempflag ? disp_del : disp_donttouch;
8634 }
8635
8636 void
8637 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8638 {
8639   add_to_breakpoint_chain (b);
8640   set_breakpoint_number (internal, b);
8641   if (is_tracepoint (b))
8642     set_tracepoint_count (breakpoint_count);
8643   if (!internal)
8644     mention (b);
8645   observer_notify_breakpoint_created (b);
8646
8647   if (update_gll)
8648     update_global_location_list (UGLL_MAY_INSERT);
8649 }
8650
8651 static void
8652 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8653                                     int tempflag, char *cond_string,
8654                                     const struct breakpoint_ops *ops)
8655 {
8656   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8657
8658   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8659
8660   c->forked_inferior_pid = null_ptid;
8661
8662   install_breakpoint (0, &c->base, 1);
8663 }
8664
8665 /* Exec catchpoints.  */
8666
8667 /* An instance of this type is used to represent an exec catchpoint.
8668    It includes a "struct breakpoint" as a kind of base class; users
8669    downcast to "struct breakpoint *" when needed.  A breakpoint is
8670    really of this type iff its ops pointer points to
8671    CATCH_EXEC_BREAKPOINT_OPS.  */
8672
8673 struct exec_catchpoint
8674 {
8675   /* The base class.  */
8676   struct breakpoint base;
8677
8678   /* Filename of a program whose exec triggered this catchpoint.
8679      This field is only valid immediately after this catchpoint has
8680      triggered.  */
8681   char *exec_pathname;
8682 };
8683
8684 /* Implement the "dtor" breakpoint_ops method for exec
8685    catchpoints.  */
8686
8687 static void
8688 dtor_catch_exec (struct breakpoint *b)
8689 {
8690   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8691
8692   xfree (c->exec_pathname);
8693
8694   base_breakpoint_ops.dtor (b);
8695 }
8696
8697 static int
8698 insert_catch_exec (struct bp_location *bl)
8699 {
8700   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8701 }
8702
8703 static int
8704 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8705 {
8706   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8707 }
8708
8709 static int
8710 breakpoint_hit_catch_exec (const struct bp_location *bl,
8711                            struct address_space *aspace, CORE_ADDR bp_addr,
8712                            const struct target_waitstatus *ws)
8713 {
8714   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8715
8716   if (ws->kind != TARGET_WAITKIND_EXECD)
8717     return 0;
8718
8719   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8720   return 1;
8721 }
8722
8723 static enum print_stop_action
8724 print_it_catch_exec (bpstat bs)
8725 {
8726   struct ui_out *uiout = current_uiout;
8727   struct breakpoint *b = bs->breakpoint_at;
8728   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8729
8730   annotate_catchpoint (b->number);
8731   maybe_print_thread_hit_breakpoint (uiout);
8732   if (b->disposition == disp_del)
8733     ui_out_text (uiout, "Temporary catchpoint ");
8734   else
8735     ui_out_text (uiout, "Catchpoint ");
8736   if (ui_out_is_mi_like_p (uiout))
8737     {
8738       ui_out_field_string (uiout, "reason",
8739                            async_reason_lookup (EXEC_ASYNC_EXEC));
8740       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8741     }
8742   ui_out_field_int (uiout, "bkptno", b->number);
8743   ui_out_text (uiout, " (exec'd ");
8744   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8745   ui_out_text (uiout, "), ");
8746
8747   return PRINT_SRC_AND_LOC;
8748 }
8749
8750 static void
8751 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8752 {
8753   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8754   struct value_print_options opts;
8755   struct ui_out *uiout = current_uiout;
8756
8757   get_user_print_options (&opts);
8758
8759   /* Field 4, the address, is omitted (which makes the columns
8760      not line up too nicely with the headers, but the effect
8761      is relatively readable).  */
8762   if (opts.addressprint)
8763     ui_out_field_skip (uiout, "addr");
8764   annotate_field (5);
8765   ui_out_text (uiout, "exec");
8766   if (c->exec_pathname != NULL)
8767     {
8768       ui_out_text (uiout, ", program \"");
8769       ui_out_field_string (uiout, "what", c->exec_pathname);
8770       ui_out_text (uiout, "\" ");
8771     }
8772
8773   if (ui_out_is_mi_like_p (uiout))
8774     ui_out_field_string (uiout, "catch-type", "exec");
8775 }
8776
8777 static void
8778 print_mention_catch_exec (struct breakpoint *b)
8779 {
8780   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8781 }
8782
8783 /* Implement the "print_recreate" breakpoint_ops method for exec
8784    catchpoints.  */
8785
8786 static void
8787 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8788 {
8789   fprintf_unfiltered (fp, "catch exec");
8790   print_recreate_thread (b, fp);
8791 }
8792
8793 static struct breakpoint_ops catch_exec_breakpoint_ops;
8794
8795 static int
8796 hw_breakpoint_used_count (void)
8797 {
8798   int i = 0;
8799   struct breakpoint *b;
8800   struct bp_location *bl;
8801
8802   ALL_BREAKPOINTS (b)
8803   {
8804     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8805       for (bl = b->loc; bl; bl = bl->next)
8806         {
8807           /* Special types of hardware breakpoints may use more than
8808              one register.  */
8809           i += b->ops->resources_needed (bl);
8810         }
8811   }
8812
8813   return i;
8814 }
8815
8816 /* Returns the resources B would use if it were a hardware
8817    watchpoint.  */
8818
8819 static int
8820 hw_watchpoint_use_count (struct breakpoint *b)
8821 {
8822   int i = 0;
8823   struct bp_location *bl;
8824
8825   if (!breakpoint_enabled (b))
8826     return 0;
8827
8828   for (bl = b->loc; bl; bl = bl->next)
8829     {
8830       /* Special types of hardware watchpoints may use more than
8831          one register.  */
8832       i += b->ops->resources_needed (bl);
8833     }
8834
8835   return i;
8836 }
8837
8838 /* Returns the sum the used resources of all hardware watchpoints of
8839    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8840    the sum of the used resources of all hardware watchpoints of other
8841    types _not_ TYPE.  */
8842
8843 static int
8844 hw_watchpoint_used_count_others (struct breakpoint *except,
8845                                  enum bptype type, int *other_type_used)
8846 {
8847   int i = 0;
8848   struct breakpoint *b;
8849
8850   *other_type_used = 0;
8851   ALL_BREAKPOINTS (b)
8852     {
8853       if (b == except)
8854         continue;
8855       if (!breakpoint_enabled (b))
8856         continue;
8857
8858       if (b->type == type)
8859         i += hw_watchpoint_use_count (b);
8860       else if (is_hardware_watchpoint (b))
8861         *other_type_used = 1;
8862     }
8863
8864   return i;
8865 }
8866
8867 void
8868 disable_watchpoints_before_interactive_call_start (void)
8869 {
8870   struct breakpoint *b;
8871
8872   ALL_BREAKPOINTS (b)
8873   {
8874     if (is_watchpoint (b) && breakpoint_enabled (b))
8875       {
8876         b->enable_state = bp_call_disabled;
8877         update_global_location_list (UGLL_DONT_INSERT);
8878       }
8879   }
8880 }
8881
8882 void
8883 enable_watchpoints_after_interactive_call_stop (void)
8884 {
8885   struct breakpoint *b;
8886
8887   ALL_BREAKPOINTS (b)
8888   {
8889     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8890       {
8891         b->enable_state = bp_enabled;
8892         update_global_location_list (UGLL_MAY_INSERT);
8893       }
8894   }
8895 }
8896
8897 void
8898 disable_breakpoints_before_startup (void)
8899 {
8900   current_program_space->executing_startup = 1;
8901   update_global_location_list (UGLL_DONT_INSERT);
8902 }
8903
8904 void
8905 enable_breakpoints_after_startup (void)
8906 {
8907   current_program_space->executing_startup = 0;
8908   breakpoint_re_set ();
8909 }
8910
8911 /* Create a new single-step breakpoint for thread THREAD, with no
8912    locations.  */
8913
8914 static struct breakpoint *
8915 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8916 {
8917   struct breakpoint *b = XNEW (struct breakpoint);
8918
8919   init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
8920                                         &momentary_breakpoint_ops);
8921
8922   b->disposition = disp_donttouch;
8923   b->frame_id = null_frame_id;
8924
8925   b->thread = thread;
8926   gdb_assert (b->thread != 0);
8927
8928   add_to_breakpoint_chain (b);
8929
8930   return b;
8931 }
8932
8933 /* Set a momentary breakpoint of type TYPE at address specified by
8934    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8935    frame.  */
8936
8937 struct breakpoint *
8938 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8939                           struct frame_id frame_id, enum bptype type)
8940 {
8941   struct breakpoint *b;
8942
8943   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8944      tail-called one.  */
8945   gdb_assert (!frame_id_artificial_p (frame_id));
8946
8947   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8948   b->enable_state = bp_enabled;
8949   b->disposition = disp_donttouch;
8950   b->frame_id = frame_id;
8951
8952   /* If we're debugging a multi-threaded program, then we want
8953      momentary breakpoints to be active in only a single thread of
8954      control.  */
8955   if (in_thread_list (inferior_ptid))
8956     b->thread = ptid_to_global_thread_id (inferior_ptid);
8957
8958   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8959
8960   return b;
8961 }
8962
8963 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8964    The new breakpoint will have type TYPE, use OPS as its
8965    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8966
8967 static struct breakpoint *
8968 momentary_breakpoint_from_master (struct breakpoint *orig,
8969                                   enum bptype type,
8970                                   const struct breakpoint_ops *ops,
8971                                   int loc_enabled)
8972 {
8973   struct breakpoint *copy;
8974
8975   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8976   copy->loc = allocate_bp_location (copy);
8977   set_breakpoint_location_function (copy->loc, 1);
8978
8979   copy->loc->gdbarch = orig->loc->gdbarch;
8980   copy->loc->requested_address = orig->loc->requested_address;
8981   copy->loc->address = orig->loc->address;
8982   copy->loc->section = orig->loc->section;
8983   copy->loc->pspace = orig->loc->pspace;
8984   copy->loc->probe = orig->loc->probe;
8985   copy->loc->line_number = orig->loc->line_number;
8986   copy->loc->symtab = orig->loc->symtab;
8987   copy->loc->enabled = loc_enabled;
8988   copy->frame_id = orig->frame_id;
8989   copy->thread = orig->thread;
8990   copy->pspace = orig->pspace;
8991
8992   copy->enable_state = bp_enabled;
8993   copy->disposition = disp_donttouch;
8994   copy->number = internal_breakpoint_number--;
8995
8996   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8997   return copy;
8998 }
8999
9000 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
9001    ORIG is NULL.  */
9002
9003 struct breakpoint *
9004 clone_momentary_breakpoint (struct breakpoint *orig)
9005 {
9006   /* If there's nothing to clone, then return nothing.  */
9007   if (orig == NULL)
9008     return NULL;
9009
9010   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9011 }
9012
9013 struct breakpoint *
9014 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9015                                 enum bptype type)
9016 {
9017   struct symtab_and_line sal;
9018
9019   sal = find_pc_line (pc, 0);
9020   sal.pc = pc;
9021   sal.section = find_pc_overlay (pc);
9022   sal.explicit_pc = 1;
9023
9024   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9025 }
9026 \f
9027
9028 /* Tell the user we have just set a breakpoint B.  */
9029
9030 static void
9031 mention (struct breakpoint *b)
9032 {
9033   b->ops->print_mention (b);
9034   if (ui_out_is_mi_like_p (current_uiout))
9035     return;
9036   printf_filtered ("\n");
9037 }
9038 \f
9039
9040 static int bp_loc_is_permanent (struct bp_location *loc);
9041
9042 static struct bp_location *
9043 add_location_to_breakpoint (struct breakpoint *b,
9044                             const struct symtab_and_line *sal)
9045 {
9046   struct bp_location *loc, **tmp;
9047   CORE_ADDR adjusted_address;
9048   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9049
9050   if (loc_gdbarch == NULL)
9051     loc_gdbarch = b->gdbarch;
9052
9053   /* Adjust the breakpoint's address prior to allocating a location.
9054      Once we call allocate_bp_location(), that mostly uninitialized
9055      location will be placed on the location chain.  Adjustment of the
9056      breakpoint may cause target_read_memory() to be called and we do
9057      not want its scan of the location chain to find a breakpoint and
9058      location that's only been partially initialized.  */
9059   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9060                                                 sal->pc, b->type);
9061
9062   /* Sort the locations by their ADDRESS.  */
9063   loc = allocate_bp_location (b);
9064   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9065        tmp = &((*tmp)->next))
9066     ;
9067   loc->next = *tmp;
9068   *tmp = loc;
9069
9070   loc->requested_address = sal->pc;
9071   loc->address = adjusted_address;
9072   loc->pspace = sal->pspace;
9073   loc->probe.probe = sal->probe;
9074   loc->probe.objfile = sal->objfile;
9075   gdb_assert (loc->pspace != NULL);
9076   loc->section = sal->section;
9077   loc->gdbarch = loc_gdbarch;
9078   loc->line_number = sal->line;
9079   loc->symtab = sal->symtab;
9080
9081   set_breakpoint_location_function (loc,
9082                                     sal->explicit_pc || sal->explicit_line);
9083
9084   /* While by definition, permanent breakpoints are already present in the
9085      code, we don't mark the location as inserted.  Normally one would expect
9086      that GDB could rely on that breakpoint instruction to stop the program,
9087      thus removing the need to insert its own breakpoint, except that executing
9088      the breakpoint instruction can kill the target instead of reporting a
9089      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
9090      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
9091      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
9092      breakpoint be inserted normally results in QEMU knowing about the GDB
9093      breakpoint, and thus trap before the breakpoint instruction is executed.
9094      (If GDB later needs to continue execution past the permanent breakpoint,
9095      it manually increments the PC, thus avoiding executing the breakpoint
9096      instruction.)  */
9097   if (bp_loc_is_permanent (loc))
9098     loc->permanent = 1;
9099
9100   return loc;
9101 }
9102 \f
9103
9104 /* See breakpoint.h.  */
9105
9106 int
9107 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
9108 {
9109   int len;
9110   CORE_ADDR addr;
9111   const gdb_byte *bpoint;
9112   gdb_byte *target_mem;
9113   struct cleanup *cleanup;
9114   int retval = 0;
9115
9116   addr = address;
9117   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9118
9119   /* Software breakpoints unsupported?  */
9120   if (bpoint == NULL)
9121     return 0;
9122
9123   target_mem = (gdb_byte *) alloca (len);
9124
9125   /* Enable the automatic memory restoration from breakpoints while
9126      we read the memory.  Otherwise we could say about our temporary
9127      breakpoints they are permanent.  */
9128   cleanup = make_show_memory_breakpoints_cleanup (0);
9129
9130   if (target_read_memory (address, target_mem, len) == 0
9131       && memcmp (target_mem, bpoint, len) == 0)
9132     retval = 1;
9133
9134   do_cleanups (cleanup);
9135
9136   return retval;
9137 }
9138
9139 /* Return 1 if LOC is pointing to a permanent breakpoint,
9140    return 0 otherwise.  */
9141
9142 static int
9143 bp_loc_is_permanent (struct bp_location *loc)
9144 {
9145   struct cleanup *cleanup;
9146   int retval;
9147
9148   gdb_assert (loc != NULL);
9149
9150   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
9151      attempt to read from the addresses the locations of these breakpoint types
9152      point to.  program_breakpoint_here_p, below, will attempt to read
9153      memory.  */
9154   if (!breakpoint_address_is_meaningful (loc->owner))
9155     return 0;
9156
9157   cleanup = save_current_space_and_thread ();
9158   switch_to_program_space_and_thread (loc->pspace);
9159
9160   retval = program_breakpoint_here_p (loc->gdbarch, loc->address);
9161
9162   do_cleanups (cleanup);
9163
9164   return retval;
9165 }
9166
9167 /* Build a command list for the dprintf corresponding to the current
9168    settings of the dprintf style options.  */
9169
9170 static void
9171 update_dprintf_command_list (struct breakpoint *b)
9172 {
9173   char *dprintf_args = b->extra_string;
9174   char *printf_line = NULL;
9175
9176   if (!dprintf_args)
9177     return;
9178
9179   dprintf_args = skip_spaces (dprintf_args);
9180
9181   /* Allow a comma, as it may have terminated a location, but don't
9182      insist on it.  */
9183   if (*dprintf_args == ',')
9184     ++dprintf_args;
9185   dprintf_args = skip_spaces (dprintf_args);
9186
9187   if (*dprintf_args != '"')
9188     error (_("Bad format string, missing '\"'."));
9189
9190   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9191     printf_line = xstrprintf ("printf %s", dprintf_args);
9192   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9193     {
9194       if (!dprintf_function)
9195         error (_("No function supplied for dprintf call"));
9196
9197       if (dprintf_channel && strlen (dprintf_channel) > 0)
9198         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9199                                   dprintf_function,
9200                                   dprintf_channel,
9201                                   dprintf_args);
9202       else
9203         printf_line = xstrprintf ("call (void) %s (%s)",
9204                                   dprintf_function,
9205                                   dprintf_args);
9206     }
9207   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9208     {
9209       if (target_can_run_breakpoint_commands ())
9210         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9211       else
9212         {
9213           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9214           printf_line = xstrprintf ("printf %s", dprintf_args);
9215         }
9216     }
9217   else
9218     internal_error (__FILE__, __LINE__,
9219                     _("Invalid dprintf style."));
9220
9221   gdb_assert (printf_line != NULL);
9222   /* Manufacture a printf sequence.  */
9223   {
9224     struct command_line *printf_cmd_line = XNEW (struct command_line);
9225
9226     printf_cmd_line->control_type = simple_control;
9227     printf_cmd_line->body_count = 0;
9228     printf_cmd_line->body_list = NULL;
9229     printf_cmd_line->next = NULL;
9230     printf_cmd_line->line = printf_line;
9231
9232     breakpoint_set_commands (b, printf_cmd_line);
9233   }
9234 }
9235
9236 /* Update all dprintf commands, making their command lists reflect
9237    current style settings.  */
9238
9239 static void
9240 update_dprintf_commands (char *args, int from_tty,
9241                          struct cmd_list_element *c)
9242 {
9243   struct breakpoint *b;
9244
9245   ALL_BREAKPOINTS (b)
9246     {
9247       if (b->type == bp_dprintf)
9248         update_dprintf_command_list (b);
9249     }
9250 }
9251
9252 /* Create a breakpoint with SAL as location.  Use LOCATION
9253    as a description of the location, and COND_STRING
9254    as condition expression.  If LOCATION is NULL then create an
9255    "address location" from the address in the SAL.  */
9256
9257 static void
9258 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9259                      struct symtabs_and_lines sals,
9260                      struct event_location *location,
9261                      char *filter, char *cond_string,
9262                      char *extra_string,
9263                      enum bptype type, enum bpdisp disposition,
9264                      int thread, int task, int ignore_count,
9265                      const struct breakpoint_ops *ops, int from_tty,
9266                      int enabled, int internal, unsigned flags,
9267                      int display_canonical)
9268 {
9269   int i;
9270
9271   if (type == bp_hardware_breakpoint)
9272     {
9273       int target_resources_ok;
9274
9275       i = hw_breakpoint_used_count ();
9276       target_resources_ok =
9277         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9278                                             i + 1, 0);
9279       if (target_resources_ok == 0)
9280         error (_("No hardware breakpoint support in the target."));
9281       else if (target_resources_ok < 0)
9282         error (_("Hardware breakpoints used exceeds limit."));
9283     }
9284
9285   gdb_assert (sals.nelts > 0);
9286
9287   for (i = 0; i < sals.nelts; ++i)
9288     {
9289       struct symtab_and_line sal = sals.sals[i];
9290       struct bp_location *loc;
9291
9292       if (from_tty)
9293         {
9294           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9295           if (!loc_gdbarch)
9296             loc_gdbarch = gdbarch;
9297
9298           describe_other_breakpoints (loc_gdbarch,
9299                                       sal.pspace, sal.pc, sal.section, thread);
9300         }
9301
9302       if (i == 0)
9303         {
9304           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9305           b->thread = thread;
9306           b->task = task;
9307
9308           b->cond_string = cond_string;
9309           b->extra_string = extra_string;
9310           b->ignore_count = ignore_count;
9311           b->enable_state = enabled ? bp_enabled : bp_disabled;
9312           b->disposition = disposition;
9313
9314           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9315             b->loc->inserted = 1;
9316
9317           if (type == bp_static_tracepoint)
9318             {
9319               struct tracepoint *t = (struct tracepoint *) b;
9320               struct static_tracepoint_marker marker;
9321
9322               if (strace_marker_p (b))
9323                 {
9324                   /* We already know the marker exists, otherwise, we
9325                      wouldn't see a sal for it.  */
9326                   const char *p = &event_location_to_string (b->location)[3];
9327                   const char *endp;
9328                   char *marker_str;
9329
9330                   p = skip_spaces_const (p);
9331
9332                   endp = skip_to_space_const (p);
9333
9334                   marker_str = savestring (p, endp - p);
9335                   t->static_trace_marker_id = marker_str;
9336
9337                   printf_filtered (_("Probed static tracepoint "
9338                                      "marker \"%s\"\n"),
9339                                    t->static_trace_marker_id);
9340                 }
9341               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9342                 {
9343                   t->static_trace_marker_id = xstrdup (marker.str_id);
9344                   release_static_tracepoint_marker (&marker);
9345
9346                   printf_filtered (_("Probed static tracepoint "
9347                                      "marker \"%s\"\n"),
9348                                    t->static_trace_marker_id);
9349                 }
9350               else
9351                 warning (_("Couldn't determine the static "
9352                            "tracepoint marker to probe"));
9353             }
9354
9355           loc = b->loc;
9356         }
9357       else
9358         {
9359           loc = add_location_to_breakpoint (b, &sal);
9360           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9361             loc->inserted = 1;
9362         }
9363
9364       if (b->cond_string)
9365         {
9366           const char *arg = b->cond_string;
9367
9368           loc->cond = parse_exp_1 (&arg, loc->address,
9369                                    block_for_pc (loc->address), 0);
9370           if (*arg)
9371               error (_("Garbage '%s' follows condition"), arg);
9372         }
9373
9374       /* Dynamic printf requires and uses additional arguments on the
9375          command line, otherwise it's an error.  */
9376       if (type == bp_dprintf)
9377         {
9378           if (b->extra_string)
9379             update_dprintf_command_list (b);
9380           else
9381             error (_("Format string required"));
9382         }
9383       else if (b->extra_string)
9384         error (_("Garbage '%s' at end of command"), b->extra_string);
9385     }
9386
9387   b->display_canonical = display_canonical;
9388   if (location != NULL)
9389     b->location = location;
9390   else
9391     {
9392       const char *addr_string = NULL;
9393       int addr_string_len = 0;
9394
9395       if (location != NULL)
9396         addr_string = event_location_to_string (location);
9397       if (addr_string != NULL)
9398         addr_string_len = strlen (addr_string);
9399
9400       b->location = new_address_location (b->loc->address,
9401                                           addr_string, addr_string_len);
9402     }
9403   b->filter = filter;
9404 }
9405
9406 static void
9407 create_breakpoint_sal (struct gdbarch *gdbarch,
9408                        struct symtabs_and_lines sals,
9409                        struct event_location *location,
9410                        char *filter, char *cond_string,
9411                        char *extra_string,
9412                        enum bptype type, enum bpdisp disposition,
9413                        int thread, int task, int ignore_count,
9414                        const struct breakpoint_ops *ops, int from_tty,
9415                        int enabled, int internal, unsigned flags,
9416                        int display_canonical)
9417 {
9418   struct breakpoint *b;
9419   struct cleanup *old_chain;
9420
9421   if (is_tracepoint_type (type))
9422     {
9423       struct tracepoint *t;
9424
9425       t = XCNEW (struct tracepoint);
9426       b = &t->base;
9427     }
9428   else
9429     b = XNEW (struct breakpoint);
9430
9431   old_chain = make_cleanup (xfree, b);
9432
9433   init_breakpoint_sal (b, gdbarch,
9434                        sals, location,
9435                        filter, cond_string, extra_string,
9436                        type, disposition,
9437                        thread, task, ignore_count,
9438                        ops, from_tty,
9439                        enabled, internal, flags,
9440                        display_canonical);
9441   discard_cleanups (old_chain);
9442
9443   install_breakpoint (internal, b, 0);
9444 }
9445
9446 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9447    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9448    value.  COND_STRING, if not NULL, specified the condition to be
9449    used for all breakpoints.  Essentially the only case where
9450    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9451    function.  In that case, it's still not possible to specify
9452    separate conditions for different overloaded functions, so
9453    we take just a single condition string.
9454    
9455    NOTE: If the function succeeds, the caller is expected to cleanup
9456    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9457    array contents).  If the function fails (error() is called), the
9458    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9459    COND and SALS arrays and each of those arrays contents.  */
9460
9461 static void
9462 create_breakpoints_sal (struct gdbarch *gdbarch,
9463                         struct linespec_result *canonical,
9464                         char *cond_string, char *extra_string,
9465                         enum bptype type, enum bpdisp disposition,
9466                         int thread, int task, int ignore_count,
9467                         const struct breakpoint_ops *ops, int from_tty,
9468                         int enabled, int internal, unsigned flags)
9469 {
9470   int i;
9471   struct linespec_sals *lsal;
9472
9473   if (canonical->pre_expanded)
9474     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9475
9476   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9477     {
9478       /* Note that 'location' can be NULL in the case of a plain
9479          'break', without arguments.  */
9480       struct event_location *location
9481         = (canonical->location != NULL
9482            ? copy_event_location (canonical->location) : NULL);
9483       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9484       struct cleanup *inner = make_cleanup_delete_event_location (location);
9485
9486       make_cleanup (xfree, filter_string);
9487       create_breakpoint_sal (gdbarch, lsal->sals,
9488                              location,
9489                              filter_string,
9490                              cond_string, extra_string,
9491                              type, disposition,
9492                              thread, task, ignore_count, ops,
9493                              from_tty, enabled, internal, flags,
9494                              canonical->special_display);
9495       discard_cleanups (inner);
9496     }
9497 }
9498
9499 /* Parse LOCATION which is assumed to be a SAL specification possibly
9500    followed by conditionals.  On return, SALS contains an array of SAL
9501    addresses found.  LOCATION points to the end of the SAL (for
9502    linespec locations).
9503
9504    The array and the line spec strings are allocated on the heap, it is
9505    the caller's responsibility to free them.  */
9506
9507 static void
9508 parse_breakpoint_sals (const struct event_location *location,
9509                        struct linespec_result *canonical)
9510 {
9511   struct symtab_and_line cursal;
9512
9513   if (event_location_type (location) == LINESPEC_LOCATION)
9514     {
9515       const char *address = get_linespec_location (location);
9516
9517       if (address == NULL)
9518         {
9519           /* The last displayed codepoint, if it's valid, is our default
9520              breakpoint address.  */
9521           if (last_displayed_sal_is_valid ())
9522             {
9523               struct linespec_sals lsal;
9524               struct symtab_and_line sal;
9525               CORE_ADDR pc;
9526
9527               init_sal (&sal);          /* Initialize to zeroes.  */
9528               lsal.sals.sals = XNEW (struct symtab_and_line);
9529
9530               /* Set sal's pspace, pc, symtab, and line to the values
9531                  corresponding to the last call to print_frame_info.
9532                  Be sure to reinitialize LINE with NOTCURRENT == 0
9533                  as the breakpoint line number is inappropriate otherwise.
9534                  find_pc_line would adjust PC, re-set it back.  */
9535               get_last_displayed_sal (&sal);
9536               pc = sal.pc;
9537               sal = find_pc_line (pc, 0);
9538
9539               /* "break" without arguments is equivalent to "break *PC"
9540                  where PC is the last displayed codepoint's address.  So
9541                  make sure to set sal.explicit_pc to prevent GDB from
9542                  trying to expand the list of sals to include all other
9543                  instances with the same symtab and line.  */
9544               sal.pc = pc;
9545               sal.explicit_pc = 1;
9546
9547               lsal.sals.sals[0] = sal;
9548               lsal.sals.nelts = 1;
9549               lsal.canonical = NULL;
9550
9551               VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9552               return;
9553             }
9554           else
9555             error (_("No default breakpoint address now."));
9556         }
9557     }
9558
9559   /* Force almost all breakpoints to be in terms of the
9560      current_source_symtab (which is decode_line_1's default).
9561      This should produce the results we want almost all of the
9562      time while leaving default_breakpoint_* alone.
9563
9564      ObjC: However, don't match an Objective-C method name which
9565      may have a '+' or '-' succeeded by a '['.  */
9566   cursal = get_current_source_symtab_and_line ();
9567   if (last_displayed_sal_is_valid ())
9568     {
9569       const char *address = NULL;
9570
9571       if (event_location_type (location) == LINESPEC_LOCATION)
9572         address = get_linespec_location (location);
9573
9574       if (!cursal.symtab
9575           || (address != NULL
9576               && strchr ("+-", address[0]) != NULL
9577               && address[1] != '['))
9578         {
9579           decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9580                             get_last_displayed_symtab (),
9581                             get_last_displayed_line (),
9582                             canonical, NULL, NULL);
9583           return;
9584         }
9585     }
9586
9587   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9588                     cursal.symtab, cursal.line, canonical, NULL, NULL);
9589 }
9590
9591
9592 /* Convert each SAL into a real PC.  Verify that the PC can be
9593    inserted as a breakpoint.  If it can't throw an error.  */
9594
9595 static void
9596 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9597 {    
9598   int i;
9599
9600   for (i = 0; i < sals->nelts; i++)
9601     resolve_sal_pc (&sals->sals[i]);
9602 }
9603
9604 /* Fast tracepoints may have restrictions on valid locations.  For
9605    instance, a fast tracepoint using a jump instead of a trap will
9606    likely have to overwrite more bytes than a trap would, and so can
9607    only be placed where the instruction is longer than the jump, or a
9608    multi-instruction sequence does not have a jump into the middle of
9609    it, etc.  */
9610
9611 static void
9612 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9613                             struct symtabs_and_lines *sals)
9614 {
9615   int i, rslt;
9616   struct symtab_and_line *sal;
9617   char *msg;
9618   struct cleanup *old_chain;
9619
9620   for (i = 0; i < sals->nelts; i++)
9621     {
9622       struct gdbarch *sarch;
9623
9624       sal = &sals->sals[i];
9625
9626       sarch = get_sal_arch (*sal);
9627       /* We fall back to GDBARCH if there is no architecture
9628          associated with SAL.  */
9629       if (sarch == NULL)
9630         sarch = gdbarch;
9631       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc, &msg);
9632       old_chain = make_cleanup (xfree, msg);
9633
9634       if (!rslt)
9635         error (_("May not have a fast tracepoint at 0x%s%s"),
9636                paddress (sarch, sal->pc), (msg ? msg : ""));
9637
9638       do_cleanups (old_chain);
9639     }
9640 }
9641
9642 /* Given TOK, a string specification of condition and thread, as
9643    accepted by the 'break' command, extract the condition
9644    string and thread number and set *COND_STRING and *THREAD.
9645    PC identifies the context at which the condition should be parsed.
9646    If no condition is found, *COND_STRING is set to NULL.
9647    If no thread is found, *THREAD is set to -1.  */
9648
9649 static void
9650 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9651                            char **cond_string, int *thread, int *task,
9652                            char **rest)
9653 {
9654   *cond_string = NULL;
9655   *thread = -1;
9656   *task = 0;
9657   *rest = NULL;
9658
9659   while (tok && *tok)
9660     {
9661       const char *end_tok;
9662       int toklen;
9663       const char *cond_start = NULL;
9664       const char *cond_end = NULL;
9665
9666       tok = skip_spaces_const (tok);
9667
9668       if ((*tok == '"' || *tok == ',') && rest)
9669         {
9670           *rest = savestring (tok, strlen (tok));
9671           return;
9672         }
9673
9674       end_tok = skip_to_space_const (tok);
9675
9676       toklen = end_tok - tok;
9677
9678       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9679         {
9680           struct expression *expr;
9681
9682           tok = cond_start = end_tok + 1;
9683           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9684           xfree (expr);
9685           cond_end = tok;
9686           *cond_string = savestring (cond_start, cond_end - cond_start);
9687         }
9688       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9689         {
9690           const char *tmptok;
9691           struct thread_info *thr;
9692
9693           tok = end_tok + 1;
9694           thr = parse_thread_id (tok, &tmptok);
9695           if (tok == tmptok)
9696             error (_("Junk after thread keyword."));
9697           *thread = thr->global_num;
9698           tok = tmptok;
9699         }
9700       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9701         {
9702           char *tmptok;
9703
9704           tok = end_tok + 1;
9705           *task = strtol (tok, &tmptok, 0);
9706           if (tok == tmptok)
9707             error (_("Junk after task keyword."));
9708           if (!valid_task_id (*task))
9709             error (_("Unknown task %d."), *task);
9710           tok = tmptok;
9711         }
9712       else if (rest)
9713         {
9714           *rest = savestring (tok, strlen (tok));
9715           return;
9716         }
9717       else
9718         error (_("Junk at end of arguments."));
9719     }
9720 }
9721
9722 /* Decode a static tracepoint marker spec.  */
9723
9724 static struct symtabs_and_lines
9725 decode_static_tracepoint_spec (const char **arg_p)
9726 {
9727   VEC(static_tracepoint_marker_p) *markers = NULL;
9728   struct symtabs_and_lines sals;
9729   struct cleanup *old_chain;
9730   const char *p = &(*arg_p)[3];
9731   const char *endp;
9732   char *marker_str;
9733   int i;
9734
9735   p = skip_spaces_const (p);
9736
9737   endp = skip_to_space_const (p);
9738
9739   marker_str = savestring (p, endp - p);
9740   old_chain = make_cleanup (xfree, marker_str);
9741
9742   markers = target_static_tracepoint_markers_by_strid (marker_str);
9743   if (VEC_empty(static_tracepoint_marker_p, markers))
9744     error (_("No known static tracepoint marker named %s"), marker_str);
9745
9746   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9747   sals.sals = XNEWVEC (struct symtab_and_line, sals.nelts);
9748
9749   for (i = 0; i < sals.nelts; i++)
9750     {
9751       struct static_tracepoint_marker *marker;
9752
9753       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9754
9755       init_sal (&sals.sals[i]);
9756
9757       sals.sals[i] = find_pc_line (marker->address, 0);
9758       sals.sals[i].pc = marker->address;
9759
9760       release_static_tracepoint_marker (marker);
9761     }
9762
9763   do_cleanups (old_chain);
9764
9765   *arg_p = endp;
9766   return sals;
9767 }
9768
9769 /* See breakpoint.h.  */
9770
9771 int
9772 create_breakpoint (struct gdbarch *gdbarch,
9773                    const struct event_location *location, char *cond_string,
9774                    int thread, char *extra_string,
9775                    int parse_extra,
9776                    int tempflag, enum bptype type_wanted,
9777                    int ignore_count,
9778                    enum auto_boolean pending_break_support,
9779                    const struct breakpoint_ops *ops,
9780                    int from_tty, int enabled, int internal,
9781                    unsigned flags)
9782 {
9783   struct linespec_result canonical;
9784   struct cleanup *old_chain;
9785   struct cleanup *bkpt_chain = NULL;
9786   int pending = 0;
9787   int task = 0;
9788   int prev_bkpt_count = breakpoint_count;
9789
9790   gdb_assert (ops != NULL);
9791
9792   /* If extra_string isn't useful, set it to NULL.  */
9793   if (extra_string != NULL && *extra_string == '\0')
9794     extra_string = NULL;
9795
9796   init_linespec_result (&canonical);
9797
9798   TRY
9799     {
9800       ops->create_sals_from_location (location, &canonical, type_wanted);
9801     }
9802   CATCH (e, RETURN_MASK_ERROR)
9803     {
9804       /* If caller is interested in rc value from parse, set
9805          value.  */
9806       if (e.error == NOT_FOUND_ERROR)
9807         {
9808           /* If pending breakpoint support is turned off, throw
9809              error.  */
9810
9811           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9812             throw_exception (e);
9813
9814           exception_print (gdb_stderr, e);
9815
9816           /* If pending breakpoint support is auto query and the user
9817              selects no, then simply return the error code.  */
9818           if (pending_break_support == AUTO_BOOLEAN_AUTO
9819               && !nquery (_("Make %s pending on future shared library load? "),
9820                           bptype_string (type_wanted)))
9821             return 0;
9822
9823           /* At this point, either the user was queried about setting
9824              a pending breakpoint and selected yes, or pending
9825              breakpoint behavior is on and thus a pending breakpoint
9826              is defaulted on behalf of the user.  */
9827           pending = 1;
9828         }
9829       else
9830         throw_exception (e);
9831     }
9832   END_CATCH
9833
9834   if (!pending && VEC_empty (linespec_sals, canonical.sals))
9835     return 0;
9836
9837   /* Create a chain of things that always need to be cleaned up.  */
9838   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9839
9840   /* ----------------------------- SNIP -----------------------------
9841      Anything added to the cleanup chain beyond this point is assumed
9842      to be part of a breakpoint.  If the breakpoint create succeeds
9843      then the memory is not reclaimed.  */
9844   bkpt_chain = make_cleanup (null_cleanup, 0);
9845
9846   /* Resolve all line numbers to PC's and verify that the addresses
9847      are ok for the target.  */
9848   if (!pending)
9849     {
9850       int ix;
9851       struct linespec_sals *iter;
9852
9853       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9854         breakpoint_sals_to_pc (&iter->sals);
9855     }
9856
9857   /* Fast tracepoints may have additional restrictions on location.  */
9858   if (!pending && type_wanted == bp_fast_tracepoint)
9859     {
9860       int ix;
9861       struct linespec_sals *iter;
9862
9863       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9864         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9865     }
9866
9867   /* Verify that condition can be parsed, before setting any
9868      breakpoints.  Allocate a separate condition expression for each
9869      breakpoint.  */
9870   if (!pending)
9871     {
9872       if (parse_extra)
9873         {
9874           char *rest;
9875           struct linespec_sals *lsal;
9876
9877           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9878
9879           /* Here we only parse 'arg' to separate condition
9880              from thread number, so parsing in context of first
9881              sal is OK.  When setting the breakpoint we'll
9882              re-parse it in context of each sal.  */
9883
9884           find_condition_and_thread (extra_string, lsal->sals.sals[0].pc,
9885                                      &cond_string, &thread, &task, &rest);
9886           if (cond_string)
9887             make_cleanup (xfree, cond_string);
9888           if (rest)
9889             make_cleanup (xfree, rest);
9890           if (rest)
9891             extra_string = rest;
9892           else
9893             extra_string = NULL;
9894         }
9895       else
9896         {
9897           if (type_wanted != bp_dprintf
9898               && extra_string != NULL && *extra_string != '\0')
9899                 error (_("Garbage '%s' at end of location"), extra_string);
9900
9901           /* Create a private copy of condition string.  */
9902           if (cond_string)
9903             {
9904               cond_string = xstrdup (cond_string);
9905               make_cleanup (xfree, cond_string);
9906             }
9907           /* Create a private copy of any extra string.  */
9908           if (extra_string)
9909             {
9910               extra_string = xstrdup (extra_string);
9911               make_cleanup (xfree, extra_string);
9912             }
9913         }
9914
9915       ops->create_breakpoints_sal (gdbarch, &canonical,
9916                                    cond_string, extra_string, type_wanted,
9917                                    tempflag ? disp_del : disp_donttouch,
9918                                    thread, task, ignore_count, ops,
9919                                    from_tty, enabled, internal, flags);
9920     }
9921   else
9922     {
9923       struct breakpoint *b;
9924
9925       if (is_tracepoint_type (type_wanted))
9926         {
9927           struct tracepoint *t;
9928
9929           t = XCNEW (struct tracepoint);
9930           b = &t->base;
9931         }
9932       else
9933         b = XNEW (struct breakpoint);
9934
9935       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9936       b->location = copy_event_location (location);
9937
9938       if (parse_extra)
9939         b->cond_string = NULL;
9940       else
9941         {
9942           /* Create a private copy of condition string.  */
9943           if (cond_string)
9944             {
9945               cond_string = xstrdup (cond_string);
9946               make_cleanup (xfree, cond_string);
9947             }
9948           b->cond_string = cond_string;
9949           b->thread = thread;
9950         }
9951
9952       /* Create a private copy of any extra string.  */
9953       if (extra_string != NULL)
9954         {
9955           extra_string = xstrdup (extra_string);
9956           make_cleanup (xfree, extra_string);
9957         }
9958       b->extra_string = extra_string;
9959       b->ignore_count = ignore_count;
9960       b->disposition = tempflag ? disp_del : disp_donttouch;
9961       b->condition_not_parsed = 1;
9962       b->enable_state = enabled ? bp_enabled : bp_disabled;
9963       if ((type_wanted != bp_breakpoint
9964            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9965         b->pspace = current_program_space;
9966
9967       install_breakpoint (internal, b, 0);
9968     }
9969   
9970   if (VEC_length (linespec_sals, canonical.sals) > 1)
9971     {
9972       warning (_("Multiple breakpoints were set.\nUse the "
9973                  "\"delete\" command to delete unwanted breakpoints."));
9974       prev_breakpoint_count = prev_bkpt_count;
9975     }
9976
9977   /* That's it.  Discard the cleanups for data inserted into the
9978      breakpoint.  */
9979   discard_cleanups (bkpt_chain);
9980   /* But cleanup everything else.  */
9981   do_cleanups (old_chain);
9982
9983   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9984   update_global_location_list (UGLL_MAY_INSERT);
9985
9986   return 1;
9987 }
9988
9989 /* Set a breakpoint.
9990    ARG is a string describing breakpoint address,
9991    condition, and thread.
9992    FLAG specifies if a breakpoint is hardware on,
9993    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9994    and BP_TEMPFLAG.  */
9995
9996 static void
9997 break_command_1 (char *arg, int flag, int from_tty)
9998 {
9999   int tempflag = flag & BP_TEMPFLAG;
10000   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10001                              ? bp_hardware_breakpoint
10002                              : bp_breakpoint);
10003   struct breakpoint_ops *ops;
10004   struct event_location *location;
10005   struct cleanup *cleanup;
10006
10007   location = string_to_event_location (&arg, current_language);
10008   cleanup = make_cleanup_delete_event_location (location);
10009
10010   /* Matching breakpoints on probes.  */
10011   if (location != NULL
10012       && event_location_type (location) == PROBE_LOCATION)
10013     ops = &bkpt_probe_breakpoint_ops;
10014   else
10015     ops = &bkpt_breakpoint_ops;
10016
10017   create_breakpoint (get_current_arch (),
10018                      location,
10019                      NULL, 0, arg, 1 /* parse arg */,
10020                      tempflag, type_wanted,
10021                      0 /* Ignore count */,
10022                      pending_break_support,
10023                      ops,
10024                      from_tty,
10025                      1 /* enabled */,
10026                      0 /* internal */,
10027                      0);
10028   do_cleanups (cleanup);
10029 }
10030
10031 /* Helper function for break_command_1 and disassemble_command.  */
10032
10033 void
10034 resolve_sal_pc (struct symtab_and_line *sal)
10035 {
10036   CORE_ADDR pc;
10037
10038   if (sal->pc == 0 && sal->symtab != NULL)
10039     {
10040       if (!find_line_pc (sal->symtab, sal->line, &pc))
10041         error (_("No line %d in file \"%s\"."),
10042                sal->line, symtab_to_filename_for_display (sal->symtab));
10043       sal->pc = pc;
10044
10045       /* If this SAL corresponds to a breakpoint inserted using a line
10046          number, then skip the function prologue if necessary.  */
10047       if (sal->explicit_line)
10048         skip_prologue_sal (sal);
10049     }
10050
10051   if (sal->section == 0 && sal->symtab != NULL)
10052     {
10053       const struct blockvector *bv;
10054       const struct block *b;
10055       struct symbol *sym;
10056
10057       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
10058                                     SYMTAB_COMPUNIT (sal->symtab));
10059       if (bv != NULL)
10060         {
10061           sym = block_linkage_function (b);
10062           if (sym != NULL)
10063             {
10064               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
10065               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
10066                                                  sym);
10067             }
10068           else
10069             {
10070               /* It really is worthwhile to have the section, so we'll
10071                  just have to look harder. This case can be executed
10072                  if we have line numbers but no functions (as can
10073                  happen in assembly source).  */
10074
10075               struct bound_minimal_symbol msym;
10076               struct cleanup *old_chain = save_current_space_and_thread ();
10077
10078               switch_to_program_space_and_thread (sal->pspace);
10079
10080               msym = lookup_minimal_symbol_by_pc (sal->pc);
10081               if (msym.minsym)
10082                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10083
10084               do_cleanups (old_chain);
10085             }
10086         }
10087     }
10088 }
10089
10090 void
10091 break_command (char *arg, int from_tty)
10092 {
10093   break_command_1 (arg, 0, from_tty);
10094 }
10095
10096 void
10097 tbreak_command (char *arg, int from_tty)
10098 {
10099   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10100 }
10101
10102 static void
10103 hbreak_command (char *arg, int from_tty)
10104 {
10105   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10106 }
10107
10108 static void
10109 thbreak_command (char *arg, int from_tty)
10110 {
10111   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10112 }
10113
10114 static void
10115 stop_command (char *arg, int from_tty)
10116 {
10117   printf_filtered (_("Specify the type of breakpoint to set.\n\
10118 Usage: stop in <function | address>\n\
10119        stop at <line>\n"));
10120 }
10121
10122 static void
10123 stopin_command (char *arg, int from_tty)
10124 {
10125   int badInput = 0;
10126
10127   if (arg == (char *) NULL)
10128     badInput = 1;
10129   else if (*arg != '*')
10130     {
10131       char *argptr = arg;
10132       int hasColon = 0;
10133
10134       /* Look for a ':'.  If this is a line number specification, then
10135          say it is bad, otherwise, it should be an address or
10136          function/method name.  */
10137       while (*argptr && !hasColon)
10138         {
10139           hasColon = (*argptr == ':');
10140           argptr++;
10141         }
10142
10143       if (hasColon)
10144         badInput = (*argptr != ':');    /* Not a class::method */
10145       else
10146         badInput = isdigit (*arg);      /* a simple line number */
10147     }
10148
10149   if (badInput)
10150     printf_filtered (_("Usage: stop in <function | address>\n"));
10151   else
10152     break_command_1 (arg, 0, from_tty);
10153 }
10154
10155 static void
10156 stopat_command (char *arg, int from_tty)
10157 {
10158   int badInput = 0;
10159
10160   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10161     badInput = 1;
10162   else
10163     {
10164       char *argptr = arg;
10165       int hasColon = 0;
10166
10167       /* Look for a ':'.  If there is a '::' then get out, otherwise
10168          it is probably a line number.  */
10169       while (*argptr && !hasColon)
10170         {
10171           hasColon = (*argptr == ':');
10172           argptr++;
10173         }
10174
10175       if (hasColon)
10176         badInput = (*argptr == ':');    /* we have class::method */
10177       else
10178         badInput = !isdigit (*arg);     /* not a line number */
10179     }
10180
10181   if (badInput)
10182     printf_filtered (_("Usage: stop at <line>\n"));
10183   else
10184     break_command_1 (arg, 0, from_tty);
10185 }
10186
10187 /* The dynamic printf command is mostly like a regular breakpoint, but
10188    with a prewired command list consisting of a single output command,
10189    built from extra arguments supplied on the dprintf command
10190    line.  */
10191
10192 static void
10193 dprintf_command (char *arg, int from_tty)
10194 {
10195   struct event_location *location;
10196   struct cleanup *cleanup;
10197
10198   location = string_to_event_location (&arg, current_language);
10199   cleanup = make_cleanup_delete_event_location (location);
10200
10201   /* If non-NULL, ARG should have been advanced past the location;
10202      the next character must be ','.  */
10203   if (arg != NULL)
10204     {
10205       if (arg[0] != ',' || arg[1] == '\0')
10206         error (_("Format string required"));
10207       else
10208         {
10209           /* Skip the comma.  */
10210           ++arg;
10211         }
10212     }
10213
10214   create_breakpoint (get_current_arch (),
10215                      location,
10216                      NULL, 0, arg, 1 /* parse arg */,
10217                      0, bp_dprintf,
10218                      0 /* Ignore count */,
10219                      pending_break_support,
10220                      &dprintf_breakpoint_ops,
10221                      from_tty,
10222                      1 /* enabled */,
10223                      0 /* internal */,
10224                      0);
10225   do_cleanups (cleanup);
10226 }
10227
10228 static void
10229 agent_printf_command (char *arg, int from_tty)
10230 {
10231   error (_("May only run agent-printf on the target"));
10232 }
10233
10234 /* Implement the "breakpoint_hit" breakpoint_ops method for
10235    ranged breakpoints.  */
10236
10237 static int
10238 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10239                                   struct address_space *aspace,
10240                                   CORE_ADDR bp_addr,
10241                                   const struct target_waitstatus *ws)
10242 {
10243   if (ws->kind != TARGET_WAITKIND_STOPPED
10244       || ws->value.sig != GDB_SIGNAL_TRAP)
10245     return 0;
10246
10247   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10248                                          bl->length, aspace, bp_addr);
10249 }
10250
10251 /* Implement the "resources_needed" breakpoint_ops method for
10252    ranged breakpoints.  */
10253
10254 static int
10255 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10256 {
10257   return target_ranged_break_num_registers ();
10258 }
10259
10260 /* Implement the "print_it" breakpoint_ops method for
10261    ranged breakpoints.  */
10262
10263 static enum print_stop_action
10264 print_it_ranged_breakpoint (bpstat bs)
10265 {
10266   struct breakpoint *b = bs->breakpoint_at;
10267   struct bp_location *bl = b->loc;
10268   struct ui_out *uiout = current_uiout;
10269
10270   gdb_assert (b->type == bp_hardware_breakpoint);
10271
10272   /* Ranged breakpoints have only one location.  */
10273   gdb_assert (bl && bl->next == NULL);
10274
10275   annotate_breakpoint (b->number);
10276
10277   maybe_print_thread_hit_breakpoint (uiout);
10278
10279   if (b->disposition == disp_del)
10280     ui_out_text (uiout, "Temporary ranged breakpoint ");
10281   else
10282     ui_out_text (uiout, "Ranged breakpoint ");
10283   if (ui_out_is_mi_like_p (uiout))
10284     {
10285       ui_out_field_string (uiout, "reason",
10286                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10287       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10288     }
10289   ui_out_field_int (uiout, "bkptno", b->number);
10290   ui_out_text (uiout, ", ");
10291
10292   return PRINT_SRC_AND_LOC;
10293 }
10294
10295 /* Implement the "print_one" breakpoint_ops method for
10296    ranged breakpoints.  */
10297
10298 static void
10299 print_one_ranged_breakpoint (struct breakpoint *b,
10300                              struct bp_location **last_loc)
10301 {
10302   struct bp_location *bl = b->loc;
10303   struct value_print_options opts;
10304   struct ui_out *uiout = current_uiout;
10305
10306   /* Ranged breakpoints have only one location.  */
10307   gdb_assert (bl && bl->next == NULL);
10308
10309   get_user_print_options (&opts);
10310
10311   if (opts.addressprint)
10312     /* We don't print the address range here, it will be printed later
10313        by print_one_detail_ranged_breakpoint.  */
10314     ui_out_field_skip (uiout, "addr");
10315   annotate_field (5);
10316   print_breakpoint_location (b, bl);
10317   *last_loc = bl;
10318 }
10319
10320 /* Implement the "print_one_detail" breakpoint_ops method for
10321    ranged breakpoints.  */
10322
10323 static void
10324 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10325                                     struct ui_out *uiout)
10326 {
10327   CORE_ADDR address_start, address_end;
10328   struct bp_location *bl = b->loc;
10329   struct ui_file *stb = mem_fileopen ();
10330   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10331
10332   gdb_assert (bl);
10333
10334   address_start = bl->address;
10335   address_end = address_start + bl->length - 1;
10336
10337   ui_out_text (uiout, "\taddress range: ");
10338   fprintf_unfiltered (stb, "[%s, %s]",
10339                       print_core_address (bl->gdbarch, address_start),
10340                       print_core_address (bl->gdbarch, address_end));
10341   ui_out_field_stream (uiout, "addr", stb);
10342   ui_out_text (uiout, "\n");
10343
10344   do_cleanups (cleanup);
10345 }
10346
10347 /* Implement the "print_mention" breakpoint_ops method for
10348    ranged breakpoints.  */
10349
10350 static void
10351 print_mention_ranged_breakpoint (struct breakpoint *b)
10352 {
10353   struct bp_location *bl = b->loc;
10354   struct ui_out *uiout = current_uiout;
10355
10356   gdb_assert (bl);
10357   gdb_assert (b->type == bp_hardware_breakpoint);
10358
10359   if (ui_out_is_mi_like_p (uiout))
10360     return;
10361
10362   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10363                    b->number, paddress (bl->gdbarch, bl->address),
10364                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10365 }
10366
10367 /* Implement the "print_recreate" breakpoint_ops method for
10368    ranged breakpoints.  */
10369
10370 static void
10371 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10372 {
10373   fprintf_unfiltered (fp, "break-range %s, %s",
10374                       event_location_to_string (b->location),
10375                       event_location_to_string (b->location_range_end));
10376   print_recreate_thread (b, fp);
10377 }
10378
10379 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10380
10381 static struct breakpoint_ops ranged_breakpoint_ops;
10382
10383 /* Find the address where the end of the breakpoint range should be
10384    placed, given the SAL of the end of the range.  This is so that if
10385    the user provides a line number, the end of the range is set to the
10386    last instruction of the given line.  */
10387
10388 static CORE_ADDR
10389 find_breakpoint_range_end (struct symtab_and_line sal)
10390 {
10391   CORE_ADDR end;
10392
10393   /* If the user provided a PC value, use it.  Otherwise,
10394      find the address of the end of the given location.  */
10395   if (sal.explicit_pc)
10396     end = sal.pc;
10397   else
10398     {
10399       int ret;
10400       CORE_ADDR start;
10401
10402       ret = find_line_pc_range (sal, &start, &end);
10403       if (!ret)
10404         error (_("Could not find location of the end of the range."));
10405
10406       /* find_line_pc_range returns the start of the next line.  */
10407       end--;
10408     }
10409
10410   return end;
10411 }
10412
10413 /* Implement the "break-range" CLI command.  */
10414
10415 static void
10416 break_range_command (char *arg, int from_tty)
10417 {
10418   char *arg_start, *addr_string_start;
10419   struct linespec_result canonical_start, canonical_end;
10420   int bp_count, can_use_bp, length;
10421   CORE_ADDR end;
10422   struct breakpoint *b;
10423   struct symtab_and_line sal_start, sal_end;
10424   struct cleanup *cleanup_bkpt;
10425   struct linespec_sals *lsal_start, *lsal_end;
10426   struct event_location *start_location, *end_location;
10427
10428   /* We don't support software ranged breakpoints.  */
10429   if (target_ranged_break_num_registers () < 0)
10430     error (_("This target does not support hardware ranged breakpoints."));
10431
10432   bp_count = hw_breakpoint_used_count ();
10433   bp_count += target_ranged_break_num_registers ();
10434   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10435                                                    bp_count, 0);
10436   if (can_use_bp < 0)
10437     error (_("Hardware breakpoints used exceeds limit."));
10438
10439   arg = skip_spaces (arg);
10440   if (arg == NULL || arg[0] == '\0')
10441     error(_("No address range specified."));
10442
10443   init_linespec_result (&canonical_start);
10444
10445   arg_start = arg;
10446   start_location = string_to_event_location (&arg, current_language);
10447   cleanup_bkpt = make_cleanup_delete_event_location (start_location);
10448   parse_breakpoint_sals (start_location, &canonical_start);
10449   make_cleanup_destroy_linespec_result (&canonical_start);
10450
10451   if (arg[0] != ',')
10452     error (_("Too few arguments."));
10453   else if (VEC_empty (linespec_sals, canonical_start.sals))
10454     error (_("Could not find location of the beginning of the range."));
10455
10456   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10457
10458   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10459       || lsal_start->sals.nelts != 1)
10460     error (_("Cannot create a ranged breakpoint with multiple locations."));
10461
10462   sal_start = lsal_start->sals.sals[0];
10463   addr_string_start = savestring (arg_start, arg - arg_start);
10464   make_cleanup (xfree, addr_string_start);
10465
10466   arg++;        /* Skip the comma.  */
10467   arg = skip_spaces (arg);
10468
10469   /* Parse the end location.  */
10470
10471   init_linespec_result (&canonical_end);
10472   arg_start = arg;
10473
10474   /* We call decode_line_full directly here instead of using
10475      parse_breakpoint_sals because we need to specify the start location's
10476      symtab and line as the default symtab and line for the end of the
10477      range.  This makes it possible to have ranges like "foo.c:27, +14",
10478      where +14 means 14 lines from the start location.  */
10479   end_location = string_to_event_location (&arg, current_language);
10480   make_cleanup_delete_event_location (end_location);
10481   decode_line_full (end_location, DECODE_LINE_FUNFIRSTLINE, NULL,
10482                     sal_start.symtab, sal_start.line,
10483                     &canonical_end, NULL, NULL);
10484
10485   make_cleanup_destroy_linespec_result (&canonical_end);
10486
10487   if (VEC_empty (linespec_sals, canonical_end.sals))
10488     error (_("Could not find location of the end of the range."));
10489
10490   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10491   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10492       || lsal_end->sals.nelts != 1)
10493     error (_("Cannot create a ranged breakpoint with multiple locations."));
10494
10495   sal_end = lsal_end->sals.sals[0];
10496
10497   end = find_breakpoint_range_end (sal_end);
10498   if (sal_start.pc > end)
10499     error (_("Invalid address range, end precedes start."));
10500
10501   length = end - sal_start.pc + 1;
10502   if (length < 0)
10503     /* Length overflowed.  */
10504     error (_("Address range too large."));
10505   else if (length == 1)
10506     {
10507       /* This range is simple enough to be handled by
10508          the `hbreak' command.  */
10509       hbreak_command (addr_string_start, 1);
10510
10511       do_cleanups (cleanup_bkpt);
10512
10513       return;
10514     }
10515
10516   /* Now set up the breakpoint.  */
10517   b = set_raw_breakpoint (get_current_arch (), sal_start,
10518                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10519   set_breakpoint_count (breakpoint_count + 1);
10520   b->number = breakpoint_count;
10521   b->disposition = disp_donttouch;
10522   b->location = copy_event_location (start_location);
10523   b->location_range_end = copy_event_location (end_location);
10524   b->loc->length = length;
10525
10526   do_cleanups (cleanup_bkpt);
10527
10528   mention (b);
10529   observer_notify_breakpoint_created (b);
10530   update_global_location_list (UGLL_MAY_INSERT);
10531 }
10532
10533 /*  Return non-zero if EXP is verified as constant.  Returned zero
10534     means EXP is variable.  Also the constant detection may fail for
10535     some constant expressions and in such case still falsely return
10536     zero.  */
10537
10538 static int
10539 watchpoint_exp_is_const (const struct expression *exp)
10540 {
10541   int i = exp->nelts;
10542
10543   while (i > 0)
10544     {
10545       int oplenp, argsp;
10546
10547       /* We are only interested in the descriptor of each element.  */
10548       operator_length (exp, i, &oplenp, &argsp);
10549       i -= oplenp;
10550
10551       switch (exp->elts[i].opcode)
10552         {
10553         case BINOP_ADD:
10554         case BINOP_SUB:
10555         case BINOP_MUL:
10556         case BINOP_DIV:
10557         case BINOP_REM:
10558         case BINOP_MOD:
10559         case BINOP_LSH:
10560         case BINOP_RSH:
10561         case BINOP_LOGICAL_AND:
10562         case BINOP_LOGICAL_OR:
10563         case BINOP_BITWISE_AND:
10564         case BINOP_BITWISE_IOR:
10565         case BINOP_BITWISE_XOR:
10566         case BINOP_EQUAL:
10567         case BINOP_NOTEQUAL:
10568         case BINOP_LESS:
10569         case BINOP_GTR:
10570         case BINOP_LEQ:
10571         case BINOP_GEQ:
10572         case BINOP_REPEAT:
10573         case BINOP_COMMA:
10574         case BINOP_EXP:
10575         case BINOP_MIN:
10576         case BINOP_MAX:
10577         case BINOP_INTDIV:
10578         case BINOP_CONCAT:
10579         case TERNOP_COND:
10580         case TERNOP_SLICE:
10581
10582         case OP_LONG:
10583         case OP_DOUBLE:
10584         case OP_DECFLOAT:
10585         case OP_LAST:
10586         case OP_COMPLEX:
10587         case OP_STRING:
10588         case OP_ARRAY:
10589         case OP_TYPE:
10590         case OP_TYPEOF:
10591         case OP_DECLTYPE:
10592         case OP_TYPEID:
10593         case OP_NAME:
10594         case OP_OBJC_NSSTRING:
10595
10596         case UNOP_NEG:
10597         case UNOP_LOGICAL_NOT:
10598         case UNOP_COMPLEMENT:
10599         case UNOP_ADDR:
10600         case UNOP_HIGH:
10601         case UNOP_CAST:
10602
10603         case UNOP_CAST_TYPE:
10604         case UNOP_REINTERPRET_CAST:
10605         case UNOP_DYNAMIC_CAST:
10606           /* Unary, binary and ternary operators: We have to check
10607              their operands.  If they are constant, then so is the
10608              result of that operation.  For instance, if A and B are
10609              determined to be constants, then so is "A + B".
10610
10611              UNOP_IND is one exception to the rule above, because the
10612              value of *ADDR is not necessarily a constant, even when
10613              ADDR is.  */
10614           break;
10615
10616         case OP_VAR_VALUE:
10617           /* Check whether the associated symbol is a constant.
10618
10619              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10620              possible that a buggy compiler could mark a variable as
10621              constant even when it is not, and TYPE_CONST would return
10622              true in this case, while SYMBOL_CLASS wouldn't.
10623
10624              We also have to check for function symbols because they
10625              are always constant.  */
10626           {
10627             struct symbol *s = exp->elts[i + 2].symbol;
10628
10629             if (SYMBOL_CLASS (s) != LOC_BLOCK
10630                 && SYMBOL_CLASS (s) != LOC_CONST
10631                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10632               return 0;
10633             break;
10634           }
10635
10636         /* The default action is to return 0 because we are using
10637            the optimistic approach here: If we don't know something,
10638            then it is not a constant.  */
10639         default:
10640           return 0;
10641         }
10642     }
10643
10644   return 1;
10645 }
10646
10647 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10648
10649 static void
10650 dtor_watchpoint (struct breakpoint *self)
10651 {
10652   struct watchpoint *w = (struct watchpoint *) self;
10653
10654   xfree (w->cond_exp);
10655   xfree (w->exp);
10656   xfree (w->exp_string);
10657   xfree (w->exp_string_reparse);
10658   value_free (w->val);
10659
10660   base_breakpoint_ops.dtor (self);
10661 }
10662
10663 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10664
10665 static void
10666 re_set_watchpoint (struct breakpoint *b)
10667 {
10668   struct watchpoint *w = (struct watchpoint *) b;
10669
10670   /* Watchpoint can be either on expression using entirely global
10671      variables, or it can be on local variables.
10672
10673      Watchpoints of the first kind are never auto-deleted, and even
10674      persist across program restarts.  Since they can use variables
10675      from shared libraries, we need to reparse expression as libraries
10676      are loaded and unloaded.
10677
10678      Watchpoints on local variables can also change meaning as result
10679      of solib event.  For example, if a watchpoint uses both a local
10680      and a global variables in expression, it's a local watchpoint,
10681      but unloading of a shared library will make the expression
10682      invalid.  This is not a very common use case, but we still
10683      re-evaluate expression, to avoid surprises to the user.
10684
10685      Note that for local watchpoints, we re-evaluate it only if
10686      watchpoints frame id is still valid.  If it's not, it means the
10687      watchpoint is out of scope and will be deleted soon.  In fact,
10688      I'm not sure we'll ever be called in this case.
10689
10690      If a local watchpoint's frame id is still valid, then
10691      w->exp_valid_block is likewise valid, and we can safely use it.
10692
10693      Don't do anything about disabled watchpoints, since they will be
10694      reevaluated again when enabled.  */
10695   update_watchpoint (w, 1 /* reparse */);
10696 }
10697
10698 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10699
10700 static int
10701 insert_watchpoint (struct bp_location *bl)
10702 {
10703   struct watchpoint *w = (struct watchpoint *) bl->owner;
10704   int length = w->exact ? 1 : bl->length;
10705
10706   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10707                                    w->cond_exp);
10708 }
10709
10710 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10711
10712 static int
10713 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10714 {
10715   struct watchpoint *w = (struct watchpoint *) bl->owner;
10716   int length = w->exact ? 1 : bl->length;
10717
10718   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10719                                    w->cond_exp);
10720 }
10721
10722 static int
10723 breakpoint_hit_watchpoint (const struct bp_location *bl,
10724                            struct address_space *aspace, CORE_ADDR bp_addr,
10725                            const struct target_waitstatus *ws)
10726 {
10727   struct breakpoint *b = bl->owner;
10728   struct watchpoint *w = (struct watchpoint *) b;
10729
10730   /* Continuable hardware watchpoints are treated as non-existent if the
10731      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10732      some data address).  Otherwise gdb won't stop on a break instruction
10733      in the code (not from a breakpoint) when a hardware watchpoint has
10734      been defined.  Also skip watchpoints which we know did not trigger
10735      (did not match the data address).  */
10736   if (is_hardware_watchpoint (b)
10737       && w->watchpoint_triggered == watch_triggered_no)
10738     return 0;
10739
10740   return 1;
10741 }
10742
10743 static void
10744 check_status_watchpoint (bpstat bs)
10745 {
10746   gdb_assert (is_watchpoint (bs->breakpoint_at));
10747
10748   bpstat_check_watchpoint (bs);
10749 }
10750
10751 /* Implement the "resources_needed" breakpoint_ops method for
10752    hardware watchpoints.  */
10753
10754 static int
10755 resources_needed_watchpoint (const struct bp_location *bl)
10756 {
10757   struct watchpoint *w = (struct watchpoint *) bl->owner;
10758   int length = w->exact? 1 : bl->length;
10759
10760   return target_region_ok_for_hw_watchpoint (bl->address, length);
10761 }
10762
10763 /* Implement the "works_in_software_mode" breakpoint_ops method for
10764    hardware watchpoints.  */
10765
10766 static int
10767 works_in_software_mode_watchpoint (const struct breakpoint *b)
10768 {
10769   /* Read and access watchpoints only work with hardware support.  */
10770   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10771 }
10772
10773 static enum print_stop_action
10774 print_it_watchpoint (bpstat bs)
10775 {
10776   struct cleanup *old_chain;
10777   struct breakpoint *b;
10778   struct ui_file *stb;
10779   enum print_stop_action result;
10780   struct watchpoint *w;
10781   struct ui_out *uiout = current_uiout;
10782
10783   gdb_assert (bs->bp_location_at != NULL);
10784
10785   b = bs->breakpoint_at;
10786   w = (struct watchpoint *) b;
10787
10788   stb = mem_fileopen ();
10789   old_chain = make_cleanup_ui_file_delete (stb);
10790
10791   annotate_watchpoint (b->number);
10792   maybe_print_thread_hit_breakpoint (uiout);
10793
10794   switch (b->type)
10795     {
10796     case bp_watchpoint:
10797     case bp_hardware_watchpoint:
10798       if (ui_out_is_mi_like_p (uiout))
10799         ui_out_field_string
10800           (uiout, "reason",
10801            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10802       mention (b);
10803       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10804       ui_out_text (uiout, "\nOld value = ");
10805       watchpoint_value_print (bs->old_val, stb);
10806       ui_out_field_stream (uiout, "old", stb);
10807       ui_out_text (uiout, "\nNew value = ");
10808       watchpoint_value_print (w->val, stb);
10809       ui_out_field_stream (uiout, "new", stb);
10810       ui_out_text (uiout, "\n");
10811       /* More than one watchpoint may have been triggered.  */
10812       result = PRINT_UNKNOWN;
10813       break;
10814
10815     case bp_read_watchpoint:
10816       if (ui_out_is_mi_like_p (uiout))
10817         ui_out_field_string
10818           (uiout, "reason",
10819            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10820       mention (b);
10821       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10822       ui_out_text (uiout, "\nValue = ");
10823       watchpoint_value_print (w->val, stb);
10824       ui_out_field_stream (uiout, "value", stb);
10825       ui_out_text (uiout, "\n");
10826       result = PRINT_UNKNOWN;
10827       break;
10828
10829     case bp_access_watchpoint:
10830       if (bs->old_val != NULL)
10831         {
10832           if (ui_out_is_mi_like_p (uiout))
10833             ui_out_field_string
10834               (uiout, "reason",
10835                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10836           mention (b);
10837           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10838           ui_out_text (uiout, "\nOld value = ");
10839           watchpoint_value_print (bs->old_val, stb);
10840           ui_out_field_stream (uiout, "old", stb);
10841           ui_out_text (uiout, "\nNew value = ");
10842         }
10843       else
10844         {
10845           mention (b);
10846           if (ui_out_is_mi_like_p (uiout))
10847             ui_out_field_string
10848               (uiout, "reason",
10849                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10850           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10851           ui_out_text (uiout, "\nValue = ");
10852         }
10853       watchpoint_value_print (w->val, stb);
10854       ui_out_field_stream (uiout, "new", stb);
10855       ui_out_text (uiout, "\n");
10856       result = PRINT_UNKNOWN;
10857       break;
10858     default:
10859       result = PRINT_UNKNOWN;
10860     }
10861
10862   do_cleanups (old_chain);
10863   return result;
10864 }
10865
10866 /* Implement the "print_mention" breakpoint_ops method for hardware
10867    watchpoints.  */
10868
10869 static void
10870 print_mention_watchpoint (struct breakpoint *b)
10871 {
10872   struct cleanup *ui_out_chain;
10873   struct watchpoint *w = (struct watchpoint *) b;
10874   struct ui_out *uiout = current_uiout;
10875
10876   switch (b->type)
10877     {
10878     case bp_watchpoint:
10879       ui_out_text (uiout, "Watchpoint ");
10880       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10881       break;
10882     case bp_hardware_watchpoint:
10883       ui_out_text (uiout, "Hardware watchpoint ");
10884       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10885       break;
10886     case bp_read_watchpoint:
10887       ui_out_text (uiout, "Hardware read watchpoint ");
10888       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10889       break;
10890     case bp_access_watchpoint:
10891       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10892       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10893       break;
10894     default:
10895       internal_error (__FILE__, __LINE__,
10896                       _("Invalid hardware watchpoint type."));
10897     }
10898
10899   ui_out_field_int (uiout, "number", b->number);
10900   ui_out_text (uiout, ": ");
10901   ui_out_field_string (uiout, "exp", w->exp_string);
10902   do_cleanups (ui_out_chain);
10903 }
10904
10905 /* Implement the "print_recreate" breakpoint_ops method for
10906    watchpoints.  */
10907
10908 static void
10909 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10910 {
10911   struct watchpoint *w = (struct watchpoint *) b;
10912
10913   switch (b->type)
10914     {
10915     case bp_watchpoint:
10916     case bp_hardware_watchpoint:
10917       fprintf_unfiltered (fp, "watch");
10918       break;
10919     case bp_read_watchpoint:
10920       fprintf_unfiltered (fp, "rwatch");
10921       break;
10922     case bp_access_watchpoint:
10923       fprintf_unfiltered (fp, "awatch");
10924       break;
10925     default:
10926       internal_error (__FILE__, __LINE__,
10927                       _("Invalid watchpoint type."));
10928     }
10929
10930   fprintf_unfiltered (fp, " %s", w->exp_string);
10931   print_recreate_thread (b, fp);
10932 }
10933
10934 /* Implement the "explains_signal" breakpoint_ops method for
10935    watchpoints.  */
10936
10937 static int
10938 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10939 {
10940   /* A software watchpoint cannot cause a signal other than
10941      GDB_SIGNAL_TRAP.  */
10942   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10943     return 0;
10944
10945   return 1;
10946 }
10947
10948 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10949
10950 static struct breakpoint_ops watchpoint_breakpoint_ops;
10951
10952 /* Implement the "insert" breakpoint_ops method for
10953    masked hardware watchpoints.  */
10954
10955 static int
10956 insert_masked_watchpoint (struct bp_location *bl)
10957 {
10958   struct watchpoint *w = (struct watchpoint *) bl->owner;
10959
10960   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10961                                         bl->watchpoint_type);
10962 }
10963
10964 /* Implement the "remove" breakpoint_ops method for
10965    masked hardware watchpoints.  */
10966
10967 static int
10968 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10969 {
10970   struct watchpoint *w = (struct watchpoint *) bl->owner;
10971
10972   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10973                                         bl->watchpoint_type);
10974 }
10975
10976 /* Implement the "resources_needed" breakpoint_ops method for
10977    masked hardware watchpoints.  */
10978
10979 static int
10980 resources_needed_masked_watchpoint (const struct bp_location *bl)
10981 {
10982   struct watchpoint *w = (struct watchpoint *) bl->owner;
10983
10984   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10985 }
10986
10987 /* Implement the "works_in_software_mode" breakpoint_ops method for
10988    masked hardware watchpoints.  */
10989
10990 static int
10991 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10992 {
10993   return 0;
10994 }
10995
10996 /* Implement the "print_it" breakpoint_ops method for
10997    masked hardware watchpoints.  */
10998
10999 static enum print_stop_action
11000 print_it_masked_watchpoint (bpstat bs)
11001 {
11002   struct breakpoint *b = bs->breakpoint_at;
11003   struct ui_out *uiout = current_uiout;
11004
11005   /* Masked watchpoints have only one location.  */
11006   gdb_assert (b->loc && b->loc->next == NULL);
11007
11008   annotate_watchpoint (b->number);
11009   maybe_print_thread_hit_breakpoint (uiout);
11010
11011   switch (b->type)
11012     {
11013     case bp_hardware_watchpoint:
11014       if (ui_out_is_mi_like_p (uiout))
11015         ui_out_field_string
11016           (uiout, "reason",
11017            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11018       break;
11019
11020     case bp_read_watchpoint:
11021       if (ui_out_is_mi_like_p (uiout))
11022         ui_out_field_string
11023           (uiout, "reason",
11024            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11025       break;
11026
11027     case bp_access_watchpoint:
11028       if (ui_out_is_mi_like_p (uiout))
11029         ui_out_field_string
11030           (uiout, "reason",
11031            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11032       break;
11033     default:
11034       internal_error (__FILE__, __LINE__,
11035                       _("Invalid hardware watchpoint type."));
11036     }
11037
11038   mention (b);
11039   ui_out_text (uiout, _("\n\
11040 Check the underlying instruction at PC for the memory\n\
11041 address and value which triggered this watchpoint.\n"));
11042   ui_out_text (uiout, "\n");
11043
11044   /* More than one watchpoint may have been triggered.  */
11045   return PRINT_UNKNOWN;
11046 }
11047
11048 /* Implement the "print_one_detail" breakpoint_ops method for
11049    masked hardware watchpoints.  */
11050
11051 static void
11052 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11053                                     struct ui_out *uiout)
11054 {
11055   struct watchpoint *w = (struct watchpoint *) b;
11056
11057   /* Masked watchpoints have only one location.  */
11058   gdb_assert (b->loc && b->loc->next == NULL);
11059
11060   ui_out_text (uiout, "\tmask ");
11061   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11062   ui_out_text (uiout, "\n");
11063 }
11064
11065 /* Implement the "print_mention" breakpoint_ops method for
11066    masked hardware watchpoints.  */
11067
11068 static void
11069 print_mention_masked_watchpoint (struct breakpoint *b)
11070 {
11071   struct watchpoint *w = (struct watchpoint *) b;
11072   struct ui_out *uiout = current_uiout;
11073   struct cleanup *ui_out_chain;
11074
11075   switch (b->type)
11076     {
11077     case bp_hardware_watchpoint:
11078       ui_out_text (uiout, "Masked hardware watchpoint ");
11079       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11080       break;
11081     case bp_read_watchpoint:
11082       ui_out_text (uiout, "Masked hardware read watchpoint ");
11083       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11084       break;
11085     case bp_access_watchpoint:
11086       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11087       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11088       break;
11089     default:
11090       internal_error (__FILE__, __LINE__,
11091                       _("Invalid hardware watchpoint type."));
11092     }
11093
11094   ui_out_field_int (uiout, "number", b->number);
11095   ui_out_text (uiout, ": ");
11096   ui_out_field_string (uiout, "exp", w->exp_string);
11097   do_cleanups (ui_out_chain);
11098 }
11099
11100 /* Implement the "print_recreate" breakpoint_ops method for
11101    masked hardware watchpoints.  */
11102
11103 static void
11104 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11105 {
11106   struct watchpoint *w = (struct watchpoint *) b;
11107   char tmp[40];
11108
11109   switch (b->type)
11110     {
11111     case bp_hardware_watchpoint:
11112       fprintf_unfiltered (fp, "watch");
11113       break;
11114     case bp_read_watchpoint:
11115       fprintf_unfiltered (fp, "rwatch");
11116       break;
11117     case bp_access_watchpoint:
11118       fprintf_unfiltered (fp, "awatch");
11119       break;
11120     default:
11121       internal_error (__FILE__, __LINE__,
11122                       _("Invalid hardware watchpoint type."));
11123     }
11124
11125   sprintf_vma (tmp, w->hw_wp_mask);
11126   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11127   print_recreate_thread (b, fp);
11128 }
11129
11130 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11131
11132 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11133
11134 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11135
11136 static int
11137 is_masked_watchpoint (const struct breakpoint *b)
11138 {
11139   return b->ops == &masked_watchpoint_breakpoint_ops;
11140 }
11141
11142 /* accessflag:  hw_write:  watch write, 
11143                 hw_read:   watch read, 
11144                 hw_access: watch access (read or write) */
11145 static void
11146 watch_command_1 (const char *arg, int accessflag, int from_tty,
11147                  int just_location, int internal)
11148 {
11149   struct breakpoint *b, *scope_breakpoint = NULL;
11150   struct expression *exp;
11151   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11152   struct value *val, *mark, *result;
11153   int saved_bitpos = 0, saved_bitsize = 0;
11154   struct frame_info *frame;
11155   const char *exp_start = NULL;
11156   const char *exp_end = NULL;
11157   const char *tok, *end_tok;
11158   int toklen = -1;
11159   const char *cond_start = NULL;
11160   const char *cond_end = NULL;
11161   enum bptype bp_type;
11162   int thread = -1;
11163   int pc = 0;
11164   /* Flag to indicate whether we are going to use masks for
11165      the hardware watchpoint.  */
11166   int use_mask = 0;
11167   CORE_ADDR mask = 0;
11168   struct watchpoint *w;
11169   char *expression;
11170   struct cleanup *back_to;
11171
11172   /* Make sure that we actually have parameters to parse.  */
11173   if (arg != NULL && arg[0] != '\0')
11174     {
11175       const char *value_start;
11176
11177       exp_end = arg + strlen (arg);
11178
11179       /* Look for "parameter value" pairs at the end
11180          of the arguments string.  */
11181       for (tok = exp_end - 1; tok > arg; tok--)
11182         {
11183           /* Skip whitespace at the end of the argument list.  */
11184           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11185             tok--;
11186
11187           /* Find the beginning of the last token.
11188              This is the value of the parameter.  */
11189           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11190             tok--;
11191           value_start = tok + 1;
11192
11193           /* Skip whitespace.  */
11194           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11195             tok--;
11196
11197           end_tok = tok;
11198
11199           /* Find the beginning of the second to last token.
11200              This is the parameter itself.  */
11201           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11202             tok--;
11203           tok++;
11204           toklen = end_tok - tok + 1;
11205
11206           if (toklen == 6 && startswith (tok, "thread"))
11207             {
11208               struct thread_info *thr;
11209               /* At this point we've found a "thread" token, which means
11210                  the user is trying to set a watchpoint that triggers
11211                  only in a specific thread.  */
11212               const char *endp;
11213
11214               if (thread != -1)
11215                 error(_("You can specify only one thread."));
11216
11217               /* Extract the thread ID from the next token.  */
11218               thr = parse_thread_id (value_start, &endp);
11219
11220               /* Check if the user provided a valid thread ID.  */
11221               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11222                 invalid_thread_id_error (value_start);
11223
11224               thread = thr->global_num;
11225             }
11226           else if (toklen == 4 && startswith (tok, "mask"))
11227             {
11228               /* We've found a "mask" token, which means the user wants to
11229                  create a hardware watchpoint that is going to have the mask
11230                  facility.  */
11231               struct value *mask_value, *mark;
11232
11233               if (use_mask)
11234                 error(_("You can specify only one mask."));
11235
11236               use_mask = just_location = 1;
11237
11238               mark = value_mark ();
11239               mask_value = parse_to_comma_and_eval (&value_start);
11240               mask = value_as_address (mask_value);
11241               value_free_to_mark (mark);
11242             }
11243           else
11244             /* We didn't recognize what we found.  We should stop here.  */
11245             break;
11246
11247           /* Truncate the string and get rid of the "parameter value" pair before
11248              the arguments string is parsed by the parse_exp_1 function.  */
11249           exp_end = tok;
11250         }
11251     }
11252   else
11253     exp_end = arg;
11254
11255   /* Parse the rest of the arguments.  From here on out, everything
11256      is in terms of a newly allocated string instead of the original
11257      ARG.  */
11258   innermost_block = NULL;
11259   expression = savestring (arg, exp_end - arg);
11260   back_to = make_cleanup (xfree, expression);
11261   exp_start = arg = expression;
11262   exp = parse_exp_1 (&arg, 0, 0, 0);
11263   exp_end = arg;
11264   /* Remove trailing whitespace from the expression before saving it.
11265      This makes the eventual display of the expression string a bit
11266      prettier.  */
11267   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11268     --exp_end;
11269
11270   /* Checking if the expression is not constant.  */
11271   if (watchpoint_exp_is_const (exp))
11272     {
11273       int len;
11274
11275       len = exp_end - exp_start;
11276       while (len > 0 && isspace (exp_start[len - 1]))
11277         len--;
11278       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11279     }
11280
11281   exp_valid_block = innermost_block;
11282   mark = value_mark ();
11283   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11284
11285   if (val != NULL && just_location)
11286     {
11287       saved_bitpos = value_bitpos (val);
11288       saved_bitsize = value_bitsize (val);
11289     }
11290
11291   if (just_location)
11292     {
11293       int ret;
11294
11295       exp_valid_block = NULL;
11296       val = value_addr (result);
11297       release_value (val);
11298       value_free_to_mark (mark);
11299
11300       if (use_mask)
11301         {
11302           ret = target_masked_watch_num_registers (value_as_address (val),
11303                                                    mask);
11304           if (ret == -1)
11305             error (_("This target does not support masked watchpoints."));
11306           else if (ret == -2)
11307             error (_("Invalid mask or memory region."));
11308         }
11309     }
11310   else if (val != NULL)
11311     release_value (val);
11312
11313   tok = skip_spaces_const (arg);
11314   end_tok = skip_to_space_const (tok);
11315
11316   toklen = end_tok - tok;
11317   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11318     {
11319       struct expression *cond;
11320
11321       innermost_block = NULL;
11322       tok = cond_start = end_tok + 1;
11323       cond = parse_exp_1 (&tok, 0, 0, 0);
11324
11325       /* The watchpoint expression may not be local, but the condition
11326          may still be.  E.g.: `watch global if local > 0'.  */
11327       cond_exp_valid_block = innermost_block;
11328
11329       xfree (cond);
11330       cond_end = tok;
11331     }
11332   if (*tok)
11333     error (_("Junk at end of command."));
11334
11335   frame = block_innermost_frame (exp_valid_block);
11336
11337   /* If the expression is "local", then set up a "watchpoint scope"
11338      breakpoint at the point where we've left the scope of the watchpoint
11339      expression.  Create the scope breakpoint before the watchpoint, so
11340      that we will encounter it first in bpstat_stop_status.  */
11341   if (exp_valid_block && frame)
11342     {
11343       if (frame_id_p (frame_unwind_caller_id (frame)))
11344         {
11345           scope_breakpoint
11346             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11347                                           frame_unwind_caller_pc (frame),
11348                                           bp_watchpoint_scope,
11349                                           &momentary_breakpoint_ops);
11350
11351           scope_breakpoint->enable_state = bp_enabled;
11352
11353           /* Automatically delete the breakpoint when it hits.  */
11354           scope_breakpoint->disposition = disp_del;
11355
11356           /* Only break in the proper frame (help with recursion).  */
11357           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11358
11359           /* Set the address at which we will stop.  */
11360           scope_breakpoint->loc->gdbarch
11361             = frame_unwind_caller_arch (frame);
11362           scope_breakpoint->loc->requested_address
11363             = frame_unwind_caller_pc (frame);
11364           scope_breakpoint->loc->address
11365             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11366                                          scope_breakpoint->loc->requested_address,
11367                                          scope_breakpoint->type);
11368         }
11369     }
11370
11371   /* Now set up the breakpoint.  We create all watchpoints as hardware
11372      watchpoints here even if hardware watchpoints are turned off, a call
11373      to update_watchpoint later in this function will cause the type to
11374      drop back to bp_watchpoint (software watchpoint) if required.  */
11375
11376   if (accessflag == hw_read)
11377     bp_type = bp_read_watchpoint;
11378   else if (accessflag == hw_access)
11379     bp_type = bp_access_watchpoint;
11380   else
11381     bp_type = bp_hardware_watchpoint;
11382
11383   w = XCNEW (struct watchpoint);
11384   b = &w->base;
11385   if (use_mask)
11386     init_raw_breakpoint_without_location (b, NULL, bp_type,
11387                                           &masked_watchpoint_breakpoint_ops);
11388   else
11389     init_raw_breakpoint_without_location (b, NULL, bp_type,
11390                                           &watchpoint_breakpoint_ops);
11391   b->thread = thread;
11392   b->disposition = disp_donttouch;
11393   b->pspace = current_program_space;
11394   w->exp = exp;
11395   w->exp_valid_block = exp_valid_block;
11396   w->cond_exp_valid_block = cond_exp_valid_block;
11397   if (just_location)
11398     {
11399       struct type *t = value_type (val);
11400       CORE_ADDR addr = value_as_address (val);
11401       char *name;
11402
11403       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11404       name = type_to_string (t);
11405
11406       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11407                                           core_addr_to_string (addr));
11408       xfree (name);
11409
11410       w->exp_string = xstrprintf ("-location %.*s",
11411                                   (int) (exp_end - exp_start), exp_start);
11412
11413       /* The above expression is in C.  */
11414       b->language = language_c;
11415     }
11416   else
11417     w->exp_string = savestring (exp_start, exp_end - exp_start);
11418
11419   if (use_mask)
11420     {
11421       w->hw_wp_mask = mask;
11422     }
11423   else
11424     {
11425       w->val = val;
11426       w->val_bitpos = saved_bitpos;
11427       w->val_bitsize = saved_bitsize;
11428       w->val_valid = 1;
11429     }
11430
11431   if (cond_start)
11432     b->cond_string = savestring (cond_start, cond_end - cond_start);
11433   else
11434     b->cond_string = 0;
11435
11436   if (frame)
11437     {
11438       w->watchpoint_frame = get_frame_id (frame);
11439       w->watchpoint_thread = inferior_ptid;
11440     }
11441   else
11442     {
11443       w->watchpoint_frame = null_frame_id;
11444       w->watchpoint_thread = null_ptid;
11445     }
11446
11447   if (scope_breakpoint != NULL)
11448     {
11449       /* The scope breakpoint is related to the watchpoint.  We will
11450          need to act on them together.  */
11451       b->related_breakpoint = scope_breakpoint;
11452       scope_breakpoint->related_breakpoint = b;
11453     }
11454
11455   if (!just_location)
11456     value_free_to_mark (mark);
11457
11458   TRY
11459     {
11460       /* Finally update the new watchpoint.  This creates the locations
11461          that should be inserted.  */
11462       update_watchpoint (w, 1);
11463     }
11464   CATCH (e, RETURN_MASK_ALL)
11465     {
11466       delete_breakpoint (b);
11467       throw_exception (e);
11468     }
11469   END_CATCH
11470
11471   install_breakpoint (internal, b, 1);
11472   do_cleanups (back_to);
11473 }
11474
11475 /* Return count of debug registers needed to watch the given expression.
11476    If the watchpoint cannot be handled in hardware return zero.  */
11477
11478 static int
11479 can_use_hardware_watchpoint (struct value *v)
11480 {
11481   int found_memory_cnt = 0;
11482   struct value *head = v;
11483
11484   /* Did the user specifically forbid us to use hardware watchpoints? */
11485   if (!can_use_hw_watchpoints)
11486     return 0;
11487
11488   /* Make sure that the value of the expression depends only upon
11489      memory contents, and values computed from them within GDB.  If we
11490      find any register references or function calls, we can't use a
11491      hardware watchpoint.
11492
11493      The idea here is that evaluating an expression generates a series
11494      of values, one holding the value of every subexpression.  (The
11495      expression a*b+c has five subexpressions: a, b, a*b, c, and
11496      a*b+c.)  GDB's values hold almost enough information to establish
11497      the criteria given above --- they identify memory lvalues,
11498      register lvalues, computed values, etcetera.  So we can evaluate
11499      the expression, and then scan the chain of values that leaves
11500      behind to decide whether we can detect any possible change to the
11501      expression's final value using only hardware watchpoints.
11502
11503      However, I don't think that the values returned by inferior
11504      function calls are special in any way.  So this function may not
11505      notice that an expression involving an inferior function call
11506      can't be watched with hardware watchpoints.  FIXME.  */
11507   for (; v; v = value_next (v))
11508     {
11509       if (VALUE_LVAL (v) == lval_memory)
11510         {
11511           if (v != head && value_lazy (v))
11512             /* A lazy memory lvalue in the chain is one that GDB never
11513                needed to fetch; we either just used its address (e.g.,
11514                `a' in `a.b') or we never needed it at all (e.g., `a'
11515                in `a,b').  This doesn't apply to HEAD; if that is
11516                lazy then it was not readable, but watch it anyway.  */
11517             ;
11518           else
11519             {
11520               /* Ahh, memory we actually used!  Check if we can cover
11521                  it with hardware watchpoints.  */
11522               struct type *vtype = check_typedef (value_type (v));
11523
11524               /* We only watch structs and arrays if user asked for it
11525                  explicitly, never if they just happen to appear in a
11526                  middle of some value chain.  */
11527               if (v == head
11528                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11529                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11530                 {
11531                   CORE_ADDR vaddr = value_address (v);
11532                   int len;
11533                   int num_regs;
11534
11535                   len = (target_exact_watchpoints
11536                          && is_scalar_type_recursive (vtype))?
11537                     1 : TYPE_LENGTH (value_type (v));
11538
11539                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11540                   if (!num_regs)
11541                     return 0;
11542                   else
11543                     found_memory_cnt += num_regs;
11544                 }
11545             }
11546         }
11547       else if (VALUE_LVAL (v) != not_lval
11548                && deprecated_value_modifiable (v) == 0)
11549         return 0;       /* These are values from the history (e.g., $1).  */
11550       else if (VALUE_LVAL (v) == lval_register)
11551         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11552     }
11553
11554   /* The expression itself looks suitable for using a hardware
11555      watchpoint, but give the target machine a chance to reject it.  */
11556   return found_memory_cnt;
11557 }
11558
11559 void
11560 watch_command_wrapper (char *arg, int from_tty, int internal)
11561 {
11562   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11563 }
11564
11565 /* A helper function that looks for the "-location" argument and then
11566    calls watch_command_1.  */
11567
11568 static void
11569 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11570 {
11571   int just_location = 0;
11572
11573   if (arg
11574       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11575           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11576     {
11577       arg = skip_spaces (arg);
11578       just_location = 1;
11579     }
11580
11581   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11582 }
11583
11584 static void
11585 watch_command (char *arg, int from_tty)
11586 {
11587   watch_maybe_just_location (arg, hw_write, from_tty);
11588 }
11589
11590 void
11591 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11592 {
11593   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11594 }
11595
11596 static void
11597 rwatch_command (char *arg, int from_tty)
11598 {
11599   watch_maybe_just_location (arg, hw_read, from_tty);
11600 }
11601
11602 void
11603 awatch_command_wrapper (char *arg, int from_tty, int internal)
11604 {
11605   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11606 }
11607
11608 static void
11609 awatch_command (char *arg, int from_tty)
11610 {
11611   watch_maybe_just_location (arg, hw_access, from_tty);
11612 }
11613 \f
11614
11615 /* Data for the FSM that manages the until(location)/advance commands
11616    in infcmd.c.  Here because it uses the mechanisms of
11617    breakpoints.  */
11618
11619 struct until_break_fsm
11620 {
11621   /* The base class.  */
11622   struct thread_fsm thread_fsm;
11623
11624   /* The thread that as current when the command was executed.  */
11625   int thread;
11626
11627   /* The breakpoint set at the destination location.  */
11628   struct breakpoint *location_breakpoint;
11629
11630   /* Breakpoint set at the return address in the caller frame.  May be
11631      NULL.  */
11632   struct breakpoint *caller_breakpoint;
11633 };
11634
11635 static void until_break_fsm_clean_up (struct thread_fsm *self,
11636                                       struct thread_info *thread);
11637 static int until_break_fsm_should_stop (struct thread_fsm *self,
11638                                         struct thread_info *thread);
11639 static enum async_reply_reason
11640   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11641
11642 /* until_break_fsm's vtable.  */
11643
11644 static struct thread_fsm_ops until_break_fsm_ops =
11645 {
11646   NULL, /* dtor */
11647   until_break_fsm_clean_up,
11648   until_break_fsm_should_stop,
11649   NULL, /* return_value */
11650   until_break_fsm_async_reply_reason,
11651 };
11652
11653 /* Allocate a new until_break_command_fsm.  */
11654
11655 static struct until_break_fsm *
11656 new_until_break_fsm (struct interp *cmd_interp, int thread,
11657                      struct breakpoint *location_breakpoint,
11658                      struct breakpoint *caller_breakpoint)
11659 {
11660   struct until_break_fsm *sm;
11661
11662   sm = XCNEW (struct until_break_fsm);
11663   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11664
11665   sm->thread = thread;
11666   sm->location_breakpoint = location_breakpoint;
11667   sm->caller_breakpoint = caller_breakpoint;
11668
11669   return sm;
11670 }
11671
11672 /* Implementation of the 'should_stop' FSM method for the
11673    until(location)/advance commands.  */
11674
11675 static int
11676 until_break_fsm_should_stop (struct thread_fsm *self,
11677                              struct thread_info *tp)
11678 {
11679   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11680
11681   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11682                               sm->location_breakpoint) != NULL
11683       || (sm->caller_breakpoint != NULL
11684           && bpstat_find_breakpoint (tp->control.stop_bpstat,
11685                                      sm->caller_breakpoint) != NULL))
11686     thread_fsm_set_finished (self);
11687
11688   return 1;
11689 }
11690
11691 /* Implementation of the 'clean_up' FSM method for the
11692    until(location)/advance commands.  */
11693
11694 static void
11695 until_break_fsm_clean_up (struct thread_fsm *self,
11696                           struct thread_info *thread)
11697 {
11698   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11699
11700   /* Clean up our temporary breakpoints.  */
11701   if (sm->location_breakpoint != NULL)
11702     {
11703       delete_breakpoint (sm->location_breakpoint);
11704       sm->location_breakpoint = NULL;
11705     }
11706   if (sm->caller_breakpoint != NULL)
11707     {
11708       delete_breakpoint (sm->caller_breakpoint);
11709       sm->caller_breakpoint = NULL;
11710     }
11711   delete_longjmp_breakpoint (sm->thread);
11712 }
11713
11714 /* Implementation of the 'async_reply_reason' FSM method for the
11715    until(location)/advance commands.  */
11716
11717 static enum async_reply_reason
11718 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11719 {
11720   return EXEC_ASYNC_LOCATION_REACHED;
11721 }
11722
11723 void
11724 until_break_command (char *arg, int from_tty, int anywhere)
11725 {
11726   struct symtabs_and_lines sals;
11727   struct symtab_and_line sal;
11728   struct frame_info *frame;
11729   struct gdbarch *frame_gdbarch;
11730   struct frame_id stack_frame_id;
11731   struct frame_id caller_frame_id;
11732   struct breakpoint *location_breakpoint;
11733   struct breakpoint *caller_breakpoint = NULL;
11734   struct cleanup *old_chain, *cleanup;
11735   int thread;
11736   struct thread_info *tp;
11737   struct event_location *location;
11738   struct until_break_fsm *sm;
11739
11740   clear_proceed_status (0);
11741
11742   /* Set a breakpoint where the user wants it and at return from
11743      this function.  */
11744
11745   location = string_to_event_location (&arg, current_language);
11746   cleanup = make_cleanup_delete_event_location (location);
11747
11748   if (last_displayed_sal_is_valid ())
11749     sals = decode_line_1 (location, DECODE_LINE_FUNFIRSTLINE, NULL,
11750                           get_last_displayed_symtab (),
11751                           get_last_displayed_line ());
11752   else
11753     sals = decode_line_1 (location, DECODE_LINE_FUNFIRSTLINE,
11754                           NULL, (struct symtab *) NULL, 0);
11755
11756   if (sals.nelts != 1)
11757     error (_("Couldn't get information on specified line."));
11758
11759   sal = sals.sals[0];
11760   xfree (sals.sals);    /* malloc'd, so freed.  */
11761
11762   if (*arg)
11763     error (_("Junk at end of arguments."));
11764
11765   resolve_sal_pc (&sal);
11766
11767   tp = inferior_thread ();
11768   thread = tp->global_num;
11769
11770   old_chain = make_cleanup (null_cleanup, NULL);
11771
11772   /* Note linespec handling above invalidates the frame chain.
11773      Installing a breakpoint also invalidates the frame chain (as it
11774      may need to switch threads), so do any frame handling before
11775      that.  */
11776
11777   frame = get_selected_frame (NULL);
11778   frame_gdbarch = get_frame_arch (frame);
11779   stack_frame_id = get_stack_frame_id (frame);
11780   caller_frame_id = frame_unwind_caller_id (frame);
11781
11782   /* Keep within the current frame, or in frames called by the current
11783      one.  */
11784
11785   if (frame_id_p (caller_frame_id))
11786     {
11787       struct symtab_and_line sal2;
11788       struct gdbarch *caller_gdbarch;
11789
11790       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11791       sal2.pc = frame_unwind_caller_pc (frame);
11792       caller_gdbarch = frame_unwind_caller_arch (frame);
11793       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11794                                                     sal2,
11795                                                     caller_frame_id,
11796                                                     bp_until);
11797       make_cleanup_delete_breakpoint (caller_breakpoint);
11798
11799       set_longjmp_breakpoint (tp, caller_frame_id);
11800       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11801     }
11802
11803   /* set_momentary_breakpoint could invalidate FRAME.  */
11804   frame = NULL;
11805
11806   if (anywhere)
11807     /* If the user told us to continue until a specified location,
11808        we don't specify a frame at which we need to stop.  */
11809     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11810                                                     null_frame_id, bp_until);
11811   else
11812     /* Otherwise, specify the selected frame, because we want to stop
11813        only at the very same frame.  */
11814     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11815                                                     stack_frame_id, bp_until);
11816   make_cleanup_delete_breakpoint (location_breakpoint);
11817
11818   sm = new_until_break_fsm (command_interp (), tp->global_num,
11819                             location_breakpoint, caller_breakpoint);
11820   tp->thread_fsm = &sm->thread_fsm;
11821
11822   discard_cleanups (old_chain);
11823
11824   proceed (-1, GDB_SIGNAL_DEFAULT);
11825
11826   do_cleanups (cleanup);
11827 }
11828
11829 /* This function attempts to parse an optional "if <cond>" clause
11830    from the arg string.  If one is not found, it returns NULL.
11831
11832    Else, it returns a pointer to the condition string.  (It does not
11833    attempt to evaluate the string against a particular block.)  And,
11834    it updates arg to point to the first character following the parsed
11835    if clause in the arg string.  */
11836
11837 char *
11838 ep_parse_optional_if_clause (char **arg)
11839 {
11840   char *cond_string;
11841
11842   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11843     return NULL;
11844
11845   /* Skip the "if" keyword.  */
11846   (*arg) += 2;
11847
11848   /* Skip any extra leading whitespace, and record the start of the
11849      condition string.  */
11850   *arg = skip_spaces (*arg);
11851   cond_string = *arg;
11852
11853   /* Assume that the condition occupies the remainder of the arg
11854      string.  */
11855   (*arg) += strlen (cond_string);
11856
11857   return cond_string;
11858 }
11859
11860 /* Commands to deal with catching events, such as signals, exceptions,
11861    process start/exit, etc.  */
11862
11863 typedef enum
11864 {
11865   catch_fork_temporary, catch_vfork_temporary,
11866   catch_fork_permanent, catch_vfork_permanent
11867 }
11868 catch_fork_kind;
11869
11870 static void
11871 catch_fork_command_1 (char *arg, int from_tty, 
11872                       struct cmd_list_element *command)
11873 {
11874   struct gdbarch *gdbarch = get_current_arch ();
11875   char *cond_string = NULL;
11876   catch_fork_kind fork_kind;
11877   int tempflag;
11878
11879   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11880   tempflag = (fork_kind == catch_fork_temporary
11881               || fork_kind == catch_vfork_temporary);
11882
11883   if (!arg)
11884     arg = "";
11885   arg = skip_spaces (arg);
11886
11887   /* The allowed syntax is:
11888      catch [v]fork
11889      catch [v]fork if <cond>
11890
11891      First, check if there's an if clause.  */
11892   cond_string = ep_parse_optional_if_clause (&arg);
11893
11894   if ((*arg != '\0') && !isspace (*arg))
11895     error (_("Junk at end of arguments."));
11896
11897   /* If this target supports it, create a fork or vfork catchpoint
11898      and enable reporting of such events.  */
11899   switch (fork_kind)
11900     {
11901     case catch_fork_temporary:
11902     case catch_fork_permanent:
11903       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11904                                           &catch_fork_breakpoint_ops);
11905       break;
11906     case catch_vfork_temporary:
11907     case catch_vfork_permanent:
11908       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11909                                           &catch_vfork_breakpoint_ops);
11910       break;
11911     default:
11912       error (_("unsupported or unknown fork kind; cannot catch it"));
11913       break;
11914     }
11915 }
11916
11917 static void
11918 catch_exec_command_1 (char *arg, int from_tty, 
11919                       struct cmd_list_element *command)
11920 {
11921   struct exec_catchpoint *c;
11922   struct gdbarch *gdbarch = get_current_arch ();
11923   int tempflag;
11924   char *cond_string = NULL;
11925
11926   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11927
11928   if (!arg)
11929     arg = "";
11930   arg = skip_spaces (arg);
11931
11932   /* The allowed syntax is:
11933      catch exec
11934      catch exec if <cond>
11935
11936      First, check if there's an if clause.  */
11937   cond_string = ep_parse_optional_if_clause (&arg);
11938
11939   if ((*arg != '\0') && !isspace (*arg))
11940     error (_("Junk at end of arguments."));
11941
11942   c = XNEW (struct exec_catchpoint);
11943   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11944                    &catch_exec_breakpoint_ops);
11945   c->exec_pathname = NULL;
11946
11947   install_breakpoint (0, &c->base, 1);
11948 }
11949
11950 void
11951 init_ada_exception_breakpoint (struct breakpoint *b,
11952                                struct gdbarch *gdbarch,
11953                                struct symtab_and_line sal,
11954                                char *addr_string,
11955                                const struct breakpoint_ops *ops,
11956                                int tempflag,
11957                                int enabled,
11958                                int from_tty)
11959 {
11960   if (from_tty)
11961     {
11962       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11963       if (!loc_gdbarch)
11964         loc_gdbarch = gdbarch;
11965
11966       describe_other_breakpoints (loc_gdbarch,
11967                                   sal.pspace, sal.pc, sal.section, -1);
11968       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11969          version for exception catchpoints, because two catchpoints
11970          used for different exception names will use the same address.
11971          In this case, a "breakpoint ... also set at..." warning is
11972          unproductive.  Besides, the warning phrasing is also a bit
11973          inappropriate, we should use the word catchpoint, and tell
11974          the user what type of catchpoint it is.  The above is good
11975          enough for now, though.  */
11976     }
11977
11978   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11979
11980   b->enable_state = enabled ? bp_enabled : bp_disabled;
11981   b->disposition = tempflag ? disp_del : disp_donttouch;
11982   b->location = string_to_event_location (&addr_string,
11983                                           language_def (language_ada));
11984   b->language = language_ada;
11985 }
11986
11987 static void
11988 catch_command (char *arg, int from_tty)
11989 {
11990   error (_("Catch requires an event name."));
11991 }
11992 \f
11993
11994 static void
11995 tcatch_command (char *arg, int from_tty)
11996 {
11997   error (_("Catch requires an event name."));
11998 }
11999
12000 /* A qsort comparison function that sorts breakpoints in order.  */
12001
12002 static int
12003 compare_breakpoints (const void *a, const void *b)
12004 {
12005   const breakpoint_p *ba = (const breakpoint_p *) a;
12006   uintptr_t ua = (uintptr_t) *ba;
12007   const breakpoint_p *bb = (const breakpoint_p *) b;
12008   uintptr_t ub = (uintptr_t) *bb;
12009
12010   if ((*ba)->number < (*bb)->number)
12011     return -1;
12012   else if ((*ba)->number > (*bb)->number)
12013     return 1;
12014
12015   /* Now sort by address, in case we see, e..g, two breakpoints with
12016      the number 0.  */
12017   if (ua < ub)
12018     return -1;
12019   return ua > ub ? 1 : 0;
12020 }
12021
12022 /* Delete breakpoints by address or line.  */
12023
12024 static void
12025 clear_command (char *arg, int from_tty)
12026 {
12027   struct breakpoint *b, *prev;
12028   VEC(breakpoint_p) *found = 0;
12029   int ix;
12030   int default_match;
12031   struct symtabs_and_lines sals;
12032   struct symtab_and_line sal;
12033   int i;
12034   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12035
12036   if (arg)
12037     {
12038       sals = decode_line_with_current_source (arg,
12039                                               (DECODE_LINE_FUNFIRSTLINE
12040                                                | DECODE_LINE_LIST_MODE));
12041       make_cleanup (xfree, sals.sals);
12042       default_match = 0;
12043     }
12044   else
12045     {
12046       sals.sals = XNEW (struct symtab_and_line);
12047       make_cleanup (xfree, sals.sals);
12048       init_sal (&sal);          /* Initialize to zeroes.  */
12049
12050       /* Set sal's line, symtab, pc, and pspace to the values
12051          corresponding to the last call to print_frame_info.  If the
12052          codepoint is not valid, this will set all the fields to 0.  */
12053       get_last_displayed_sal (&sal);
12054       if (sal.symtab == 0)
12055         error (_("No source file specified."));
12056
12057       sals.sals[0] = sal;
12058       sals.nelts = 1;
12059
12060       default_match = 1;
12061     }
12062
12063   /* We don't call resolve_sal_pc here.  That's not as bad as it
12064      seems, because all existing breakpoints typically have both
12065      file/line and pc set.  So, if clear is given file/line, we can
12066      match this to existing breakpoint without obtaining pc at all.
12067
12068      We only support clearing given the address explicitly 
12069      present in breakpoint table.  Say, we've set breakpoint 
12070      at file:line.  There were several PC values for that file:line,
12071      due to optimization, all in one block.
12072
12073      We've picked one PC value.  If "clear" is issued with another
12074      PC corresponding to the same file:line, the breakpoint won't
12075      be cleared.  We probably can still clear the breakpoint, but 
12076      since the other PC value is never presented to user, user
12077      can only find it by guessing, and it does not seem important
12078      to support that.  */
12079
12080   /* For each line spec given, delete bps which correspond to it.  Do
12081      it in two passes, solely to preserve the current behavior that
12082      from_tty is forced true if we delete more than one
12083      breakpoint.  */
12084
12085   found = NULL;
12086   make_cleanup (VEC_cleanup (breakpoint_p), &found);
12087   for (i = 0; i < sals.nelts; i++)
12088     {
12089       const char *sal_fullname;
12090
12091       /* If exact pc given, clear bpts at that pc.
12092          If line given (pc == 0), clear all bpts on specified line.
12093          If defaulting, clear all bpts on default line
12094          or at default pc.
12095
12096          defaulting    sal.pc != 0    tests to do
12097
12098          0              1             pc
12099          1              1             pc _and_ line
12100          0              0             line
12101          1              0             <can't happen> */
12102
12103       sal = sals.sals[i];
12104       sal_fullname = (sal.symtab == NULL
12105                       ? NULL : symtab_to_fullname (sal.symtab));
12106
12107       /* Find all matching breakpoints and add them to 'found'.  */
12108       ALL_BREAKPOINTS (b)
12109         {
12110           int match = 0;
12111           /* Are we going to delete b?  */
12112           if (b->type != bp_none && !is_watchpoint (b))
12113             {
12114               struct bp_location *loc = b->loc;
12115               for (; loc; loc = loc->next)
12116                 {
12117                   /* If the user specified file:line, don't allow a PC
12118                      match.  This matches historical gdb behavior.  */
12119                   int pc_match = (!sal.explicit_line
12120                                   && sal.pc
12121                                   && (loc->pspace == sal.pspace)
12122                                   && (loc->address == sal.pc)
12123                                   && (!section_is_overlay (loc->section)
12124                                       || loc->section == sal.section));
12125                   int line_match = 0;
12126
12127                   if ((default_match || sal.explicit_line)
12128                       && loc->symtab != NULL
12129                       && sal_fullname != NULL
12130                       && sal.pspace == loc->pspace
12131                       && loc->line_number == sal.line
12132                       && filename_cmp (symtab_to_fullname (loc->symtab),
12133                                        sal_fullname) == 0)
12134                     line_match = 1;
12135
12136                   if (pc_match || line_match)
12137                     {
12138                       match = 1;
12139                       break;
12140                     }
12141                 }
12142             }
12143
12144           if (match)
12145             VEC_safe_push(breakpoint_p, found, b);
12146         }
12147     }
12148
12149   /* Now go thru the 'found' chain and delete them.  */
12150   if (VEC_empty(breakpoint_p, found))
12151     {
12152       if (arg)
12153         error (_("No breakpoint at %s."), arg);
12154       else
12155         error (_("No breakpoint at this line."));
12156     }
12157
12158   /* Remove duplicates from the vec.  */
12159   qsort (VEC_address (breakpoint_p, found),
12160          VEC_length (breakpoint_p, found),
12161          sizeof (breakpoint_p),
12162          compare_breakpoints);
12163   prev = VEC_index (breakpoint_p, found, 0);
12164   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12165     {
12166       if (b == prev)
12167         {
12168           VEC_ordered_remove (breakpoint_p, found, ix);
12169           --ix;
12170         }
12171     }
12172
12173   if (VEC_length(breakpoint_p, found) > 1)
12174     from_tty = 1;       /* Always report if deleted more than one.  */
12175   if (from_tty)
12176     {
12177       if (VEC_length(breakpoint_p, found) == 1)
12178         printf_unfiltered (_("Deleted breakpoint "));
12179       else
12180         printf_unfiltered (_("Deleted breakpoints "));
12181     }
12182
12183   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12184     {
12185       if (from_tty)
12186         printf_unfiltered ("%d ", b->number);
12187       delete_breakpoint (b);
12188     }
12189   if (from_tty)
12190     putchar_unfiltered ('\n');
12191
12192   do_cleanups (cleanups);
12193 }
12194 \f
12195 /* Delete breakpoint in BS if they are `delete' breakpoints and
12196    all breakpoints that are marked for deletion, whether hit or not.
12197    This is called after any breakpoint is hit, or after errors.  */
12198
12199 void
12200 breakpoint_auto_delete (bpstat bs)
12201 {
12202   struct breakpoint *b, *b_tmp;
12203
12204   for (; bs; bs = bs->next)
12205     if (bs->breakpoint_at
12206         && bs->breakpoint_at->disposition == disp_del
12207         && bs->stop)
12208       delete_breakpoint (bs->breakpoint_at);
12209
12210   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12211   {
12212     if (b->disposition == disp_del_at_next_stop)
12213       delete_breakpoint (b);
12214   }
12215 }
12216
12217 /* A comparison function for bp_location AP and BP being interfaced to
12218    qsort.  Sort elements primarily by their ADDRESS (no matter what
12219    does breakpoint_address_is_meaningful say for its OWNER),
12220    secondarily by ordering first permanent elements and
12221    terciarily just ensuring the array is sorted stable way despite
12222    qsort being an unstable algorithm.  */
12223
12224 static int
12225 bp_location_compare (const void *ap, const void *bp)
12226 {
12227   const struct bp_location *a = *(const struct bp_location **) ap;
12228   const struct bp_location *b = *(const struct bp_location **) bp;
12229
12230   if (a->address != b->address)
12231     return (a->address > b->address) - (a->address < b->address);
12232
12233   /* Sort locations at the same address by their pspace number, keeping
12234      locations of the same inferior (in a multi-inferior environment)
12235      grouped.  */
12236
12237   if (a->pspace->num != b->pspace->num)
12238     return ((a->pspace->num > b->pspace->num)
12239             - (a->pspace->num < b->pspace->num));
12240
12241   /* Sort permanent breakpoints first.  */
12242   if (a->permanent != b->permanent)
12243     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
12244
12245   /* Make the internal GDB representation stable across GDB runs
12246      where A and B memory inside GDB can differ.  Breakpoint locations of
12247      the same type at the same address can be sorted in arbitrary order.  */
12248
12249   if (a->owner->number != b->owner->number)
12250     return ((a->owner->number > b->owner->number)
12251             - (a->owner->number < b->owner->number));
12252
12253   return (a > b) - (a < b);
12254 }
12255
12256 /* Set bp_location_placed_address_before_address_max and
12257    bp_location_shadow_len_after_address_max according to the current
12258    content of the bp_location array.  */
12259
12260 static void
12261 bp_location_target_extensions_update (void)
12262 {
12263   struct bp_location *bl, **blp_tmp;
12264
12265   bp_location_placed_address_before_address_max = 0;
12266   bp_location_shadow_len_after_address_max = 0;
12267
12268   ALL_BP_LOCATIONS (bl, blp_tmp)
12269     {
12270       CORE_ADDR start, end, addr;
12271
12272       if (!bp_location_has_shadow (bl))
12273         continue;
12274
12275       start = bl->target_info.placed_address;
12276       end = start + bl->target_info.shadow_len;
12277
12278       gdb_assert (bl->address >= start);
12279       addr = bl->address - start;
12280       if (addr > bp_location_placed_address_before_address_max)
12281         bp_location_placed_address_before_address_max = addr;
12282
12283       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12284
12285       gdb_assert (bl->address < end);
12286       addr = end - bl->address;
12287       if (addr > bp_location_shadow_len_after_address_max)
12288         bp_location_shadow_len_after_address_max = addr;
12289     }
12290 }
12291
12292 /* Download tracepoint locations if they haven't been.  */
12293
12294 static void
12295 download_tracepoint_locations (void)
12296 {
12297   struct breakpoint *b;
12298   struct cleanup *old_chain;
12299   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12300
12301   old_chain = save_current_space_and_thread ();
12302
12303   ALL_TRACEPOINTS (b)
12304     {
12305       struct bp_location *bl;
12306       struct tracepoint *t;
12307       int bp_location_downloaded = 0;
12308
12309       if ((b->type == bp_fast_tracepoint
12310            ? !may_insert_fast_tracepoints
12311            : !may_insert_tracepoints))
12312         continue;
12313
12314       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12315         {
12316           if (target_can_download_tracepoint ())
12317             can_download_tracepoint = TRIBOOL_TRUE;
12318           else
12319             can_download_tracepoint = TRIBOOL_FALSE;
12320         }
12321
12322       if (can_download_tracepoint == TRIBOOL_FALSE)
12323         break;
12324
12325       for (bl = b->loc; bl; bl = bl->next)
12326         {
12327           /* In tracepoint, locations are _never_ duplicated, so
12328              should_be_inserted is equivalent to
12329              unduplicated_should_be_inserted.  */
12330           if (!should_be_inserted (bl) || bl->inserted)
12331             continue;
12332
12333           switch_to_program_space_and_thread (bl->pspace);
12334
12335           target_download_tracepoint (bl);
12336
12337           bl->inserted = 1;
12338           bp_location_downloaded = 1;
12339         }
12340       t = (struct tracepoint *) b;
12341       t->number_on_target = b->number;
12342       if (bp_location_downloaded)
12343         observer_notify_breakpoint_modified (b);
12344     }
12345
12346   do_cleanups (old_chain);
12347 }
12348
12349 /* Swap the insertion/duplication state between two locations.  */
12350
12351 static void
12352 swap_insertion (struct bp_location *left, struct bp_location *right)
12353 {
12354   const int left_inserted = left->inserted;
12355   const int left_duplicate = left->duplicate;
12356   const int left_needs_update = left->needs_update;
12357   const struct bp_target_info left_target_info = left->target_info;
12358
12359   /* Locations of tracepoints can never be duplicated.  */
12360   if (is_tracepoint (left->owner))
12361     gdb_assert (!left->duplicate);
12362   if (is_tracepoint (right->owner))
12363     gdb_assert (!right->duplicate);
12364
12365   left->inserted = right->inserted;
12366   left->duplicate = right->duplicate;
12367   left->needs_update = right->needs_update;
12368   left->target_info = right->target_info;
12369   right->inserted = left_inserted;
12370   right->duplicate = left_duplicate;
12371   right->needs_update = left_needs_update;
12372   right->target_info = left_target_info;
12373 }
12374
12375 /* Force the re-insertion of the locations at ADDRESS.  This is called
12376    once a new/deleted/modified duplicate location is found and we are evaluating
12377    conditions on the target's side.  Such conditions need to be updated on
12378    the target.  */
12379
12380 static void
12381 force_breakpoint_reinsertion (struct bp_location *bl)
12382 {
12383   struct bp_location **locp = NULL, **loc2p;
12384   struct bp_location *loc;
12385   CORE_ADDR address = 0;
12386   int pspace_num;
12387
12388   address = bl->address;
12389   pspace_num = bl->pspace->num;
12390
12391   /* This is only meaningful if the target is
12392      evaluating conditions and if the user has
12393      opted for condition evaluation on the target's
12394      side.  */
12395   if (gdb_evaluates_breakpoint_condition_p ()
12396       || !target_supports_evaluation_of_breakpoint_conditions ())
12397     return;
12398
12399   /* Flag all breakpoint locations with this address and
12400      the same program space as the location
12401      as "its condition has changed".  We need to
12402      update the conditions on the target's side.  */
12403   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12404     {
12405       loc = *loc2p;
12406
12407       if (!is_breakpoint (loc->owner)
12408           || pspace_num != loc->pspace->num)
12409         continue;
12410
12411       /* Flag the location appropriately.  We use a different state to
12412          let everyone know that we already updated the set of locations
12413          with addr bl->address and program space bl->pspace.  This is so
12414          we don't have to keep calling these functions just to mark locations
12415          that have already been marked.  */
12416       loc->condition_changed = condition_updated;
12417
12418       /* Free the agent expression bytecode as well.  We will compute
12419          it later on.  */
12420       if (loc->cond_bytecode)
12421         {
12422           free_agent_expr (loc->cond_bytecode);
12423           loc->cond_bytecode = NULL;
12424         }
12425     }
12426 }
12427 /* Called whether new breakpoints are created, or existing breakpoints
12428    deleted, to update the global location list and recompute which
12429    locations are duplicate of which.
12430
12431    The INSERT_MODE flag determines whether locations may not, may, or
12432    shall be inserted now.  See 'enum ugll_insert_mode' for more
12433    info.  */
12434
12435 static void
12436 update_global_location_list (enum ugll_insert_mode insert_mode)
12437 {
12438   struct breakpoint *b;
12439   struct bp_location **locp, *loc;
12440   struct cleanup *cleanups;
12441   /* Last breakpoint location address that was marked for update.  */
12442   CORE_ADDR last_addr = 0;
12443   /* Last breakpoint location program space that was marked for update.  */
12444   int last_pspace_num = -1;
12445
12446   /* Used in the duplicates detection below.  When iterating over all
12447      bp_locations, points to the first bp_location of a given address.
12448      Breakpoints and watchpoints of different types are never
12449      duplicates of each other.  Keep one pointer for each type of
12450      breakpoint/watchpoint, so we only need to loop over all locations
12451      once.  */
12452   struct bp_location *bp_loc_first;  /* breakpoint */
12453   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12454   struct bp_location *awp_loc_first; /* access watchpoint */
12455   struct bp_location *rwp_loc_first; /* read watchpoint */
12456
12457   /* Saved former bp_location array which we compare against the newly
12458      built bp_location from the current state of ALL_BREAKPOINTS.  */
12459   struct bp_location **old_location, **old_locp;
12460   unsigned old_location_count;
12461
12462   old_location = bp_location;
12463   old_location_count = bp_location_count;
12464   bp_location = NULL;
12465   bp_location_count = 0;
12466   cleanups = make_cleanup (xfree, old_location);
12467
12468   ALL_BREAKPOINTS (b)
12469     for (loc = b->loc; loc; loc = loc->next)
12470       bp_location_count++;
12471
12472   bp_location = XNEWVEC (struct bp_location *, bp_location_count);
12473   locp = bp_location;
12474   ALL_BREAKPOINTS (b)
12475     for (loc = b->loc; loc; loc = loc->next)
12476       *locp++ = loc;
12477   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12478          bp_location_compare);
12479
12480   bp_location_target_extensions_update ();
12481
12482   /* Identify bp_location instances that are no longer present in the
12483      new list, and therefore should be freed.  Note that it's not
12484      necessary that those locations should be removed from inferior --
12485      if there's another location at the same address (previously
12486      marked as duplicate), we don't need to remove/insert the
12487      location.
12488      
12489      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12490      and former bp_location array state respectively.  */
12491
12492   locp = bp_location;
12493   for (old_locp = old_location; old_locp < old_location + old_location_count;
12494        old_locp++)
12495     {
12496       struct bp_location *old_loc = *old_locp;
12497       struct bp_location **loc2p;
12498
12499       /* Tells if 'old_loc' is found among the new locations.  If
12500          not, we have to free it.  */
12501       int found_object = 0;
12502       /* Tells if the location should remain inserted in the target.  */
12503       int keep_in_target = 0;
12504       int removed = 0;
12505
12506       /* Skip LOCP entries which will definitely never be needed.
12507          Stop either at or being the one matching OLD_LOC.  */
12508       while (locp < bp_location + bp_location_count
12509              && (*locp)->address < old_loc->address)
12510         locp++;
12511
12512       for (loc2p = locp;
12513            (loc2p < bp_location + bp_location_count
12514             && (*loc2p)->address == old_loc->address);
12515            loc2p++)
12516         {
12517           /* Check if this is a new/duplicated location or a duplicated
12518              location that had its condition modified.  If so, we want to send
12519              its condition to the target if evaluation of conditions is taking
12520              place there.  */
12521           if ((*loc2p)->condition_changed == condition_modified
12522               && (last_addr != old_loc->address
12523                   || last_pspace_num != old_loc->pspace->num))
12524             {
12525               force_breakpoint_reinsertion (*loc2p);
12526               last_pspace_num = old_loc->pspace->num;
12527             }
12528
12529           if (*loc2p == old_loc)
12530             found_object = 1;
12531         }
12532
12533       /* We have already handled this address, update it so that we don't
12534          have to go through updates again.  */
12535       last_addr = old_loc->address;
12536
12537       /* Target-side condition evaluation: Handle deleted locations.  */
12538       if (!found_object)
12539         force_breakpoint_reinsertion (old_loc);
12540
12541       /* If this location is no longer present, and inserted, look if
12542          there's maybe a new location at the same address.  If so,
12543          mark that one inserted, and don't remove this one.  This is
12544          needed so that we don't have a time window where a breakpoint
12545          at certain location is not inserted.  */
12546
12547       if (old_loc->inserted)
12548         {
12549           /* If the location is inserted now, we might have to remove
12550              it.  */
12551
12552           if (found_object && should_be_inserted (old_loc))
12553             {
12554               /* The location is still present in the location list,
12555                  and still should be inserted.  Don't do anything.  */
12556               keep_in_target = 1;
12557             }
12558           else
12559             {
12560               /* This location still exists, but it won't be kept in the
12561                  target since it may have been disabled.  We proceed to
12562                  remove its target-side condition.  */
12563
12564               /* The location is either no longer present, or got
12565                  disabled.  See if there's another location at the
12566                  same address, in which case we don't need to remove
12567                  this one from the target.  */
12568
12569               /* OLD_LOC comes from existing struct breakpoint.  */
12570               if (breakpoint_address_is_meaningful (old_loc->owner))
12571                 {
12572                   for (loc2p = locp;
12573                        (loc2p < bp_location + bp_location_count
12574                         && (*loc2p)->address == old_loc->address);
12575                        loc2p++)
12576                     {
12577                       struct bp_location *loc2 = *loc2p;
12578
12579                       if (breakpoint_locations_match (loc2, old_loc))
12580                         {
12581                           /* Read watchpoint locations are switched to
12582                              access watchpoints, if the former are not
12583                              supported, but the latter are.  */
12584                           if (is_hardware_watchpoint (old_loc->owner))
12585                             {
12586                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12587                               loc2->watchpoint_type = old_loc->watchpoint_type;
12588                             }
12589
12590                           /* loc2 is a duplicated location. We need to check
12591                              if it should be inserted in case it will be
12592                              unduplicated.  */
12593                           if (loc2 != old_loc
12594                               && unduplicated_should_be_inserted (loc2))
12595                             {
12596                               swap_insertion (old_loc, loc2);
12597                               keep_in_target = 1;
12598                               break;
12599                             }
12600                         }
12601                     }
12602                 }
12603             }
12604
12605           if (!keep_in_target)
12606             {
12607               if (remove_breakpoint (old_loc))
12608                 {
12609                   /* This is just about all we can do.  We could keep
12610                      this location on the global list, and try to
12611                      remove it next time, but there's no particular
12612                      reason why we will succeed next time.
12613                      
12614                      Note that at this point, old_loc->owner is still
12615                      valid, as delete_breakpoint frees the breakpoint
12616                      only after calling us.  */
12617                   printf_filtered (_("warning: Error removing "
12618                                      "breakpoint %d\n"), 
12619                                    old_loc->owner->number);
12620                 }
12621               removed = 1;
12622             }
12623         }
12624
12625       if (!found_object)
12626         {
12627           if (removed && target_is_non_stop_p ()
12628               && need_moribund_for_location_type (old_loc))
12629             {
12630               /* This location was removed from the target.  In
12631                  non-stop mode, a race condition is possible where
12632                  we've removed a breakpoint, but stop events for that
12633                  breakpoint are already queued and will arrive later.
12634                  We apply an heuristic to be able to distinguish such
12635                  SIGTRAPs from other random SIGTRAPs: we keep this
12636                  breakpoint location for a bit, and will retire it
12637                  after we see some number of events.  The theory here
12638                  is that reporting of events should, "on the average",
12639                  be fair, so after a while we'll see events from all
12640                  threads that have anything of interest, and no longer
12641                  need to keep this breakpoint location around.  We
12642                  don't hold locations forever so to reduce chances of
12643                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12644                  SIGTRAP.
12645
12646                  The heuristic failing can be disastrous on
12647                  decr_pc_after_break targets.
12648
12649                  On decr_pc_after_break targets, like e.g., x86-linux,
12650                  if we fail to recognize a late breakpoint SIGTRAP,
12651                  because events_till_retirement has reached 0 too
12652                  soon, we'll fail to do the PC adjustment, and report
12653                  a random SIGTRAP to the user.  When the user resumes
12654                  the inferior, it will most likely immediately crash
12655                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12656                  corrupted, because of being resumed e.g., in the
12657                  middle of a multi-byte instruction, or skipped a
12658                  one-byte instruction.  This was actually seen happen
12659                  on native x86-linux, and should be less rare on
12660                  targets that do not support new thread events, like
12661                  remote, due to the heuristic depending on
12662                  thread_count.
12663
12664                  Mistaking a random SIGTRAP for a breakpoint trap
12665                  causes similar symptoms (PC adjustment applied when
12666                  it shouldn't), but then again, playing with SIGTRAPs
12667                  behind the debugger's back is asking for trouble.
12668
12669                  Since hardware watchpoint traps are always
12670                  distinguishable from other traps, so we don't need to
12671                  apply keep hardware watchpoint moribund locations
12672                  around.  We simply always ignore hardware watchpoint
12673                  traps we can no longer explain.  */
12674
12675               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12676               old_loc->owner = NULL;
12677
12678               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12679             }
12680           else
12681             {
12682               old_loc->owner = NULL;
12683               decref_bp_location (&old_loc);
12684             }
12685         }
12686     }
12687
12688   /* Rescan breakpoints at the same address and section, marking the
12689      first one as "first" and any others as "duplicates".  This is so
12690      that the bpt instruction is only inserted once.  If we have a
12691      permanent breakpoint at the same place as BPT, make that one the
12692      official one, and the rest as duplicates.  Permanent breakpoints
12693      are sorted first for the same address.
12694
12695      Do the same for hardware watchpoints, but also considering the
12696      watchpoint's type (regular/access/read) and length.  */
12697
12698   bp_loc_first = NULL;
12699   wp_loc_first = NULL;
12700   awp_loc_first = NULL;
12701   rwp_loc_first = NULL;
12702   ALL_BP_LOCATIONS (loc, locp)
12703     {
12704       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12705          non-NULL.  */
12706       struct bp_location **loc_first_p;
12707       b = loc->owner;
12708
12709       if (!unduplicated_should_be_inserted (loc)
12710           || !breakpoint_address_is_meaningful (b)
12711           /* Don't detect duplicate for tracepoint locations because they are
12712            never duplicated.  See the comments in field `duplicate' of
12713            `struct bp_location'.  */
12714           || is_tracepoint (b))
12715         {
12716           /* Clear the condition modification flag.  */
12717           loc->condition_changed = condition_unchanged;
12718           continue;
12719         }
12720
12721       if (b->type == bp_hardware_watchpoint)
12722         loc_first_p = &wp_loc_first;
12723       else if (b->type == bp_read_watchpoint)
12724         loc_first_p = &rwp_loc_first;
12725       else if (b->type == bp_access_watchpoint)
12726         loc_first_p = &awp_loc_first;
12727       else
12728         loc_first_p = &bp_loc_first;
12729
12730       if (*loc_first_p == NULL
12731           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12732           || !breakpoint_locations_match (loc, *loc_first_p))
12733         {
12734           *loc_first_p = loc;
12735           loc->duplicate = 0;
12736
12737           if (is_breakpoint (loc->owner) && loc->condition_changed)
12738             {
12739               loc->needs_update = 1;
12740               /* Clear the condition modification flag.  */
12741               loc->condition_changed = condition_unchanged;
12742             }
12743           continue;
12744         }
12745
12746
12747       /* This and the above ensure the invariant that the first location
12748          is not duplicated, and is the inserted one.
12749          All following are marked as duplicated, and are not inserted.  */
12750       if (loc->inserted)
12751         swap_insertion (loc, *loc_first_p);
12752       loc->duplicate = 1;
12753
12754       /* Clear the condition modification flag.  */
12755       loc->condition_changed = condition_unchanged;
12756     }
12757
12758   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12759     {
12760       if (insert_mode != UGLL_DONT_INSERT)
12761         insert_breakpoint_locations ();
12762       else
12763         {
12764           /* Even though the caller told us to not insert new
12765              locations, we may still need to update conditions on the
12766              target's side of breakpoints that were already inserted
12767              if the target is evaluating breakpoint conditions.  We
12768              only update conditions for locations that are marked
12769              "needs_update".  */
12770           update_inserted_breakpoint_locations ();
12771         }
12772     }
12773
12774   if (insert_mode != UGLL_DONT_INSERT)
12775     download_tracepoint_locations ();
12776
12777   do_cleanups (cleanups);
12778 }
12779
12780 void
12781 breakpoint_retire_moribund (void)
12782 {
12783   struct bp_location *loc;
12784   int ix;
12785
12786   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12787     if (--(loc->events_till_retirement) == 0)
12788       {
12789         decref_bp_location (&loc);
12790         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12791         --ix;
12792       }
12793 }
12794
12795 static void
12796 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12797 {
12798
12799   TRY
12800     {
12801       update_global_location_list (insert_mode);
12802     }
12803   CATCH (e, RETURN_MASK_ERROR)
12804     {
12805     }
12806   END_CATCH
12807 }
12808
12809 /* Clear BKP from a BPS.  */
12810
12811 static void
12812 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12813 {
12814   bpstat bs;
12815
12816   for (bs = bps; bs; bs = bs->next)
12817     if (bs->breakpoint_at == bpt)
12818       {
12819         bs->breakpoint_at = NULL;
12820         bs->old_val = NULL;
12821         /* bs->commands will be freed later.  */
12822       }
12823 }
12824
12825 /* Callback for iterate_over_threads.  */
12826 static int
12827 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12828 {
12829   struct breakpoint *bpt = (struct breakpoint *) data;
12830
12831   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12832   return 0;
12833 }
12834
12835 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12836    callbacks.  */
12837
12838 static void
12839 say_where (struct breakpoint *b)
12840 {
12841   struct value_print_options opts;
12842
12843   get_user_print_options (&opts);
12844
12845   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12846      single string.  */
12847   if (b->loc == NULL)
12848     {
12849       /* For pending locations, the output differs slightly based
12850          on b->extra_string.  If this is non-NULL, it contains either
12851          a condition or dprintf arguments.  */
12852       if (b->extra_string == NULL)
12853         {
12854           printf_filtered (_(" (%s) pending."),
12855                            event_location_to_string (b->location));
12856         }
12857       else if (b->type == bp_dprintf)
12858         {
12859           printf_filtered (_(" (%s,%s) pending."),
12860                            event_location_to_string (b->location),
12861                            b->extra_string);
12862         }
12863       else
12864         {
12865           printf_filtered (_(" (%s %s) pending."),
12866                            event_location_to_string (b->location),
12867                            b->extra_string);
12868         }
12869     }
12870   else
12871     {
12872       if (opts.addressprint || b->loc->symtab == NULL)
12873         {
12874           printf_filtered (" at ");
12875           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12876                           gdb_stdout);
12877         }
12878       if (b->loc->symtab != NULL)
12879         {
12880           /* If there is a single location, we can print the location
12881              more nicely.  */
12882           if (b->loc->next == NULL)
12883             printf_filtered (": file %s, line %d.",
12884                              symtab_to_filename_for_display (b->loc->symtab),
12885                              b->loc->line_number);
12886           else
12887             /* This is not ideal, but each location may have a
12888                different file name, and this at least reflects the
12889                real situation somewhat.  */
12890             printf_filtered (": %s.",
12891                              event_location_to_string (b->location));
12892         }
12893
12894       if (b->loc->next)
12895         {
12896           struct bp_location *loc = b->loc;
12897           int n = 0;
12898           for (; loc; loc = loc->next)
12899             ++n;
12900           printf_filtered (" (%d locations)", n);
12901         }
12902     }
12903 }
12904
12905 /* Default bp_location_ops methods.  */
12906
12907 static void
12908 bp_location_dtor (struct bp_location *self)
12909 {
12910   xfree (self->cond);
12911   if (self->cond_bytecode)
12912     free_agent_expr (self->cond_bytecode);
12913   xfree (self->function_name);
12914
12915   VEC_free (agent_expr_p, self->target_info.conditions);
12916   VEC_free (agent_expr_p, self->target_info.tcommands);
12917 }
12918
12919 static const struct bp_location_ops bp_location_ops =
12920 {
12921   bp_location_dtor
12922 };
12923
12924 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12925    inherit from.  */
12926
12927 static void
12928 base_breakpoint_dtor (struct breakpoint *self)
12929 {
12930   decref_counted_command_line (&self->commands);
12931   xfree (self->cond_string);
12932   xfree (self->extra_string);
12933   xfree (self->filter);
12934   delete_event_location (self->location);
12935   delete_event_location (self->location_range_end);
12936 }
12937
12938 static struct bp_location *
12939 base_breakpoint_allocate_location (struct breakpoint *self)
12940 {
12941   struct bp_location *loc;
12942
12943   loc = XNEW (struct bp_location);
12944   init_bp_location (loc, &bp_location_ops, self);
12945   return loc;
12946 }
12947
12948 static void
12949 base_breakpoint_re_set (struct breakpoint *b)
12950 {
12951   /* Nothing to re-set. */
12952 }
12953
12954 #define internal_error_pure_virtual_called() \
12955   gdb_assert_not_reached ("pure virtual function called")
12956
12957 static int
12958 base_breakpoint_insert_location (struct bp_location *bl)
12959 {
12960   internal_error_pure_virtual_called ();
12961 }
12962
12963 static int
12964 base_breakpoint_remove_location (struct bp_location *bl,
12965                                  enum remove_bp_reason reason)
12966 {
12967   internal_error_pure_virtual_called ();
12968 }
12969
12970 static int
12971 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12972                                 struct address_space *aspace,
12973                                 CORE_ADDR bp_addr,
12974                                 const struct target_waitstatus *ws)
12975 {
12976   internal_error_pure_virtual_called ();
12977 }
12978
12979 static void
12980 base_breakpoint_check_status (bpstat bs)
12981 {
12982   /* Always stop.   */
12983 }
12984
12985 /* A "works_in_software_mode" breakpoint_ops method that just internal
12986    errors.  */
12987
12988 static int
12989 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12990 {
12991   internal_error_pure_virtual_called ();
12992 }
12993
12994 /* A "resources_needed" breakpoint_ops method that just internal
12995    errors.  */
12996
12997 static int
12998 base_breakpoint_resources_needed (const struct bp_location *bl)
12999 {
13000   internal_error_pure_virtual_called ();
13001 }
13002
13003 static enum print_stop_action
13004 base_breakpoint_print_it (bpstat bs)
13005 {
13006   internal_error_pure_virtual_called ();
13007 }
13008
13009 static void
13010 base_breakpoint_print_one_detail (const struct breakpoint *self,
13011                                   struct ui_out *uiout)
13012 {
13013   /* nothing */
13014 }
13015
13016 static void
13017 base_breakpoint_print_mention (struct breakpoint *b)
13018 {
13019   internal_error_pure_virtual_called ();
13020 }
13021
13022 static void
13023 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13024 {
13025   internal_error_pure_virtual_called ();
13026 }
13027
13028 static void
13029 base_breakpoint_create_sals_from_location
13030   (const struct event_location *location,
13031    struct linespec_result *canonical,
13032    enum bptype type_wanted)
13033 {
13034   internal_error_pure_virtual_called ();
13035 }
13036
13037 static void
13038 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13039                                         struct linespec_result *c,
13040                                         char *cond_string,
13041                                         char *extra_string,
13042                                         enum bptype type_wanted,
13043                                         enum bpdisp disposition,
13044                                         int thread,
13045                                         int task, int ignore_count,
13046                                         const struct breakpoint_ops *o,
13047                                         int from_tty, int enabled,
13048                                         int internal, unsigned flags)
13049 {
13050   internal_error_pure_virtual_called ();
13051 }
13052
13053 static void
13054 base_breakpoint_decode_location (struct breakpoint *b,
13055                                  const struct event_location *location,
13056                                  struct program_space *search_pspace,
13057                                  struct symtabs_and_lines *sals)
13058 {
13059   internal_error_pure_virtual_called ();
13060 }
13061
13062 /* The default 'explains_signal' method.  */
13063
13064 static int
13065 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13066 {
13067   return 1;
13068 }
13069
13070 /* The default "after_condition_true" method.  */
13071
13072 static void
13073 base_breakpoint_after_condition_true (struct bpstats *bs)
13074 {
13075   /* Nothing to do.   */
13076 }
13077
13078 struct breakpoint_ops base_breakpoint_ops =
13079 {
13080   base_breakpoint_dtor,
13081   base_breakpoint_allocate_location,
13082   base_breakpoint_re_set,
13083   base_breakpoint_insert_location,
13084   base_breakpoint_remove_location,
13085   base_breakpoint_breakpoint_hit,
13086   base_breakpoint_check_status,
13087   base_breakpoint_resources_needed,
13088   base_breakpoint_works_in_software_mode,
13089   base_breakpoint_print_it,
13090   NULL,
13091   base_breakpoint_print_one_detail,
13092   base_breakpoint_print_mention,
13093   base_breakpoint_print_recreate,
13094   base_breakpoint_create_sals_from_location,
13095   base_breakpoint_create_breakpoints_sal,
13096   base_breakpoint_decode_location,
13097   base_breakpoint_explains_signal,
13098   base_breakpoint_after_condition_true,
13099 };
13100
13101 /* Default breakpoint_ops methods.  */
13102
13103 static void
13104 bkpt_re_set (struct breakpoint *b)
13105 {
13106   /* FIXME: is this still reachable?  */
13107   if (breakpoint_event_location_empty_p (b))
13108     {
13109       /* Anything without a location can't be re-set.  */
13110       delete_breakpoint (b);
13111       return;
13112     }
13113
13114   breakpoint_re_set_default (b);
13115 }
13116
13117 static int
13118 bkpt_insert_location (struct bp_location *bl)
13119 {
13120   if (bl->loc_type == bp_loc_hardware_breakpoint)
13121     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
13122   else
13123     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
13124 }
13125
13126 static int
13127 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
13128 {
13129   if (bl->loc_type == bp_loc_hardware_breakpoint)
13130     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13131   else
13132     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
13133 }
13134
13135 static int
13136 bkpt_breakpoint_hit (const struct bp_location *bl,
13137                      struct address_space *aspace, CORE_ADDR bp_addr,
13138                      const struct target_waitstatus *ws)
13139 {
13140   if (ws->kind != TARGET_WAITKIND_STOPPED
13141       || ws->value.sig != GDB_SIGNAL_TRAP)
13142     return 0;
13143
13144   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13145                                  aspace, bp_addr))
13146     return 0;
13147
13148   if (overlay_debugging         /* unmapped overlay section */
13149       && section_is_overlay (bl->section)
13150       && !section_is_mapped (bl->section))
13151     return 0;
13152
13153   return 1;
13154 }
13155
13156 static int
13157 dprintf_breakpoint_hit (const struct bp_location *bl,
13158                         struct address_space *aspace, CORE_ADDR bp_addr,
13159                         const struct target_waitstatus *ws)
13160 {
13161   if (dprintf_style == dprintf_style_agent
13162       && target_can_run_breakpoint_commands ())
13163     {
13164       /* An agent-style dprintf never causes a stop.  If we see a trap
13165          for this address it must be for a breakpoint that happens to
13166          be set at the same address.  */
13167       return 0;
13168     }
13169
13170   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13171 }
13172
13173 static int
13174 bkpt_resources_needed (const struct bp_location *bl)
13175 {
13176   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13177
13178   return 1;
13179 }
13180
13181 static enum print_stop_action
13182 bkpt_print_it (bpstat bs)
13183 {
13184   struct breakpoint *b;
13185   const struct bp_location *bl;
13186   int bp_temp;
13187   struct ui_out *uiout = current_uiout;
13188
13189   gdb_assert (bs->bp_location_at != NULL);
13190
13191   bl = bs->bp_location_at;
13192   b = bs->breakpoint_at;
13193
13194   bp_temp = b->disposition == disp_del;
13195   if (bl->address != bl->requested_address)
13196     breakpoint_adjustment_warning (bl->requested_address,
13197                                    bl->address,
13198                                    b->number, 1);
13199   annotate_breakpoint (b->number);
13200   maybe_print_thread_hit_breakpoint (uiout);
13201
13202   if (bp_temp)
13203     ui_out_text (uiout, "Temporary breakpoint ");
13204   else
13205     ui_out_text (uiout, "Breakpoint ");
13206   if (ui_out_is_mi_like_p (uiout))
13207     {
13208       ui_out_field_string (uiout, "reason",
13209                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13210       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13211     }
13212   ui_out_field_int (uiout, "bkptno", b->number);
13213   ui_out_text (uiout, ", ");
13214
13215   return PRINT_SRC_AND_LOC;
13216 }
13217
13218 static void
13219 bkpt_print_mention (struct breakpoint *b)
13220 {
13221   if (ui_out_is_mi_like_p (current_uiout))
13222     return;
13223
13224   switch (b->type)
13225     {
13226     case bp_breakpoint:
13227     case bp_gnu_ifunc_resolver:
13228       if (b->disposition == disp_del)
13229         printf_filtered (_("Temporary breakpoint"));
13230       else
13231         printf_filtered (_("Breakpoint"));
13232       printf_filtered (_(" %d"), b->number);
13233       if (b->type == bp_gnu_ifunc_resolver)
13234         printf_filtered (_(" at gnu-indirect-function resolver"));
13235       break;
13236     case bp_hardware_breakpoint:
13237       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13238       break;
13239     case bp_dprintf:
13240       printf_filtered (_("Dprintf %d"), b->number);
13241       break;
13242     }
13243
13244   say_where (b);
13245 }
13246
13247 static void
13248 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13249 {
13250   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13251     fprintf_unfiltered (fp, "tbreak");
13252   else if (tp->type == bp_breakpoint)
13253     fprintf_unfiltered (fp, "break");
13254   else if (tp->type == bp_hardware_breakpoint
13255            && tp->disposition == disp_del)
13256     fprintf_unfiltered (fp, "thbreak");
13257   else if (tp->type == bp_hardware_breakpoint)
13258     fprintf_unfiltered (fp, "hbreak");
13259   else
13260     internal_error (__FILE__, __LINE__,
13261                     _("unhandled breakpoint type %d"), (int) tp->type);
13262
13263   fprintf_unfiltered (fp, " %s",
13264                       event_location_to_string (tp->location));
13265
13266   /* Print out extra_string if this breakpoint is pending.  It might
13267      contain, for example, conditions that were set by the user.  */
13268   if (tp->loc == NULL && tp->extra_string != NULL)
13269     fprintf_unfiltered (fp, " %s", tp->extra_string);
13270
13271   print_recreate_thread (tp, fp);
13272 }
13273
13274 static void
13275 bkpt_create_sals_from_location (const struct event_location *location,
13276                                 struct linespec_result *canonical,
13277                                 enum bptype type_wanted)
13278 {
13279   create_sals_from_location_default (location, canonical, type_wanted);
13280 }
13281
13282 static void
13283 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13284                              struct linespec_result *canonical,
13285                              char *cond_string,
13286                              char *extra_string,
13287                              enum bptype type_wanted,
13288                              enum bpdisp disposition,
13289                              int thread,
13290                              int task, int ignore_count,
13291                              const struct breakpoint_ops *ops,
13292                              int from_tty, int enabled,
13293                              int internal, unsigned flags)
13294 {
13295   create_breakpoints_sal_default (gdbarch, canonical,
13296                                   cond_string, extra_string,
13297                                   type_wanted,
13298                                   disposition, thread, task,
13299                                   ignore_count, ops, from_tty,
13300                                   enabled, internal, flags);
13301 }
13302
13303 static void
13304 bkpt_decode_location (struct breakpoint *b,
13305                       const struct event_location *location,
13306                       struct program_space *search_pspace,
13307                       struct symtabs_and_lines *sals)
13308 {
13309   decode_location_default (b, location, search_pspace, sals);
13310 }
13311
13312 /* Virtual table for internal breakpoints.  */
13313
13314 static void
13315 internal_bkpt_re_set (struct breakpoint *b)
13316 {
13317   switch (b->type)
13318     {
13319       /* Delete overlay event and longjmp master breakpoints; they
13320          will be reset later by breakpoint_re_set.  */
13321     case bp_overlay_event:
13322     case bp_longjmp_master:
13323     case bp_std_terminate_master:
13324     case bp_exception_master:
13325       delete_breakpoint (b);
13326       break;
13327
13328       /* This breakpoint is special, it's set up when the inferior
13329          starts and we really don't want to touch it.  */
13330     case bp_shlib_event:
13331
13332       /* Like bp_shlib_event, this breakpoint type is special.  Once
13333          it is set up, we do not want to touch it.  */
13334     case bp_thread_event:
13335       break;
13336     }
13337 }
13338
13339 static void
13340 internal_bkpt_check_status (bpstat bs)
13341 {
13342   if (bs->breakpoint_at->type == bp_shlib_event)
13343     {
13344       /* If requested, stop when the dynamic linker notifies GDB of
13345          events.  This allows the user to get control and place
13346          breakpoints in initializer routines for dynamically loaded
13347          objects (among other things).  */
13348       bs->stop = stop_on_solib_events;
13349       bs->print = stop_on_solib_events;
13350     }
13351   else
13352     bs->stop = 0;
13353 }
13354
13355 static enum print_stop_action
13356 internal_bkpt_print_it (bpstat bs)
13357 {
13358   struct breakpoint *b;
13359
13360   b = bs->breakpoint_at;
13361
13362   switch (b->type)
13363     {
13364     case bp_shlib_event:
13365       /* Did we stop because the user set the stop_on_solib_events
13366          variable?  (If so, we report this as a generic, "Stopped due
13367          to shlib event" message.) */
13368       print_solib_event (0);
13369       break;
13370
13371     case bp_thread_event:
13372       /* Not sure how we will get here.
13373          GDB should not stop for these breakpoints.  */
13374       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13375       break;
13376
13377     case bp_overlay_event:
13378       /* By analogy with the thread event, GDB should not stop for these.  */
13379       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13380       break;
13381
13382     case bp_longjmp_master:
13383       /* These should never be enabled.  */
13384       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13385       break;
13386
13387     case bp_std_terminate_master:
13388       /* These should never be enabled.  */
13389       printf_filtered (_("std::terminate Master Breakpoint: "
13390                          "gdb should not stop!\n"));
13391       break;
13392
13393     case bp_exception_master:
13394       /* These should never be enabled.  */
13395       printf_filtered (_("Exception Master Breakpoint: "
13396                          "gdb should not stop!\n"));
13397       break;
13398     }
13399
13400   return PRINT_NOTHING;
13401 }
13402
13403 static void
13404 internal_bkpt_print_mention (struct breakpoint *b)
13405 {
13406   /* Nothing to mention.  These breakpoints are internal.  */
13407 }
13408
13409 /* Virtual table for momentary breakpoints  */
13410
13411 static void
13412 momentary_bkpt_re_set (struct breakpoint *b)
13413 {
13414   /* Keep temporary breakpoints, which can be encountered when we step
13415      over a dlopen call and solib_add is resetting the breakpoints.
13416      Otherwise these should have been blown away via the cleanup chain
13417      or by breakpoint_init_inferior when we rerun the executable.  */
13418 }
13419
13420 static void
13421 momentary_bkpt_check_status (bpstat bs)
13422 {
13423   /* Nothing.  The point of these breakpoints is causing a stop.  */
13424 }
13425
13426 static enum print_stop_action
13427 momentary_bkpt_print_it (bpstat bs)
13428 {
13429   return PRINT_UNKNOWN;
13430 }
13431
13432 static void
13433 momentary_bkpt_print_mention (struct breakpoint *b)
13434 {
13435   /* Nothing to mention.  These breakpoints are internal.  */
13436 }
13437
13438 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13439
13440    It gets cleared already on the removal of the first one of such placed
13441    breakpoints.  This is OK as they get all removed altogether.  */
13442
13443 static void
13444 longjmp_bkpt_dtor (struct breakpoint *self)
13445 {
13446   struct thread_info *tp = find_thread_global_id (self->thread);
13447
13448   if (tp)
13449     tp->initiating_frame = null_frame_id;
13450
13451   momentary_breakpoint_ops.dtor (self);
13452 }
13453
13454 /* Specific methods for probe breakpoints.  */
13455
13456 static int
13457 bkpt_probe_insert_location (struct bp_location *bl)
13458 {
13459   int v = bkpt_insert_location (bl);
13460
13461   if (v == 0)
13462     {
13463       /* The insertion was successful, now let's set the probe's semaphore
13464          if needed.  */
13465       if (bl->probe.probe->pops->set_semaphore != NULL)
13466         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13467                                               bl->probe.objfile,
13468                                               bl->gdbarch);
13469     }
13470
13471   return v;
13472 }
13473
13474 static int
13475 bkpt_probe_remove_location (struct bp_location *bl,
13476                             enum remove_bp_reason reason)
13477 {
13478   /* Let's clear the semaphore before removing the location.  */
13479   if (bl->probe.probe->pops->clear_semaphore != NULL)
13480     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13481                                             bl->probe.objfile,
13482                                             bl->gdbarch);
13483
13484   return bkpt_remove_location (bl, reason);
13485 }
13486
13487 static void
13488 bkpt_probe_create_sals_from_location (const struct event_location *location,
13489                                       struct linespec_result *canonical,
13490                                       enum bptype type_wanted)
13491 {
13492   struct linespec_sals lsal;
13493
13494   lsal.sals = parse_probes (location, NULL, canonical);
13495   lsal.canonical = xstrdup (event_location_to_string (canonical->location));
13496   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13497 }
13498
13499 static void
13500 bkpt_probe_decode_location (struct breakpoint *b,
13501                             const struct event_location *location,
13502                             struct program_space *search_pspace,
13503                             struct symtabs_and_lines *sals)
13504 {
13505   *sals = parse_probes (location, search_pspace, NULL);
13506   if (!sals->sals)
13507     error (_("probe not found"));
13508 }
13509
13510 /* The breakpoint_ops structure to be used in tracepoints.  */
13511
13512 static void
13513 tracepoint_re_set (struct breakpoint *b)
13514 {
13515   breakpoint_re_set_default (b);
13516 }
13517
13518 static int
13519 tracepoint_breakpoint_hit (const struct bp_location *bl,
13520                            struct address_space *aspace, CORE_ADDR bp_addr,
13521                            const struct target_waitstatus *ws)
13522 {
13523   /* By definition, the inferior does not report stops at
13524      tracepoints.  */
13525   return 0;
13526 }
13527
13528 static void
13529 tracepoint_print_one_detail (const struct breakpoint *self,
13530                              struct ui_out *uiout)
13531 {
13532   struct tracepoint *tp = (struct tracepoint *) self;
13533   if (tp->static_trace_marker_id)
13534     {
13535       gdb_assert (self->type == bp_static_tracepoint);
13536
13537       ui_out_text (uiout, "\tmarker id is ");
13538       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13539                            tp->static_trace_marker_id);
13540       ui_out_text (uiout, "\n");
13541     }
13542 }
13543
13544 static void
13545 tracepoint_print_mention (struct breakpoint *b)
13546 {
13547   if (ui_out_is_mi_like_p (current_uiout))
13548     return;
13549
13550   switch (b->type)
13551     {
13552     case bp_tracepoint:
13553       printf_filtered (_("Tracepoint"));
13554       printf_filtered (_(" %d"), b->number);
13555       break;
13556     case bp_fast_tracepoint:
13557       printf_filtered (_("Fast tracepoint"));
13558       printf_filtered (_(" %d"), b->number);
13559       break;
13560     case bp_static_tracepoint:
13561       printf_filtered (_("Static tracepoint"));
13562       printf_filtered (_(" %d"), b->number);
13563       break;
13564     default:
13565       internal_error (__FILE__, __LINE__,
13566                       _("unhandled tracepoint type %d"), (int) b->type);
13567     }
13568
13569   say_where (b);
13570 }
13571
13572 static void
13573 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13574 {
13575   struct tracepoint *tp = (struct tracepoint *) self;
13576
13577   if (self->type == bp_fast_tracepoint)
13578     fprintf_unfiltered (fp, "ftrace");
13579   else if (self->type == bp_static_tracepoint)
13580     fprintf_unfiltered (fp, "strace");
13581   else if (self->type == bp_tracepoint)
13582     fprintf_unfiltered (fp, "trace");
13583   else
13584     internal_error (__FILE__, __LINE__,
13585                     _("unhandled tracepoint type %d"), (int) self->type);
13586
13587   fprintf_unfiltered (fp, " %s",
13588                       event_location_to_string (self->location));
13589   print_recreate_thread (self, fp);
13590
13591   if (tp->pass_count)
13592     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13593 }
13594
13595 static void
13596 tracepoint_create_sals_from_location (const struct event_location *location,
13597                                       struct linespec_result *canonical,
13598                                       enum bptype type_wanted)
13599 {
13600   create_sals_from_location_default (location, canonical, type_wanted);
13601 }
13602
13603 static void
13604 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13605                                    struct linespec_result *canonical,
13606                                    char *cond_string,
13607                                    char *extra_string,
13608                                    enum bptype type_wanted,
13609                                    enum bpdisp disposition,
13610                                    int thread,
13611                                    int task, int ignore_count,
13612                                    const struct breakpoint_ops *ops,
13613                                    int from_tty, int enabled,
13614                                    int internal, unsigned flags)
13615 {
13616   create_breakpoints_sal_default (gdbarch, canonical,
13617                                   cond_string, extra_string,
13618                                   type_wanted,
13619                                   disposition, thread, task,
13620                                   ignore_count, ops, from_tty,
13621                                   enabled, internal, flags);
13622 }
13623
13624 static void
13625 tracepoint_decode_location (struct breakpoint *b,
13626                             const struct event_location *location,
13627                             struct program_space *search_pspace,
13628                             struct symtabs_and_lines *sals)
13629 {
13630   decode_location_default (b, location, search_pspace, sals);
13631 }
13632
13633 struct breakpoint_ops tracepoint_breakpoint_ops;
13634
13635 /* The breakpoint_ops structure to be use on tracepoints placed in a
13636    static probe.  */
13637
13638 static void
13639 tracepoint_probe_create_sals_from_location
13640   (const struct event_location *location,
13641    struct linespec_result *canonical,
13642    enum bptype type_wanted)
13643 {
13644   /* We use the same method for breakpoint on probes.  */
13645   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13646 }
13647
13648 static void
13649 tracepoint_probe_decode_location (struct breakpoint *b,
13650                                   const struct event_location *location,
13651                                   struct program_space *search_pspace,
13652                                   struct symtabs_and_lines *sals)
13653 {
13654   /* We use the same method for breakpoint on probes.  */
13655   bkpt_probe_decode_location (b, location, search_pspace, sals);
13656 }
13657
13658 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13659
13660 /* Dprintf breakpoint_ops methods.  */
13661
13662 static void
13663 dprintf_re_set (struct breakpoint *b)
13664 {
13665   breakpoint_re_set_default (b);
13666
13667   /* extra_string should never be non-NULL for dprintf.  */
13668   gdb_assert (b->extra_string != NULL);
13669
13670   /* 1 - connect to target 1, that can run breakpoint commands.
13671      2 - create a dprintf, which resolves fine.
13672      3 - disconnect from target 1
13673      4 - connect to target 2, that can NOT run breakpoint commands.
13674
13675      After steps #3/#4, you'll want the dprintf command list to
13676      be updated, because target 1 and 2 may well return different
13677      answers for target_can_run_breakpoint_commands().
13678      Given absence of finer grained resetting, we get to do
13679      it all the time.  */
13680   if (b->extra_string != NULL)
13681     update_dprintf_command_list (b);
13682 }
13683
13684 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13685
13686 static void
13687 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13688 {
13689   fprintf_unfiltered (fp, "dprintf %s,%s",
13690                       event_location_to_string (tp->location),
13691                       tp->extra_string);
13692   print_recreate_thread (tp, fp);
13693 }
13694
13695 /* Implement the "after_condition_true" breakpoint_ops method for
13696    dprintf.
13697
13698    dprintf's are implemented with regular commands in their command
13699    list, but we run the commands here instead of before presenting the
13700    stop to the user, as dprintf's don't actually cause a stop.  This
13701    also makes it so that the commands of multiple dprintfs at the same
13702    address are all handled.  */
13703
13704 static void
13705 dprintf_after_condition_true (struct bpstats *bs)
13706 {
13707   struct cleanup *old_chain;
13708   struct bpstats tmp_bs = { NULL };
13709   struct bpstats *tmp_bs_p = &tmp_bs;
13710
13711   /* dprintf's never cause a stop.  This wasn't set in the
13712      check_status hook instead because that would make the dprintf's
13713      condition not be evaluated.  */
13714   bs->stop = 0;
13715
13716   /* Run the command list here.  Take ownership of it instead of
13717      copying.  We never want these commands to run later in
13718      bpstat_do_actions, if a breakpoint that causes a stop happens to
13719      be set at same address as this dprintf, or even if running the
13720      commands here throws.  */
13721   tmp_bs.commands = bs->commands;
13722   bs->commands = NULL;
13723   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13724
13725   bpstat_do_actions_1 (&tmp_bs_p);
13726
13727   /* 'tmp_bs.commands' will usually be NULL by now, but
13728      bpstat_do_actions_1 may return early without processing the whole
13729      list.  */
13730   do_cleanups (old_chain);
13731 }
13732
13733 /* The breakpoint_ops structure to be used on static tracepoints with
13734    markers (`-m').  */
13735
13736 static void
13737 strace_marker_create_sals_from_location (const struct event_location *location,
13738                                          struct linespec_result *canonical,
13739                                          enum bptype type_wanted)
13740 {
13741   struct linespec_sals lsal;
13742   const char *arg_start, *arg;
13743   char *str;
13744   struct cleanup *cleanup;
13745
13746   arg = arg_start = get_linespec_location (location);
13747   lsal.sals = decode_static_tracepoint_spec (&arg);
13748
13749   str = savestring (arg_start, arg - arg_start);
13750   cleanup = make_cleanup (xfree, str);
13751   canonical->location = new_linespec_location (&str);
13752   do_cleanups (cleanup);
13753
13754   lsal.canonical = xstrdup (event_location_to_string (canonical->location));
13755   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13756 }
13757
13758 static void
13759 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13760                                       struct linespec_result *canonical,
13761                                       char *cond_string,
13762                                       char *extra_string,
13763                                       enum bptype type_wanted,
13764                                       enum bpdisp disposition,
13765                                       int thread,
13766                                       int task, int ignore_count,
13767                                       const struct breakpoint_ops *ops,
13768                                       int from_tty, int enabled,
13769                                       int internal, unsigned flags)
13770 {
13771   int i;
13772   struct linespec_sals *lsal = VEC_index (linespec_sals,
13773                                           canonical->sals, 0);
13774
13775   /* If the user is creating a static tracepoint by marker id
13776      (strace -m MARKER_ID), then store the sals index, so that
13777      breakpoint_re_set can try to match up which of the newly
13778      found markers corresponds to this one, and, don't try to
13779      expand multiple locations for each sal, given than SALS
13780      already should contain all sals for MARKER_ID.  */
13781
13782   for (i = 0; i < lsal->sals.nelts; ++i)
13783     {
13784       struct symtabs_and_lines expanded;
13785       struct tracepoint *tp;
13786       struct cleanup *old_chain;
13787       struct event_location *location;
13788
13789       expanded.nelts = 1;
13790       expanded.sals = &lsal->sals.sals[i];
13791
13792       location = copy_event_location (canonical->location);
13793       old_chain = make_cleanup_delete_event_location (location);
13794
13795       tp = XCNEW (struct tracepoint);
13796       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13797                            location, NULL,
13798                            cond_string, extra_string,
13799                            type_wanted, disposition,
13800                            thread, task, ignore_count, ops,
13801                            from_tty, enabled, internal, flags,
13802                            canonical->special_display);
13803       /* Given that its possible to have multiple markers with
13804          the same string id, if the user is creating a static
13805          tracepoint by marker id ("strace -m MARKER_ID"), then
13806          store the sals index, so that breakpoint_re_set can
13807          try to match up which of the newly found markers
13808          corresponds to this one  */
13809       tp->static_trace_marker_id_idx = i;
13810
13811       install_breakpoint (internal, &tp->base, 0);
13812
13813       discard_cleanups (old_chain);
13814     }
13815 }
13816
13817 static void
13818 strace_marker_decode_location (struct breakpoint *b,
13819                                const struct event_location *location,
13820                                struct program_space *search_pspace,
13821                                struct symtabs_and_lines *sals)
13822 {
13823   struct tracepoint *tp = (struct tracepoint *) b;
13824   const char *s = get_linespec_location (location);
13825
13826   *sals = decode_static_tracepoint_spec (&s);
13827   if (sals->nelts > tp->static_trace_marker_id_idx)
13828     {
13829       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13830       sals->nelts = 1;
13831     }
13832   else
13833     error (_("marker %s not found"), tp->static_trace_marker_id);
13834 }
13835
13836 static struct breakpoint_ops strace_marker_breakpoint_ops;
13837
13838 static int
13839 strace_marker_p (struct breakpoint *b)
13840 {
13841   return b->ops == &strace_marker_breakpoint_ops;
13842 }
13843
13844 /* Delete a breakpoint and clean up all traces of it in the data
13845    structures.  */
13846
13847 void
13848 delete_breakpoint (struct breakpoint *bpt)
13849 {
13850   struct breakpoint *b;
13851
13852   gdb_assert (bpt != NULL);
13853
13854   /* Has this bp already been deleted?  This can happen because
13855      multiple lists can hold pointers to bp's.  bpstat lists are
13856      especial culprits.
13857
13858      One example of this happening is a watchpoint's scope bp.  When
13859      the scope bp triggers, we notice that the watchpoint is out of
13860      scope, and delete it.  We also delete its scope bp.  But the
13861      scope bp is marked "auto-deleting", and is already on a bpstat.
13862      That bpstat is then checked for auto-deleting bp's, which are
13863      deleted.
13864
13865      A real solution to this problem might involve reference counts in
13866      bp's, and/or giving them pointers back to their referencing
13867      bpstat's, and teaching delete_breakpoint to only free a bp's
13868      storage when no more references were extent.  A cheaper bandaid
13869      was chosen.  */
13870   if (bpt->type == bp_none)
13871     return;
13872
13873   /* At least avoid this stale reference until the reference counting
13874      of breakpoints gets resolved.  */
13875   if (bpt->related_breakpoint != bpt)
13876     {
13877       struct breakpoint *related;
13878       struct watchpoint *w;
13879
13880       if (bpt->type == bp_watchpoint_scope)
13881         w = (struct watchpoint *) bpt->related_breakpoint;
13882       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13883         w = (struct watchpoint *) bpt;
13884       else
13885         w = NULL;
13886       if (w != NULL)
13887         watchpoint_del_at_next_stop (w);
13888
13889       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13890       for (related = bpt; related->related_breakpoint != bpt;
13891            related = related->related_breakpoint);
13892       related->related_breakpoint = bpt->related_breakpoint;
13893       bpt->related_breakpoint = bpt;
13894     }
13895
13896   /* watch_command_1 creates a watchpoint but only sets its number if
13897      update_watchpoint succeeds in creating its bp_locations.  If there's
13898      a problem in that process, we'll be asked to delete the half-created
13899      watchpoint.  In that case, don't announce the deletion.  */
13900   if (bpt->number)
13901     observer_notify_breakpoint_deleted (bpt);
13902
13903   if (breakpoint_chain == bpt)
13904     breakpoint_chain = bpt->next;
13905
13906   ALL_BREAKPOINTS (b)
13907     if (b->next == bpt)
13908     {
13909       b->next = bpt->next;
13910       break;
13911     }
13912
13913   /* Be sure no bpstat's are pointing at the breakpoint after it's
13914      been freed.  */
13915   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13916      in all threads for now.  Note that we cannot just remove bpstats
13917      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13918      commands are associated with the bpstat; if we remove it here,
13919      then the later call to bpstat_do_actions (&stop_bpstat); in
13920      event-top.c won't do anything, and temporary breakpoints with
13921      commands won't work.  */
13922
13923   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13924
13925   /* Now that breakpoint is removed from breakpoint list, update the
13926      global location list.  This will remove locations that used to
13927      belong to this breakpoint.  Do this before freeing the breakpoint
13928      itself, since remove_breakpoint looks at location's owner.  It
13929      might be better design to have location completely
13930      self-contained, but it's not the case now.  */
13931   update_global_location_list (UGLL_DONT_INSERT);
13932
13933   bpt->ops->dtor (bpt);
13934   /* On the chance that someone will soon try again to delete this
13935      same bp, we mark it as deleted before freeing its storage.  */
13936   bpt->type = bp_none;
13937   xfree (bpt);
13938 }
13939
13940 static void
13941 do_delete_breakpoint_cleanup (void *b)
13942 {
13943   delete_breakpoint ((struct breakpoint *) b);
13944 }
13945
13946 struct cleanup *
13947 make_cleanup_delete_breakpoint (struct breakpoint *b)
13948 {
13949   return make_cleanup (do_delete_breakpoint_cleanup, b);
13950 }
13951
13952 /* Iterator function to call a user-provided callback function once
13953    for each of B and its related breakpoints.  */
13954
13955 static void
13956 iterate_over_related_breakpoints (struct breakpoint *b,
13957                                   void (*function) (struct breakpoint *,
13958                                                     void *),
13959                                   void *data)
13960 {
13961   struct breakpoint *related;
13962
13963   related = b;
13964   do
13965     {
13966       struct breakpoint *next;
13967
13968       /* FUNCTION may delete RELATED.  */
13969       next = related->related_breakpoint;
13970
13971       if (next == related)
13972         {
13973           /* RELATED is the last ring entry.  */
13974           function (related, data);
13975
13976           /* FUNCTION may have deleted it, so we'd never reach back to
13977              B.  There's nothing left to do anyway, so just break
13978              out.  */
13979           break;
13980         }
13981       else
13982         function (related, data);
13983
13984       related = next;
13985     }
13986   while (related != b);
13987 }
13988
13989 static void
13990 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13991 {
13992   delete_breakpoint (b);
13993 }
13994
13995 /* A callback for map_breakpoint_numbers that calls
13996    delete_breakpoint.  */
13997
13998 static void
13999 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
14000 {
14001   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14002 }
14003
14004 void
14005 delete_command (char *arg, int from_tty)
14006 {
14007   struct breakpoint *b, *b_tmp;
14008
14009   dont_repeat ();
14010
14011   if (arg == 0)
14012     {
14013       int breaks_to_delete = 0;
14014
14015       /* Delete all breakpoints if no argument.  Do not delete
14016          internal breakpoints, these have to be deleted with an
14017          explicit breakpoint number argument.  */
14018       ALL_BREAKPOINTS (b)
14019         if (user_breakpoint_p (b))
14020           {
14021             breaks_to_delete = 1;
14022             break;
14023           }
14024
14025       /* Ask user only if there are some breakpoints to delete.  */
14026       if (!from_tty
14027           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14028         {
14029           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14030             if (user_breakpoint_p (b))
14031               delete_breakpoint (b);
14032         }
14033     }
14034   else
14035     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14036 }
14037
14038 /* Return true if all locations of B bound to PSPACE are pending.  If
14039    PSPACE is NULL, all locations of all program spaces are
14040    considered.  */
14041
14042 static int
14043 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
14044 {
14045   struct bp_location *loc;
14046
14047   for (loc = b->loc; loc != NULL; loc = loc->next)
14048     if ((pspace == NULL
14049          || loc->pspace == pspace)
14050         && !loc->shlib_disabled
14051         && !loc->pspace->executing_startup)
14052       return 0;
14053   return 1;
14054 }
14055
14056 /* Subroutine of update_breakpoint_locations to simplify it.
14057    Return non-zero if multiple fns in list LOC have the same name.
14058    Null names are ignored.  */
14059
14060 static int
14061 ambiguous_names_p (struct bp_location *loc)
14062 {
14063   struct bp_location *l;
14064   htab_t htab = htab_create_alloc (13, htab_hash_string,
14065                                    (int (*) (const void *, 
14066                                              const void *)) streq,
14067                                    NULL, xcalloc, xfree);
14068
14069   for (l = loc; l != NULL; l = l->next)
14070     {
14071       const char **slot;
14072       const char *name = l->function_name;
14073
14074       /* Allow for some names to be NULL, ignore them.  */
14075       if (name == NULL)
14076         continue;
14077
14078       slot = (const char **) htab_find_slot (htab, (const void *) name,
14079                                              INSERT);
14080       /* NOTE: We can assume slot != NULL here because xcalloc never
14081          returns NULL.  */
14082       if (*slot != NULL)
14083         {
14084           htab_delete (htab);
14085           return 1;
14086         }
14087       *slot = name;
14088     }
14089
14090   htab_delete (htab);
14091   return 0;
14092 }
14093
14094 /* When symbols change, it probably means the sources changed as well,
14095    and it might mean the static tracepoint markers are no longer at
14096    the same address or line numbers they used to be at last we
14097    checked.  Losing your static tracepoints whenever you rebuild is
14098    undesirable.  This function tries to resync/rematch gdb static
14099    tracepoints with the markers on the target, for static tracepoints
14100    that have not been set by marker id.  Static tracepoint that have
14101    been set by marker id are reset by marker id in breakpoint_re_set.
14102    The heuristic is:
14103
14104    1) For a tracepoint set at a specific address, look for a marker at
14105    the old PC.  If one is found there, assume to be the same marker.
14106    If the name / string id of the marker found is different from the
14107    previous known name, assume that means the user renamed the marker
14108    in the sources, and output a warning.
14109
14110    2) For a tracepoint set at a given line number, look for a marker
14111    at the new address of the old line number.  If one is found there,
14112    assume to be the same marker.  If the name / string id of the
14113    marker found is different from the previous known name, assume that
14114    means the user renamed the marker in the sources, and output a
14115    warning.
14116
14117    3) If a marker is no longer found at the same address or line, it
14118    may mean the marker no longer exists.  But it may also just mean
14119    the code changed a bit.  Maybe the user added a few lines of code
14120    that made the marker move up or down (in line number terms).  Ask
14121    the target for info about the marker with the string id as we knew
14122    it.  If found, update line number and address in the matching
14123    static tracepoint.  This will get confused if there's more than one
14124    marker with the same ID (possible in UST, although unadvised
14125    precisely because it confuses tools).  */
14126
14127 static struct symtab_and_line
14128 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14129 {
14130   struct tracepoint *tp = (struct tracepoint *) b;
14131   struct static_tracepoint_marker marker;
14132   CORE_ADDR pc;
14133
14134   pc = sal.pc;
14135   if (sal.line)
14136     find_line_pc (sal.symtab, sal.line, &pc);
14137
14138   if (target_static_tracepoint_marker_at (pc, &marker))
14139     {
14140       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14141         warning (_("static tracepoint %d changed probed marker from %s to %s"),
14142                  b->number,
14143                  tp->static_trace_marker_id, marker.str_id);
14144
14145       xfree (tp->static_trace_marker_id);
14146       tp->static_trace_marker_id = xstrdup (marker.str_id);
14147       release_static_tracepoint_marker (&marker);
14148
14149       return sal;
14150     }
14151
14152   /* Old marker wasn't found on target at lineno.  Try looking it up
14153      by string ID.  */
14154   if (!sal.explicit_pc
14155       && sal.line != 0
14156       && sal.symtab != NULL
14157       && tp->static_trace_marker_id != NULL)
14158     {
14159       VEC(static_tracepoint_marker_p) *markers;
14160
14161       markers
14162         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14163
14164       if (!VEC_empty(static_tracepoint_marker_p, markers))
14165         {
14166           struct symtab_and_line sal2;
14167           struct symbol *sym;
14168           struct static_tracepoint_marker *tpmarker;
14169           struct ui_out *uiout = current_uiout;
14170           struct explicit_location explicit_loc;
14171
14172           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14173
14174           xfree (tp->static_trace_marker_id);
14175           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14176
14177           warning (_("marker for static tracepoint %d (%s) not "
14178                      "found at previous line number"),
14179                    b->number, tp->static_trace_marker_id);
14180
14181           init_sal (&sal2);
14182
14183           sal2.pc = tpmarker->address;
14184
14185           sal2 = find_pc_line (tpmarker->address, 0);
14186           sym = find_pc_sect_function (tpmarker->address, NULL);
14187           ui_out_text (uiout, "Now in ");
14188           if (sym)
14189             {
14190               ui_out_field_string (uiout, "func",
14191                                    SYMBOL_PRINT_NAME (sym));
14192               ui_out_text (uiout, " at ");
14193             }
14194           ui_out_field_string (uiout, "file",
14195                                symtab_to_filename_for_display (sal2.symtab));
14196           ui_out_text (uiout, ":");
14197
14198           if (ui_out_is_mi_like_p (uiout))
14199             {
14200               const char *fullname = symtab_to_fullname (sal2.symtab);
14201
14202               ui_out_field_string (uiout, "fullname", fullname);
14203             }
14204
14205           ui_out_field_int (uiout, "line", sal2.line);
14206           ui_out_text (uiout, "\n");
14207
14208           b->loc->line_number = sal2.line;
14209           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14210
14211           delete_event_location (b->location);
14212           initialize_explicit_location (&explicit_loc);
14213           explicit_loc.source_filename
14214             = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
14215           explicit_loc.line_offset.offset = b->loc->line_number;
14216           explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
14217           b->location = new_explicit_location (&explicit_loc);
14218
14219           /* Might be nice to check if function changed, and warn if
14220              so.  */
14221
14222           release_static_tracepoint_marker (tpmarker);
14223         }
14224     }
14225   return sal;
14226 }
14227
14228 /* Returns 1 iff locations A and B are sufficiently same that
14229    we don't need to report breakpoint as changed.  */
14230
14231 static int
14232 locations_are_equal (struct bp_location *a, struct bp_location *b)
14233 {
14234   while (a && b)
14235     {
14236       if (a->address != b->address)
14237         return 0;
14238
14239       if (a->shlib_disabled != b->shlib_disabled)
14240         return 0;
14241
14242       if (a->enabled != b->enabled)
14243         return 0;
14244
14245       a = a->next;
14246       b = b->next;
14247     }
14248
14249   if ((a == NULL) != (b == NULL))
14250     return 0;
14251
14252   return 1;
14253 }
14254
14255 /* Split all locations of B that are bound to PSPACE out of B's
14256    location list to a separate list and return that list's head.  If
14257    PSPACE is NULL, hoist out all locations of B.  */
14258
14259 static struct bp_location *
14260 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
14261 {
14262   struct bp_location head;
14263   struct bp_location *i = b->loc;
14264   struct bp_location **i_link = &b->loc;
14265   struct bp_location *hoisted = &head;
14266
14267   if (pspace == NULL)
14268     {
14269       i = b->loc;
14270       b->loc = NULL;
14271       return i;
14272     }
14273
14274   head.next = NULL;
14275
14276   while (i != NULL)
14277     {
14278       if (i->pspace == pspace)
14279         {
14280           *i_link = i->next;
14281           i->next = NULL;
14282           hoisted->next = i;
14283           hoisted = i;
14284         }
14285       else
14286         i_link = &i->next;
14287       i = *i_link;
14288     }
14289
14290   return head.next;
14291 }
14292
14293 /* Create new breakpoint locations for B (a hardware or software
14294    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
14295    zero, then B is a ranged breakpoint.  Only recreates locations for
14296    FILTER_PSPACE.  Locations of other program spaces are left
14297    untouched.  */
14298
14299 void
14300 update_breakpoint_locations (struct breakpoint *b,
14301                              struct program_space *filter_pspace,
14302                              struct symtabs_and_lines sals,
14303                              struct symtabs_and_lines sals_end)
14304 {
14305   int i;
14306   struct bp_location *existing_locations;
14307
14308   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14309     {
14310       /* Ranged breakpoints have only one start location and one end
14311          location.  */
14312       b->enable_state = bp_disabled;
14313       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14314                            "multiple locations found\n"),
14315                          b->number);
14316       return;
14317     }
14318
14319   /* If there's no new locations, and all existing locations are
14320      pending, don't do anything.  This optimizes the common case where
14321      all locations are in the same shared library, that was unloaded.
14322      We'd like to retain the location, so that when the library is
14323      loaded again, we don't loose the enabled/disabled status of the
14324      individual locations.  */
14325   if (all_locations_are_pending (b, filter_pspace) && sals.nelts == 0)
14326     return;
14327
14328   existing_locations = hoist_existing_locations (b, filter_pspace);
14329
14330   for (i = 0; i < sals.nelts; ++i)
14331     {
14332       struct bp_location *new_loc;
14333
14334       switch_to_program_space_and_thread (sals.sals[i].pspace);
14335
14336       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14337
14338       /* Reparse conditions, they might contain references to the
14339          old symtab.  */
14340       if (b->cond_string != NULL)
14341         {
14342           const char *s;
14343
14344           s = b->cond_string;
14345           TRY
14346             {
14347               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14348                                            block_for_pc (sals.sals[i].pc), 
14349                                            0);
14350             }
14351           CATCH (e, RETURN_MASK_ERROR)
14352             {
14353               warning (_("failed to reevaluate condition "
14354                          "for breakpoint %d: %s"), 
14355                        b->number, e.message);
14356               new_loc->enabled = 0;
14357             }
14358           END_CATCH
14359         }
14360
14361       if (sals_end.nelts)
14362         {
14363           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14364
14365           new_loc->length = end - sals.sals[0].pc + 1;
14366         }
14367     }
14368
14369   /* If possible, carry over 'disable' status from existing
14370      breakpoints.  */
14371   {
14372     struct bp_location *e = existing_locations;
14373     /* If there are multiple breakpoints with the same function name,
14374        e.g. for inline functions, comparing function names won't work.
14375        Instead compare pc addresses; this is just a heuristic as things
14376        may have moved, but in practice it gives the correct answer
14377        often enough until a better solution is found.  */
14378     int have_ambiguous_names = ambiguous_names_p (b->loc);
14379
14380     for (; e; e = e->next)
14381       {
14382         if (!e->enabled && e->function_name)
14383           {
14384             struct bp_location *l = b->loc;
14385             if (have_ambiguous_names)
14386               {
14387                 for (; l; l = l->next)
14388                   if (breakpoint_locations_match (e, l))
14389                     {
14390                       l->enabled = 0;
14391                       break;
14392                     }
14393               }
14394             else
14395               {
14396                 for (; l; l = l->next)
14397                   if (l->function_name
14398                       && strcmp (e->function_name, l->function_name) == 0)
14399                     {
14400                       l->enabled = 0;
14401                       break;
14402                     }
14403               }
14404           }
14405       }
14406   }
14407
14408   if (!locations_are_equal (existing_locations, b->loc))
14409     observer_notify_breakpoint_modified (b);
14410 }
14411
14412 /* Find the SaL locations corresponding to the given LOCATION.
14413    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14414
14415 static struct symtabs_and_lines
14416 location_to_sals (struct breakpoint *b, struct event_location *location,
14417                   struct program_space *search_pspace, int *found)
14418 {
14419   struct symtabs_and_lines sals = {0};
14420   struct gdb_exception exception = exception_none;
14421
14422   gdb_assert (b->ops != NULL);
14423
14424   TRY
14425     {
14426       b->ops->decode_location (b, location, search_pspace, &sals);
14427     }
14428   CATCH (e, RETURN_MASK_ERROR)
14429     {
14430       int not_found_and_ok = 0;
14431
14432       exception = e;
14433
14434       /* For pending breakpoints, it's expected that parsing will
14435          fail until the right shared library is loaded.  User has
14436          already told to create pending breakpoints and don't need
14437          extra messages.  If breakpoint is in bp_shlib_disabled
14438          state, then user already saw the message about that
14439          breakpoint being disabled, and don't want to see more
14440          errors.  */
14441       if (e.error == NOT_FOUND_ERROR
14442           && (b->condition_not_parsed
14443               || (b->loc != NULL
14444                   && search_pspace != NULL
14445                   && b->loc->pspace != search_pspace)
14446               || (b->loc && b->loc->shlib_disabled)
14447               || (b->loc && b->loc->pspace->executing_startup)
14448               || b->enable_state == bp_disabled))
14449         not_found_and_ok = 1;
14450
14451       if (!not_found_and_ok)
14452         {
14453           /* We surely don't want to warn about the same breakpoint
14454              10 times.  One solution, implemented here, is disable
14455              the breakpoint on error.  Another solution would be to
14456              have separate 'warning emitted' flag.  Since this
14457              happens only when a binary has changed, I don't know
14458              which approach is better.  */
14459           b->enable_state = bp_disabled;
14460           throw_exception (e);
14461         }
14462     }
14463   END_CATCH
14464
14465   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14466     {
14467       int i;
14468
14469       for (i = 0; i < sals.nelts; ++i)
14470         resolve_sal_pc (&sals.sals[i]);
14471       if (b->condition_not_parsed && b->extra_string != NULL)
14472         {
14473           char *cond_string, *extra_string;
14474           int thread, task;
14475
14476           find_condition_and_thread (b->extra_string, sals.sals[0].pc,
14477                                      &cond_string, &thread, &task,
14478                                      &extra_string);
14479           gdb_assert (b->cond_string == NULL);
14480           if (cond_string)
14481             b->cond_string = cond_string;
14482           b->thread = thread;
14483           b->task = task;
14484           if (extra_string)
14485             {
14486               xfree (b->extra_string);
14487               b->extra_string = extra_string;
14488             }
14489           b->condition_not_parsed = 0;
14490         }
14491
14492       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14493         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14494
14495       *found = 1;
14496     }
14497   else
14498     *found = 0;
14499
14500   return sals;
14501 }
14502
14503 /* The default re_set method, for typical hardware or software
14504    breakpoints.  Reevaluate the breakpoint and recreate its
14505    locations.  */
14506
14507 static void
14508 breakpoint_re_set_default (struct breakpoint *b)
14509 {
14510   int found;
14511   struct symtabs_and_lines sals, sals_end;
14512   struct symtabs_and_lines expanded = {0};
14513   struct symtabs_and_lines expanded_end = {0};
14514   struct program_space *filter_pspace = current_program_space;
14515
14516   sals = location_to_sals (b, b->location, filter_pspace, &found);
14517   if (found)
14518     {
14519       make_cleanup (xfree, sals.sals);
14520       expanded = sals;
14521     }
14522
14523   if (b->location_range_end != NULL)
14524     {
14525       sals_end = location_to_sals (b, b->location_range_end,
14526                                    filter_pspace, &found);
14527       if (found)
14528         {
14529           make_cleanup (xfree, sals_end.sals);
14530           expanded_end = sals_end;
14531         }
14532     }
14533
14534   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14535 }
14536
14537 /* Default method for creating SALs from an address string.  It basically
14538    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14539
14540 static void
14541 create_sals_from_location_default (const struct event_location *location,
14542                                    struct linespec_result *canonical,
14543                                    enum bptype type_wanted)
14544 {
14545   parse_breakpoint_sals (location, canonical);
14546 }
14547
14548 /* Call create_breakpoints_sal for the given arguments.  This is the default
14549    function for the `create_breakpoints_sal' method of
14550    breakpoint_ops.  */
14551
14552 static void
14553 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14554                                 struct linespec_result *canonical,
14555                                 char *cond_string,
14556                                 char *extra_string,
14557                                 enum bptype type_wanted,
14558                                 enum bpdisp disposition,
14559                                 int thread,
14560                                 int task, int ignore_count,
14561                                 const struct breakpoint_ops *ops,
14562                                 int from_tty, int enabled,
14563                                 int internal, unsigned flags)
14564 {
14565   create_breakpoints_sal (gdbarch, canonical, cond_string,
14566                           extra_string,
14567                           type_wanted, disposition,
14568                           thread, task, ignore_count, ops, from_tty,
14569                           enabled, internal, flags);
14570 }
14571
14572 /* Decode the line represented by S by calling decode_line_full.  This is the
14573    default function for the `decode_location' method of breakpoint_ops.  */
14574
14575 static void
14576 decode_location_default (struct breakpoint *b,
14577                          const struct event_location *location,
14578                          struct program_space *search_pspace,
14579                          struct symtabs_and_lines *sals)
14580 {
14581   struct linespec_result canonical;
14582
14583   init_linespec_result (&canonical);
14584   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14585                     (struct symtab *) NULL, 0,
14586                     &canonical, multiple_symbols_all,
14587                     b->filter);
14588
14589   /* We should get 0 or 1 resulting SALs.  */
14590   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14591
14592   if (VEC_length (linespec_sals, canonical.sals) > 0)
14593     {
14594       struct linespec_sals *lsal;
14595
14596       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14597       *sals = lsal->sals;
14598       /* Arrange it so the destructor does not free the
14599          contents.  */
14600       lsal->sals.sals = NULL;
14601     }
14602
14603   destroy_linespec_result (&canonical);
14604 }
14605
14606 /* Prepare the global context for a re-set of breakpoint B.  */
14607
14608 static struct cleanup *
14609 prepare_re_set_context (struct breakpoint *b)
14610 {
14611   input_radix = b->input_radix;
14612   set_language (b->language);
14613
14614   return make_cleanup (null_cleanup, NULL);
14615 }
14616
14617 /* Reset a breakpoint given it's struct breakpoint * BINT.
14618    The value we return ends up being the return value from catch_errors.
14619    Unused in this case.  */
14620
14621 static int
14622 breakpoint_re_set_one (void *bint)
14623 {
14624   /* Get past catch_errs.  */
14625   struct breakpoint *b = (struct breakpoint *) bint;
14626   struct cleanup *cleanups;
14627
14628   cleanups = prepare_re_set_context (b);
14629   b->ops->re_set (b);
14630   do_cleanups (cleanups);
14631   return 0;
14632 }
14633
14634 /* Re-set breakpoint locations for the current program space.
14635    Locations bound to other program spaces are left untouched.  */
14636
14637 void
14638 breakpoint_re_set (void)
14639 {
14640   struct breakpoint *b, *b_tmp;
14641   enum language save_language;
14642   int save_input_radix;
14643   struct cleanup *old_chain;
14644
14645   save_language = current_language->la_language;
14646   save_input_radix = input_radix;
14647   old_chain = save_current_space_and_thread ();
14648
14649   /* Note: we must not try to insert locations until after all
14650      breakpoints have been re-set.  Otherwise, e.g., when re-setting
14651      breakpoint 1, we'd insert the locations of breakpoint 2, which
14652      hadn't been re-set yet, and thus may have stale locations.  */
14653
14654   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14655   {
14656     /* Format possible error msg.  */
14657     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14658                                 b->number);
14659     struct cleanup *cleanups = make_cleanup (xfree, message);
14660     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14661     do_cleanups (cleanups);
14662   }
14663   set_language (save_language);
14664   input_radix = save_input_radix;
14665
14666   jit_breakpoint_re_set ();
14667
14668   do_cleanups (old_chain);
14669
14670   create_overlay_event_breakpoint ();
14671   create_longjmp_master_breakpoint ();
14672   create_std_terminate_master_breakpoint ();
14673   create_exception_master_breakpoint ();
14674
14675   /* Now we can insert.  */
14676   update_global_location_list (UGLL_MAY_INSERT);
14677 }
14678 \f
14679 /* Reset the thread number of this breakpoint:
14680
14681    - If the breakpoint is for all threads, leave it as-is.
14682    - Else, reset it to the current thread for inferior_ptid.  */
14683 void
14684 breakpoint_re_set_thread (struct breakpoint *b)
14685 {
14686   if (b->thread != -1)
14687     {
14688       if (in_thread_list (inferior_ptid))
14689         b->thread = ptid_to_global_thread_id (inferior_ptid);
14690
14691       /* We're being called after following a fork.  The new fork is
14692          selected as current, and unless this was a vfork will have a
14693          different program space from the original thread.  Reset that
14694          as well.  */
14695       b->loc->pspace = current_program_space;
14696     }
14697 }
14698
14699 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14700    If from_tty is nonzero, it prints a message to that effect,
14701    which ends with a period (no newline).  */
14702
14703 void
14704 set_ignore_count (int bptnum, int count, int from_tty)
14705 {
14706   struct breakpoint *b;
14707
14708   if (count < 0)
14709     count = 0;
14710
14711   ALL_BREAKPOINTS (b)
14712     if (b->number == bptnum)
14713     {
14714       if (is_tracepoint (b))
14715         {
14716           if (from_tty && count != 0)
14717             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14718                              bptnum);
14719           return;
14720         }
14721       
14722       b->ignore_count = count;
14723       if (from_tty)
14724         {
14725           if (count == 0)
14726             printf_filtered (_("Will stop next time "
14727                                "breakpoint %d is reached."),
14728                              bptnum);
14729           else if (count == 1)
14730             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14731                              bptnum);
14732           else
14733             printf_filtered (_("Will ignore next %d "
14734                                "crossings of breakpoint %d."),
14735                              count, bptnum);
14736         }
14737       observer_notify_breakpoint_modified (b);
14738       return;
14739     }
14740
14741   error (_("No breakpoint number %d."), bptnum);
14742 }
14743
14744 /* Command to set ignore-count of breakpoint N to COUNT.  */
14745
14746 static void
14747 ignore_command (char *args, int from_tty)
14748 {
14749   char *p = args;
14750   int num;
14751
14752   if (p == 0)
14753     error_no_arg (_("a breakpoint number"));
14754
14755   num = get_number (&p);
14756   if (num == 0)
14757     error (_("bad breakpoint number: '%s'"), args);
14758   if (*p == 0)
14759     error (_("Second argument (specified ignore-count) is missing."));
14760
14761   set_ignore_count (num,
14762                     longest_to_int (value_as_long (parse_and_eval (p))),
14763                     from_tty);
14764   if (from_tty)
14765     printf_filtered ("\n");
14766 }
14767 \f
14768 /* Call FUNCTION on each of the breakpoints
14769    whose numbers are given in ARGS.  */
14770
14771 static void
14772 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14773                                                       void *),
14774                         void *data)
14775 {
14776   int num;
14777   struct breakpoint *b, *tmp;
14778   int match;
14779   struct get_number_or_range_state state;
14780
14781   if (args == 0 || *args == '\0')
14782     error_no_arg (_("one or more breakpoint numbers"));
14783
14784   init_number_or_range (&state, args);
14785
14786   while (!state.finished)
14787     {
14788       const char *p = state.string;
14789
14790       match = 0;
14791
14792       num = get_number_or_range (&state);
14793       if (num == 0)
14794         {
14795           warning (_("bad breakpoint number at or near '%s'"), p);
14796         }
14797       else
14798         {
14799           ALL_BREAKPOINTS_SAFE (b, tmp)
14800             if (b->number == num)
14801               {
14802                 match = 1;
14803                 function (b, data);
14804                 break;
14805               }
14806           if (match == 0)
14807             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14808         }
14809     }
14810 }
14811
14812 static struct bp_location *
14813 find_location_by_number (char *number)
14814 {
14815   char *dot = strchr (number, '.');
14816   char *p1;
14817   int bp_num;
14818   int loc_num;
14819   struct breakpoint *b;
14820   struct bp_location *loc;  
14821
14822   *dot = '\0';
14823
14824   p1 = number;
14825   bp_num = get_number (&p1);
14826   if (bp_num == 0)
14827     error (_("Bad breakpoint number '%s'"), number);
14828
14829   ALL_BREAKPOINTS (b)
14830     if (b->number == bp_num)
14831       {
14832         break;
14833       }
14834
14835   if (!b || b->number != bp_num)
14836     error (_("Bad breakpoint number '%s'"), number);
14837   
14838   p1 = dot+1;
14839   loc_num = get_number (&p1);
14840   if (loc_num == 0)
14841     error (_("Bad breakpoint location number '%s'"), number);
14842
14843   --loc_num;
14844   loc = b->loc;
14845   for (;loc_num && loc; --loc_num, loc = loc->next)
14846     ;
14847   if (!loc)
14848     error (_("Bad breakpoint location number '%s'"), dot+1);
14849     
14850   return loc;  
14851 }
14852
14853
14854 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14855    If from_tty is nonzero, it prints a message to that effect,
14856    which ends with a period (no newline).  */
14857
14858 void
14859 disable_breakpoint (struct breakpoint *bpt)
14860 {
14861   /* Never disable a watchpoint scope breakpoint; we want to
14862      hit them when we leave scope so we can delete both the
14863      watchpoint and its scope breakpoint at that time.  */
14864   if (bpt->type == bp_watchpoint_scope)
14865     return;
14866
14867   bpt->enable_state = bp_disabled;
14868
14869   /* Mark breakpoint locations modified.  */
14870   mark_breakpoint_modified (bpt);
14871
14872   if (target_supports_enable_disable_tracepoint ()
14873       && current_trace_status ()->running && is_tracepoint (bpt))
14874     {
14875       struct bp_location *location;
14876      
14877       for (location = bpt->loc; location; location = location->next)
14878         target_disable_tracepoint (location);
14879     }
14880
14881   update_global_location_list (UGLL_DONT_INSERT);
14882
14883   observer_notify_breakpoint_modified (bpt);
14884 }
14885
14886 /* A callback for iterate_over_related_breakpoints.  */
14887
14888 static void
14889 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14890 {
14891   disable_breakpoint (b);
14892 }
14893
14894 /* A callback for map_breakpoint_numbers that calls
14895    disable_breakpoint.  */
14896
14897 static void
14898 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14899 {
14900   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14901 }
14902
14903 static void
14904 disable_command (char *args, int from_tty)
14905 {
14906   if (args == 0)
14907     {
14908       struct breakpoint *bpt;
14909
14910       ALL_BREAKPOINTS (bpt)
14911         if (user_breakpoint_p (bpt))
14912           disable_breakpoint (bpt);
14913     }
14914   else
14915     {
14916       char *num = extract_arg (&args);
14917
14918       while (num)
14919         {
14920           if (strchr (num, '.'))
14921             {
14922               struct bp_location *loc = find_location_by_number (num);
14923
14924               if (loc)
14925                 {
14926                   if (loc->enabled)
14927                     {
14928                       loc->enabled = 0;
14929                       mark_breakpoint_location_modified (loc);
14930                     }
14931                   if (target_supports_enable_disable_tracepoint ()
14932                       && current_trace_status ()->running && loc->owner
14933                       && is_tracepoint (loc->owner))
14934                     target_disable_tracepoint (loc);
14935                 }
14936               update_global_location_list (UGLL_DONT_INSERT);
14937             }
14938           else
14939             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14940           num = extract_arg (&args);
14941         }
14942     }
14943 }
14944
14945 static void
14946 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14947                         int count)
14948 {
14949   int target_resources_ok;
14950
14951   if (bpt->type == bp_hardware_breakpoint)
14952     {
14953       int i;
14954       i = hw_breakpoint_used_count ();
14955       target_resources_ok = 
14956         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14957                                             i + 1, 0);
14958       if (target_resources_ok == 0)
14959         error (_("No hardware breakpoint support in the target."));
14960       else if (target_resources_ok < 0)
14961         error (_("Hardware breakpoints used exceeds limit."));
14962     }
14963
14964   if (is_watchpoint (bpt))
14965     {
14966       /* Initialize it just to avoid a GCC false warning.  */
14967       enum enable_state orig_enable_state = bp_disabled;
14968
14969       TRY
14970         {
14971           struct watchpoint *w = (struct watchpoint *) bpt;
14972
14973           orig_enable_state = bpt->enable_state;
14974           bpt->enable_state = bp_enabled;
14975           update_watchpoint (w, 1 /* reparse */);
14976         }
14977       CATCH (e, RETURN_MASK_ALL)
14978         {
14979           bpt->enable_state = orig_enable_state;
14980           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14981                              bpt->number);
14982           return;
14983         }
14984       END_CATCH
14985     }
14986
14987   bpt->enable_state = bp_enabled;
14988
14989   /* Mark breakpoint locations modified.  */
14990   mark_breakpoint_modified (bpt);
14991
14992   if (target_supports_enable_disable_tracepoint ()
14993       && current_trace_status ()->running && is_tracepoint (bpt))
14994     {
14995       struct bp_location *location;
14996
14997       for (location = bpt->loc; location; location = location->next)
14998         target_enable_tracepoint (location);
14999     }
15000
15001   bpt->disposition = disposition;
15002   bpt->enable_count = count;
15003   update_global_location_list (UGLL_MAY_INSERT);
15004
15005   observer_notify_breakpoint_modified (bpt);
15006 }
15007
15008
15009 void
15010 enable_breakpoint (struct breakpoint *bpt)
15011 {
15012   enable_breakpoint_disp (bpt, bpt->disposition, 0);
15013 }
15014
15015 static void
15016 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15017 {
15018   enable_breakpoint (bpt);
15019 }
15020
15021 /* A callback for map_breakpoint_numbers that calls
15022    enable_breakpoint.  */
15023
15024 static void
15025 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15026 {
15027   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15028 }
15029
15030 /* The enable command enables the specified breakpoints (or all defined
15031    breakpoints) so they once again become (or continue to be) effective
15032    in stopping the inferior.  */
15033
15034 static void
15035 enable_command (char *args, int from_tty)
15036 {
15037   if (args == 0)
15038     {
15039       struct breakpoint *bpt;
15040
15041       ALL_BREAKPOINTS (bpt)
15042         if (user_breakpoint_p (bpt))
15043           enable_breakpoint (bpt);
15044     }
15045   else
15046     {
15047       char *num = extract_arg (&args);
15048
15049       while (num)
15050         {
15051           if (strchr (num, '.'))
15052             {
15053               struct bp_location *loc = find_location_by_number (num);
15054
15055               if (loc)
15056                 {
15057                   if (!loc->enabled)
15058                     {
15059                       loc->enabled = 1;
15060                       mark_breakpoint_location_modified (loc);
15061                     }
15062                   if (target_supports_enable_disable_tracepoint ()
15063                       && current_trace_status ()->running && loc->owner
15064                       && is_tracepoint (loc->owner))
15065                     target_enable_tracepoint (loc);
15066                 }
15067               update_global_location_list (UGLL_MAY_INSERT);
15068             }
15069           else
15070             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15071           num = extract_arg (&args);
15072         }
15073     }
15074 }
15075
15076 /* This struct packages up disposition data for application to multiple
15077    breakpoints.  */
15078
15079 struct disp_data
15080 {
15081   enum bpdisp disp;
15082   int count;
15083 };
15084
15085 static void
15086 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15087 {
15088   struct disp_data disp_data = *(struct disp_data *) arg;
15089
15090   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15091 }
15092
15093 static void
15094 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15095 {
15096   struct disp_data disp = { disp_disable, 1 };
15097
15098   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15099 }
15100
15101 static void
15102 enable_once_command (char *args, int from_tty)
15103 {
15104   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15105 }
15106
15107 static void
15108 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15109 {
15110   struct disp_data disp = { disp_disable, *(int *) countptr };
15111
15112   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15113 }
15114
15115 static void
15116 enable_count_command (char *args, int from_tty)
15117 {
15118   int count;
15119
15120   if (args == NULL)
15121     error_no_arg (_("hit count"));
15122
15123   count = get_number (&args);
15124
15125   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15126 }
15127
15128 static void
15129 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15130 {
15131   struct disp_data disp = { disp_del, 1 };
15132
15133   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15134 }
15135
15136 static void
15137 enable_delete_command (char *args, int from_tty)
15138 {
15139   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15140 }
15141 \f
15142 static void
15143 set_breakpoint_cmd (char *args, int from_tty)
15144 {
15145 }
15146
15147 static void
15148 show_breakpoint_cmd (char *args, int from_tty)
15149 {
15150 }
15151
15152 /* Invalidate last known value of any hardware watchpoint if
15153    the memory which that value represents has been written to by
15154    GDB itself.  */
15155
15156 static void
15157 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15158                                       CORE_ADDR addr, ssize_t len,
15159                                       const bfd_byte *data)
15160 {
15161   struct breakpoint *bp;
15162
15163   ALL_BREAKPOINTS (bp)
15164     if (bp->enable_state == bp_enabled
15165         && bp->type == bp_hardware_watchpoint)
15166       {
15167         struct watchpoint *wp = (struct watchpoint *) bp;
15168
15169         if (wp->val_valid && wp->val)
15170           {
15171             struct bp_location *loc;
15172
15173             for (loc = bp->loc; loc != NULL; loc = loc->next)
15174               if (loc->loc_type == bp_loc_hardware_watchpoint
15175                   && loc->address + loc->length > addr
15176                   && addr + len > loc->address)
15177                 {
15178                   value_free (wp->val);
15179                   wp->val = NULL;
15180                   wp->val_valid = 0;
15181                 }
15182           }
15183       }
15184 }
15185
15186 /* Create and insert a breakpoint for software single step.  */
15187
15188 void
15189 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15190                                struct address_space *aspace, 
15191                                CORE_ADDR next_pc)
15192 {
15193   struct thread_info *tp = inferior_thread ();
15194   struct symtab_and_line sal;
15195   CORE_ADDR pc = next_pc;
15196
15197   if (tp->control.single_step_breakpoints == NULL)
15198     {
15199       tp->control.single_step_breakpoints
15200         = new_single_step_breakpoint (tp->global_num, gdbarch);
15201     }
15202
15203   sal = find_pc_line (pc, 0);
15204   sal.pc = pc;
15205   sal.section = find_pc_overlay (pc);
15206   sal.explicit_pc = 1;
15207   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
15208
15209   update_global_location_list (UGLL_INSERT);
15210 }
15211
15212 /* See breakpoint.h.  */
15213
15214 int
15215 breakpoint_has_location_inserted_here (struct breakpoint *bp,
15216                                        struct address_space *aspace,
15217                                        CORE_ADDR pc)
15218 {
15219   struct bp_location *loc;
15220
15221   for (loc = bp->loc; loc != NULL; loc = loc->next)
15222     if (loc->inserted
15223         && breakpoint_location_address_match (loc, aspace, pc))
15224       return 1;
15225
15226   return 0;
15227 }
15228
15229 /* Check whether a software single-step breakpoint is inserted at
15230    PC.  */
15231
15232 int
15233 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15234                                         CORE_ADDR pc)
15235 {
15236   struct breakpoint *bpt;
15237
15238   ALL_BREAKPOINTS (bpt)
15239     {
15240       if (bpt->type == bp_single_step
15241           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15242         return 1;
15243     }
15244   return 0;
15245 }
15246
15247 /* Tracepoint-specific operations.  */
15248
15249 /* Set tracepoint count to NUM.  */
15250 static void
15251 set_tracepoint_count (int num)
15252 {
15253   tracepoint_count = num;
15254   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15255 }
15256
15257 static void
15258 trace_command (char *arg, int from_tty)
15259 {
15260   struct breakpoint_ops *ops;
15261   struct event_location *location;
15262   struct cleanup *back_to;
15263
15264   location = string_to_event_location (&arg, current_language);
15265   back_to = make_cleanup_delete_event_location (location);
15266   if (location != NULL
15267       && event_location_type (location) == PROBE_LOCATION)
15268     ops = &tracepoint_probe_breakpoint_ops;
15269   else
15270     ops = &tracepoint_breakpoint_ops;
15271
15272   create_breakpoint (get_current_arch (),
15273                      location,
15274                      NULL, 0, arg, 1 /* parse arg */,
15275                      0 /* tempflag */,
15276                      bp_tracepoint /* type_wanted */,
15277                      0 /* Ignore count */,
15278                      pending_break_support,
15279                      ops,
15280                      from_tty,
15281                      1 /* enabled */,
15282                      0 /* internal */, 0);
15283   do_cleanups (back_to);
15284 }
15285
15286 static void
15287 ftrace_command (char *arg, int from_tty)
15288 {
15289   struct event_location *location;
15290   struct cleanup *back_to;
15291
15292   location = string_to_event_location (&arg, current_language);
15293   back_to = make_cleanup_delete_event_location (location);
15294   create_breakpoint (get_current_arch (),
15295                      location,
15296                      NULL, 0, arg, 1 /* parse arg */,
15297                      0 /* tempflag */,
15298                      bp_fast_tracepoint /* type_wanted */,
15299                      0 /* Ignore count */,
15300                      pending_break_support,
15301                      &tracepoint_breakpoint_ops,
15302                      from_tty,
15303                      1 /* enabled */,
15304                      0 /* internal */, 0);
15305   do_cleanups (back_to);
15306 }
15307
15308 /* strace command implementation.  Creates a static tracepoint.  */
15309
15310 static void
15311 strace_command (char *arg, int from_tty)
15312 {
15313   struct breakpoint_ops *ops;
15314   struct event_location *location;
15315   struct cleanup *back_to;
15316
15317   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15318      or with a normal static tracepoint.  */
15319   if (arg && startswith (arg, "-m") && isspace (arg[2]))
15320     {
15321       ops = &strace_marker_breakpoint_ops;
15322       location = new_linespec_location (&arg);
15323     }
15324   else
15325     {
15326       ops = &tracepoint_breakpoint_ops;
15327       location = string_to_event_location (&arg, current_language);
15328     }
15329
15330   back_to = make_cleanup_delete_event_location (location);
15331   create_breakpoint (get_current_arch (),
15332                      location,
15333                      NULL, 0, arg, 1 /* parse arg */,
15334                      0 /* tempflag */,
15335                      bp_static_tracepoint /* type_wanted */,
15336                      0 /* Ignore count */,
15337                      pending_break_support,
15338                      ops,
15339                      from_tty,
15340                      1 /* enabled */,
15341                      0 /* internal */, 0);
15342   do_cleanups (back_to);
15343 }
15344
15345 /* Set up a fake reader function that gets command lines from a linked
15346    list that was acquired during tracepoint uploading.  */
15347
15348 static struct uploaded_tp *this_utp;
15349 static int next_cmd;
15350
15351 static char *
15352 read_uploaded_action (void)
15353 {
15354   char *rslt;
15355
15356   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15357
15358   next_cmd++;
15359
15360   return rslt;
15361 }
15362
15363 /* Given information about a tracepoint as recorded on a target (which
15364    can be either a live system or a trace file), attempt to create an
15365    equivalent GDB tracepoint.  This is not a reliable process, since
15366    the target does not necessarily have all the information used when
15367    the tracepoint was originally defined.  */
15368   
15369 struct tracepoint *
15370 create_tracepoint_from_upload (struct uploaded_tp *utp)
15371 {
15372   char *addr_str, small_buf[100];
15373   struct tracepoint *tp;
15374   struct event_location *location;
15375   struct cleanup *cleanup;
15376
15377   if (utp->at_string)
15378     addr_str = utp->at_string;
15379   else
15380     {
15381       /* In the absence of a source location, fall back to raw
15382          address.  Since there is no way to confirm that the address
15383          means the same thing as when the trace was started, warn the
15384          user.  */
15385       warning (_("Uploaded tracepoint %d has no "
15386                  "source location, using raw address"),
15387                utp->number);
15388       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15389       addr_str = small_buf;
15390     }
15391
15392   /* There's not much we can do with a sequence of bytecodes.  */
15393   if (utp->cond && !utp->cond_string)
15394     warning (_("Uploaded tracepoint %d condition "
15395                "has no source form, ignoring it"),
15396              utp->number);
15397
15398   location = string_to_event_location (&addr_str, current_language);
15399   cleanup = make_cleanup_delete_event_location (location);
15400   if (!create_breakpoint (get_current_arch (),
15401                           location,
15402                           utp->cond_string, -1, addr_str,
15403                           0 /* parse cond/thread */,
15404                           0 /* tempflag */,
15405                           utp->type /* type_wanted */,
15406                           0 /* Ignore count */,
15407                           pending_break_support,
15408                           &tracepoint_breakpoint_ops,
15409                           0 /* from_tty */,
15410                           utp->enabled /* enabled */,
15411                           0 /* internal */,
15412                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15413     {
15414       do_cleanups (cleanup);
15415       return NULL;
15416     }
15417
15418   do_cleanups (cleanup);
15419
15420   /* Get the tracepoint we just created.  */
15421   tp = get_tracepoint (tracepoint_count);
15422   gdb_assert (tp != NULL);
15423
15424   if (utp->pass > 0)
15425     {
15426       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15427                  tp->base.number);
15428
15429       trace_pass_command (small_buf, 0);
15430     }
15431
15432   /* If we have uploaded versions of the original commands, set up a
15433      special-purpose "reader" function and call the usual command line
15434      reader, then pass the result to the breakpoint command-setting
15435      function.  */
15436   if (!VEC_empty (char_ptr, utp->cmd_strings))
15437     {
15438       struct command_line *cmd_list;
15439
15440       this_utp = utp;
15441       next_cmd = 0;
15442
15443       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15444
15445       breakpoint_set_commands (&tp->base, cmd_list);
15446     }
15447   else if (!VEC_empty (char_ptr, utp->actions)
15448            || !VEC_empty (char_ptr, utp->step_actions))
15449     warning (_("Uploaded tracepoint %d actions "
15450                "have no source form, ignoring them"),
15451              utp->number);
15452
15453   /* Copy any status information that might be available.  */
15454   tp->base.hit_count = utp->hit_count;
15455   tp->traceframe_usage = utp->traceframe_usage;
15456
15457   return tp;
15458 }
15459   
15460 /* Print information on tracepoint number TPNUM_EXP, or all if
15461    omitted.  */
15462
15463 static void
15464 tracepoints_info (char *args, int from_tty)
15465 {
15466   struct ui_out *uiout = current_uiout;
15467   int num_printed;
15468
15469   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15470
15471   if (num_printed == 0)
15472     {
15473       if (args == NULL || *args == '\0')
15474         ui_out_message (uiout, 0, "No tracepoints.\n");
15475       else
15476         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15477     }
15478
15479   default_collect_info ();
15480 }
15481
15482 /* The 'enable trace' command enables tracepoints.
15483    Not supported by all targets.  */
15484 static void
15485 enable_trace_command (char *args, int from_tty)
15486 {
15487   enable_command (args, from_tty);
15488 }
15489
15490 /* The 'disable trace' command disables tracepoints.
15491    Not supported by all targets.  */
15492 static void
15493 disable_trace_command (char *args, int from_tty)
15494 {
15495   disable_command (args, from_tty);
15496 }
15497
15498 /* Remove a tracepoint (or all if no argument).  */
15499 static void
15500 delete_trace_command (char *arg, int from_tty)
15501 {
15502   struct breakpoint *b, *b_tmp;
15503
15504   dont_repeat ();
15505
15506   if (arg == 0)
15507     {
15508       int breaks_to_delete = 0;
15509
15510       /* Delete all breakpoints if no argument.
15511          Do not delete internal or call-dummy breakpoints, these
15512          have to be deleted with an explicit breakpoint number 
15513          argument.  */
15514       ALL_TRACEPOINTS (b)
15515         if (is_tracepoint (b) && user_breakpoint_p (b))
15516           {
15517             breaks_to_delete = 1;
15518             break;
15519           }
15520
15521       /* Ask user only if there are some breakpoints to delete.  */
15522       if (!from_tty
15523           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15524         {
15525           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15526             if (is_tracepoint (b) && user_breakpoint_p (b))
15527               delete_breakpoint (b);
15528         }
15529     }
15530   else
15531     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15532 }
15533
15534 /* Helper function for trace_pass_command.  */
15535
15536 static void
15537 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15538 {
15539   tp->pass_count = count;
15540   observer_notify_breakpoint_modified (&tp->base);
15541   if (from_tty)
15542     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15543                      tp->base.number, count);
15544 }
15545
15546 /* Set passcount for tracepoint.
15547
15548    First command argument is passcount, second is tracepoint number.
15549    If tracepoint number omitted, apply to most recently defined.
15550    Also accepts special argument "all".  */
15551
15552 static void
15553 trace_pass_command (char *args, int from_tty)
15554 {
15555   struct tracepoint *t1;
15556   unsigned int count;
15557
15558   if (args == 0 || *args == 0)
15559     error (_("passcount command requires an "
15560              "argument (count + optional TP num)"));
15561
15562   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15563
15564   args = skip_spaces (args);
15565   if (*args && strncasecmp (args, "all", 3) == 0)
15566     {
15567       struct breakpoint *b;
15568
15569       args += 3;                        /* Skip special argument "all".  */
15570       if (*args)
15571         error (_("Junk at end of arguments."));
15572
15573       ALL_TRACEPOINTS (b)
15574       {
15575         t1 = (struct tracepoint *) b;
15576         trace_pass_set_count (t1, count, from_tty);
15577       }
15578     }
15579   else if (*args == '\0')
15580     {
15581       t1 = get_tracepoint_by_number (&args, NULL);
15582       if (t1)
15583         trace_pass_set_count (t1, count, from_tty);
15584     }
15585   else
15586     {
15587       struct get_number_or_range_state state;
15588
15589       init_number_or_range (&state, args);
15590       while (!state.finished)
15591         {
15592           t1 = get_tracepoint_by_number (&args, &state);
15593           if (t1)
15594             trace_pass_set_count (t1, count, from_tty);
15595         }
15596     }
15597 }
15598
15599 struct tracepoint *
15600 get_tracepoint (int num)
15601 {
15602   struct breakpoint *t;
15603
15604   ALL_TRACEPOINTS (t)
15605     if (t->number == num)
15606       return (struct tracepoint *) t;
15607
15608   return NULL;
15609 }
15610
15611 /* Find the tracepoint with the given target-side number (which may be
15612    different from the tracepoint number after disconnecting and
15613    reconnecting).  */
15614
15615 struct tracepoint *
15616 get_tracepoint_by_number_on_target (int num)
15617 {
15618   struct breakpoint *b;
15619
15620   ALL_TRACEPOINTS (b)
15621     {
15622       struct tracepoint *t = (struct tracepoint *) b;
15623
15624       if (t->number_on_target == num)
15625         return t;
15626     }
15627
15628   return NULL;
15629 }
15630
15631 /* Utility: parse a tracepoint number and look it up in the list.
15632    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15633    If the argument is missing, the most recent tracepoint
15634    (tracepoint_count) is returned.  */
15635
15636 struct tracepoint *
15637 get_tracepoint_by_number (char **arg,
15638                           struct get_number_or_range_state *state)
15639 {
15640   struct breakpoint *t;
15641   int tpnum;
15642   char *instring = arg == NULL ? NULL : *arg;
15643
15644   if (state)
15645     {
15646       gdb_assert (!state->finished);
15647       tpnum = get_number_or_range (state);
15648     }
15649   else if (arg == NULL || *arg == NULL || ! **arg)
15650     tpnum = tracepoint_count;
15651   else
15652     tpnum = get_number (arg);
15653
15654   if (tpnum <= 0)
15655     {
15656       if (instring && *instring)
15657         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15658                          instring);
15659       else
15660         printf_filtered (_("No previous tracepoint\n"));
15661       return NULL;
15662     }
15663
15664   ALL_TRACEPOINTS (t)
15665     if (t->number == tpnum)
15666     {
15667       return (struct tracepoint *) t;
15668     }
15669
15670   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15671   return NULL;
15672 }
15673
15674 void
15675 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15676 {
15677   if (b->thread != -1)
15678     fprintf_unfiltered (fp, " thread %d", b->thread);
15679
15680   if (b->task != 0)
15681     fprintf_unfiltered (fp, " task %d", b->task);
15682
15683   fprintf_unfiltered (fp, "\n");
15684 }
15685
15686 /* Save information on user settable breakpoints (watchpoints, etc) to
15687    a new script file named FILENAME.  If FILTER is non-NULL, call it
15688    on each breakpoint and only include the ones for which it returns
15689    non-zero.  */
15690
15691 static void
15692 save_breakpoints (char *filename, int from_tty,
15693                   int (*filter) (const struct breakpoint *))
15694 {
15695   struct breakpoint *tp;
15696   int any = 0;
15697   struct cleanup *cleanup;
15698   struct ui_file *fp;
15699   int extra_trace_bits = 0;
15700
15701   if (filename == 0 || *filename == 0)
15702     error (_("Argument required (file name in which to save)"));
15703
15704   /* See if we have anything to save.  */
15705   ALL_BREAKPOINTS (tp)
15706   {
15707     /* Skip internal and momentary breakpoints.  */
15708     if (!user_breakpoint_p (tp))
15709       continue;
15710
15711     /* If we have a filter, only save the breakpoints it accepts.  */
15712     if (filter && !filter (tp))
15713       continue;
15714
15715     any = 1;
15716
15717     if (is_tracepoint (tp))
15718       {
15719         extra_trace_bits = 1;
15720
15721         /* We can stop searching.  */
15722         break;
15723       }
15724   }
15725
15726   if (!any)
15727     {
15728       warning (_("Nothing to save."));
15729       return;
15730     }
15731
15732   filename = tilde_expand (filename);
15733   cleanup = make_cleanup (xfree, filename);
15734   fp = gdb_fopen (filename, "w");
15735   if (!fp)
15736     error (_("Unable to open file '%s' for saving (%s)"),
15737            filename, safe_strerror (errno));
15738   make_cleanup_ui_file_delete (fp);
15739
15740   if (extra_trace_bits)
15741     save_trace_state_variables (fp);
15742
15743   ALL_BREAKPOINTS (tp)
15744   {
15745     /* Skip internal and momentary breakpoints.  */
15746     if (!user_breakpoint_p (tp))
15747       continue;
15748
15749     /* If we have a filter, only save the breakpoints it accepts.  */
15750     if (filter && !filter (tp))
15751       continue;
15752
15753     tp->ops->print_recreate (tp, fp);
15754
15755     /* Note, we can't rely on tp->number for anything, as we can't
15756        assume the recreated breakpoint numbers will match.  Use $bpnum
15757        instead.  */
15758
15759     if (tp->cond_string)
15760       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15761
15762     if (tp->ignore_count)
15763       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15764
15765     if (tp->type != bp_dprintf && tp->commands)
15766       {
15767         fprintf_unfiltered (fp, "  commands\n");
15768         
15769         ui_out_redirect (current_uiout, fp);
15770         TRY
15771           {
15772             print_command_lines (current_uiout, tp->commands->commands, 2);
15773           }
15774         CATCH (ex, RETURN_MASK_ALL)
15775           {
15776             ui_out_redirect (current_uiout, NULL);
15777             throw_exception (ex);
15778           }
15779         END_CATCH
15780
15781         ui_out_redirect (current_uiout, NULL);
15782         fprintf_unfiltered (fp, "  end\n");
15783       }
15784
15785     if (tp->enable_state == bp_disabled)
15786       fprintf_unfiltered (fp, "disable $bpnum\n");
15787
15788     /* If this is a multi-location breakpoint, check if the locations
15789        should be individually disabled.  Watchpoint locations are
15790        special, and not user visible.  */
15791     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15792       {
15793         struct bp_location *loc;
15794         int n = 1;
15795
15796         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15797           if (!loc->enabled)
15798             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15799       }
15800   }
15801
15802   if (extra_trace_bits && *default_collect)
15803     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15804
15805   if (from_tty)
15806     printf_filtered (_("Saved to file '%s'.\n"), filename);
15807   do_cleanups (cleanup);
15808 }
15809
15810 /* The `save breakpoints' command.  */
15811
15812 static void
15813 save_breakpoints_command (char *args, int from_tty)
15814 {
15815   save_breakpoints (args, from_tty, NULL);
15816 }
15817
15818 /* The `save tracepoints' command.  */
15819
15820 static void
15821 save_tracepoints_command (char *args, int from_tty)
15822 {
15823   save_breakpoints (args, from_tty, is_tracepoint);
15824 }
15825
15826 /* Create a vector of all tracepoints.  */
15827
15828 VEC(breakpoint_p) *
15829 all_tracepoints (void)
15830 {
15831   VEC(breakpoint_p) *tp_vec = 0;
15832   struct breakpoint *tp;
15833
15834   ALL_TRACEPOINTS (tp)
15835   {
15836     VEC_safe_push (breakpoint_p, tp_vec, tp);
15837   }
15838
15839   return tp_vec;
15840 }
15841
15842 \f
15843 /* This help string is used to consolidate all the help string for specifying
15844    locations used by several commands.  */
15845
15846 #define LOCATION_HELP_STRING \
15847 "Linespecs are colon-separated lists of location parameters, such as\n\
15848 source filename, function name, label name, and line number.\n\
15849 Example: To specify the start of a label named \"the_top\" in the\n\
15850 function \"fact\" in the file \"factorial.c\", use\n\
15851 \"factorial.c:fact:the_top\".\n\
15852 \n\
15853 Address locations begin with \"*\" and specify an exact address in the\n\
15854 program.  Example: To specify the fourth byte past the start function\n\
15855 \"main\", use \"*main + 4\".\n\
15856 \n\
15857 Explicit locations are similar to linespecs but use an option/argument\n\
15858 syntax to specify location parameters.\n\
15859 Example: To specify the start of the label named \"the_top\" in the\n\
15860 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15861 -function fact -label the_top\".\n"
15862
15863 /* This help string is used for the break, hbreak, tbreak and thbreak
15864    commands.  It is defined as a macro to prevent duplication.
15865    COMMAND should be a string constant containing the name of the
15866    command.  */
15867
15868 #define BREAK_ARGS_HELP(command) \
15869 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15870 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15871 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15872 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15873 `-probe-dtrace' (for a DTrace probe).\n\
15874 LOCATION may be a linespec, address, or explicit location as described\n\
15875 below.\n\
15876 \n\
15877 With no LOCATION, uses current execution address of the selected\n\
15878 stack frame.  This is useful for breaking on return to a stack frame.\n\
15879 \n\
15880 THREADNUM is the number from \"info threads\".\n\
15881 CONDITION is a boolean expression.\n\
15882 \n" LOCATION_HELP_STRING "\n\
15883 Multiple breakpoints at one place are permitted, and useful if their\n\
15884 conditions are different.\n\
15885 \n\
15886 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15887
15888 /* List of subcommands for "catch".  */
15889 static struct cmd_list_element *catch_cmdlist;
15890
15891 /* List of subcommands for "tcatch".  */
15892 static struct cmd_list_element *tcatch_cmdlist;
15893
15894 void
15895 add_catch_command (char *name, char *docstring,
15896                    cmd_sfunc_ftype *sfunc,
15897                    completer_ftype *completer,
15898                    void *user_data_catch,
15899                    void *user_data_tcatch)
15900 {
15901   struct cmd_list_element *command;
15902
15903   command = add_cmd (name, class_breakpoint, NULL, docstring,
15904                      &catch_cmdlist);
15905   set_cmd_sfunc (command, sfunc);
15906   set_cmd_context (command, user_data_catch);
15907   set_cmd_completer (command, completer);
15908
15909   command = add_cmd (name, class_breakpoint, NULL, docstring,
15910                      &tcatch_cmdlist);
15911   set_cmd_sfunc (command, sfunc);
15912   set_cmd_context (command, user_data_tcatch);
15913   set_cmd_completer (command, completer);
15914 }
15915
15916 static void
15917 save_command (char *arg, int from_tty)
15918 {
15919   printf_unfiltered (_("\"save\" must be followed by "
15920                        "the name of a save subcommand.\n"));
15921   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15922 }
15923
15924 struct breakpoint *
15925 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15926                           void *data)
15927 {
15928   struct breakpoint *b, *b_tmp;
15929
15930   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15931     {
15932       if ((*callback) (b, data))
15933         return b;
15934     }
15935
15936   return NULL;
15937 }
15938
15939 /* Zero if any of the breakpoint's locations could be a location where
15940    functions have been inlined, nonzero otherwise.  */
15941
15942 static int
15943 is_non_inline_function (struct breakpoint *b)
15944 {
15945   /* The shared library event breakpoint is set on the address of a
15946      non-inline function.  */
15947   if (b->type == bp_shlib_event)
15948     return 1;
15949
15950   return 0;
15951 }
15952
15953 /* Nonzero if the specified PC cannot be a location where functions
15954    have been inlined.  */
15955
15956 int
15957 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15958                            const struct target_waitstatus *ws)
15959 {
15960   struct breakpoint *b;
15961   struct bp_location *bl;
15962
15963   ALL_BREAKPOINTS (b)
15964     {
15965       if (!is_non_inline_function (b))
15966         continue;
15967
15968       for (bl = b->loc; bl != NULL; bl = bl->next)
15969         {
15970           if (!bl->shlib_disabled
15971               && bpstat_check_location (bl, aspace, pc, ws))
15972             return 1;
15973         }
15974     }
15975
15976   return 0;
15977 }
15978
15979 /* Remove any references to OBJFILE which is going to be freed.  */
15980
15981 void
15982 breakpoint_free_objfile (struct objfile *objfile)
15983 {
15984   struct bp_location **locp, *loc;
15985
15986   ALL_BP_LOCATIONS (loc, locp)
15987     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15988       loc->symtab = NULL;
15989 }
15990
15991 void
15992 initialize_breakpoint_ops (void)
15993 {
15994   static int initialized = 0;
15995
15996   struct breakpoint_ops *ops;
15997
15998   if (initialized)
15999     return;
16000   initialized = 1;
16001
16002   /* The breakpoint_ops structure to be inherit by all kinds of
16003      breakpoints (real breakpoints, i.e., user "break" breakpoints,
16004      internal and momentary breakpoints, etc.).  */
16005   ops = &bkpt_base_breakpoint_ops;
16006   *ops = base_breakpoint_ops;
16007   ops->re_set = bkpt_re_set;
16008   ops->insert_location = bkpt_insert_location;
16009   ops->remove_location = bkpt_remove_location;
16010   ops->breakpoint_hit = bkpt_breakpoint_hit;
16011   ops->create_sals_from_location = bkpt_create_sals_from_location;
16012   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16013   ops->decode_location = bkpt_decode_location;
16014
16015   /* The breakpoint_ops structure to be used in regular breakpoints.  */
16016   ops = &bkpt_breakpoint_ops;
16017   *ops = bkpt_base_breakpoint_ops;
16018   ops->re_set = bkpt_re_set;
16019   ops->resources_needed = bkpt_resources_needed;
16020   ops->print_it = bkpt_print_it;
16021   ops->print_mention = bkpt_print_mention;
16022   ops->print_recreate = bkpt_print_recreate;
16023
16024   /* Ranged breakpoints.  */
16025   ops = &ranged_breakpoint_ops;
16026   *ops = bkpt_breakpoint_ops;
16027   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16028   ops->resources_needed = resources_needed_ranged_breakpoint;
16029   ops->print_it = print_it_ranged_breakpoint;
16030   ops->print_one = print_one_ranged_breakpoint;
16031   ops->print_one_detail = print_one_detail_ranged_breakpoint;
16032   ops->print_mention = print_mention_ranged_breakpoint;
16033   ops->print_recreate = print_recreate_ranged_breakpoint;
16034
16035   /* Internal breakpoints.  */
16036   ops = &internal_breakpoint_ops;
16037   *ops = bkpt_base_breakpoint_ops;
16038   ops->re_set = internal_bkpt_re_set;
16039   ops->check_status = internal_bkpt_check_status;
16040   ops->print_it = internal_bkpt_print_it;
16041   ops->print_mention = internal_bkpt_print_mention;
16042
16043   /* Momentary breakpoints.  */
16044   ops = &momentary_breakpoint_ops;
16045   *ops = bkpt_base_breakpoint_ops;
16046   ops->re_set = momentary_bkpt_re_set;
16047   ops->check_status = momentary_bkpt_check_status;
16048   ops->print_it = momentary_bkpt_print_it;
16049   ops->print_mention = momentary_bkpt_print_mention;
16050
16051   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
16052   ops = &longjmp_breakpoint_ops;
16053   *ops = momentary_breakpoint_ops;
16054   ops->dtor = longjmp_bkpt_dtor;
16055
16056   /* Probe breakpoints.  */
16057   ops = &bkpt_probe_breakpoint_ops;
16058   *ops = bkpt_breakpoint_ops;
16059   ops->insert_location = bkpt_probe_insert_location;
16060   ops->remove_location = bkpt_probe_remove_location;
16061   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
16062   ops->decode_location = bkpt_probe_decode_location;
16063
16064   /* Watchpoints.  */
16065   ops = &watchpoint_breakpoint_ops;
16066   *ops = base_breakpoint_ops;
16067   ops->dtor = dtor_watchpoint;
16068   ops->re_set = re_set_watchpoint;
16069   ops->insert_location = insert_watchpoint;
16070   ops->remove_location = remove_watchpoint;
16071   ops->breakpoint_hit = breakpoint_hit_watchpoint;
16072   ops->check_status = check_status_watchpoint;
16073   ops->resources_needed = resources_needed_watchpoint;
16074   ops->works_in_software_mode = works_in_software_mode_watchpoint;
16075   ops->print_it = print_it_watchpoint;
16076   ops->print_mention = print_mention_watchpoint;
16077   ops->print_recreate = print_recreate_watchpoint;
16078   ops->explains_signal = explains_signal_watchpoint;
16079
16080   /* Masked watchpoints.  */
16081   ops = &masked_watchpoint_breakpoint_ops;
16082   *ops = watchpoint_breakpoint_ops;
16083   ops->insert_location = insert_masked_watchpoint;
16084   ops->remove_location = remove_masked_watchpoint;
16085   ops->resources_needed = resources_needed_masked_watchpoint;
16086   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16087   ops->print_it = print_it_masked_watchpoint;
16088   ops->print_one_detail = print_one_detail_masked_watchpoint;
16089   ops->print_mention = print_mention_masked_watchpoint;
16090   ops->print_recreate = print_recreate_masked_watchpoint;
16091
16092   /* Tracepoints.  */
16093   ops = &tracepoint_breakpoint_ops;
16094   *ops = base_breakpoint_ops;
16095   ops->re_set = tracepoint_re_set;
16096   ops->breakpoint_hit = tracepoint_breakpoint_hit;
16097   ops->print_one_detail = tracepoint_print_one_detail;
16098   ops->print_mention = tracepoint_print_mention;
16099   ops->print_recreate = tracepoint_print_recreate;
16100   ops->create_sals_from_location = tracepoint_create_sals_from_location;
16101   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16102   ops->decode_location = tracepoint_decode_location;
16103
16104   /* Probe tracepoints.  */
16105   ops = &tracepoint_probe_breakpoint_ops;
16106   *ops = tracepoint_breakpoint_ops;
16107   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
16108   ops->decode_location = tracepoint_probe_decode_location;
16109
16110   /* Static tracepoints with marker (`-m').  */
16111   ops = &strace_marker_breakpoint_ops;
16112   *ops = tracepoint_breakpoint_ops;
16113   ops->create_sals_from_location = strace_marker_create_sals_from_location;
16114   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16115   ops->decode_location = strace_marker_decode_location;
16116
16117   /* Fork catchpoints.  */
16118   ops = &catch_fork_breakpoint_ops;
16119   *ops = base_breakpoint_ops;
16120   ops->insert_location = insert_catch_fork;
16121   ops->remove_location = remove_catch_fork;
16122   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16123   ops->print_it = print_it_catch_fork;
16124   ops->print_one = print_one_catch_fork;
16125   ops->print_mention = print_mention_catch_fork;
16126   ops->print_recreate = print_recreate_catch_fork;
16127
16128   /* Vfork catchpoints.  */
16129   ops = &catch_vfork_breakpoint_ops;
16130   *ops = base_breakpoint_ops;
16131   ops->insert_location = insert_catch_vfork;
16132   ops->remove_location = remove_catch_vfork;
16133   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16134   ops->print_it = print_it_catch_vfork;
16135   ops->print_one = print_one_catch_vfork;
16136   ops->print_mention = print_mention_catch_vfork;
16137   ops->print_recreate = print_recreate_catch_vfork;
16138
16139   /* Exec catchpoints.  */
16140   ops = &catch_exec_breakpoint_ops;
16141   *ops = base_breakpoint_ops;
16142   ops->dtor = dtor_catch_exec;
16143   ops->insert_location = insert_catch_exec;
16144   ops->remove_location = remove_catch_exec;
16145   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16146   ops->print_it = print_it_catch_exec;
16147   ops->print_one = print_one_catch_exec;
16148   ops->print_mention = print_mention_catch_exec;
16149   ops->print_recreate = print_recreate_catch_exec;
16150
16151   /* Solib-related catchpoints.  */
16152   ops = &catch_solib_breakpoint_ops;
16153   *ops = base_breakpoint_ops;
16154   ops->dtor = dtor_catch_solib;
16155   ops->insert_location = insert_catch_solib;
16156   ops->remove_location = remove_catch_solib;
16157   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16158   ops->check_status = check_status_catch_solib;
16159   ops->print_it = print_it_catch_solib;
16160   ops->print_one = print_one_catch_solib;
16161   ops->print_mention = print_mention_catch_solib;
16162   ops->print_recreate = print_recreate_catch_solib;
16163
16164   ops = &dprintf_breakpoint_ops;
16165   *ops = bkpt_base_breakpoint_ops;
16166   ops->re_set = dprintf_re_set;
16167   ops->resources_needed = bkpt_resources_needed;
16168   ops->print_it = bkpt_print_it;
16169   ops->print_mention = bkpt_print_mention;
16170   ops->print_recreate = dprintf_print_recreate;
16171   ops->after_condition_true = dprintf_after_condition_true;
16172   ops->breakpoint_hit = dprintf_breakpoint_hit;
16173 }
16174
16175 /* Chain containing all defined "enable breakpoint" subcommands.  */
16176
16177 static struct cmd_list_element *enablebreaklist = NULL;
16178
16179 void
16180 _initialize_breakpoint (void)
16181 {
16182   struct cmd_list_element *c;
16183
16184   initialize_breakpoint_ops ();
16185
16186   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16187   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16188   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16189
16190   breakpoint_objfile_key
16191     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16192
16193   breakpoint_chain = 0;
16194   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16195      before a breakpoint is set.  */
16196   breakpoint_count = 0;
16197
16198   tracepoint_count = 0;
16199
16200   add_com ("ignore", class_breakpoint, ignore_command, _("\
16201 Set ignore-count of breakpoint number N to COUNT.\n\
16202 Usage is `ignore N COUNT'."));
16203
16204   add_com ("commands", class_breakpoint, commands_command, _("\
16205 Set commands to be executed when a breakpoint is hit.\n\
16206 Give breakpoint number as argument after \"commands\".\n\
16207 With no argument, the targeted breakpoint is the last one set.\n\
16208 The commands themselves follow starting on the next line.\n\
16209 Type a line containing \"end\" to indicate the end of them.\n\
16210 Give \"silent\" as the first line to make the breakpoint silent;\n\
16211 then no output is printed when it is hit, except what the commands print."));
16212
16213   c = add_com ("condition", class_breakpoint, condition_command, _("\
16214 Specify breakpoint number N to break only if COND is true.\n\
16215 Usage is `condition N COND', where N is an integer and COND is an\n\
16216 expression to be evaluated whenever breakpoint N is reached."));
16217   set_cmd_completer (c, condition_completer);
16218
16219   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16220 Set a temporary breakpoint.\n\
16221 Like \"break\" except the breakpoint is only temporary,\n\
16222 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16223 by using \"enable delete\" on the breakpoint number.\n\
16224 \n"
16225 BREAK_ARGS_HELP ("tbreak")));
16226   set_cmd_completer (c, location_completer);
16227
16228   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16229 Set a hardware assisted breakpoint.\n\
16230 Like \"break\" except the breakpoint requires hardware support,\n\
16231 some target hardware may not have this support.\n\
16232 \n"
16233 BREAK_ARGS_HELP ("hbreak")));
16234   set_cmd_completer (c, location_completer);
16235
16236   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16237 Set a temporary hardware assisted breakpoint.\n\
16238 Like \"hbreak\" except the breakpoint is only temporary,\n\
16239 so it will be deleted when hit.\n\
16240 \n"
16241 BREAK_ARGS_HELP ("thbreak")));
16242   set_cmd_completer (c, location_completer);
16243
16244   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16245 Enable some breakpoints.\n\
16246 Give breakpoint numbers (separated by spaces) as arguments.\n\
16247 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16248 This is used to cancel the effect of the \"disable\" command.\n\
16249 With a subcommand you can enable temporarily."),
16250                   &enablelist, "enable ", 1, &cmdlist);
16251
16252   add_com_alias ("en", "enable", class_breakpoint, 1);
16253
16254   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16255 Enable some breakpoints.\n\
16256 Give breakpoint numbers (separated by spaces) as arguments.\n\
16257 This is used to cancel the effect of the \"disable\" command.\n\
16258 May be abbreviated to simply \"enable\".\n"),
16259                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16260
16261   add_cmd ("once", no_class, enable_once_command, _("\
16262 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16263 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16264            &enablebreaklist);
16265
16266   add_cmd ("delete", no_class, enable_delete_command, _("\
16267 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16268 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16269            &enablebreaklist);
16270
16271   add_cmd ("count", no_class, enable_count_command, _("\
16272 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16273 If a breakpoint is hit while enabled in this fashion,\n\
16274 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16275            &enablebreaklist);
16276
16277   add_cmd ("delete", no_class, enable_delete_command, _("\
16278 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16279 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16280            &enablelist);
16281
16282   add_cmd ("once", no_class, enable_once_command, _("\
16283 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16284 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16285            &enablelist);
16286
16287   add_cmd ("count", no_class, enable_count_command, _("\
16288 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16289 If a breakpoint is hit while enabled in this fashion,\n\
16290 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16291            &enablelist);
16292
16293   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16294 Disable some breakpoints.\n\
16295 Arguments are breakpoint numbers with spaces in between.\n\
16296 To disable all breakpoints, give no argument.\n\
16297 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16298                   &disablelist, "disable ", 1, &cmdlist);
16299   add_com_alias ("dis", "disable", class_breakpoint, 1);
16300   add_com_alias ("disa", "disable", class_breakpoint, 1);
16301
16302   add_cmd ("breakpoints", class_alias, disable_command, _("\
16303 Disable some breakpoints.\n\
16304 Arguments are breakpoint numbers with spaces in between.\n\
16305 To disable all breakpoints, give no argument.\n\
16306 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16307 This command may be abbreviated \"disable\"."),
16308            &disablelist);
16309
16310   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16311 Delete some breakpoints or auto-display expressions.\n\
16312 Arguments are breakpoint numbers with spaces in between.\n\
16313 To delete all breakpoints, give no argument.\n\
16314 \n\
16315 Also a prefix command for deletion of other GDB objects.\n\
16316 The \"unset\" command is also an alias for \"delete\"."),
16317                   &deletelist, "delete ", 1, &cmdlist);
16318   add_com_alias ("d", "delete", class_breakpoint, 1);
16319   add_com_alias ("del", "delete", class_breakpoint, 1);
16320
16321   add_cmd ("breakpoints", class_alias, delete_command, _("\
16322 Delete some breakpoints or auto-display expressions.\n\
16323 Arguments are breakpoint numbers with spaces in between.\n\
16324 To delete all breakpoints, give no argument.\n\
16325 This command may be abbreviated \"delete\"."),
16326            &deletelist);
16327
16328   add_com ("clear", class_breakpoint, clear_command, _("\
16329 Clear breakpoint at specified location.\n\
16330 Argument may be a linespec, explicit, or address location as described below.\n\
16331 \n\
16332 With no argument, clears all breakpoints in the line that the selected frame\n\
16333 is executing in.\n"
16334 "\n" LOCATION_HELP_STRING "\n\
16335 See also the \"delete\" command which clears breakpoints by number."));
16336   add_com_alias ("cl", "clear", class_breakpoint, 1);
16337
16338   c = add_com ("break", class_breakpoint, break_command, _("\
16339 Set breakpoint at specified location.\n"
16340 BREAK_ARGS_HELP ("break")));
16341   set_cmd_completer (c, location_completer);
16342
16343   add_com_alias ("b", "break", class_run, 1);
16344   add_com_alias ("br", "break", class_run, 1);
16345   add_com_alias ("bre", "break", class_run, 1);
16346   add_com_alias ("brea", "break", class_run, 1);
16347
16348   if (dbx_commands)
16349     {
16350       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16351 Break in function/address or break at a line in the current file."),
16352                              &stoplist, "stop ", 1, &cmdlist);
16353       add_cmd ("in", class_breakpoint, stopin_command,
16354                _("Break in function or address."), &stoplist);
16355       add_cmd ("at", class_breakpoint, stopat_command,
16356                _("Break at a line in the current file."), &stoplist);
16357       add_com ("status", class_info, breakpoints_info, _("\
16358 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16359 The \"Type\" column indicates one of:\n\
16360 \tbreakpoint     - normal breakpoint\n\
16361 \twatchpoint     - watchpoint\n\
16362 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16363 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16364 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16365 address and file/line number respectively.\n\
16366 \n\
16367 Convenience variable \"$_\" and default examine address for \"x\"\n\
16368 are set to the address of the last breakpoint listed unless the command\n\
16369 is prefixed with \"server \".\n\n\
16370 Convenience variable \"$bpnum\" contains the number of the last\n\
16371 breakpoint set."));
16372     }
16373
16374   add_info ("breakpoints", breakpoints_info, _("\
16375 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16376 The \"Type\" column indicates one of:\n\
16377 \tbreakpoint     - normal breakpoint\n\
16378 \twatchpoint     - watchpoint\n\
16379 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16380 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16381 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16382 address and file/line number respectively.\n\
16383 \n\
16384 Convenience variable \"$_\" and default examine address for \"x\"\n\
16385 are set to the address of the last breakpoint listed unless the command\n\
16386 is prefixed with \"server \".\n\n\
16387 Convenience variable \"$bpnum\" contains the number of the last\n\
16388 breakpoint set."));
16389
16390   add_info_alias ("b", "breakpoints", 1);
16391
16392   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16393 Status of all breakpoints, or breakpoint number NUMBER.\n\
16394 The \"Type\" column indicates one of:\n\
16395 \tbreakpoint     - normal breakpoint\n\
16396 \twatchpoint     - watchpoint\n\
16397 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16398 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16399 \tuntil          - internal breakpoint used by the \"until\" command\n\
16400 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16401 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16402 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16403 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16404 address and file/line number respectively.\n\
16405 \n\
16406 Convenience variable \"$_\" and default examine address for \"x\"\n\
16407 are set to the address of the last breakpoint listed unless the command\n\
16408 is prefixed with \"server \".\n\n\
16409 Convenience variable \"$bpnum\" contains the number of the last\n\
16410 breakpoint set."),
16411            &maintenanceinfolist);
16412
16413   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16414 Set catchpoints to catch events."),
16415                   &catch_cmdlist, "catch ",
16416                   0/*allow-unknown*/, &cmdlist);
16417
16418   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16419 Set temporary catchpoints to catch events."),
16420                   &tcatch_cmdlist, "tcatch ",
16421                   0/*allow-unknown*/, &cmdlist);
16422
16423   add_catch_command ("fork", _("Catch calls to fork."),
16424                      catch_fork_command_1,
16425                      NULL,
16426                      (void *) (uintptr_t) catch_fork_permanent,
16427                      (void *) (uintptr_t) catch_fork_temporary);
16428   add_catch_command ("vfork", _("Catch calls to vfork."),
16429                      catch_fork_command_1,
16430                      NULL,
16431                      (void *) (uintptr_t) catch_vfork_permanent,
16432                      (void *) (uintptr_t) catch_vfork_temporary);
16433   add_catch_command ("exec", _("Catch calls to exec."),
16434                      catch_exec_command_1,
16435                      NULL,
16436                      CATCH_PERMANENT,
16437                      CATCH_TEMPORARY);
16438   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16439 Usage: catch load [REGEX]\n\
16440 If REGEX is given, only stop for libraries matching the regular expression."),
16441                      catch_load_command_1,
16442                      NULL,
16443                      CATCH_PERMANENT,
16444                      CATCH_TEMPORARY);
16445   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16446 Usage: catch unload [REGEX]\n\
16447 If REGEX is given, only stop for libraries matching the regular expression."),
16448                      catch_unload_command_1,
16449                      NULL,
16450                      CATCH_PERMANENT,
16451                      CATCH_TEMPORARY);
16452
16453   c = add_com ("watch", class_breakpoint, watch_command, _("\
16454 Set a watchpoint for an expression.\n\
16455 Usage: watch [-l|-location] EXPRESSION\n\
16456 A watchpoint stops execution of your program whenever the value of\n\
16457 an expression changes.\n\
16458 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16459 the memory to which it refers."));
16460   set_cmd_completer (c, expression_completer);
16461
16462   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16463 Set a read watchpoint for an expression.\n\
16464 Usage: rwatch [-l|-location] EXPRESSION\n\
16465 A watchpoint stops execution of your program whenever the value of\n\
16466 an expression is read.\n\
16467 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16468 the memory to which it refers."));
16469   set_cmd_completer (c, expression_completer);
16470
16471   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16472 Set a watchpoint for an expression.\n\
16473 Usage: awatch [-l|-location] EXPRESSION\n\
16474 A watchpoint stops execution of your program whenever the value of\n\
16475 an expression is either read or written.\n\
16476 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16477 the memory to which it refers."));
16478   set_cmd_completer (c, expression_completer);
16479
16480   add_info ("watchpoints", watchpoints_info, _("\
16481 Status of specified watchpoints (all watchpoints if no argument)."));
16482
16483   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16484      respond to changes - contrary to the description.  */
16485   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16486                             &can_use_hw_watchpoints, _("\
16487 Set debugger's willingness to use watchpoint hardware."), _("\
16488 Show debugger's willingness to use watchpoint hardware."), _("\
16489 If zero, gdb will not use hardware for new watchpoints, even if\n\
16490 such is available.  (However, any hardware watchpoints that were\n\
16491 created before setting this to nonzero, will continue to use watchpoint\n\
16492 hardware.)"),
16493                             NULL,
16494                             show_can_use_hw_watchpoints,
16495                             &setlist, &showlist);
16496
16497   can_use_hw_watchpoints = 1;
16498
16499   /* Tracepoint manipulation commands.  */
16500
16501   c = add_com ("trace", class_breakpoint, trace_command, _("\
16502 Set a tracepoint at specified location.\n\
16503 \n"
16504 BREAK_ARGS_HELP ("trace") "\n\
16505 Do \"help tracepoints\" for info on other tracepoint commands."));
16506   set_cmd_completer (c, location_completer);
16507
16508   add_com_alias ("tp", "trace", class_alias, 0);
16509   add_com_alias ("tr", "trace", class_alias, 1);
16510   add_com_alias ("tra", "trace", class_alias, 1);
16511   add_com_alias ("trac", "trace", class_alias, 1);
16512
16513   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16514 Set a fast tracepoint at specified location.\n\
16515 \n"
16516 BREAK_ARGS_HELP ("ftrace") "\n\
16517 Do \"help tracepoints\" for info on other tracepoint commands."));
16518   set_cmd_completer (c, location_completer);
16519
16520   c = add_com ("strace", class_breakpoint, strace_command, _("\
16521 Set a static tracepoint at location or marker.\n\
16522 \n\
16523 strace [LOCATION] [if CONDITION]\n\
16524 LOCATION may be a linespec, explicit, or address location (described below) \n\
16525 or -m MARKER_ID.\n\n\
16526 If a marker id is specified, probe the marker with that name.  With\n\
16527 no LOCATION, uses current execution address of the selected stack frame.\n\
16528 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16529 This collects arbitrary user data passed in the probe point call to the\n\
16530 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16531 by printing the $_sdata variable like any other convenience variable.\n\
16532 \n\
16533 CONDITION is a boolean expression.\n\
16534 \n" LOCATION_HELP_STRING "\n\
16535 Multiple tracepoints at one place are permitted, and useful if their\n\
16536 conditions are different.\n\
16537 \n\
16538 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16539 Do \"help tracepoints\" for info on other tracepoint commands."));
16540   set_cmd_completer (c, location_completer);
16541
16542   add_info ("tracepoints", tracepoints_info, _("\
16543 Status of specified tracepoints (all tracepoints if no argument).\n\
16544 Convenience variable \"$tpnum\" contains the number of the\n\
16545 last tracepoint set."));
16546
16547   add_info_alias ("tp", "tracepoints", 1);
16548
16549   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16550 Delete specified tracepoints.\n\
16551 Arguments are tracepoint numbers, separated by spaces.\n\
16552 No argument means delete all tracepoints."),
16553            &deletelist);
16554   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16555
16556   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16557 Disable specified tracepoints.\n\
16558 Arguments are tracepoint numbers, separated by spaces.\n\
16559 No argument means disable all tracepoints."),
16560            &disablelist);
16561   deprecate_cmd (c, "disable");
16562
16563   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16564 Enable specified tracepoints.\n\
16565 Arguments are tracepoint numbers, separated by spaces.\n\
16566 No argument means enable all tracepoints."),
16567            &enablelist);
16568   deprecate_cmd (c, "enable");
16569
16570   add_com ("passcount", class_trace, trace_pass_command, _("\
16571 Set the passcount for a tracepoint.\n\
16572 The trace will end when the tracepoint has been passed 'count' times.\n\
16573 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16574 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16575
16576   add_prefix_cmd ("save", class_breakpoint, save_command,
16577                   _("Save breakpoint definitions as a script."),
16578                   &save_cmdlist, "save ",
16579                   0/*allow-unknown*/, &cmdlist);
16580
16581   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16582 Save current breakpoint definitions as a script.\n\
16583 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16584 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16585 session to restore them."),
16586                &save_cmdlist);
16587   set_cmd_completer (c, filename_completer);
16588
16589   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16590 Save current tracepoint definitions as a script.\n\
16591 Use the 'source' command in another debug session to restore them."),
16592                &save_cmdlist);
16593   set_cmd_completer (c, filename_completer);
16594
16595   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16596   deprecate_cmd (c, "save tracepoints");
16597
16598   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16599 Breakpoint specific settings\n\
16600 Configure various breakpoint-specific variables such as\n\
16601 pending breakpoint behavior"),
16602                   &breakpoint_set_cmdlist, "set breakpoint ",
16603                   0/*allow-unknown*/, &setlist);
16604   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16605 Breakpoint specific settings\n\
16606 Configure various breakpoint-specific variables such as\n\
16607 pending breakpoint behavior"),
16608                   &breakpoint_show_cmdlist, "show breakpoint ",
16609                   0/*allow-unknown*/, &showlist);
16610
16611   add_setshow_auto_boolean_cmd ("pending", no_class,
16612                                 &pending_break_support, _("\
16613 Set debugger's behavior regarding pending breakpoints."), _("\
16614 Show debugger's behavior regarding pending breakpoints."), _("\
16615 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16616 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16617 an error.  If auto, an unrecognized breakpoint location results in a\n\
16618 user-query to see if a pending breakpoint should be created."),
16619                                 NULL,
16620                                 show_pending_break_support,
16621                                 &breakpoint_set_cmdlist,
16622                                 &breakpoint_show_cmdlist);
16623
16624   pending_break_support = AUTO_BOOLEAN_AUTO;
16625
16626   add_setshow_boolean_cmd ("auto-hw", no_class,
16627                            &automatic_hardware_breakpoints, _("\
16628 Set automatic usage of hardware breakpoints."), _("\
16629 Show automatic usage of hardware breakpoints."), _("\
16630 If set, the debugger will automatically use hardware breakpoints for\n\
16631 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16632 a warning will be emitted for such breakpoints."),
16633                            NULL,
16634                            show_automatic_hardware_breakpoints,
16635                            &breakpoint_set_cmdlist,
16636                            &breakpoint_show_cmdlist);
16637
16638   add_setshow_boolean_cmd ("always-inserted", class_support,
16639                            &always_inserted_mode, _("\
16640 Set mode for inserting breakpoints."), _("\
16641 Show mode for inserting breakpoints."), _("\
16642 When this mode is on, breakpoints are inserted immediately as soon as\n\
16643 they're created, kept inserted even when execution stops, and removed\n\
16644 only when the user deletes them.  When this mode is off (the default),\n\
16645 breakpoints are inserted only when execution continues, and removed\n\
16646 when execution stops."),
16647                                 NULL,
16648                                 &show_always_inserted_mode,
16649                                 &breakpoint_set_cmdlist,
16650                                 &breakpoint_show_cmdlist);
16651
16652   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16653                         condition_evaluation_enums,
16654                         &condition_evaluation_mode_1, _("\
16655 Set mode of breakpoint condition evaluation."), _("\
16656 Show mode of breakpoint condition evaluation."), _("\
16657 When this is set to \"host\", breakpoint conditions will be\n\
16658 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16659 breakpoint conditions will be downloaded to the target (if the target\n\
16660 supports such feature) and conditions will be evaluated on the target's side.\n\
16661 If this is set to \"auto\" (default), this will be automatically set to\n\
16662 \"target\" if it supports condition evaluation, otherwise it will\n\
16663 be set to \"gdb\""),
16664                            &set_condition_evaluation_mode,
16665                            &show_condition_evaluation_mode,
16666                            &breakpoint_set_cmdlist,
16667                            &breakpoint_show_cmdlist);
16668
16669   add_com ("break-range", class_breakpoint, break_range_command, _("\
16670 Set a breakpoint for an address range.\n\
16671 break-range START-LOCATION, END-LOCATION\n\
16672 where START-LOCATION and END-LOCATION can be one of the following:\n\
16673   LINENUM, for that line in the current file,\n\
16674   FILE:LINENUM, for that line in that file,\n\
16675   +OFFSET, for that number of lines after the current line\n\
16676            or the start of the range\n\
16677   FUNCTION, for the first line in that function,\n\
16678   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16679   *ADDRESS, for the instruction at that address.\n\
16680 \n\
16681 The breakpoint will stop execution of the inferior whenever it executes\n\
16682 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16683 range (including START-LOCATION and END-LOCATION)."));
16684
16685   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16686 Set a dynamic printf at specified location.\n\
16687 dprintf location,format string,arg1,arg2,...\n\
16688 location may be a linespec, explicit, or address location.\n"
16689 "\n" LOCATION_HELP_STRING));
16690   set_cmd_completer (c, location_completer);
16691
16692   add_setshow_enum_cmd ("dprintf-style", class_support,
16693                         dprintf_style_enums, &dprintf_style, _("\
16694 Set the style of usage for dynamic printf."), _("\
16695 Show the style of usage for dynamic printf."), _("\
16696 This setting chooses how GDB will do a dynamic printf.\n\
16697 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16698 console, as with the \"printf\" command.\n\
16699 If the value is \"call\", the print is done by calling a function in your\n\
16700 program; by default printf(), but you can choose a different function or\n\
16701 output stream by setting dprintf-function and dprintf-channel."),
16702                         update_dprintf_commands, NULL,
16703                         &setlist, &showlist);
16704
16705   dprintf_function = xstrdup ("printf");
16706   add_setshow_string_cmd ("dprintf-function", class_support,
16707                           &dprintf_function, _("\
16708 Set the function to use for dynamic printf"), _("\
16709 Show the function to use for dynamic printf"), NULL,
16710                           update_dprintf_commands, NULL,
16711                           &setlist, &showlist);
16712
16713   dprintf_channel = xstrdup ("");
16714   add_setshow_string_cmd ("dprintf-channel", class_support,
16715                           &dprintf_channel, _("\
16716 Set the channel to use for dynamic printf"), _("\
16717 Show the channel to use for dynamic printf"), NULL,
16718                           update_dprintf_commands, NULL,
16719                           &setlist, &showlist);
16720
16721   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16722                            &disconnected_dprintf, _("\
16723 Set whether dprintf continues after GDB disconnects."), _("\
16724 Show whether dprintf continues after GDB disconnects."), _("\
16725 Use this to let dprintf commands continue to hit and produce output\n\
16726 even if GDB disconnects or detaches from the target."),
16727                            NULL,
16728                            NULL,
16729                            &setlist, &showlist);
16730
16731   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16732 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16733 (target agent only) This is useful for formatted output in user-defined commands."));
16734
16735   automatic_hardware_breakpoints = 1;
16736
16737   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16738   observer_attach_thread_exit (remove_threaded_breakpoints);
16739 }