auto-generate most target debug methods
[external/binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2014 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 <string.h>
40 #include "gdb-demangle.h"
41 #include "filenames.h"
42 #include "annotate.h"
43 #include "symfile.h"
44 #include "objfiles.h"
45 #include "source.h"
46 #include "linespec.h"
47 #include "completer.h"
48 #include "gdb.h"
49 #include "ui-out.h"
50 #include "cli/cli-script.h"
51 #include "gdb_assert.h"
52 #include "block.h"
53 #include "solib.h"
54 #include "solist.h"
55 #include "observer.h"
56 #include "exceptions.h"
57 #include "memattr.h"
58 #include "ada-lang.h"
59 #include "top.h"
60 #include "valprint.h"
61 #include "jit.h"
62 #include "xml-syscall.h"
63 #include "parser-defs.h"
64 #include "gdb_regex.h"
65 #include "probe.h"
66 #include "cli/cli-utils.h"
67 #include "continuations.h"
68 #include "stack.h"
69 #include "skip.h"
70 #include "ax-gdb.h"
71 #include "dummy-frame.h"
72
73 #include "format.h"
74
75 /* readline include files */
76 #include "readline/readline.h"
77 #include "readline/history.h"
78
79 /* readline defines this.  */
80 #undef savestring
81
82 #include "mi/mi-common.h"
83 #include "extension.h"
84
85 /* Enums for exception-handling support.  */
86 enum exception_event_kind
87 {
88   EX_EVENT_THROW,
89   EX_EVENT_RETHROW,
90   EX_EVENT_CATCH
91 };
92
93 /* Prototypes for local functions.  */
94
95 static void enable_delete_command (char *, int);
96
97 static void enable_once_command (char *, int);
98
99 static void enable_count_command (char *, int);
100
101 static void disable_command (char *, int);
102
103 static void enable_command (char *, int);
104
105 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
106                                                       void *),
107                                     void *);
108
109 static void ignore_command (char *, int);
110
111 static int breakpoint_re_set_one (void *);
112
113 static void breakpoint_re_set_default (struct breakpoint *);
114
115 static void create_sals_from_address_default (char **,
116                                               struct linespec_result *,
117                                               enum bptype, char *,
118                                               char **);
119
120 static void create_breakpoints_sal_default (struct gdbarch *,
121                                             struct linespec_result *,
122                                             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_linespec_default (struct breakpoint *, char **,
129                                      struct symtabs_and_lines *);
130
131 static void clear_command (char *, int);
132
133 static void catch_command (char *, int);
134
135 static int can_use_hardware_watchpoint (struct value *);
136
137 static void break_command_1 (char *, int, int);
138
139 static void mention (struct breakpoint *);
140
141 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
142                                                                enum bptype,
143                                                                const struct breakpoint_ops *);
144 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
145                                                        const struct symtab_and_line *);
146
147 /* This function is used in gdbtk sources and thus can not be made
148    static.  */
149 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
150                                        struct symtab_and_line,
151                                        enum bptype,
152                                        const struct breakpoint_ops *);
153
154 static struct breakpoint *
155   momentary_breakpoint_from_master (struct breakpoint *orig,
156                                     enum bptype type,
157                                     const struct breakpoint_ops *ops,
158                                     int loc_enabled);
159
160 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
161
162 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
163                                             CORE_ADDR bpaddr,
164                                             enum bptype bptype);
165
166 static void describe_other_breakpoints (struct gdbarch *,
167                                         struct program_space *, CORE_ADDR,
168                                         struct obj_section *, int);
169
170 static int watchpoint_locations_match (struct bp_location *loc1,
171                                        struct bp_location *loc2);
172
173 static int breakpoint_location_address_match (struct bp_location *bl,
174                                               struct address_space *aspace,
175                                               CORE_ADDR addr);
176
177 static void breakpoints_info (char *, int);
178
179 static void watchpoints_info (char *, int);
180
181 static int breakpoint_1 (char *, int, 
182                          int (*) (const struct breakpoint *));
183
184 static int breakpoint_cond_eval (void *);
185
186 static void cleanup_executing_breakpoints (void *);
187
188 static void commands_command (char *, int);
189
190 static void condition_command (char *, int);
191
192 typedef enum
193   {
194     mark_inserted,
195     mark_uninserted
196   }
197 insertion_state_t;
198
199 static int remove_breakpoint (struct bp_location *, insertion_state_t);
200 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
201
202 static enum print_stop_action print_bp_stop_message (bpstat bs);
203
204 static int watchpoint_check (void *);
205
206 static void maintenance_info_breakpoints (char *, int);
207
208 static int hw_breakpoint_used_count (void);
209
210 static int hw_watchpoint_use_count (struct breakpoint *);
211
212 static int hw_watchpoint_used_count_others (struct breakpoint *except,
213                                             enum bptype type,
214                                             int *other_type_used);
215
216 static void hbreak_command (char *, int);
217
218 static void thbreak_command (char *, int);
219
220 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
221                                     int count);
222
223 static void stop_command (char *arg, int from_tty);
224
225 static void stopin_command (char *arg, int from_tty);
226
227 static void stopat_command (char *arg, int from_tty);
228
229 static void tcatch_command (char *arg, int from_tty);
230
231 static void detach_single_step_breakpoints (void);
232
233 static int find_single_step_breakpoint (struct address_space *aspace,
234                                         CORE_ADDR pc);
235
236 static void free_bp_location (struct bp_location *loc);
237 static void incref_bp_location (struct bp_location *loc);
238 static void decref_bp_location (struct bp_location **loc);
239
240 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
241
242 static void update_global_location_list (int);
243
244 static void update_global_location_list_nothrow (int);
245
246 static int is_hardware_watchpoint (const struct breakpoint *bpt);
247
248 static void insert_breakpoint_locations (void);
249
250 static int syscall_catchpoint_p (struct breakpoint *b);
251
252 static void tracepoints_info (char *, int);
253
254 static void delete_trace_command (char *, int);
255
256 static void enable_trace_command (char *, int);
257
258 static void disable_trace_command (char *, int);
259
260 static void trace_pass_command (char *, int);
261
262 static void set_tracepoint_count (int num);
263
264 static int is_masked_watchpoint (const struct breakpoint *b);
265
266 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
267
268 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
269    otherwise.  */
270
271 static int strace_marker_p (struct breakpoint *b);
272
273 /* The abstract base class all breakpoint_ops structures inherit
274    from.  */
275 struct breakpoint_ops base_breakpoint_ops;
276
277 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
278    that are implemented on top of software or hardware breakpoints
279    (user breakpoints, internal and momentary breakpoints, etc.).  */
280 static struct breakpoint_ops bkpt_base_breakpoint_ops;
281
282 /* Internal breakpoints class type.  */
283 static struct breakpoint_ops internal_breakpoint_ops;
284
285 /* Momentary breakpoints class type.  */
286 static struct breakpoint_ops momentary_breakpoint_ops;
287
288 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
289 static struct breakpoint_ops longjmp_breakpoint_ops;
290
291 /* The breakpoint_ops structure to be used in regular user created
292    breakpoints.  */
293 struct breakpoint_ops bkpt_breakpoint_ops;
294
295 /* Breakpoints set on probes.  */
296 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
297
298 /* Dynamic printf class type.  */
299 struct breakpoint_ops dprintf_breakpoint_ops;
300
301 /* One (or perhaps two) breakpoints used for software single
302    stepping.  */
303
304 static void *single_step_breakpoints[2];
305 static struct gdbarch *single_step_gdbarch[2];
306
307 /* The style in which to perform a dynamic printf.  This is a user
308    option because different output options have different tradeoffs;
309    if GDB does the printing, there is better error handling if there
310    is a problem with any of the arguments, but using an inferior
311    function lets you have special-purpose printers and sending of
312    output to the same place as compiled-in print functions.  */
313
314 static const char dprintf_style_gdb[] = "gdb";
315 static const char dprintf_style_call[] = "call";
316 static const char dprintf_style_agent[] = "agent";
317 static const char *const dprintf_style_enums[] = {
318   dprintf_style_gdb,
319   dprintf_style_call,
320   dprintf_style_agent,
321   NULL
322 };
323 static const char *dprintf_style = dprintf_style_gdb;
324
325 /* The function to use for dynamic printf if the preferred style is to
326    call into the inferior.  The value is simply a string that is
327    copied into the command, so it can be anything that GDB can
328    evaluate to a callable address, not necessarily a function name.  */
329
330 static char *dprintf_function = "";
331
332 /* The channel to use for dynamic printf if the preferred style is to
333    call into the inferior; if a nonempty string, it will be passed to
334    the call as the first argument, with the format string as the
335    second.  As with the dprintf function, this can be anything that
336    GDB knows how to evaluate, so in addition to common choices like
337    "stderr", this could be an app-specific expression like
338    "mystreams[curlogger]".  */
339
340 static char *dprintf_channel = "";
341
342 /* True if dprintf commands should continue to operate even if GDB
343    has disconnected.  */
344 static int disconnected_dprintf = 1;
345
346 /* A reference-counted struct command_line.  This lets multiple
347    breakpoints share a single command list.  */
348 struct counted_command_line
349 {
350   /* The reference count.  */
351   int refc;
352
353   /* The command list.  */
354   struct command_line *commands;
355 };
356
357 struct command_line *
358 breakpoint_commands (struct breakpoint *b)
359 {
360   return b->commands ? b->commands->commands : NULL;
361 }
362
363 /* Flag indicating that a command has proceeded the inferior past the
364    current breakpoint.  */
365
366 static int breakpoint_proceeded;
367
368 const char *
369 bpdisp_text (enum bpdisp disp)
370 {
371   /* NOTE: the following values are a part of MI protocol and
372      represent values of 'disp' field returned when inferior stops at
373      a breakpoint.  */
374   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
375
376   return bpdisps[(int) disp];
377 }
378
379 /* Prototypes for exported functions.  */
380 /* If FALSE, gdb will not use hardware support for watchpoints, even
381    if such is available.  */
382 static int can_use_hw_watchpoints;
383
384 static void
385 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
386                              struct cmd_list_element *c,
387                              const char *value)
388 {
389   fprintf_filtered (file,
390                     _("Debugger's willingness to use "
391                       "watchpoint hardware is %s.\n"),
392                     value);
393 }
394
395 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
396    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
397    for unrecognized breakpoint locations.
398    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
399 static enum auto_boolean pending_break_support;
400 static void
401 show_pending_break_support (struct ui_file *file, int from_tty,
402                             struct cmd_list_element *c,
403                             const char *value)
404 {
405   fprintf_filtered (file,
406                     _("Debugger's behavior regarding "
407                       "pending breakpoints is %s.\n"),
408                     value);
409 }
410
411 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
412    set with "break" but falling in read-only memory.
413    If 0, gdb will warn about such breakpoints, but won't automatically
414    use hardware breakpoints.  */
415 static int automatic_hardware_breakpoints;
416 static void
417 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
418                                      struct cmd_list_element *c,
419                                      const char *value)
420 {
421   fprintf_filtered (file,
422                     _("Automatic usage of hardware breakpoints is %s.\n"),
423                     value);
424 }
425
426 /* If on, gdb will keep breakpoints inserted even as inferior is
427    stopped, and immediately insert any new breakpoints.  If off, gdb
428    will insert breakpoints into inferior only when resuming it, and
429    will remove breakpoints upon stop.  If auto, GDB will behave as ON
430    if in non-stop mode, and as OFF if all-stop mode.*/
431
432 static enum auto_boolean always_inserted_mode = AUTO_BOOLEAN_AUTO;
433
434 static void
435 show_always_inserted_mode (struct ui_file *file, int from_tty,
436                      struct cmd_list_element *c, const char *value)
437 {
438   if (always_inserted_mode == AUTO_BOOLEAN_AUTO)
439     fprintf_filtered (file,
440                       _("Always inserted breakpoint "
441                         "mode is %s (currently %s).\n"),
442                       value,
443                       breakpoints_always_inserted_mode () ? "on" : "off");
444   else
445     fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
446                       value);
447 }
448
449 int
450 breakpoints_always_inserted_mode (void)
451 {
452   return (always_inserted_mode == AUTO_BOOLEAN_TRUE
453           || (always_inserted_mode == AUTO_BOOLEAN_AUTO && non_stop));
454 }
455
456 static const char condition_evaluation_both[] = "host or target";
457
458 /* Modes for breakpoint condition evaluation.  */
459 static const char condition_evaluation_auto[] = "auto";
460 static const char condition_evaluation_host[] = "host";
461 static const char condition_evaluation_target[] = "target";
462 static const char *const condition_evaluation_enums[] = {
463   condition_evaluation_auto,
464   condition_evaluation_host,
465   condition_evaluation_target,
466   NULL
467 };
468
469 /* Global that holds the current mode for breakpoint condition evaluation.  */
470 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
471
472 /* Global that we use to display information to the user (gets its value from
473    condition_evaluation_mode_1.  */
474 static const char *condition_evaluation_mode = condition_evaluation_auto;
475
476 /* Translate a condition evaluation mode MODE into either "host"
477    or "target".  This is used mostly to translate from "auto" to the
478    real setting that is being used.  It returns the translated
479    evaluation mode.  */
480
481 static const char *
482 translate_condition_evaluation_mode (const char *mode)
483 {
484   if (mode == condition_evaluation_auto)
485     {
486       if (target_supports_evaluation_of_breakpoint_conditions ())
487         return condition_evaluation_target;
488       else
489         return condition_evaluation_host;
490     }
491   else
492     return mode;
493 }
494
495 /* Discovers what condition_evaluation_auto translates to.  */
496
497 static const char *
498 breakpoint_condition_evaluation_mode (void)
499 {
500   return translate_condition_evaluation_mode (condition_evaluation_mode);
501 }
502
503 /* Return true if GDB should evaluate breakpoint conditions or false
504    otherwise.  */
505
506 static int
507 gdb_evaluates_breakpoint_condition_p (void)
508 {
509   const char *mode = breakpoint_condition_evaluation_mode ();
510
511   return (mode == condition_evaluation_host);
512 }
513
514 void _initialize_breakpoint (void);
515
516 /* Are we executing breakpoint commands?  */
517 static int executing_breakpoint_commands;
518
519 /* Are overlay event breakpoints enabled? */
520 static int overlay_events_enabled;
521
522 /* See description in breakpoint.h. */
523 int target_exact_watchpoints = 0;
524
525 /* Walk the following statement or block through all breakpoints.
526    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
527    current breakpoint.  */
528
529 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
530
531 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
532         for (B = breakpoint_chain;      \
533              B ? (TMP=B->next, 1): 0;   \
534              B = TMP)
535
536 /* Similar iterator for the low-level breakpoints.  SAFE variant is
537    not provided so update_global_location_list must not be called
538    while executing the block of ALL_BP_LOCATIONS.  */
539
540 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
541         for (BP_TMP = bp_location;                                      \
542              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
543              BP_TMP++)
544
545 /* Iterates through locations with address ADDRESS for the currently selected
546    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
547    to where the loop should start from.
548    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
549    appropriate location to start with.  */
550
551 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
552         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
553              BP_LOCP_TMP = BP_LOCP_START;                               \
554              BP_LOCP_START                                              \
555              && (BP_LOCP_TMP < bp_location + bp_location_count          \
556              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
557              BP_LOCP_TMP++)
558
559 /* Iterator for tracepoints only.  */
560
561 #define ALL_TRACEPOINTS(B)  \
562   for (B = breakpoint_chain; B; B = B->next)  \
563     if (is_tracepoint (B))
564
565 /* Chains of all breakpoints defined.  */
566
567 struct breakpoint *breakpoint_chain;
568
569 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
570
571 static struct bp_location **bp_location;
572
573 /* Number of elements of BP_LOCATION.  */
574
575 static unsigned bp_location_count;
576
577 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
578    ADDRESS for the current elements of BP_LOCATION which get a valid
579    result from bp_location_has_shadow.  You can use it for roughly
580    limiting the subrange of BP_LOCATION to scan for shadow bytes for
581    an address you need to read.  */
582
583 static CORE_ADDR bp_location_placed_address_before_address_max;
584
585 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
586    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
587    BP_LOCATION which get a valid result from bp_location_has_shadow.
588    You can use it for roughly limiting the subrange of BP_LOCATION to
589    scan for shadow bytes for an address you need to read.  */
590
591 static CORE_ADDR bp_location_shadow_len_after_address_max;
592
593 /* The locations that no longer correspond to any breakpoint, unlinked
594    from bp_location array, but for which a hit may still be reported
595    by a target.  */
596 VEC(bp_location_p) *moribund_locations = NULL;
597
598 /* Number of last breakpoint made.  */
599
600 static int breakpoint_count;
601
602 /* The value of `breakpoint_count' before the last command that
603    created breakpoints.  If the last (break-like) command created more
604    than one breakpoint, then the difference between BREAKPOINT_COUNT
605    and PREV_BREAKPOINT_COUNT is more than one.  */
606 static int prev_breakpoint_count;
607
608 /* Number of last tracepoint made.  */
609
610 static int tracepoint_count;
611
612 static struct cmd_list_element *breakpoint_set_cmdlist;
613 static struct cmd_list_element *breakpoint_show_cmdlist;
614 struct cmd_list_element *save_cmdlist;
615
616 /* Return whether a breakpoint is an active enabled breakpoint.  */
617 static int
618 breakpoint_enabled (struct breakpoint *b)
619 {
620   return (b->enable_state == bp_enabled);
621 }
622
623 /* Set breakpoint count to NUM.  */
624
625 static void
626 set_breakpoint_count (int num)
627 {
628   prev_breakpoint_count = breakpoint_count;
629   breakpoint_count = num;
630   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
631 }
632
633 /* Used by `start_rbreak_breakpoints' below, to record the current
634    breakpoint count before "rbreak" creates any breakpoint.  */
635 static int rbreak_start_breakpoint_count;
636
637 /* Called at the start an "rbreak" command to record the first
638    breakpoint made.  */
639
640 void
641 start_rbreak_breakpoints (void)
642 {
643   rbreak_start_breakpoint_count = breakpoint_count;
644 }
645
646 /* Called at the end of an "rbreak" command to record the last
647    breakpoint made.  */
648
649 void
650 end_rbreak_breakpoints (void)
651 {
652   prev_breakpoint_count = rbreak_start_breakpoint_count;
653 }
654
655 /* Used in run_command to zero the hit count when a new run starts.  */
656
657 void
658 clear_breakpoint_hit_counts (void)
659 {
660   struct breakpoint *b;
661
662   ALL_BREAKPOINTS (b)
663     b->hit_count = 0;
664 }
665
666 /* Allocate a new counted_command_line with reference count of 1.
667    The new structure owns COMMANDS.  */
668
669 static struct counted_command_line *
670 alloc_counted_command_line (struct command_line *commands)
671 {
672   struct counted_command_line *result
673     = xmalloc (sizeof (struct counted_command_line));
674
675   result->refc = 1;
676   result->commands = commands;
677   return result;
678 }
679
680 /* Increment reference count.  This does nothing if CMD is NULL.  */
681
682 static void
683 incref_counted_command_line (struct counted_command_line *cmd)
684 {
685   if (cmd)
686     ++cmd->refc;
687 }
688
689 /* Decrement reference count.  If the reference count reaches 0,
690    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
691    nothing if *CMDP is NULL.  */
692
693 static void
694 decref_counted_command_line (struct counted_command_line **cmdp)
695 {
696   if (*cmdp)
697     {
698       if (--(*cmdp)->refc == 0)
699         {
700           free_command_lines (&(*cmdp)->commands);
701           xfree (*cmdp);
702         }
703       *cmdp = NULL;
704     }
705 }
706
707 /* A cleanup function that calls decref_counted_command_line.  */
708
709 static void
710 do_cleanup_counted_command_line (void *arg)
711 {
712   decref_counted_command_line (arg);
713 }
714
715 /* Create a cleanup that calls decref_counted_command_line on the
716    argument.  */
717
718 static struct cleanup *
719 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
720 {
721   return make_cleanup (do_cleanup_counted_command_line, cmdp);
722 }
723
724 \f
725 /* Return the breakpoint with the specified number, or NULL
726    if the number does not refer to an existing breakpoint.  */
727
728 struct breakpoint *
729 get_breakpoint (int num)
730 {
731   struct breakpoint *b;
732
733   ALL_BREAKPOINTS (b)
734     if (b->number == num)
735       return b;
736   
737   return NULL;
738 }
739
740 \f
741
742 /* Mark locations as "conditions have changed" in case the target supports
743    evaluating conditions on its side.  */
744
745 static void
746 mark_breakpoint_modified (struct breakpoint *b)
747 {
748   struct bp_location *loc;
749
750   /* This is only meaningful if the target is
751      evaluating conditions and if the user has
752      opted for condition evaluation on the target's
753      side.  */
754   if (gdb_evaluates_breakpoint_condition_p ()
755       || !target_supports_evaluation_of_breakpoint_conditions ())
756     return;
757
758   if (!is_breakpoint (b))
759     return;
760
761   for (loc = b->loc; loc; loc = loc->next)
762     loc->condition_changed = condition_modified;
763 }
764
765 /* Mark location as "conditions have changed" in case the target supports
766    evaluating conditions on its side.  */
767
768 static void
769 mark_breakpoint_location_modified (struct bp_location *loc)
770 {
771   /* This is only meaningful if the target is
772      evaluating conditions and if the user has
773      opted for condition evaluation on the target's
774      side.  */
775   if (gdb_evaluates_breakpoint_condition_p ()
776       || !target_supports_evaluation_of_breakpoint_conditions ())
777
778     return;
779
780   if (!is_breakpoint (loc->owner))
781     return;
782
783   loc->condition_changed = condition_modified;
784 }
785
786 /* Sets the condition-evaluation mode using the static global
787    condition_evaluation_mode.  */
788
789 static void
790 set_condition_evaluation_mode (char *args, int from_tty,
791                                struct cmd_list_element *c)
792 {
793   const char *old_mode, *new_mode;
794
795   if ((condition_evaluation_mode_1 == condition_evaluation_target)
796       && !target_supports_evaluation_of_breakpoint_conditions ())
797     {
798       condition_evaluation_mode_1 = condition_evaluation_mode;
799       warning (_("Target does not support breakpoint condition evaluation.\n"
800                  "Using host evaluation mode instead."));
801       return;
802     }
803
804   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
805   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
806
807   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
808      settings was "auto".  */
809   condition_evaluation_mode = condition_evaluation_mode_1;
810
811   /* Only update the mode if the user picked a different one.  */
812   if (new_mode != old_mode)
813     {
814       struct bp_location *loc, **loc_tmp;
815       /* If the user switched to a different evaluation mode, we
816          need to synch the changes with the target as follows:
817
818          "host" -> "target": Send all (valid) conditions to the target.
819          "target" -> "host": Remove all the conditions from the target.
820       */
821
822       if (new_mode == condition_evaluation_target)
823         {
824           /* Mark everything modified and synch conditions with the
825              target.  */
826           ALL_BP_LOCATIONS (loc, loc_tmp)
827             mark_breakpoint_location_modified (loc);
828         }
829       else
830         {
831           /* Manually mark non-duplicate locations to synch conditions
832              with the target.  We do this to remove all the conditions the
833              target knows about.  */
834           ALL_BP_LOCATIONS (loc, loc_tmp)
835             if (is_breakpoint (loc->owner) && loc->inserted)
836               loc->needs_update = 1;
837         }
838
839       /* Do the update.  */
840       update_global_location_list (1);
841     }
842
843   return;
844 }
845
846 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
847    what "auto" is translating to.  */
848
849 static void
850 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
851                                 struct cmd_list_element *c, const char *value)
852 {
853   if (condition_evaluation_mode == condition_evaluation_auto)
854     fprintf_filtered (file,
855                       _("Breakpoint condition evaluation "
856                         "mode is %s (currently %s).\n"),
857                       value,
858                       breakpoint_condition_evaluation_mode ());
859   else
860     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
861                       value);
862 }
863
864 /* A comparison function for bp_location AP and BP that is used by
865    bsearch.  This comparison function only cares about addresses, unlike
866    the more general bp_location_compare function.  */
867
868 static int
869 bp_location_compare_addrs (const void *ap, const void *bp)
870 {
871   struct bp_location *a = *(void **) ap;
872   struct bp_location *b = *(void **) bp;
873
874   if (a->address == b->address)
875     return 0;
876   else
877     return ((a->address > b->address) - (a->address < b->address));
878 }
879
880 /* Helper function to skip all bp_locations with addresses
881    less than ADDRESS.  It returns the first bp_location that
882    is greater than or equal to ADDRESS.  If none is found, just
883    return NULL.  */
884
885 static struct bp_location **
886 get_first_locp_gte_addr (CORE_ADDR address)
887 {
888   struct bp_location dummy_loc;
889   struct bp_location *dummy_locp = &dummy_loc;
890   struct bp_location **locp_found = NULL;
891
892   /* Initialize the dummy location's address field.  */
893   memset (&dummy_loc, 0, sizeof (struct bp_location));
894   dummy_loc.address = address;
895
896   /* Find a close match to the first location at ADDRESS.  */
897   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
898                         sizeof (struct bp_location **),
899                         bp_location_compare_addrs);
900
901   /* Nothing was found, nothing left to do.  */
902   if (locp_found == NULL)
903     return NULL;
904
905   /* We may have found a location that is at ADDRESS but is not the first in the
906      location's list.  Go backwards (if possible) and locate the first one.  */
907   while ((locp_found - 1) >= bp_location
908          && (*(locp_found - 1))->address == address)
909     locp_found--;
910
911   return locp_found;
912 }
913
914 void
915 set_breakpoint_condition (struct breakpoint *b, char *exp,
916                           int from_tty)
917 {
918   xfree (b->cond_string);
919   b->cond_string = NULL;
920
921   if (is_watchpoint (b))
922     {
923       struct watchpoint *w = (struct watchpoint *) b;
924
925       xfree (w->cond_exp);
926       w->cond_exp = NULL;
927     }
928   else
929     {
930       struct bp_location *loc;
931
932       for (loc = b->loc; loc; loc = loc->next)
933         {
934           xfree (loc->cond);
935           loc->cond = NULL;
936
937           /* No need to free the condition agent expression
938              bytecode (if we have one).  We will handle this
939              when we go through update_global_location_list.  */
940         }
941     }
942
943   if (*exp == 0)
944     {
945       if (from_tty)
946         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
947     }
948   else
949     {
950       const char *arg = exp;
951
952       /* I don't know if it matters whether this is the string the user
953          typed in or the decompiled expression.  */
954       b->cond_string = xstrdup (arg);
955       b->condition_not_parsed = 0;
956
957       if (is_watchpoint (b))
958         {
959           struct watchpoint *w = (struct watchpoint *) b;
960
961           innermost_block = NULL;
962           arg = exp;
963           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
964           if (*arg)
965             error (_("Junk at end of expression"));
966           w->cond_exp_valid_block = innermost_block;
967         }
968       else
969         {
970           struct bp_location *loc;
971
972           for (loc = b->loc; loc; loc = loc->next)
973             {
974               arg = exp;
975               loc->cond =
976                 parse_exp_1 (&arg, loc->address,
977                              block_for_pc (loc->address), 0);
978               if (*arg)
979                 error (_("Junk at end of expression"));
980             }
981         }
982     }
983   mark_breakpoint_modified (b);
984
985   observer_notify_breakpoint_modified (b);
986 }
987
988 /* Completion for the "condition" command.  */
989
990 static VEC (char_ptr) *
991 condition_completer (struct cmd_list_element *cmd,
992                      const char *text, const char *word)
993 {
994   const char *space;
995
996   text = skip_spaces_const (text);
997   space = skip_to_space_const (text);
998   if (*space == '\0')
999     {
1000       int len;
1001       struct breakpoint *b;
1002       VEC (char_ptr) *result = NULL;
1003
1004       if (text[0] == '$')
1005         {
1006           /* We don't support completion of history indices.  */
1007           if (isdigit (text[1]))
1008             return NULL;
1009           return complete_internalvar (&text[1]);
1010         }
1011
1012       /* We're completing the breakpoint number.  */
1013       len = strlen (text);
1014
1015       ALL_BREAKPOINTS (b)
1016         {
1017           char number[50];
1018
1019           xsnprintf (number, sizeof (number), "%d", b->number);
1020
1021           if (strncmp (number, text, len) == 0)
1022             VEC_safe_push (char_ptr, result, xstrdup (number));
1023         }
1024
1025       return result;
1026     }
1027
1028   /* We're completing the expression part.  */
1029   text = skip_spaces_const (space);
1030   return expression_completer (cmd, text, word);
1031 }
1032
1033 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1034
1035 static void
1036 condition_command (char *arg, int from_tty)
1037 {
1038   struct breakpoint *b;
1039   char *p;
1040   int bnum;
1041
1042   if (arg == 0)
1043     error_no_arg (_("breakpoint number"));
1044
1045   p = arg;
1046   bnum = get_number (&p);
1047   if (bnum == 0)
1048     error (_("Bad breakpoint argument: '%s'"), arg);
1049
1050   ALL_BREAKPOINTS (b)
1051     if (b->number == bnum)
1052       {
1053         /* Check if this breakpoint has a "stop" method implemented in an
1054            extension language.  This method and conditions entered into GDB
1055            from the CLI are mutually exclusive.  */
1056         const struct extension_language_defn *extlang
1057           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1058
1059         if (extlang != NULL)
1060           {
1061             error (_("Only one stop condition allowed.  There is currently"
1062                      " a %s stop condition defined for this breakpoint."),
1063                    ext_lang_capitalized_name (extlang));
1064           }
1065         set_breakpoint_condition (b, p, from_tty);
1066
1067         if (is_breakpoint (b))
1068           update_global_location_list (1);
1069
1070         return;
1071       }
1072
1073   error (_("No breakpoint number %d."), bnum);
1074 }
1075
1076 /* Check that COMMAND do not contain commands that are suitable
1077    only for tracepoints and not suitable for ordinary breakpoints.
1078    Throw if any such commands is found.  */
1079
1080 static void
1081 check_no_tracepoint_commands (struct command_line *commands)
1082 {
1083   struct command_line *c;
1084
1085   for (c = commands; c; c = c->next)
1086     {
1087       int i;
1088
1089       if (c->control_type == while_stepping_control)
1090         error (_("The 'while-stepping' command can "
1091                  "only be used for tracepoints"));
1092
1093       for (i = 0; i < c->body_count; ++i)
1094         check_no_tracepoint_commands ((c->body_list)[i]);
1095
1096       /* Not that command parsing removes leading whitespace and comment
1097          lines and also empty lines.  So, we only need to check for
1098          command directly.  */
1099       if (strstr (c->line, "collect ") == c->line)
1100         error (_("The 'collect' command can only be used for tracepoints"));
1101
1102       if (strstr (c->line, "teval ") == c->line)
1103         error (_("The 'teval' command can only be used for tracepoints"));
1104     }
1105 }
1106
1107 /* Encapsulate tests for different types of tracepoints.  */
1108
1109 static int
1110 is_tracepoint_type (enum bptype type)
1111 {
1112   return (type == bp_tracepoint
1113           || type == bp_fast_tracepoint
1114           || type == bp_static_tracepoint);
1115 }
1116
1117 int
1118 is_tracepoint (const struct breakpoint *b)
1119 {
1120   return is_tracepoint_type (b->type);
1121 }
1122
1123 /* A helper function that validates that COMMANDS are valid for a
1124    breakpoint.  This function will throw an exception if a problem is
1125    found.  */
1126
1127 static void
1128 validate_commands_for_breakpoint (struct breakpoint *b,
1129                                   struct command_line *commands)
1130 {
1131   if (is_tracepoint (b))
1132     {
1133       struct tracepoint *t = (struct tracepoint *) b;
1134       struct command_line *c;
1135       struct command_line *while_stepping = 0;
1136
1137       /* Reset the while-stepping step count.  The previous commands
1138          might have included a while-stepping action, while the new
1139          ones might not.  */
1140       t->step_count = 0;
1141
1142       /* We need to verify that each top-level element of commands is
1143          valid for tracepoints, that there's at most one
1144          while-stepping element, and that the while-stepping's body
1145          has valid tracing commands excluding nested while-stepping.
1146          We also need to validate the tracepoint action line in the
1147          context of the tracepoint --- validate_actionline actually
1148          has side effects, like setting the tracepoint's
1149          while-stepping STEP_COUNT, in addition to checking if the
1150          collect/teval actions parse and make sense in the
1151          tracepoint's context.  */
1152       for (c = commands; c; c = c->next)
1153         {
1154           if (c->control_type == while_stepping_control)
1155             {
1156               if (b->type == bp_fast_tracepoint)
1157                 error (_("The 'while-stepping' command "
1158                          "cannot be used for fast tracepoint"));
1159               else if (b->type == bp_static_tracepoint)
1160                 error (_("The 'while-stepping' command "
1161                          "cannot be used for static tracepoint"));
1162
1163               if (while_stepping)
1164                 error (_("The 'while-stepping' command "
1165                          "can be used only once"));
1166               else
1167                 while_stepping = c;
1168             }
1169
1170           validate_actionline (c->line, b);
1171         }
1172       if (while_stepping)
1173         {
1174           struct command_line *c2;
1175
1176           gdb_assert (while_stepping->body_count == 1);
1177           c2 = while_stepping->body_list[0];
1178           for (; c2; c2 = c2->next)
1179             {
1180               if (c2->control_type == while_stepping_control)
1181                 error (_("The 'while-stepping' command cannot be nested"));
1182             }
1183         }
1184     }
1185   else
1186     {
1187       check_no_tracepoint_commands (commands);
1188     }
1189 }
1190
1191 /* Return a vector of all the static tracepoints set at ADDR.  The
1192    caller is responsible for releasing the vector.  */
1193
1194 VEC(breakpoint_p) *
1195 static_tracepoints_here (CORE_ADDR addr)
1196 {
1197   struct breakpoint *b;
1198   VEC(breakpoint_p) *found = 0;
1199   struct bp_location *loc;
1200
1201   ALL_BREAKPOINTS (b)
1202     if (b->type == bp_static_tracepoint)
1203       {
1204         for (loc = b->loc; loc; loc = loc->next)
1205           if (loc->address == addr)
1206             VEC_safe_push(breakpoint_p, found, b);
1207       }
1208
1209   return found;
1210 }
1211
1212 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1213    validate that only allowed commands are included.  */
1214
1215 void
1216 breakpoint_set_commands (struct breakpoint *b, 
1217                          struct command_line *commands)
1218 {
1219   validate_commands_for_breakpoint (b, commands);
1220
1221   decref_counted_command_line (&b->commands);
1222   b->commands = alloc_counted_command_line (commands);
1223   observer_notify_breakpoint_modified (b);
1224 }
1225
1226 /* Set the internal `silent' flag on the breakpoint.  Note that this
1227    is not the same as the "silent" that may appear in the breakpoint's
1228    commands.  */
1229
1230 void
1231 breakpoint_set_silent (struct breakpoint *b, int silent)
1232 {
1233   int old_silent = b->silent;
1234
1235   b->silent = silent;
1236   if (old_silent != silent)
1237     observer_notify_breakpoint_modified (b);
1238 }
1239
1240 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1241    breakpoint work for any thread.  */
1242
1243 void
1244 breakpoint_set_thread (struct breakpoint *b, int thread)
1245 {
1246   int old_thread = b->thread;
1247
1248   b->thread = thread;
1249   if (old_thread != thread)
1250     observer_notify_breakpoint_modified (b);
1251 }
1252
1253 /* Set the task for this breakpoint.  If TASK is 0, make the
1254    breakpoint work for any task.  */
1255
1256 void
1257 breakpoint_set_task (struct breakpoint *b, int task)
1258 {
1259   int old_task = b->task;
1260
1261   b->task = task;
1262   if (old_task != task)
1263     observer_notify_breakpoint_modified (b);
1264 }
1265
1266 void
1267 check_tracepoint_command (char *line, void *closure)
1268 {
1269   struct breakpoint *b = closure;
1270
1271   validate_actionline (line, b);
1272 }
1273
1274 /* A structure used to pass information through
1275    map_breakpoint_numbers.  */
1276
1277 struct commands_info
1278 {
1279   /* True if the command was typed at a tty.  */
1280   int from_tty;
1281
1282   /* The breakpoint range spec.  */
1283   char *arg;
1284
1285   /* Non-NULL if the body of the commands are being read from this
1286      already-parsed command.  */
1287   struct command_line *control;
1288
1289   /* The command lines read from the user, or NULL if they have not
1290      yet been read.  */
1291   struct counted_command_line *cmd;
1292 };
1293
1294 /* A callback for map_breakpoint_numbers that sets the commands for
1295    commands_command.  */
1296
1297 static void
1298 do_map_commands_command (struct breakpoint *b, void *data)
1299 {
1300   struct commands_info *info = data;
1301
1302   if (info->cmd == NULL)
1303     {
1304       struct command_line *l;
1305
1306       if (info->control != NULL)
1307         l = copy_command_lines (info->control->body_list[0]);
1308       else
1309         {
1310           struct cleanup *old_chain;
1311           char *str;
1312
1313           str = xstrprintf (_("Type commands for breakpoint(s) "
1314                               "%s, one per line."),
1315                             info->arg);
1316
1317           old_chain = make_cleanup (xfree, str);
1318
1319           l = read_command_lines (str,
1320                                   info->from_tty, 1,
1321                                   (is_tracepoint (b)
1322                                    ? check_tracepoint_command : 0),
1323                                   b);
1324
1325           do_cleanups (old_chain);
1326         }
1327
1328       info->cmd = alloc_counted_command_line (l);
1329     }
1330
1331   /* If a breakpoint was on the list more than once, we don't need to
1332      do anything.  */
1333   if (b->commands != info->cmd)
1334     {
1335       validate_commands_for_breakpoint (b, info->cmd->commands);
1336       incref_counted_command_line (info->cmd);
1337       decref_counted_command_line (&b->commands);
1338       b->commands = info->cmd;
1339       observer_notify_breakpoint_modified (b);
1340     }
1341 }
1342
1343 static void
1344 commands_command_1 (char *arg, int from_tty, 
1345                     struct command_line *control)
1346 {
1347   struct cleanup *cleanups;
1348   struct commands_info info;
1349
1350   info.from_tty = from_tty;
1351   info.control = control;
1352   info.cmd = NULL;
1353   /* If we read command lines from the user, then `info' will hold an
1354      extra reference to the commands that we must clean up.  */
1355   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1356
1357   if (arg == NULL || !*arg)
1358     {
1359       if (breakpoint_count - prev_breakpoint_count > 1)
1360         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1361                           breakpoint_count);
1362       else if (breakpoint_count > 0)
1363         arg = xstrprintf ("%d", breakpoint_count);
1364       else
1365         {
1366           /* So that we don't try to free the incoming non-NULL
1367              argument in the cleanup below.  Mapping breakpoint
1368              numbers will fail in this case.  */
1369           arg = NULL;
1370         }
1371     }
1372   else
1373     /* The command loop has some static state, so we need to preserve
1374        our argument.  */
1375     arg = xstrdup (arg);
1376
1377   if (arg != NULL)
1378     make_cleanup (xfree, arg);
1379
1380   info.arg = arg;
1381
1382   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1383
1384   if (info.cmd == NULL)
1385     error (_("No breakpoints specified."));
1386
1387   do_cleanups (cleanups);
1388 }
1389
1390 static void
1391 commands_command (char *arg, int from_tty)
1392 {
1393   commands_command_1 (arg, from_tty, NULL);
1394 }
1395
1396 /* Like commands_command, but instead of reading the commands from
1397    input stream, takes them from an already parsed command structure.
1398
1399    This is used by cli-script.c to DTRT with breakpoint commands
1400    that are part of if and while bodies.  */
1401 enum command_control_type
1402 commands_from_control_command (char *arg, struct command_line *cmd)
1403 {
1404   commands_command_1 (arg, 0, cmd);
1405   return simple_control;
1406 }
1407
1408 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1409
1410 static int
1411 bp_location_has_shadow (struct bp_location *bl)
1412 {
1413   if (bl->loc_type != bp_loc_software_breakpoint)
1414     return 0;
1415   if (!bl->inserted)
1416     return 0;
1417   if (bl->target_info.shadow_len == 0)
1418     /* BL isn't valid, or doesn't shadow memory.  */
1419     return 0;
1420   return 1;
1421 }
1422
1423 /* Update BUF, which is LEN bytes read from the target address
1424    MEMADDR, by replacing a memory breakpoint with its shadowed
1425    contents.
1426
1427    If READBUF is not NULL, this buffer must not overlap with the of
1428    the breakpoint location's shadow_contents buffer.  Otherwise, a
1429    failed assertion internal error will be raised.  */
1430
1431 static void
1432 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1433                             const gdb_byte *writebuf_org,
1434                             ULONGEST memaddr, LONGEST len,
1435                             struct bp_target_info *target_info,
1436                             struct gdbarch *gdbarch)
1437 {
1438   /* Now do full processing of the found relevant range of elements.  */
1439   CORE_ADDR bp_addr = 0;
1440   int bp_size = 0;
1441   int bptoffset = 0;
1442
1443   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1444                                  current_program_space->aspace, 0))
1445     {
1446       /* The breakpoint is inserted in a different address space.  */
1447       return;
1448     }
1449
1450   /* Addresses and length of the part of the breakpoint that
1451      we need to copy.  */
1452   bp_addr = target_info->placed_address;
1453   bp_size = target_info->shadow_len;
1454
1455   if (bp_addr + bp_size <= memaddr)
1456     {
1457       /* The breakpoint is entirely before the chunk of memory we are
1458          reading.  */
1459       return;
1460     }
1461
1462   if (bp_addr >= memaddr + len)
1463     {
1464       /* The breakpoint is entirely after the chunk of memory we are
1465          reading.  */
1466       return;
1467     }
1468
1469   /* Offset within shadow_contents.  */
1470   if (bp_addr < memaddr)
1471     {
1472       /* Only copy the second part of the breakpoint.  */
1473       bp_size -= memaddr - bp_addr;
1474       bptoffset = memaddr - bp_addr;
1475       bp_addr = memaddr;
1476     }
1477
1478   if (bp_addr + bp_size > memaddr + len)
1479     {
1480       /* Only copy the first part of the breakpoint.  */
1481       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1482     }
1483
1484   if (readbuf != NULL)
1485     {
1486       /* Verify that the readbuf buffer does not overlap with the
1487          shadow_contents buffer.  */
1488       gdb_assert (target_info->shadow_contents >= readbuf + len
1489                   || readbuf >= (target_info->shadow_contents
1490                                  + target_info->shadow_len));
1491
1492       /* Update the read buffer with this inserted breakpoint's
1493          shadow.  */
1494       memcpy (readbuf + bp_addr - memaddr,
1495               target_info->shadow_contents + bptoffset, bp_size);
1496     }
1497   else
1498     {
1499       const unsigned char *bp;
1500       CORE_ADDR placed_address = target_info->placed_address;
1501       int placed_size = target_info->placed_size;
1502
1503       /* Update the shadow with what we want to write to memory.  */
1504       memcpy (target_info->shadow_contents + bptoffset,
1505               writebuf_org + bp_addr - memaddr, bp_size);
1506
1507       /* Determine appropriate breakpoint contents and size for this
1508          address.  */
1509       bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1510
1511       /* Update the final write buffer with this inserted
1512          breakpoint's INSN.  */
1513       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1514     }
1515 }
1516
1517 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1518    by replacing any memory breakpoints with their shadowed contents.
1519
1520    If READBUF is not NULL, this buffer must not overlap with any of
1521    the breakpoint location's shadow_contents buffers.  Otherwise,
1522    a failed assertion internal error will be raised.
1523
1524    The range of shadowed area by each bp_location is:
1525      bl->address - bp_location_placed_address_before_address_max
1526      up to bl->address + bp_location_shadow_len_after_address_max
1527    The range we were requested to resolve shadows for is:
1528      memaddr ... memaddr + len
1529    Thus the safe cutoff boundaries for performance optimization are
1530      memaddr + len <= (bl->address
1531                        - bp_location_placed_address_before_address_max)
1532    and:
1533      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1534
1535 void
1536 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1537                         const gdb_byte *writebuf_org,
1538                         ULONGEST memaddr, LONGEST len)
1539 {
1540   /* Left boundary, right boundary and median element of our binary
1541      search.  */
1542   unsigned bc_l, bc_r, bc;
1543   size_t i;
1544
1545   /* Find BC_L which is a leftmost element which may affect BUF
1546      content.  It is safe to report lower value but a failure to
1547      report higher one.  */
1548
1549   bc_l = 0;
1550   bc_r = bp_location_count;
1551   while (bc_l + 1 < bc_r)
1552     {
1553       struct bp_location *bl;
1554
1555       bc = (bc_l + bc_r) / 2;
1556       bl = bp_location[bc];
1557
1558       /* Check first BL->ADDRESS will not overflow due to the added
1559          constant.  Then advance the left boundary only if we are sure
1560          the BC element can in no way affect the BUF content (MEMADDR
1561          to MEMADDR + LEN range).
1562
1563          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1564          offset so that we cannot miss a breakpoint with its shadow
1565          range tail still reaching MEMADDR.  */
1566
1567       if ((bl->address + bp_location_shadow_len_after_address_max
1568            >= bl->address)
1569           && (bl->address + bp_location_shadow_len_after_address_max
1570               <= memaddr))
1571         bc_l = bc;
1572       else
1573         bc_r = bc;
1574     }
1575
1576   /* Due to the binary search above, we need to make sure we pick the
1577      first location that's at BC_L's address.  E.g., if there are
1578      multiple locations at the same address, BC_L may end up pointing
1579      at a duplicate location, and miss the "master"/"inserted"
1580      location.  Say, given locations L1, L2 and L3 at addresses A and
1581      B:
1582
1583       L1@A, L2@A, L3@B, ...
1584
1585      BC_L could end up pointing at location L2, while the "master"
1586      location could be L1.  Since the `loc->inserted' flag is only set
1587      on "master" locations, we'd forget to restore the shadow of L1
1588      and L2.  */
1589   while (bc_l > 0
1590          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1591     bc_l--;
1592
1593   /* Now do full processing of the found relevant range of elements.  */
1594
1595   for (bc = bc_l; bc < bp_location_count; bc++)
1596   {
1597     struct bp_location *bl = bp_location[bc];
1598     CORE_ADDR bp_addr = 0;
1599     int bp_size = 0;
1600     int bptoffset = 0;
1601
1602     /* bp_location array has BL->OWNER always non-NULL.  */
1603     if (bl->owner->type == bp_none)
1604       warning (_("reading through apparently deleted breakpoint #%d?"),
1605                bl->owner->number);
1606
1607     /* Performance optimization: any further element can no longer affect BUF
1608        content.  */
1609
1610     if (bl->address >= bp_location_placed_address_before_address_max
1611         && memaddr + len <= (bl->address
1612                              - bp_location_placed_address_before_address_max))
1613       break;
1614
1615     if (!bp_location_has_shadow (bl))
1616       continue;
1617
1618     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1619                                 memaddr, len, &bl->target_info, bl->gdbarch);
1620   }
1621
1622   /* Now process single-step breakpoints.  These are not found in the
1623      bp_location array.  */
1624   for (i = 0; i < 2; i++)
1625     {
1626       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
1627
1628       if (bp_tgt != NULL)
1629         {
1630           struct gdbarch *gdbarch = single_step_gdbarch[i];
1631
1632           one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1633                                       memaddr, len, bp_tgt, gdbarch);
1634         }
1635     }
1636 }
1637
1638 \f
1639
1640 /* Return true if BPT is either a software breakpoint or a hardware
1641    breakpoint.  */
1642
1643 int
1644 is_breakpoint (const struct breakpoint *bpt)
1645 {
1646   return (bpt->type == bp_breakpoint
1647           || bpt->type == bp_hardware_breakpoint
1648           || bpt->type == bp_dprintf);
1649 }
1650
1651 /* Return true if BPT is of any hardware watchpoint kind.  */
1652
1653 static int
1654 is_hardware_watchpoint (const struct breakpoint *bpt)
1655 {
1656   return (bpt->type == bp_hardware_watchpoint
1657           || bpt->type == bp_read_watchpoint
1658           || bpt->type == bp_access_watchpoint);
1659 }
1660
1661 /* Return true if BPT is of any watchpoint kind, hardware or
1662    software.  */
1663
1664 int
1665 is_watchpoint (const struct breakpoint *bpt)
1666 {
1667   return (is_hardware_watchpoint (bpt)
1668           || bpt->type == bp_watchpoint);
1669 }
1670
1671 /* Returns true if the current thread and its running state are safe
1672    to evaluate or update watchpoint B.  Watchpoints on local
1673    expressions need to be evaluated in the context of the thread that
1674    was current when the watchpoint was created, and, that thread needs
1675    to be stopped to be able to select the correct frame context.
1676    Watchpoints on global expressions can be evaluated on any thread,
1677    and in any state.  It is presently left to the target allowing
1678    memory accesses when threads are running.  */
1679
1680 static int
1681 watchpoint_in_thread_scope (struct watchpoint *b)
1682 {
1683   return (b->base.pspace == current_program_space
1684           && (ptid_equal (b->watchpoint_thread, null_ptid)
1685               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1686                   && !is_executing (inferior_ptid))));
1687 }
1688
1689 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1690    associated bp_watchpoint_scope breakpoint.  */
1691
1692 static void
1693 watchpoint_del_at_next_stop (struct watchpoint *w)
1694 {
1695   struct breakpoint *b = &w->base;
1696
1697   if (b->related_breakpoint != b)
1698     {
1699       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1700       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1701       b->related_breakpoint->disposition = disp_del_at_next_stop;
1702       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1703       b->related_breakpoint = b;
1704     }
1705   b->disposition = disp_del_at_next_stop;
1706 }
1707
1708 /* Assuming that B is a watchpoint:
1709    - Reparse watchpoint expression, if REPARSE is non-zero
1710    - Evaluate expression and store the result in B->val
1711    - Evaluate the condition if there is one, and store the result
1712      in b->loc->cond.
1713    - Update the list of values that must be watched in B->loc.
1714
1715    If the watchpoint disposition is disp_del_at_next_stop, then do
1716    nothing.  If this is local watchpoint that is out of scope, delete
1717    it.
1718
1719    Even with `set breakpoint always-inserted on' the watchpoints are
1720    removed + inserted on each stop here.  Normal breakpoints must
1721    never be removed because they might be missed by a running thread
1722    when debugging in non-stop mode.  On the other hand, hardware
1723    watchpoints (is_hardware_watchpoint; processed here) are specific
1724    to each LWP since they are stored in each LWP's hardware debug
1725    registers.  Therefore, such LWP must be stopped first in order to
1726    be able to modify its hardware watchpoints.
1727
1728    Hardware watchpoints must be reset exactly once after being
1729    presented to the user.  It cannot be done sooner, because it would
1730    reset the data used to present the watchpoint hit to the user.  And
1731    it must not be done later because it could display the same single
1732    watchpoint hit during multiple GDB stops.  Note that the latter is
1733    relevant only to the hardware watchpoint types bp_read_watchpoint
1734    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1735    not user-visible - its hit is suppressed if the memory content has
1736    not changed.
1737
1738    The following constraints influence the location where we can reset
1739    hardware watchpoints:
1740
1741    * target_stopped_by_watchpoint and target_stopped_data_address are
1742      called several times when GDB stops.
1743
1744    [linux] 
1745    * Multiple hardware watchpoints can be hit at the same time,
1746      causing GDB to stop.  GDB only presents one hardware watchpoint
1747      hit at a time as the reason for stopping, and all the other hits
1748      are presented later, one after the other, each time the user
1749      requests the execution to be resumed.  Execution is not resumed
1750      for the threads still having pending hit event stored in
1751      LWP_INFO->STATUS.  While the watchpoint is already removed from
1752      the inferior on the first stop the thread hit event is kept being
1753      reported from its cached value by linux_nat_stopped_data_address
1754      until the real thread resume happens after the watchpoint gets
1755      presented and thus its LWP_INFO->STATUS gets reset.
1756
1757    Therefore the hardware watchpoint hit can get safely reset on the
1758    watchpoint removal from inferior.  */
1759
1760 static void
1761 update_watchpoint (struct watchpoint *b, int reparse)
1762 {
1763   int within_current_scope;
1764   struct frame_id saved_frame_id;
1765   int frame_saved;
1766
1767   /* If this is a local watchpoint, we only want to check if the
1768      watchpoint frame is in scope if the current thread is the thread
1769      that was used to create the watchpoint.  */
1770   if (!watchpoint_in_thread_scope (b))
1771     return;
1772
1773   if (b->base.disposition == disp_del_at_next_stop)
1774     return;
1775  
1776   frame_saved = 0;
1777
1778   /* Determine if the watchpoint is within scope.  */
1779   if (b->exp_valid_block == NULL)
1780     within_current_scope = 1;
1781   else
1782     {
1783       struct frame_info *fi = get_current_frame ();
1784       struct gdbarch *frame_arch = get_frame_arch (fi);
1785       CORE_ADDR frame_pc = get_frame_pc (fi);
1786
1787       /* If we're in a function epilogue, unwinding may not work
1788          properly, so do not attempt to recreate locations at this
1789          point.  See similar comments in watchpoint_check.  */
1790       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1791         return;
1792
1793       /* Save the current frame's ID so we can restore it after
1794          evaluating the watchpoint expression on its own frame.  */
1795       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1796          took a frame parameter, so that we didn't have to change the
1797          selected frame.  */
1798       frame_saved = 1;
1799       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1800
1801       fi = frame_find_by_id (b->watchpoint_frame);
1802       within_current_scope = (fi != NULL);
1803       if (within_current_scope)
1804         select_frame (fi);
1805     }
1806
1807   /* We don't free locations.  They are stored in the bp_location array
1808      and update_global_location_list will eventually delete them and
1809      remove breakpoints if needed.  */
1810   b->base.loc = NULL;
1811
1812   if (within_current_scope && reparse)
1813     {
1814       const char *s;
1815
1816       if (b->exp)
1817         {
1818           xfree (b->exp);
1819           b->exp = NULL;
1820         }
1821       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1822       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1823       /* If the meaning of expression itself changed, the old value is
1824          no longer relevant.  We don't want to report a watchpoint hit
1825          to the user when the old value and the new value may actually
1826          be completely different objects.  */
1827       value_free (b->val);
1828       b->val = NULL;
1829       b->val_valid = 0;
1830
1831       /* Note that unlike with breakpoints, the watchpoint's condition
1832          expression is stored in the breakpoint object, not in the
1833          locations (re)created below.  */
1834       if (b->base.cond_string != NULL)
1835         {
1836           if (b->cond_exp != NULL)
1837             {
1838               xfree (b->cond_exp);
1839               b->cond_exp = NULL;
1840             }
1841
1842           s = b->base.cond_string;
1843           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1844         }
1845     }
1846
1847   /* If we failed to parse the expression, for example because
1848      it refers to a global variable in a not-yet-loaded shared library,
1849      don't try to insert watchpoint.  We don't automatically delete
1850      such watchpoint, though, since failure to parse expression
1851      is different from out-of-scope watchpoint.  */
1852   if (!target_has_execution)
1853     {
1854       /* Without execution, memory can't change.  No use to try and
1855          set watchpoint locations.  The watchpoint will be reset when
1856          the target gains execution, through breakpoint_re_set.  */
1857       if (!can_use_hw_watchpoints)
1858         {
1859           if (b->base.ops->works_in_software_mode (&b->base))
1860             b->base.type = bp_watchpoint;
1861           else
1862             error (_("Can't set read/access watchpoint when "
1863                      "hardware watchpoints are disabled."));
1864         }
1865     }
1866   else if (within_current_scope && b->exp)
1867     {
1868       int pc = 0;
1869       struct value *val_chain, *v, *result, *next;
1870       struct program_space *frame_pspace;
1871
1872       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1873
1874       /* Avoid setting b->val if it's already set.  The meaning of
1875          b->val is 'the last value' user saw, and we should update
1876          it only if we reported that last value to user.  As it
1877          happens, the code that reports it updates b->val directly.
1878          We don't keep track of the memory value for masked
1879          watchpoints.  */
1880       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1881         {
1882           b->val = v;
1883           b->val_valid = 1;
1884         }
1885
1886       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1887
1888       /* Look at each value on the value chain.  */
1889       for (v = val_chain; v; v = value_next (v))
1890         {
1891           /* If it's a memory location, and GDB actually needed
1892              its contents to evaluate the expression, then we
1893              must watch it.  If the first value returned is
1894              still lazy, that means an error occurred reading it;
1895              watch it anyway in case it becomes readable.  */
1896           if (VALUE_LVAL (v) == lval_memory
1897               && (v == val_chain || ! value_lazy (v)))
1898             {
1899               struct type *vtype = check_typedef (value_type (v));
1900
1901               /* We only watch structs and arrays if user asked
1902                  for it explicitly, never if they just happen to
1903                  appear in the middle of some value chain.  */
1904               if (v == result
1905                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1906                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1907                 {
1908                   CORE_ADDR addr;
1909                   int type;
1910                   struct bp_location *loc, **tmp;
1911
1912                   addr = value_address (v);
1913                   type = hw_write;
1914                   if (b->base.type == bp_read_watchpoint)
1915                     type = hw_read;
1916                   else if (b->base.type == bp_access_watchpoint)
1917                     type = hw_access;
1918
1919                   loc = allocate_bp_location (&b->base);
1920                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
1921                     ;
1922                   *tmp = loc;
1923                   loc->gdbarch = get_type_arch (value_type (v));
1924
1925                   loc->pspace = frame_pspace;
1926                   loc->address = addr;
1927                   loc->length = TYPE_LENGTH (value_type (v));
1928                   loc->watchpoint_type = type;
1929                 }
1930             }
1931         }
1932
1933       /* Change the type of breakpoint between hardware assisted or
1934          an ordinary watchpoint depending on the hardware support
1935          and free hardware slots.  REPARSE is set when the inferior
1936          is started.  */
1937       if (reparse)
1938         {
1939           int reg_cnt;
1940           enum bp_loc_type loc_type;
1941           struct bp_location *bl;
1942
1943           reg_cnt = can_use_hardware_watchpoint (val_chain);
1944
1945           if (reg_cnt)
1946             {
1947               int i, target_resources_ok, other_type_used;
1948               enum bptype type;
1949
1950               /* Use an exact watchpoint when there's only one memory region to be
1951                  watched, and only one debug register is needed to watch it.  */
1952               b->exact = target_exact_watchpoints && reg_cnt == 1;
1953
1954               /* We need to determine how many resources are already
1955                  used for all other hardware watchpoints plus this one
1956                  to see if we still have enough resources to also fit
1957                  this watchpoint in as well.  */
1958
1959               /* If this is a software watchpoint, we try to turn it
1960                  to a hardware one -- count resources as if B was of
1961                  hardware watchpoint type.  */
1962               type = b->base.type;
1963               if (type == bp_watchpoint)
1964                 type = bp_hardware_watchpoint;
1965
1966               /* This watchpoint may or may not have been placed on
1967                  the list yet at this point (it won't be in the list
1968                  if we're trying to create it for the first time,
1969                  through watch_command), so always account for it
1970                  manually.  */
1971
1972               /* Count resources used by all watchpoints except B.  */
1973               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
1974
1975               /* Add in the resources needed for B.  */
1976               i += hw_watchpoint_use_count (&b->base);
1977
1978               target_resources_ok
1979                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
1980               if (target_resources_ok <= 0)
1981                 {
1982                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
1983
1984                   if (target_resources_ok == 0 && !sw_mode)
1985                     error (_("Target does not support this type of "
1986                              "hardware watchpoint."));
1987                   else if (target_resources_ok < 0 && !sw_mode)
1988                     error (_("There are not enough available hardware "
1989                              "resources for this watchpoint."));
1990
1991                   /* Downgrade to software watchpoint.  */
1992                   b->base.type = bp_watchpoint;
1993                 }
1994               else
1995                 {
1996                   /* If this was a software watchpoint, we've just
1997                      found we have enough resources to turn it to a
1998                      hardware watchpoint.  Otherwise, this is a
1999                      nop.  */
2000                   b->base.type = type;
2001                 }
2002             }
2003           else if (!b->base.ops->works_in_software_mode (&b->base))
2004             {
2005               if (!can_use_hw_watchpoints)
2006                 error (_("Can't set read/access watchpoint when "
2007                          "hardware watchpoints are disabled."));
2008               else
2009                 error (_("Expression cannot be implemented with "
2010                          "read/access watchpoint."));
2011             }
2012           else
2013             b->base.type = bp_watchpoint;
2014
2015           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2016                       : bp_loc_hardware_watchpoint);
2017           for (bl = b->base.loc; bl; bl = bl->next)
2018             bl->loc_type = loc_type;
2019         }
2020
2021       for (v = val_chain; v; v = next)
2022         {
2023           next = value_next (v);
2024           if (v != b->val)
2025             value_free (v);
2026         }
2027
2028       /* If a software watchpoint is not watching any memory, then the
2029          above left it without any location set up.  But,
2030          bpstat_stop_status requires a location to be able to report
2031          stops, so make sure there's at least a dummy one.  */
2032       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2033         {
2034           struct breakpoint *base = &b->base;
2035           base->loc = allocate_bp_location (base);
2036           base->loc->pspace = frame_pspace;
2037           base->loc->address = -1;
2038           base->loc->length = -1;
2039           base->loc->watchpoint_type = -1;
2040         }
2041     }
2042   else if (!within_current_scope)
2043     {
2044       printf_filtered (_("\
2045 Watchpoint %d deleted because the program has left the block\n\
2046 in which its expression is valid.\n"),
2047                        b->base.number);
2048       watchpoint_del_at_next_stop (b);
2049     }
2050
2051   /* Restore the selected frame.  */
2052   if (frame_saved)
2053     select_frame (frame_find_by_id (saved_frame_id));
2054 }
2055
2056
2057 /* Returns 1 iff breakpoint location should be
2058    inserted in the inferior.  We don't differentiate the type of BL's owner
2059    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2060    breakpoint_ops is not defined, because in insert_bp_location,
2061    tracepoint's insert_location will not be called.  */
2062 static int
2063 should_be_inserted (struct bp_location *bl)
2064 {
2065   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2066     return 0;
2067
2068   if (bl->owner->disposition == disp_del_at_next_stop)
2069     return 0;
2070
2071   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2072     return 0;
2073
2074   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2075     return 0;
2076
2077   /* This is set for example, when we're attached to the parent of a
2078      vfork, and have detached from the child.  The child is running
2079      free, and we expect it to do an exec or exit, at which point the
2080      OS makes the parent schedulable again (and the target reports
2081      that the vfork is done).  Until the child is done with the shared
2082      memory region, do not insert breakpoints in the parent, otherwise
2083      the child could still trip on the parent's breakpoints.  Since
2084      the parent is blocked anyway, it won't miss any breakpoint.  */
2085   if (bl->pspace->breakpoints_not_allowed)
2086     return 0;
2087
2088   /* Don't insert a breakpoint if we're trying to step past its
2089      location.  */
2090   if ((bl->loc_type == bp_loc_software_breakpoint
2091        || bl->loc_type == bp_loc_hardware_breakpoint)
2092       && stepping_past_instruction_at (bl->pspace->aspace,
2093                                        bl->address))
2094     return 0;
2095
2096   return 1;
2097 }
2098
2099 /* Same as should_be_inserted but does the check assuming
2100    that the location is not duplicated.  */
2101
2102 static int
2103 unduplicated_should_be_inserted (struct bp_location *bl)
2104 {
2105   int result;
2106   const int save_duplicate = bl->duplicate;
2107
2108   bl->duplicate = 0;
2109   result = should_be_inserted (bl);
2110   bl->duplicate = save_duplicate;
2111   return result;
2112 }
2113
2114 /* Parses a conditional described by an expression COND into an
2115    agent expression bytecode suitable for evaluation
2116    by the bytecode interpreter.  Return NULL if there was
2117    any error during parsing.  */
2118
2119 static struct agent_expr *
2120 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2121 {
2122   struct agent_expr *aexpr = NULL;
2123   volatile struct gdb_exception ex;
2124
2125   if (!cond)
2126     return NULL;
2127
2128   /* We don't want to stop processing, so catch any errors
2129      that may show up.  */
2130   TRY_CATCH (ex, RETURN_MASK_ERROR)
2131     {
2132       aexpr = gen_eval_for_expr (scope, cond);
2133     }
2134
2135   if (ex.reason < 0)
2136     {
2137       /* If we got here, it means the condition could not be parsed to a valid
2138          bytecode expression and thus can't be evaluated on the target's side.
2139          It's no use iterating through the conditions.  */
2140       return NULL;
2141     }
2142
2143   /* We have a valid agent expression.  */
2144   return aexpr;
2145 }
2146
2147 /* Based on location BL, create a list of breakpoint conditions to be
2148    passed on to the target.  If we have duplicated locations with different
2149    conditions, we will add such conditions to the list.  The idea is that the
2150    target will evaluate the list of conditions and will only notify GDB when
2151    one of them is true.  */
2152
2153 static void
2154 build_target_condition_list (struct bp_location *bl)
2155 {
2156   struct bp_location **locp = NULL, **loc2p;
2157   int null_condition_or_parse_error = 0;
2158   int modified = bl->needs_update;
2159   struct bp_location *loc;
2160
2161   /* Release conditions left over from a previous insert.  */
2162   VEC_free (agent_expr_p, bl->target_info.conditions);
2163
2164   /* This is only meaningful if the target is
2165      evaluating conditions and if the user has
2166      opted for condition evaluation on the target's
2167      side.  */
2168   if (gdb_evaluates_breakpoint_condition_p ()
2169       || !target_supports_evaluation_of_breakpoint_conditions ())
2170     return;
2171
2172   /* Do a first pass to check for locations with no assigned
2173      conditions or conditions that fail to parse to a valid agent expression
2174      bytecode.  If any of these happen, then it's no use to send conditions
2175      to the target since this location will always trigger and generate a
2176      response back to GDB.  */
2177   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2178     {
2179       loc = (*loc2p);
2180       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2181         {
2182           if (modified)
2183             {
2184               struct agent_expr *aexpr;
2185
2186               /* Re-parse the conditions since something changed.  In that
2187                  case we already freed the condition bytecodes (see
2188                  force_breakpoint_reinsertion).  We just
2189                  need to parse the condition to bytecodes again.  */
2190               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2191               loc->cond_bytecode = aexpr;
2192
2193               /* Check if we managed to parse the conditional expression
2194                  correctly.  If not, we will not send this condition
2195                  to the target.  */
2196               if (aexpr)
2197                 continue;
2198             }
2199
2200           /* If we have a NULL bytecode expression, it means something
2201              went wrong or we have a null condition expression.  */
2202           if (!loc->cond_bytecode)
2203             {
2204               null_condition_or_parse_error = 1;
2205               break;
2206             }
2207         }
2208     }
2209
2210   /* If any of these happened, it means we will have to evaluate the conditions
2211      for the location's address on gdb's side.  It is no use keeping bytecodes
2212      for all the other duplicate locations, thus we free all of them here.
2213
2214      This is so we have a finer control over which locations' conditions are
2215      being evaluated by GDB or the remote stub.  */
2216   if (null_condition_or_parse_error)
2217     {
2218       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2219         {
2220           loc = (*loc2p);
2221           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2222             {
2223               /* Only go as far as the first NULL bytecode is
2224                  located.  */
2225               if (!loc->cond_bytecode)
2226                 return;
2227
2228               free_agent_expr (loc->cond_bytecode);
2229               loc->cond_bytecode = NULL;
2230             }
2231         }
2232     }
2233
2234   /* No NULL conditions or failed bytecode generation.  Build a condition list
2235      for this location's address.  */
2236   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2237     {
2238       loc = (*loc2p);
2239       if (loc->cond
2240           && is_breakpoint (loc->owner)
2241           && loc->pspace->num == bl->pspace->num
2242           && loc->owner->enable_state == bp_enabled
2243           && loc->enabled)
2244         /* Add the condition to the vector.  This will be used later to send the
2245            conditions to the target.  */
2246         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2247                        loc->cond_bytecode);
2248     }
2249
2250   return;
2251 }
2252
2253 /* Parses a command described by string CMD into an agent expression
2254    bytecode suitable for evaluation by the bytecode interpreter.
2255    Return NULL if there was any error during parsing.  */
2256
2257 static struct agent_expr *
2258 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2259 {
2260   struct cleanup *old_cleanups = 0;
2261   struct expression *expr, **argvec;
2262   struct agent_expr *aexpr = NULL;
2263   volatile struct gdb_exception ex;
2264   const char *cmdrest;
2265   const char *format_start, *format_end;
2266   struct format_piece *fpieces;
2267   int nargs;
2268   struct gdbarch *gdbarch = get_current_arch ();
2269
2270   if (!cmd)
2271     return NULL;
2272
2273   cmdrest = cmd;
2274
2275   if (*cmdrest == ',')
2276     ++cmdrest;
2277   cmdrest = skip_spaces_const (cmdrest);
2278
2279   if (*cmdrest++ != '"')
2280     error (_("No format string following the location"));
2281
2282   format_start = cmdrest;
2283
2284   fpieces = parse_format_string (&cmdrest);
2285
2286   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2287
2288   format_end = cmdrest;
2289
2290   if (*cmdrest++ != '"')
2291     error (_("Bad format string, non-terminated '\"'."));
2292   
2293   cmdrest = skip_spaces_const (cmdrest);
2294
2295   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2296     error (_("Invalid argument syntax"));
2297
2298   if (*cmdrest == ',')
2299     cmdrest++;
2300   cmdrest = skip_spaces_const (cmdrest);
2301
2302   /* For each argument, make an expression.  */
2303
2304   argvec = (struct expression **) alloca (strlen (cmd)
2305                                          * sizeof (struct expression *));
2306
2307   nargs = 0;
2308   while (*cmdrest != '\0')
2309     {
2310       const char *cmd1;
2311
2312       cmd1 = cmdrest;
2313       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2314       argvec[nargs++] = expr;
2315       cmdrest = cmd1;
2316       if (*cmdrest == ',')
2317         ++cmdrest;
2318     }
2319
2320   /* We don't want to stop processing, so catch any errors
2321      that may show up.  */
2322   TRY_CATCH (ex, RETURN_MASK_ERROR)
2323     {
2324       aexpr = gen_printf (scope, gdbarch, 0, 0,
2325                           format_start, format_end - format_start,
2326                           fpieces, nargs, argvec);
2327     }
2328
2329   do_cleanups (old_cleanups);
2330
2331   if (ex.reason < 0)
2332     {
2333       /* If we got here, it means the command could not be parsed to a valid
2334          bytecode expression and thus can't be evaluated on the target's side.
2335          It's no use iterating through the other commands.  */
2336       return NULL;
2337     }
2338
2339   /* We have a valid agent expression, return it.  */
2340   return aexpr;
2341 }
2342
2343 /* Based on location BL, create a list of breakpoint commands to be
2344    passed on to the target.  If we have duplicated locations with
2345    different commands, we will add any such to the list.  */
2346
2347 static void
2348 build_target_command_list (struct bp_location *bl)
2349 {
2350   struct bp_location **locp = NULL, **loc2p;
2351   int null_command_or_parse_error = 0;
2352   int modified = bl->needs_update;
2353   struct bp_location *loc;
2354
2355   /* Release commands left over from a previous insert.  */
2356   VEC_free (agent_expr_p, bl->target_info.tcommands);
2357
2358   if (!target_can_run_breakpoint_commands ())
2359     return;
2360
2361   /* For now, limit to agent-style dprintf breakpoints.  */
2362   if (dprintf_style != dprintf_style_agent)
2363     return;
2364
2365   /* For now, if we have any duplicate location that isn't a dprintf,
2366      don't install the target-side commands, as that would make the
2367      breakpoint not be reported to the core, and we'd lose
2368      control.  */
2369   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2370     {
2371       loc = (*loc2p);
2372       if (is_breakpoint (loc->owner)
2373           && loc->pspace->num == bl->pspace->num
2374           && loc->owner->type != bp_dprintf)
2375         return;
2376     }
2377
2378   /* Do a first pass to check for locations with no assigned
2379      conditions or conditions that fail to parse to a valid agent expression
2380      bytecode.  If any of these happen, then it's no use to send conditions
2381      to the target since this location will always trigger and generate a
2382      response back to GDB.  */
2383   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2384     {
2385       loc = (*loc2p);
2386       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2387         {
2388           if (modified)
2389             {
2390               struct agent_expr *aexpr;
2391
2392               /* Re-parse the commands since something changed.  In that
2393                  case we already freed the command bytecodes (see
2394                  force_breakpoint_reinsertion).  We just
2395                  need to parse the command to bytecodes again.  */
2396               aexpr = parse_cmd_to_aexpr (bl->address,
2397                                           loc->owner->extra_string);
2398               loc->cmd_bytecode = aexpr;
2399
2400               if (!aexpr)
2401                 continue;
2402             }
2403
2404           /* If we have a NULL bytecode expression, it means something
2405              went wrong or we have a null command expression.  */
2406           if (!loc->cmd_bytecode)
2407             {
2408               null_command_or_parse_error = 1;
2409               break;
2410             }
2411         }
2412     }
2413
2414   /* If anything failed, then we're not doing target-side commands,
2415      and so clean up.  */
2416   if (null_command_or_parse_error)
2417     {
2418       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2419         {
2420           loc = (*loc2p);
2421           if (is_breakpoint (loc->owner)
2422               && loc->pspace->num == bl->pspace->num)
2423             {
2424               /* Only go as far as the first NULL bytecode is
2425                  located.  */
2426               if (loc->cmd_bytecode == NULL)
2427                 return;
2428
2429               free_agent_expr (loc->cmd_bytecode);
2430               loc->cmd_bytecode = NULL;
2431             }
2432         }
2433     }
2434
2435   /* No NULL commands or failed bytecode generation.  Build a command list
2436      for this location's address.  */
2437   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2438     {
2439       loc = (*loc2p);
2440       if (loc->owner->extra_string
2441           && is_breakpoint (loc->owner)
2442           && loc->pspace->num == bl->pspace->num
2443           && loc->owner->enable_state == bp_enabled
2444           && loc->enabled)
2445         /* Add the command to the vector.  This will be used later
2446            to send the commands to the target.  */
2447         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2448                        loc->cmd_bytecode);
2449     }
2450
2451   bl->target_info.persist = 0;
2452   /* Maybe flag this location as persistent.  */
2453   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2454     bl->target_info.persist = 1;
2455 }
2456
2457 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2458    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2459    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2460    Returns 0 for success, 1 if the bp_location type is not supported or
2461    -1 for failure.
2462
2463    NOTE drow/2003-09-09: This routine could be broken down to an
2464    object-style method for each breakpoint or catchpoint type.  */
2465 static int
2466 insert_bp_location (struct bp_location *bl,
2467                     struct ui_file *tmp_error_stream,
2468                     int *disabled_breaks,
2469                     int *hw_breakpoint_error,
2470                     int *hw_bp_error_explained_already)
2471 {
2472   enum errors bp_err = GDB_NO_ERROR;
2473   const char *bp_err_message = NULL;
2474   volatile struct gdb_exception e;
2475
2476   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2477     return 0;
2478
2479   /* Note we don't initialize bl->target_info, as that wipes out
2480      the breakpoint location's shadow_contents if the breakpoint
2481      is still inserted at that location.  This in turn breaks
2482      target_read_memory which depends on these buffers when
2483      a memory read is requested at the breakpoint location:
2484      Once the target_info has been wiped, we fail to see that
2485      we have a breakpoint inserted at that address and thus
2486      read the breakpoint instead of returning the data saved in
2487      the breakpoint location's shadow contents.  */
2488   bl->target_info.placed_address = bl->address;
2489   bl->target_info.placed_address_space = bl->pspace->aspace;
2490   bl->target_info.length = bl->length;
2491
2492   /* When working with target-side conditions, we must pass all the conditions
2493      for the same breakpoint address down to the target since GDB will not
2494      insert those locations.  With a list of breakpoint conditions, the target
2495      can decide when to stop and notify GDB.  */
2496
2497   if (is_breakpoint (bl->owner))
2498     {
2499       build_target_condition_list (bl);
2500       build_target_command_list (bl);
2501       /* Reset the modification marker.  */
2502       bl->needs_update = 0;
2503     }
2504
2505   if (bl->loc_type == bp_loc_software_breakpoint
2506       || bl->loc_type == bp_loc_hardware_breakpoint)
2507     {
2508       if (bl->owner->type != bp_hardware_breakpoint)
2509         {
2510           /* If the explicitly specified breakpoint type
2511              is not hardware breakpoint, check the memory map to see
2512              if the breakpoint address is in read only memory or not.
2513
2514              Two important cases are:
2515              - location type is not hardware breakpoint, memory
2516              is readonly.  We change the type of the location to
2517              hardware breakpoint.
2518              - location type is hardware breakpoint, memory is
2519              read-write.  This means we've previously made the
2520              location hardware one, but then the memory map changed,
2521              so we undo.
2522              
2523              When breakpoints are removed, remove_breakpoints will use
2524              location types we've just set here, the only possible
2525              problem is that memory map has changed during running
2526              program, but it's not going to work anyway with current
2527              gdb.  */
2528           struct mem_region *mr 
2529             = lookup_mem_region (bl->target_info.placed_address);
2530           
2531           if (mr)
2532             {
2533               if (automatic_hardware_breakpoints)
2534                 {
2535                   enum bp_loc_type new_type;
2536                   
2537                   if (mr->attrib.mode != MEM_RW)
2538                     new_type = bp_loc_hardware_breakpoint;
2539                   else 
2540                     new_type = bp_loc_software_breakpoint;
2541                   
2542                   if (new_type != bl->loc_type)
2543                     {
2544                       static int said = 0;
2545
2546                       bl->loc_type = new_type;
2547                       if (!said)
2548                         {
2549                           fprintf_filtered (gdb_stdout,
2550                                             _("Note: automatically using "
2551                                               "hardware breakpoints for "
2552                                               "read-only addresses.\n"));
2553                           said = 1;
2554                         }
2555                     }
2556                 }
2557               else if (bl->loc_type == bp_loc_software_breakpoint
2558                        && mr->attrib.mode != MEM_RW)        
2559                 warning (_("cannot set software breakpoint "
2560                            "at readonly address %s"),
2561                          paddress (bl->gdbarch, bl->address));
2562             }
2563         }
2564         
2565       /* First check to see if we have to handle an overlay.  */
2566       if (overlay_debugging == ovly_off
2567           || bl->section == NULL
2568           || !(section_is_overlay (bl->section)))
2569         {
2570           /* No overlay handling: just set the breakpoint.  */
2571           TRY_CATCH (e, RETURN_MASK_ALL)
2572             {
2573               int val;
2574
2575               val = bl->owner->ops->insert_location (bl);
2576               if (val)
2577                 bp_err = GENERIC_ERROR;
2578             }
2579           if (e.reason < 0)
2580             {
2581               bp_err = e.error;
2582               bp_err_message = e.message;
2583             }
2584         }
2585       else
2586         {
2587           /* This breakpoint is in an overlay section.
2588              Shall we set a breakpoint at the LMA?  */
2589           if (!overlay_events_enabled)
2590             {
2591               /* Yes -- overlay event support is not active, 
2592                  so we must try to set a breakpoint at the LMA.
2593                  This will not work for a hardware breakpoint.  */
2594               if (bl->loc_type == bp_loc_hardware_breakpoint)
2595                 warning (_("hardware breakpoint %d not supported in overlay!"),
2596                          bl->owner->number);
2597               else
2598                 {
2599                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2600                                                              bl->section);
2601                   /* Set a software (trap) breakpoint at the LMA.  */
2602                   bl->overlay_target_info = bl->target_info;
2603                   bl->overlay_target_info.placed_address = addr;
2604
2605                   /* No overlay handling: just set the breakpoint.  */
2606                   TRY_CATCH (e, RETURN_MASK_ALL)
2607                     {
2608                       int val;
2609
2610                       val = target_insert_breakpoint (bl->gdbarch,
2611                                                       &bl->overlay_target_info);
2612                       if (val)
2613                         bp_err = GENERIC_ERROR;
2614                     }
2615                   if (e.reason < 0)
2616                     {
2617                       bp_err = e.error;
2618                       bp_err_message = e.message;
2619                     }
2620
2621                   if (bp_err != GDB_NO_ERROR)
2622                     fprintf_unfiltered (tmp_error_stream,
2623                                         "Overlay breakpoint %d "
2624                                         "failed: in ROM?\n",
2625                                         bl->owner->number);
2626                 }
2627             }
2628           /* Shall we set a breakpoint at the VMA? */
2629           if (section_is_mapped (bl->section))
2630             {
2631               /* Yes.  This overlay section is mapped into memory.  */
2632               TRY_CATCH (e, RETURN_MASK_ALL)
2633                 {
2634                   int val;
2635
2636                   val = bl->owner->ops->insert_location (bl);
2637                   if (val)
2638                     bp_err = GENERIC_ERROR;
2639                 }
2640               if (e.reason < 0)
2641                 {
2642                   bp_err = e.error;
2643                   bp_err_message = e.message;
2644                 }
2645             }
2646           else
2647             {
2648               /* No.  This breakpoint will not be inserted.  
2649                  No error, but do not mark the bp as 'inserted'.  */
2650               return 0;
2651             }
2652         }
2653
2654       if (bp_err != GDB_NO_ERROR)
2655         {
2656           /* Can't set the breakpoint.  */
2657
2658           /* In some cases, we might not be able to insert a
2659              breakpoint in a shared library that has already been
2660              removed, but we have not yet processed the shlib unload
2661              event.  Unfortunately, some targets that implement
2662              breakpoint insertion themselves can't tell why the
2663              breakpoint insertion failed (e.g., the remote target
2664              doesn't define error codes), so we must treat generic
2665              errors as memory errors.  */
2666           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2667               && bl->loc_type == bp_loc_software_breakpoint
2668               && (solib_name_from_address (bl->pspace, bl->address)
2669                   || shared_objfile_contains_address_p (bl->pspace,
2670                                                         bl->address)))
2671             {
2672               /* See also: disable_breakpoints_in_shlibs.  */
2673               bl->shlib_disabled = 1;
2674               observer_notify_breakpoint_modified (bl->owner);
2675               if (!*disabled_breaks)
2676                 {
2677                   fprintf_unfiltered (tmp_error_stream, 
2678                                       "Cannot insert breakpoint %d.\n", 
2679                                       bl->owner->number);
2680                   fprintf_unfiltered (tmp_error_stream, 
2681                                       "Temporarily disabling shared "
2682                                       "library breakpoints:\n");
2683                 }
2684               *disabled_breaks = 1;
2685               fprintf_unfiltered (tmp_error_stream,
2686                                   "breakpoint #%d\n", bl->owner->number);
2687               return 0;
2688             }
2689           else
2690             {
2691               if (bl->loc_type == bp_loc_hardware_breakpoint)
2692                 {
2693                   *hw_breakpoint_error = 1;
2694                   *hw_bp_error_explained_already = bp_err_message != NULL;
2695                   fprintf_unfiltered (tmp_error_stream,
2696                                       "Cannot insert hardware breakpoint %d%s",
2697                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2698                   if (bp_err_message != NULL)
2699                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2700                 }
2701               else
2702                 {
2703                   if (bp_err_message == NULL)
2704                     {
2705                       char *message
2706                         = memory_error_message (TARGET_XFER_E_IO,
2707                                                 bl->gdbarch, bl->address);
2708                       struct cleanup *old_chain = make_cleanup (xfree, message);
2709
2710                       fprintf_unfiltered (tmp_error_stream,
2711                                           "Cannot insert breakpoint %d.\n"
2712                                           "%s\n",
2713                                           bl->owner->number, message);
2714                       do_cleanups (old_chain);
2715                     }
2716                   else
2717                     {
2718                       fprintf_unfiltered (tmp_error_stream,
2719                                           "Cannot insert breakpoint %d: %s\n",
2720                                           bl->owner->number,
2721                                           bp_err_message);
2722                     }
2723                 }
2724               return 1;
2725
2726             }
2727         }
2728       else
2729         bl->inserted = 1;
2730
2731       return 0;
2732     }
2733
2734   else if (bl->loc_type == bp_loc_hardware_watchpoint
2735            /* NOTE drow/2003-09-08: This state only exists for removing
2736               watchpoints.  It's not clear that it's necessary...  */
2737            && bl->owner->disposition != disp_del_at_next_stop)
2738     {
2739       int val;
2740
2741       gdb_assert (bl->owner->ops != NULL
2742                   && bl->owner->ops->insert_location != NULL);
2743
2744       val = bl->owner->ops->insert_location (bl);
2745
2746       /* If trying to set a read-watchpoint, and it turns out it's not
2747          supported, try emulating one with an access watchpoint.  */
2748       if (val == 1 && bl->watchpoint_type == hw_read)
2749         {
2750           struct bp_location *loc, **loc_temp;
2751
2752           /* But don't try to insert it, if there's already another
2753              hw_access location that would be considered a duplicate
2754              of this one.  */
2755           ALL_BP_LOCATIONS (loc, loc_temp)
2756             if (loc != bl
2757                 && loc->watchpoint_type == hw_access
2758                 && watchpoint_locations_match (bl, loc))
2759               {
2760                 bl->duplicate = 1;
2761                 bl->inserted = 1;
2762                 bl->target_info = loc->target_info;
2763                 bl->watchpoint_type = hw_access;
2764                 val = 0;
2765                 break;
2766               }
2767
2768           if (val == 1)
2769             {
2770               bl->watchpoint_type = hw_access;
2771               val = bl->owner->ops->insert_location (bl);
2772
2773               if (val)
2774                 /* Back to the original value.  */
2775                 bl->watchpoint_type = hw_read;
2776             }
2777         }
2778
2779       bl->inserted = (val == 0);
2780     }
2781
2782   else if (bl->owner->type == bp_catchpoint)
2783     {
2784       int val;
2785
2786       gdb_assert (bl->owner->ops != NULL
2787                   && bl->owner->ops->insert_location != NULL);
2788
2789       val = bl->owner->ops->insert_location (bl);
2790       if (val)
2791         {
2792           bl->owner->enable_state = bp_disabled;
2793
2794           if (val == 1)
2795             warning (_("\
2796 Error inserting catchpoint %d: Your system does not support this type\n\
2797 of catchpoint."), bl->owner->number);
2798           else
2799             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2800         }
2801
2802       bl->inserted = (val == 0);
2803
2804       /* We've already printed an error message if there was a problem
2805          inserting this catchpoint, and we've disabled the catchpoint,
2806          so just return success.  */
2807       return 0;
2808     }
2809
2810   return 0;
2811 }
2812
2813 /* This function is called when program space PSPACE is about to be
2814    deleted.  It takes care of updating breakpoints to not reference
2815    PSPACE anymore.  */
2816
2817 void
2818 breakpoint_program_space_exit (struct program_space *pspace)
2819 {
2820   struct breakpoint *b, *b_temp;
2821   struct bp_location *loc, **loc_temp;
2822
2823   /* Remove any breakpoint that was set through this program space.  */
2824   ALL_BREAKPOINTS_SAFE (b, b_temp)
2825     {
2826       if (b->pspace == pspace)
2827         delete_breakpoint (b);
2828     }
2829
2830   /* Breakpoints set through other program spaces could have locations
2831      bound to PSPACE as well.  Remove those.  */
2832   ALL_BP_LOCATIONS (loc, loc_temp)
2833     {
2834       struct bp_location *tmp;
2835
2836       if (loc->pspace == pspace)
2837         {
2838           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2839           if (loc->owner->loc == loc)
2840             loc->owner->loc = loc->next;
2841           else
2842             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2843               if (tmp->next == loc)
2844                 {
2845                   tmp->next = loc->next;
2846                   break;
2847                 }
2848         }
2849     }
2850
2851   /* Now update the global location list to permanently delete the
2852      removed locations above.  */
2853   update_global_location_list (0);
2854 }
2855
2856 /* Make sure all breakpoints are inserted in inferior.
2857    Throws exception on any error.
2858    A breakpoint that is already inserted won't be inserted
2859    again, so calling this function twice is safe.  */
2860 void
2861 insert_breakpoints (void)
2862 {
2863   struct breakpoint *bpt;
2864
2865   ALL_BREAKPOINTS (bpt)
2866     if (is_hardware_watchpoint (bpt))
2867       {
2868         struct watchpoint *w = (struct watchpoint *) bpt;
2869
2870         update_watchpoint (w, 0 /* don't reparse.  */);
2871       }
2872
2873   update_global_location_list (1);
2874
2875   /* update_global_location_list does not insert breakpoints when
2876      always_inserted_mode is not enabled.  Explicitly insert them
2877      now.  */
2878   if (!breakpoints_always_inserted_mode ())
2879     insert_breakpoint_locations ();
2880 }
2881
2882 /* Invoke CALLBACK for each of bp_location.  */
2883
2884 void
2885 iterate_over_bp_locations (walk_bp_location_callback callback)
2886 {
2887   struct bp_location *loc, **loc_tmp;
2888
2889   ALL_BP_LOCATIONS (loc, loc_tmp)
2890     {
2891       callback (loc, NULL);
2892     }
2893 }
2894
2895 /* This is used when we need to synch breakpoint conditions between GDB and the
2896    target.  It is the case with deleting and disabling of breakpoints when using
2897    always-inserted mode.  */
2898
2899 static void
2900 update_inserted_breakpoint_locations (void)
2901 {
2902   struct bp_location *bl, **blp_tmp;
2903   int error_flag = 0;
2904   int val = 0;
2905   int disabled_breaks = 0;
2906   int hw_breakpoint_error = 0;
2907   int hw_bp_details_reported = 0;
2908
2909   struct ui_file *tmp_error_stream = mem_fileopen ();
2910   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2911
2912   /* Explicitly mark the warning -- this will only be printed if
2913      there was an error.  */
2914   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2915
2916   save_current_space_and_thread ();
2917
2918   ALL_BP_LOCATIONS (bl, blp_tmp)
2919     {
2920       /* We only want to update software breakpoints and hardware
2921          breakpoints.  */
2922       if (!is_breakpoint (bl->owner))
2923         continue;
2924
2925       /* We only want to update locations that are already inserted
2926          and need updating.  This is to avoid unwanted insertion during
2927          deletion of breakpoints.  */
2928       if (!bl->inserted || (bl->inserted && !bl->needs_update))
2929         continue;
2930
2931       switch_to_program_space_and_thread (bl->pspace);
2932
2933       /* For targets that support global breakpoints, there's no need
2934          to select an inferior to insert breakpoint to.  In fact, even
2935          if we aren't attached to any process yet, we should still
2936          insert breakpoints.  */
2937       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2938           && ptid_equal (inferior_ptid, null_ptid))
2939         continue;
2940
2941       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
2942                                     &hw_breakpoint_error, &hw_bp_details_reported);
2943       if (val)
2944         error_flag = val;
2945     }
2946
2947   if (error_flag)
2948     {
2949       target_terminal_ours_for_output ();
2950       error_stream (tmp_error_stream);
2951     }
2952
2953   do_cleanups (cleanups);
2954 }
2955
2956 /* Used when starting or continuing the program.  */
2957
2958 static void
2959 insert_breakpoint_locations (void)
2960 {
2961   struct breakpoint *bpt;
2962   struct bp_location *bl, **blp_tmp;
2963   int error_flag = 0;
2964   int val = 0;
2965   int disabled_breaks = 0;
2966   int hw_breakpoint_error = 0;
2967   int hw_bp_error_explained_already = 0;
2968
2969   struct ui_file *tmp_error_stream = mem_fileopen ();
2970   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
2971   
2972   /* Explicitly mark the warning -- this will only be printed if
2973      there was an error.  */
2974   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
2975
2976   save_current_space_and_thread ();
2977
2978   ALL_BP_LOCATIONS (bl, blp_tmp)
2979     {
2980       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2981         continue;
2982
2983       /* There is no point inserting thread-specific breakpoints if
2984          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
2985          has BL->OWNER always non-NULL.  */
2986       if (bl->owner->thread != -1
2987           && !valid_thread_id (bl->owner->thread))
2988         continue;
2989
2990       switch_to_program_space_and_thread (bl->pspace);
2991
2992       /* For targets that support global breakpoints, there's no need
2993          to select an inferior to insert breakpoint to.  In fact, even
2994          if we aren't attached to any process yet, we should still
2995          insert breakpoints.  */
2996       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
2997           && ptid_equal (inferior_ptid, null_ptid))
2998         continue;
2999
3000       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3001                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3002       if (val)
3003         error_flag = val;
3004     }
3005
3006   /* If we failed to insert all locations of a watchpoint, remove
3007      them, as half-inserted watchpoint is of limited use.  */
3008   ALL_BREAKPOINTS (bpt)  
3009     {
3010       int some_failed = 0;
3011       struct bp_location *loc;
3012
3013       if (!is_hardware_watchpoint (bpt))
3014         continue;
3015
3016       if (!breakpoint_enabled (bpt))
3017         continue;
3018
3019       if (bpt->disposition == disp_del_at_next_stop)
3020         continue;
3021       
3022       for (loc = bpt->loc; loc; loc = loc->next)
3023         if (!loc->inserted && should_be_inserted (loc))
3024           {
3025             some_failed = 1;
3026             break;
3027           }
3028       if (some_failed)
3029         {
3030           for (loc = bpt->loc; loc; loc = loc->next)
3031             if (loc->inserted)
3032               remove_breakpoint (loc, mark_uninserted);
3033
3034           hw_breakpoint_error = 1;
3035           fprintf_unfiltered (tmp_error_stream,
3036                               "Could not insert hardware watchpoint %d.\n", 
3037                               bpt->number);
3038           error_flag = -1;
3039         }
3040     }
3041
3042   if (error_flag)
3043     {
3044       /* If a hardware breakpoint or watchpoint was inserted, add a
3045          message about possibly exhausted resources.  */
3046       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3047         {
3048           fprintf_unfiltered (tmp_error_stream, 
3049                               "Could not insert hardware breakpoints:\n\
3050 You may have requested too many hardware breakpoints/watchpoints.\n");
3051         }
3052       target_terminal_ours_for_output ();
3053       error_stream (tmp_error_stream);
3054     }
3055
3056   do_cleanups (cleanups);
3057 }
3058
3059 /* Used when the program stops.
3060    Returns zero if successful, or non-zero if there was a problem
3061    removing a breakpoint location.  */
3062
3063 int
3064 remove_breakpoints (void)
3065 {
3066   struct bp_location *bl, **blp_tmp;
3067   int val = 0;
3068
3069   ALL_BP_LOCATIONS (bl, blp_tmp)
3070   {
3071     if (bl->inserted && !is_tracepoint (bl->owner))
3072       val |= remove_breakpoint (bl, mark_uninserted);
3073   }
3074   return val;
3075 }
3076
3077 /* When a thread exits, remove breakpoints that are related to
3078    that thread.  */
3079
3080 static void
3081 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3082 {
3083   struct breakpoint *b, *b_tmp;
3084
3085   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3086     {
3087       if (b->thread == tp->num && user_breakpoint_p (b))
3088         {
3089           b->disposition = disp_del_at_next_stop;
3090
3091           printf_filtered (_("\
3092 Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"),
3093                           b->number, tp->num);
3094
3095           /* Hide it from the user.  */
3096           b->number = 0;
3097        }
3098     }
3099 }
3100
3101 /* Remove breakpoints of process PID.  */
3102
3103 int
3104 remove_breakpoints_pid (int pid)
3105 {
3106   struct bp_location *bl, **blp_tmp;
3107   int val;
3108   struct inferior *inf = find_inferior_pid (pid);
3109
3110   ALL_BP_LOCATIONS (bl, blp_tmp)
3111   {
3112     if (bl->pspace != inf->pspace)
3113       continue;
3114
3115     if (bl->owner->type == bp_dprintf)
3116       continue;
3117
3118     if (bl->inserted)
3119       {
3120         val = remove_breakpoint (bl, mark_uninserted);
3121         if (val != 0)
3122           return val;
3123       }
3124   }
3125   return 0;
3126 }
3127
3128 int
3129 reattach_breakpoints (int pid)
3130 {
3131   struct cleanup *old_chain;
3132   struct bp_location *bl, **blp_tmp;
3133   int val;
3134   struct ui_file *tmp_error_stream;
3135   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3136   struct inferior *inf;
3137   struct thread_info *tp;
3138
3139   tp = any_live_thread_of_process (pid);
3140   if (tp == NULL)
3141     return 1;
3142
3143   inf = find_inferior_pid (pid);
3144   old_chain = save_inferior_ptid ();
3145
3146   inferior_ptid = tp->ptid;
3147
3148   tmp_error_stream = mem_fileopen ();
3149   make_cleanup_ui_file_delete (tmp_error_stream);
3150
3151   ALL_BP_LOCATIONS (bl, blp_tmp)
3152   {
3153     if (bl->pspace != inf->pspace)
3154       continue;
3155
3156     if (bl->inserted)
3157       {
3158         bl->inserted = 0;
3159         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3160         if (val != 0)
3161           {
3162             do_cleanups (old_chain);
3163             return val;
3164           }
3165       }
3166   }
3167   do_cleanups (old_chain);
3168   return 0;
3169 }
3170
3171 static int internal_breakpoint_number = -1;
3172
3173 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3174    If INTERNAL is non-zero, the breakpoint number will be populated
3175    from internal_breakpoint_number and that variable decremented.
3176    Otherwise the breakpoint number will be populated from
3177    breakpoint_count and that value incremented.  Internal breakpoints
3178    do not set the internal var bpnum.  */
3179 static void
3180 set_breakpoint_number (int internal, struct breakpoint *b)
3181 {
3182   if (internal)
3183     b->number = internal_breakpoint_number--;
3184   else
3185     {
3186       set_breakpoint_count (breakpoint_count + 1);
3187       b->number = breakpoint_count;
3188     }
3189 }
3190
3191 static struct breakpoint *
3192 create_internal_breakpoint (struct gdbarch *gdbarch,
3193                             CORE_ADDR address, enum bptype type,
3194                             const struct breakpoint_ops *ops)
3195 {
3196   struct symtab_and_line sal;
3197   struct breakpoint *b;
3198
3199   init_sal (&sal);              /* Initialize to zeroes.  */
3200
3201   sal.pc = address;
3202   sal.section = find_pc_overlay (sal.pc);
3203   sal.pspace = current_program_space;
3204
3205   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3206   b->number = internal_breakpoint_number--;
3207   b->disposition = disp_donttouch;
3208
3209   return b;
3210 }
3211
3212 static const char *const longjmp_names[] =
3213   {
3214     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3215   };
3216 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3217
3218 /* Per-objfile data private to breakpoint.c.  */
3219 struct breakpoint_objfile_data
3220 {
3221   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3222   struct bound_minimal_symbol overlay_msym;
3223
3224   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3225   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3226
3227   /* True if we have looked for longjmp probes.  */
3228   int longjmp_searched;
3229
3230   /* SystemTap probe points for longjmp (if any).  */
3231   VEC (probe_p) *longjmp_probes;
3232
3233   /* Minimal symbol for "std::terminate()" (if any).  */
3234   struct bound_minimal_symbol terminate_msym;
3235
3236   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3237   struct bound_minimal_symbol exception_msym;
3238
3239   /* True if we have looked for exception probes.  */
3240   int exception_searched;
3241
3242   /* SystemTap probe points for unwinding (if any).  */
3243   VEC (probe_p) *exception_probes;
3244 };
3245
3246 static const struct objfile_data *breakpoint_objfile_key;
3247
3248 /* Minimal symbol not found sentinel.  */
3249 static struct minimal_symbol msym_not_found;
3250
3251 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3252
3253 static int
3254 msym_not_found_p (const struct minimal_symbol *msym)
3255 {
3256   return msym == &msym_not_found;
3257 }
3258
3259 /* Return per-objfile data needed by breakpoint.c.
3260    Allocate the data if necessary.  */
3261
3262 static struct breakpoint_objfile_data *
3263 get_breakpoint_objfile_data (struct objfile *objfile)
3264 {
3265   struct breakpoint_objfile_data *bp_objfile_data;
3266
3267   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3268   if (bp_objfile_data == NULL)
3269     {
3270       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3271                                        sizeof (*bp_objfile_data));
3272
3273       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3274       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3275     }
3276   return bp_objfile_data;
3277 }
3278
3279 static void
3280 free_breakpoint_probes (struct objfile *obj, void *data)
3281 {
3282   struct breakpoint_objfile_data *bp_objfile_data = data;
3283
3284   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3285   VEC_free (probe_p, bp_objfile_data->exception_probes);
3286 }
3287
3288 static void
3289 create_overlay_event_breakpoint (void)
3290 {
3291   struct objfile *objfile;
3292   const char *const func_name = "_ovly_debug_event";
3293
3294   ALL_OBJFILES (objfile)
3295     {
3296       struct breakpoint *b;
3297       struct breakpoint_objfile_data *bp_objfile_data;
3298       CORE_ADDR addr;
3299
3300       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3301
3302       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3303         continue;
3304
3305       if (bp_objfile_data->overlay_msym.minsym == NULL)
3306         {
3307           struct bound_minimal_symbol m;
3308
3309           m = lookup_minimal_symbol_text (func_name, objfile);
3310           if (m.minsym == NULL)
3311             {
3312               /* Avoid future lookups in this objfile.  */
3313               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3314               continue;
3315             }
3316           bp_objfile_data->overlay_msym = m;
3317         }
3318
3319       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3320       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3321                                       bp_overlay_event,
3322                                       &internal_breakpoint_ops);
3323       b->addr_string = xstrdup (func_name);
3324
3325       if (overlay_debugging == ovly_auto)
3326         {
3327           b->enable_state = bp_enabled;
3328           overlay_events_enabled = 1;
3329         }
3330       else
3331        {
3332          b->enable_state = bp_disabled;
3333          overlay_events_enabled = 0;
3334        }
3335     }
3336   update_global_location_list (1);
3337 }
3338
3339 static void
3340 create_longjmp_master_breakpoint (void)
3341 {
3342   struct program_space *pspace;
3343   struct cleanup *old_chain;
3344
3345   old_chain = save_current_program_space ();
3346
3347   ALL_PSPACES (pspace)
3348   {
3349     struct objfile *objfile;
3350
3351     set_current_program_space (pspace);
3352
3353     ALL_OBJFILES (objfile)
3354     {
3355       int i;
3356       struct gdbarch *gdbarch;
3357       struct breakpoint_objfile_data *bp_objfile_data;
3358
3359       gdbarch = get_objfile_arch (objfile);
3360
3361       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3362
3363       if (!bp_objfile_data->longjmp_searched)
3364         {
3365           VEC (probe_p) *ret;
3366
3367           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3368           if (ret != NULL)
3369             {
3370               /* We are only interested in checking one element.  */
3371               struct probe *p = VEC_index (probe_p, ret, 0);
3372
3373               if (!can_evaluate_probe_arguments (p))
3374                 {
3375                   /* We cannot use the probe interface here, because it does
3376                      not know how to evaluate arguments.  */
3377                   VEC_free (probe_p, ret);
3378                   ret = NULL;
3379                 }
3380             }
3381           bp_objfile_data->longjmp_probes = ret;
3382           bp_objfile_data->longjmp_searched = 1;
3383         }
3384
3385       if (bp_objfile_data->longjmp_probes != NULL)
3386         {
3387           int i;
3388           struct probe *probe;
3389           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3390
3391           for (i = 0;
3392                VEC_iterate (probe_p,
3393                             bp_objfile_data->longjmp_probes,
3394                             i, probe);
3395                ++i)
3396             {
3397               struct breakpoint *b;
3398
3399               b = create_internal_breakpoint (gdbarch,
3400                                               get_probe_address (probe,
3401                                                                  objfile),
3402                                               bp_longjmp_master,
3403                                               &internal_breakpoint_ops);
3404               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3405               b->enable_state = bp_disabled;
3406             }
3407
3408           continue;
3409         }
3410
3411       if (!gdbarch_get_longjmp_target_p (gdbarch))
3412         continue;
3413
3414       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3415         {
3416           struct breakpoint *b;
3417           const char *func_name;
3418           CORE_ADDR addr;
3419
3420           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3421             continue;
3422
3423           func_name = longjmp_names[i];
3424           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3425             {
3426               struct bound_minimal_symbol m;
3427
3428               m = lookup_minimal_symbol_text (func_name, objfile);
3429               if (m.minsym == NULL)
3430                 {
3431                   /* Prevent future lookups in this objfile.  */
3432                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3433                   continue;
3434                 }
3435               bp_objfile_data->longjmp_msym[i] = m;
3436             }
3437
3438           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3439           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3440                                           &internal_breakpoint_ops);
3441           b->addr_string = xstrdup (func_name);
3442           b->enable_state = bp_disabled;
3443         }
3444     }
3445   }
3446   update_global_location_list (1);
3447
3448   do_cleanups (old_chain);
3449 }
3450
3451 /* Create a master std::terminate breakpoint.  */
3452 static void
3453 create_std_terminate_master_breakpoint (void)
3454 {
3455   struct program_space *pspace;
3456   struct cleanup *old_chain;
3457   const char *const func_name = "std::terminate()";
3458
3459   old_chain = save_current_program_space ();
3460
3461   ALL_PSPACES (pspace)
3462   {
3463     struct objfile *objfile;
3464     CORE_ADDR addr;
3465
3466     set_current_program_space (pspace);
3467
3468     ALL_OBJFILES (objfile)
3469     {
3470       struct breakpoint *b;
3471       struct breakpoint_objfile_data *bp_objfile_data;
3472
3473       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3474
3475       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3476         continue;
3477
3478       if (bp_objfile_data->terminate_msym.minsym == NULL)
3479         {
3480           struct bound_minimal_symbol m;
3481
3482           m = lookup_minimal_symbol (func_name, NULL, objfile);
3483           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3484                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3485             {
3486               /* Prevent future lookups in this objfile.  */
3487               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3488               continue;
3489             }
3490           bp_objfile_data->terminate_msym = m;
3491         }
3492
3493       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3494       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3495                                       bp_std_terminate_master,
3496                                       &internal_breakpoint_ops);
3497       b->addr_string = xstrdup (func_name);
3498       b->enable_state = bp_disabled;
3499     }
3500   }
3501
3502   update_global_location_list (1);
3503
3504   do_cleanups (old_chain);
3505 }
3506
3507 /* Install a master breakpoint on the unwinder's debug hook.  */
3508
3509 static void
3510 create_exception_master_breakpoint (void)
3511 {
3512   struct objfile *objfile;
3513   const char *const func_name = "_Unwind_DebugHook";
3514
3515   ALL_OBJFILES (objfile)
3516     {
3517       struct breakpoint *b;
3518       struct gdbarch *gdbarch;
3519       struct breakpoint_objfile_data *bp_objfile_data;
3520       CORE_ADDR addr;
3521
3522       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3523
3524       /* We prefer the SystemTap probe point if it exists.  */
3525       if (!bp_objfile_data->exception_searched)
3526         {
3527           VEC (probe_p) *ret;
3528
3529           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3530
3531           if (ret != NULL)
3532             {
3533               /* We are only interested in checking one element.  */
3534               struct probe *p = VEC_index (probe_p, ret, 0);
3535
3536               if (!can_evaluate_probe_arguments (p))
3537                 {
3538                   /* We cannot use the probe interface here, because it does
3539                      not know how to evaluate arguments.  */
3540                   VEC_free (probe_p, ret);
3541                   ret = NULL;
3542                 }
3543             }
3544           bp_objfile_data->exception_probes = ret;
3545           bp_objfile_data->exception_searched = 1;
3546         }
3547
3548       if (bp_objfile_data->exception_probes != NULL)
3549         {
3550           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3551           int i;
3552           struct probe *probe;
3553
3554           for (i = 0;
3555                VEC_iterate (probe_p,
3556                             bp_objfile_data->exception_probes,
3557                             i, probe);
3558                ++i)
3559             {
3560               struct breakpoint *b;
3561
3562               b = create_internal_breakpoint (gdbarch,
3563                                               get_probe_address (probe,
3564                                                                  objfile),
3565                                               bp_exception_master,
3566                                               &internal_breakpoint_ops);
3567               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3568               b->enable_state = bp_disabled;
3569             }
3570
3571           continue;
3572         }
3573
3574       /* Otherwise, try the hook function.  */
3575
3576       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3577         continue;
3578
3579       gdbarch = get_objfile_arch (objfile);
3580
3581       if (bp_objfile_data->exception_msym.minsym == NULL)
3582         {
3583           struct bound_minimal_symbol debug_hook;
3584
3585           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3586           if (debug_hook.minsym == NULL)
3587             {
3588               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3589               continue;
3590             }
3591
3592           bp_objfile_data->exception_msym = debug_hook;
3593         }
3594
3595       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3596       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3597                                                  &current_target);
3598       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3599                                       &internal_breakpoint_ops);
3600       b->addr_string = xstrdup (func_name);
3601       b->enable_state = bp_disabled;
3602     }
3603
3604   update_global_location_list (1);
3605 }
3606
3607 void
3608 update_breakpoints_after_exec (void)
3609 {
3610   struct breakpoint *b, *b_tmp;
3611   struct bp_location *bploc, **bplocp_tmp;
3612
3613   /* We're about to delete breakpoints from GDB's lists.  If the
3614      INSERTED flag is true, GDB will try to lift the breakpoints by
3615      writing the breakpoints' "shadow contents" back into memory.  The
3616      "shadow contents" are NOT valid after an exec, so GDB should not
3617      do that.  Instead, the target is responsible from marking
3618      breakpoints out as soon as it detects an exec.  We don't do that
3619      here instead, because there may be other attempts to delete
3620      breakpoints after detecting an exec and before reaching here.  */
3621   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3622     if (bploc->pspace == current_program_space)
3623       gdb_assert (!bploc->inserted);
3624
3625   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3626   {
3627     if (b->pspace != current_program_space)
3628       continue;
3629
3630     /* Solib breakpoints must be explicitly reset after an exec().  */
3631     if (b->type == bp_shlib_event)
3632       {
3633         delete_breakpoint (b);
3634         continue;
3635       }
3636
3637     /* JIT breakpoints must be explicitly reset after an exec().  */
3638     if (b->type == bp_jit_event)
3639       {
3640         delete_breakpoint (b);
3641         continue;
3642       }
3643
3644     /* Thread event breakpoints must be set anew after an exec(),
3645        as must overlay event and longjmp master breakpoints.  */
3646     if (b->type == bp_thread_event || b->type == bp_overlay_event
3647         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3648         || b->type == bp_exception_master)
3649       {
3650         delete_breakpoint (b);
3651         continue;
3652       }
3653
3654     /* Step-resume breakpoints are meaningless after an exec().  */
3655     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3656       {
3657         delete_breakpoint (b);
3658         continue;
3659       }
3660
3661     /* Longjmp and longjmp-resume breakpoints are also meaningless
3662        after an exec.  */
3663     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3664         || b->type == bp_longjmp_call_dummy
3665         || b->type == bp_exception || b->type == bp_exception_resume)
3666       {
3667         delete_breakpoint (b);
3668         continue;
3669       }
3670
3671     if (b->type == bp_catchpoint)
3672       {
3673         /* For now, none of the bp_catchpoint breakpoints need to
3674            do anything at this point.  In the future, if some of
3675            the catchpoints need to something, we will need to add
3676            a new method, and call this method from here.  */
3677         continue;
3678       }
3679
3680     /* bp_finish is a special case.  The only way we ought to be able
3681        to see one of these when an exec() has happened, is if the user
3682        caught a vfork, and then said "finish".  Ordinarily a finish just
3683        carries them to the call-site of the current callee, by setting
3684        a temporary bp there and resuming.  But in this case, the finish
3685        will carry them entirely through the vfork & exec.
3686
3687        We don't want to allow a bp_finish to remain inserted now.  But
3688        we can't safely delete it, 'cause finish_command has a handle to
3689        the bp on a bpstat, and will later want to delete it.  There's a
3690        chance (and I've seen it happen) that if we delete the bp_finish
3691        here, that its storage will get reused by the time finish_command
3692        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3693        We really must allow finish_command to delete a bp_finish.
3694
3695        In the absence of a general solution for the "how do we know
3696        it's safe to delete something others may have handles to?"
3697        problem, what we'll do here is just uninsert the bp_finish, and
3698        let finish_command delete it.
3699
3700        (We know the bp_finish is "doomed" in the sense that it's
3701        momentary, and will be deleted as soon as finish_command sees
3702        the inferior stopped.  So it doesn't matter that the bp's
3703        address is probably bogus in the new a.out, unlike e.g., the
3704        solib breakpoints.)  */
3705
3706     if (b->type == bp_finish)
3707       {
3708         continue;
3709       }
3710
3711     /* Without a symbolic address, we have little hope of the
3712        pre-exec() address meaning the same thing in the post-exec()
3713        a.out.  */
3714     if (b->addr_string == NULL)
3715       {
3716         delete_breakpoint (b);
3717         continue;
3718       }
3719   }
3720   /* FIXME what about longjmp breakpoints?  Re-create them here?  */
3721   create_overlay_event_breakpoint ();
3722   create_longjmp_master_breakpoint ();
3723   create_std_terminate_master_breakpoint ();
3724   create_exception_master_breakpoint ();
3725 }
3726
3727 int
3728 detach_breakpoints (ptid_t ptid)
3729 {
3730   struct bp_location *bl, **blp_tmp;
3731   int val = 0;
3732   struct cleanup *old_chain = save_inferior_ptid ();
3733   struct inferior *inf = current_inferior ();
3734
3735   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3736     error (_("Cannot detach breakpoints of inferior_ptid"));
3737
3738   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3739   inferior_ptid = ptid;
3740   ALL_BP_LOCATIONS (bl, blp_tmp)
3741   {
3742     if (bl->pspace != inf->pspace)
3743       continue;
3744
3745     /* This function must physically remove breakpoints locations
3746        from the specified ptid, without modifying the breakpoint
3747        package's state.  Locations of type bp_loc_other are only
3748        maintained at GDB side.  So, there is no need to remove
3749        these bp_loc_other locations.  Moreover, removing these
3750        would modify the breakpoint package's state.  */
3751     if (bl->loc_type == bp_loc_other)
3752       continue;
3753
3754     if (bl->inserted)
3755       val |= remove_breakpoint_1 (bl, mark_inserted);
3756   }
3757
3758   /* Detach single-step breakpoints as well.  */
3759   detach_single_step_breakpoints ();
3760
3761   do_cleanups (old_chain);
3762   return val;
3763 }
3764
3765 /* Remove the breakpoint location BL from the current address space.
3766    Note that this is used to detach breakpoints from a child fork.
3767    When we get here, the child isn't in the inferior list, and neither
3768    do we have objects to represent its address space --- we should
3769    *not* look at bl->pspace->aspace here.  */
3770
3771 static int
3772 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3773 {
3774   int val;
3775
3776   /* BL is never in moribund_locations by our callers.  */
3777   gdb_assert (bl->owner != NULL);
3778
3779   if (bl->owner->enable_state == bp_permanent)
3780     /* Permanent breakpoints cannot be inserted or removed.  */
3781     return 0;
3782
3783   /* The type of none suggests that owner is actually deleted.
3784      This should not ever happen.  */
3785   gdb_assert (bl->owner->type != bp_none);
3786
3787   if (bl->loc_type == bp_loc_software_breakpoint
3788       || bl->loc_type == bp_loc_hardware_breakpoint)
3789     {
3790       /* "Normal" instruction breakpoint: either the standard
3791          trap-instruction bp (bp_breakpoint), or a
3792          bp_hardware_breakpoint.  */
3793
3794       /* First check to see if we have to handle an overlay.  */
3795       if (overlay_debugging == ovly_off
3796           || bl->section == NULL
3797           || !(section_is_overlay (bl->section)))
3798         {
3799           /* No overlay handling: just remove the breakpoint.  */
3800
3801           /* If we're trying to uninsert a memory breakpoint that we
3802              know is set in a dynamic object that is marked
3803              shlib_disabled, then either the dynamic object was
3804              removed with "remove-symbol-file" or with
3805              "nosharedlibrary".  In the former case, we don't know
3806              whether another dynamic object might have loaded over the
3807              breakpoint's address -- the user might well let us know
3808              about it next with add-symbol-file (the whole point of
3809              add-symbol-file is letting the user manually maintain a
3810              list of dynamically loaded objects).  If we have the
3811              breakpoint's shadow memory, that is, this is a software
3812              breakpoint managed by GDB, check whether the breakpoint
3813              is still inserted in memory, to avoid overwriting wrong
3814              code with stale saved shadow contents.  Note that HW
3815              breakpoints don't have shadow memory, as they're
3816              implemented using a mechanism that is not dependent on
3817              being able to modify the target's memory, and as such
3818              they should always be removed.  */
3819           if (bl->shlib_disabled
3820               && bl->target_info.shadow_len != 0
3821               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3822             val = 0;
3823           else
3824             val = bl->owner->ops->remove_location (bl);
3825         }
3826       else
3827         {
3828           /* This breakpoint is in an overlay section.
3829              Did we set a breakpoint at the LMA?  */
3830           if (!overlay_events_enabled)
3831               {
3832                 /* Yes -- overlay event support is not active, so we
3833                    should have set a breakpoint at the LMA.  Remove it.  
3834                 */
3835                 /* Ignore any failures: if the LMA is in ROM, we will
3836                    have already warned when we failed to insert it.  */
3837                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3838                   target_remove_hw_breakpoint (bl->gdbarch,
3839                                                &bl->overlay_target_info);
3840                 else
3841                   target_remove_breakpoint (bl->gdbarch,
3842                                             &bl->overlay_target_info);
3843               }
3844           /* Did we set a breakpoint at the VMA? 
3845              If so, we will have marked the breakpoint 'inserted'.  */
3846           if (bl->inserted)
3847             {
3848               /* Yes -- remove it.  Previously we did not bother to
3849                  remove the breakpoint if the section had been
3850                  unmapped, but let's not rely on that being safe.  We
3851                  don't know what the overlay manager might do.  */
3852
3853               /* However, we should remove *software* breakpoints only
3854                  if the section is still mapped, or else we overwrite
3855                  wrong code with the saved shadow contents.  */
3856               if (bl->loc_type == bp_loc_hardware_breakpoint
3857                   || section_is_mapped (bl->section))
3858                 val = bl->owner->ops->remove_location (bl);
3859               else
3860                 val = 0;
3861             }
3862           else
3863             {
3864               /* No -- not inserted, so no need to remove.  No error.  */
3865               val = 0;
3866             }
3867         }
3868
3869       /* In some cases, we might not be able to remove a breakpoint in
3870          a shared library that has already been removed, but we have
3871          not yet processed the shlib unload event.  Similarly for an
3872          unloaded add-symbol-file object - the user might not yet have
3873          had the chance to remove-symbol-file it.  shlib_disabled will
3874          be set if the library/object has already been removed, but
3875          the breakpoint hasn't been uninserted yet, e.g., after
3876          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3877          always-inserted mode.  */
3878       if (val
3879           && (bl->loc_type == bp_loc_software_breakpoint
3880               && (bl->shlib_disabled
3881                   || solib_name_from_address (bl->pspace, bl->address)
3882                   || shared_objfile_contains_address_p (bl->pspace,
3883                                                         bl->address))))
3884         val = 0;
3885
3886       if (val)
3887         return val;
3888       bl->inserted = (is == mark_inserted);
3889     }
3890   else if (bl->loc_type == bp_loc_hardware_watchpoint)
3891     {
3892       gdb_assert (bl->owner->ops != NULL
3893                   && bl->owner->ops->remove_location != NULL);
3894
3895       bl->inserted = (is == mark_inserted);
3896       bl->owner->ops->remove_location (bl);
3897
3898       /* Failure to remove any of the hardware watchpoints comes here.  */
3899       if ((is == mark_uninserted) && (bl->inserted))
3900         warning (_("Could not remove hardware watchpoint %d."),
3901                  bl->owner->number);
3902     }
3903   else if (bl->owner->type == bp_catchpoint
3904            && breakpoint_enabled (bl->owner)
3905            && !bl->duplicate)
3906     {
3907       gdb_assert (bl->owner->ops != NULL
3908                   && bl->owner->ops->remove_location != NULL);
3909
3910       val = bl->owner->ops->remove_location (bl);
3911       if (val)
3912         return val;
3913
3914       bl->inserted = (is == mark_inserted);
3915     }
3916
3917   return 0;
3918 }
3919
3920 static int
3921 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
3922 {
3923   int ret;
3924   struct cleanup *old_chain;
3925
3926   /* BL is never in moribund_locations by our callers.  */
3927   gdb_assert (bl->owner != NULL);
3928
3929   if (bl->owner->enable_state == bp_permanent)
3930     /* Permanent breakpoints cannot be inserted or removed.  */
3931     return 0;
3932
3933   /* The type of none suggests that owner is actually deleted.
3934      This should not ever happen.  */
3935   gdb_assert (bl->owner->type != bp_none);
3936
3937   old_chain = save_current_space_and_thread ();
3938
3939   switch_to_program_space_and_thread (bl->pspace);
3940
3941   ret = remove_breakpoint_1 (bl, is);
3942
3943   do_cleanups (old_chain);
3944   return ret;
3945 }
3946
3947 /* Clear the "inserted" flag in all breakpoints.  */
3948
3949 void
3950 mark_breakpoints_out (void)
3951 {
3952   struct bp_location *bl, **blp_tmp;
3953
3954   ALL_BP_LOCATIONS (bl, blp_tmp)
3955     if (bl->pspace == current_program_space)
3956       bl->inserted = 0;
3957 }
3958
3959 /* Clear the "inserted" flag in all breakpoints and delete any
3960    breakpoints which should go away between runs of the program.
3961
3962    Plus other such housekeeping that has to be done for breakpoints
3963    between runs.
3964
3965    Note: this function gets called at the end of a run (by
3966    generic_mourn_inferior) and when a run begins (by
3967    init_wait_for_inferior).  */
3968
3969
3970
3971 void
3972 breakpoint_init_inferior (enum inf_context context)
3973 {
3974   struct breakpoint *b, *b_tmp;
3975   struct bp_location *bl, **blp_tmp;
3976   int ix;
3977   struct program_space *pspace = current_program_space;
3978
3979   /* If breakpoint locations are shared across processes, then there's
3980      nothing to do.  */
3981   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
3982     return;
3983
3984   ALL_BP_LOCATIONS (bl, blp_tmp)
3985   {
3986     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
3987     if (bl->pspace == pspace
3988         && bl->owner->enable_state != bp_permanent)
3989       bl->inserted = 0;
3990   }
3991
3992   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3993   {
3994     if (b->loc && b->loc->pspace != pspace)
3995       continue;
3996
3997     switch (b->type)
3998       {
3999       case bp_call_dummy:
4000       case bp_longjmp_call_dummy:
4001
4002         /* If the call dummy breakpoint is at the entry point it will
4003            cause problems when the inferior is rerun, so we better get
4004            rid of it.  */
4005
4006       case bp_watchpoint_scope:
4007
4008         /* Also get rid of scope breakpoints.  */
4009
4010       case bp_shlib_event:
4011
4012         /* Also remove solib event breakpoints.  Their addresses may
4013            have changed since the last time we ran the program.
4014            Actually we may now be debugging against different target;
4015            and so the solib backend that installed this breakpoint may
4016            not be used in by the target.  E.g.,
4017
4018            (gdb) file prog-linux
4019            (gdb) run               # native linux target
4020            ...
4021            (gdb) kill
4022            (gdb) file prog-win.exe
4023            (gdb) tar rem :9999     # remote Windows gdbserver.
4024         */
4025
4026       case bp_step_resume:
4027
4028         /* Also remove step-resume breakpoints.  */
4029
4030         delete_breakpoint (b);
4031         break;
4032
4033       case bp_watchpoint:
4034       case bp_hardware_watchpoint:
4035       case bp_read_watchpoint:
4036       case bp_access_watchpoint:
4037         {
4038           struct watchpoint *w = (struct watchpoint *) b;
4039
4040           /* Likewise for watchpoints on local expressions.  */
4041           if (w->exp_valid_block != NULL)
4042             delete_breakpoint (b);
4043           else if (context == inf_starting)
4044             {
4045               /* Reset val field to force reread of starting value in
4046                  insert_breakpoints.  */
4047               if (w->val)
4048                 value_free (w->val);
4049               w->val = NULL;
4050               w->val_valid = 0;
4051           }
4052         }
4053         break;
4054       default:
4055         break;
4056       }
4057   }
4058
4059   /* Get rid of the moribund locations.  */
4060   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4061     decref_bp_location (&bl);
4062   VEC_free (bp_location_p, moribund_locations);
4063 }
4064
4065 /* These functions concern about actual breakpoints inserted in the
4066    target --- to e.g. check if we need to do decr_pc adjustment or if
4067    we need to hop over the bkpt --- so we check for address space
4068    match, not program space.  */
4069
4070 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4071    exists at PC.  It returns ordinary_breakpoint_here if it's an
4072    ordinary breakpoint, or permanent_breakpoint_here if it's a
4073    permanent breakpoint.
4074    - When continuing from a location with an ordinary breakpoint, we
4075      actually single step once before calling insert_breakpoints.
4076    - When continuing from a location with a permanent breakpoint, we
4077      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4078      the target, to advance the PC past the breakpoint.  */
4079
4080 enum breakpoint_here
4081 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4082 {
4083   struct bp_location *bl, **blp_tmp;
4084   int any_breakpoint_here = 0;
4085
4086   ALL_BP_LOCATIONS (bl, blp_tmp)
4087     {
4088       if (bl->loc_type != bp_loc_software_breakpoint
4089           && bl->loc_type != bp_loc_hardware_breakpoint)
4090         continue;
4091
4092       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4093       if ((breakpoint_enabled (bl->owner)
4094            || bl->owner->enable_state == bp_permanent)
4095           && breakpoint_location_address_match (bl, aspace, pc))
4096         {
4097           if (overlay_debugging 
4098               && section_is_overlay (bl->section)
4099               && !section_is_mapped (bl->section))
4100             continue;           /* unmapped overlay -- can't be a match */
4101           else if (bl->owner->enable_state == bp_permanent)
4102             return permanent_breakpoint_here;
4103           else
4104             any_breakpoint_here = 1;
4105         }
4106     }
4107
4108   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
4109 }
4110
4111 /* Return true if there's a moribund breakpoint at PC.  */
4112
4113 int
4114 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4115 {
4116   struct bp_location *loc;
4117   int ix;
4118
4119   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4120     if (breakpoint_location_address_match (loc, aspace, pc))
4121       return 1;
4122
4123   return 0;
4124 }
4125
4126 /* Returns non-zero if there's a breakpoint inserted at PC, which is
4127    inserted using regular breakpoint_chain / bp_location array
4128    mechanism.  This does not check for single-step breakpoints, which
4129    are inserted and removed using direct target manipulation.  */
4130
4131 int
4132 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
4133                                     CORE_ADDR pc)
4134 {
4135   struct bp_location *bl, **blp_tmp;
4136
4137   ALL_BP_LOCATIONS (bl, blp_tmp)
4138     {
4139       if (bl->loc_type != bp_loc_software_breakpoint
4140           && bl->loc_type != bp_loc_hardware_breakpoint)
4141         continue;
4142
4143       if (bl->inserted
4144           && breakpoint_location_address_match (bl, aspace, pc))
4145         {
4146           if (overlay_debugging 
4147               && section_is_overlay (bl->section)
4148               && !section_is_mapped (bl->section))
4149             continue;           /* unmapped overlay -- can't be a match */
4150           else
4151             return 1;
4152         }
4153     }
4154   return 0;
4155 }
4156
4157 /* Returns non-zero iff there's either regular breakpoint
4158    or a single step breakpoint inserted at PC.  */
4159
4160 int
4161 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4162 {
4163   if (regular_breakpoint_inserted_here_p (aspace, pc))
4164     return 1;
4165
4166   if (single_step_breakpoint_inserted_here_p (aspace, pc))
4167     return 1;
4168
4169   return 0;
4170 }
4171
4172 /* Ignoring deprecated raw breakpoints, return non-zero iff there is a
4173    software breakpoint inserted at PC.  */
4174
4175 static struct bp_location *
4176 find_non_raw_software_breakpoint_inserted_here (struct address_space *aspace,
4177                                                 CORE_ADDR pc)
4178 {
4179   struct bp_location *bl, **blp_tmp;
4180
4181   ALL_BP_LOCATIONS (bl, blp_tmp)
4182     {
4183       if (bl->loc_type != bp_loc_software_breakpoint)
4184         continue;
4185
4186       if (bl->inserted
4187           && breakpoint_address_match (bl->pspace->aspace, bl->address,
4188                                        aspace, pc))
4189         {
4190           if (overlay_debugging 
4191               && section_is_overlay (bl->section)
4192               && !section_is_mapped (bl->section))
4193             continue;           /* unmapped overlay -- can't be a match */
4194           else
4195             return bl;
4196         }
4197     }
4198
4199   return NULL;
4200 }
4201
4202 /* This function returns non-zero iff there is a software breakpoint
4203    inserted at PC.  */
4204
4205 int
4206 software_breakpoint_inserted_here_p (struct address_space *aspace,
4207                                      CORE_ADDR pc)
4208 {
4209   if (find_non_raw_software_breakpoint_inserted_here (aspace, pc) != NULL)
4210     return 1;
4211
4212   /* Also check for software single-step breakpoints.  */
4213   if (single_step_breakpoint_inserted_here_p (aspace, pc))
4214     return 1;
4215
4216   return 0;
4217 }
4218
4219 int
4220 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4221                                        CORE_ADDR addr, ULONGEST len)
4222 {
4223   struct breakpoint *bpt;
4224
4225   ALL_BREAKPOINTS (bpt)
4226     {
4227       struct bp_location *loc;
4228
4229       if (bpt->type != bp_hardware_watchpoint
4230           && bpt->type != bp_access_watchpoint)
4231         continue;
4232
4233       if (!breakpoint_enabled (bpt))
4234         continue;
4235
4236       for (loc = bpt->loc; loc; loc = loc->next)
4237         if (loc->pspace->aspace == aspace && loc->inserted)
4238           {
4239             CORE_ADDR l, h;
4240
4241             /* Check for intersection.  */
4242             l = max (loc->address, addr);
4243             h = min (loc->address + loc->length, addr + len);
4244             if (l < h)
4245               return 1;
4246           }
4247     }
4248   return 0;
4249 }
4250
4251 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
4252    PC is valid for process/thread PTID.  */
4253
4254 int
4255 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4256                          ptid_t ptid)
4257 {
4258   struct bp_location *bl, **blp_tmp;
4259   /* The thread and task IDs associated to PTID, computed lazily.  */
4260   int thread = -1;
4261   int task = 0;
4262   
4263   ALL_BP_LOCATIONS (bl, blp_tmp)
4264     {
4265       if (bl->loc_type != bp_loc_software_breakpoint
4266           && bl->loc_type != bp_loc_hardware_breakpoint)
4267         continue;
4268
4269       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4270       if (!breakpoint_enabled (bl->owner)
4271           && bl->owner->enable_state != bp_permanent)
4272         continue;
4273
4274       if (!breakpoint_location_address_match (bl, aspace, pc))
4275         continue;
4276
4277       if (bl->owner->thread != -1)
4278         {
4279           /* This is a thread-specific breakpoint.  Check that ptid
4280              matches that thread.  If thread hasn't been computed yet,
4281              it is now time to do so.  */
4282           if (thread == -1)
4283             thread = pid_to_thread_id (ptid);
4284           if (bl->owner->thread != thread)
4285             continue;
4286         }
4287
4288       if (bl->owner->task != 0)
4289         {
4290           /* This is a task-specific breakpoint.  Check that ptid
4291              matches that task.  If task hasn't been computed yet,
4292              it is now time to do so.  */
4293           if (task == 0)
4294             task = ada_get_task_number (ptid);
4295           if (bl->owner->task != task)
4296             continue;
4297         }
4298
4299       if (overlay_debugging 
4300           && section_is_overlay (bl->section)
4301           && !section_is_mapped (bl->section))
4302         continue;           /* unmapped overlay -- can't be a match */
4303
4304       return 1;
4305     }
4306
4307   return 0;
4308 }
4309 \f
4310
4311 /* bpstat stuff.  External routines' interfaces are documented
4312    in breakpoint.h.  */
4313
4314 int
4315 is_catchpoint (struct breakpoint *ep)
4316 {
4317   return (ep->type == bp_catchpoint);
4318 }
4319
4320 /* Frees any storage that is part of a bpstat.  Does not walk the
4321    'next' chain.  */
4322
4323 static void
4324 bpstat_free (bpstat bs)
4325 {
4326   if (bs->old_val != NULL)
4327     value_free (bs->old_val);
4328   decref_counted_command_line (&bs->commands);
4329   decref_bp_location (&bs->bp_location_at);
4330   xfree (bs);
4331 }
4332
4333 /* Clear a bpstat so that it says we are not at any breakpoint.
4334    Also free any storage that is part of a bpstat.  */
4335
4336 void
4337 bpstat_clear (bpstat *bsp)
4338 {
4339   bpstat p;
4340   bpstat q;
4341
4342   if (bsp == 0)
4343     return;
4344   p = *bsp;
4345   while (p != NULL)
4346     {
4347       q = p->next;
4348       bpstat_free (p);
4349       p = q;
4350     }
4351   *bsp = NULL;
4352 }
4353
4354 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4355    is part of the bpstat is copied as well.  */
4356
4357 bpstat
4358 bpstat_copy (bpstat bs)
4359 {
4360   bpstat p = NULL;
4361   bpstat tmp;
4362   bpstat retval = NULL;
4363
4364   if (bs == NULL)
4365     return bs;
4366
4367   for (; bs != NULL; bs = bs->next)
4368     {
4369       tmp = (bpstat) xmalloc (sizeof (*tmp));
4370       memcpy (tmp, bs, sizeof (*tmp));
4371       incref_counted_command_line (tmp->commands);
4372       incref_bp_location (tmp->bp_location_at);
4373       if (bs->old_val != NULL)
4374         {
4375           tmp->old_val = value_copy (bs->old_val);
4376           release_value (tmp->old_val);
4377         }
4378
4379       if (p == NULL)
4380         /* This is the first thing in the chain.  */
4381         retval = tmp;
4382       else
4383         p->next = tmp;
4384       p = tmp;
4385     }
4386   p->next = NULL;
4387   return retval;
4388 }
4389
4390 /* Find the bpstat associated with this breakpoint.  */
4391
4392 bpstat
4393 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4394 {
4395   if (bsp == NULL)
4396     return NULL;
4397
4398   for (; bsp != NULL; bsp = bsp->next)
4399     {
4400       if (bsp->breakpoint_at == breakpoint)
4401         return bsp;
4402     }
4403   return NULL;
4404 }
4405
4406 /* See breakpoint.h.  */
4407
4408 int
4409 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4410 {
4411   for (; bsp != NULL; bsp = bsp->next)
4412     {
4413       if (bsp->breakpoint_at == NULL)
4414         {
4415           /* A moribund location can never explain a signal other than
4416              GDB_SIGNAL_TRAP.  */
4417           if (sig == GDB_SIGNAL_TRAP)
4418             return 1;
4419         }
4420       else
4421         {
4422           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4423                                                         sig))
4424             return 1;
4425         }
4426     }
4427
4428   return 0;
4429 }
4430
4431 /* Put in *NUM the breakpoint number of the first breakpoint we are
4432    stopped at.  *BSP upon return is a bpstat which points to the
4433    remaining breakpoints stopped at (but which is not guaranteed to be
4434    good for anything but further calls to bpstat_num).
4435
4436    Return 0 if passed a bpstat which does not indicate any breakpoints.
4437    Return -1 if stopped at a breakpoint that has been deleted since
4438    we set it.
4439    Return 1 otherwise.  */
4440
4441 int
4442 bpstat_num (bpstat *bsp, int *num)
4443 {
4444   struct breakpoint *b;
4445
4446   if ((*bsp) == NULL)
4447     return 0;                   /* No more breakpoint values */
4448
4449   /* We assume we'll never have several bpstats that correspond to a
4450      single breakpoint -- otherwise, this function might return the
4451      same number more than once and this will look ugly.  */
4452   b = (*bsp)->breakpoint_at;
4453   *bsp = (*bsp)->next;
4454   if (b == NULL)
4455     return -1;                  /* breakpoint that's been deleted since */
4456
4457   *num = b->number;             /* We have its number */
4458   return 1;
4459 }
4460
4461 /* See breakpoint.h.  */
4462
4463 void
4464 bpstat_clear_actions (void)
4465 {
4466   struct thread_info *tp;
4467   bpstat bs;
4468
4469   if (ptid_equal (inferior_ptid, null_ptid))
4470     return;
4471
4472   tp = find_thread_ptid (inferior_ptid);
4473   if (tp == NULL)
4474     return;
4475
4476   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4477     {
4478       decref_counted_command_line (&bs->commands);
4479
4480       if (bs->old_val != NULL)
4481         {
4482           value_free (bs->old_val);
4483           bs->old_val = NULL;
4484         }
4485     }
4486 }
4487
4488 /* Called when a command is about to proceed the inferior.  */
4489
4490 static void
4491 breakpoint_about_to_proceed (void)
4492 {
4493   if (!ptid_equal (inferior_ptid, null_ptid))
4494     {
4495       struct thread_info *tp = inferior_thread ();
4496
4497       /* Allow inferior function calls in breakpoint commands to not
4498          interrupt the command list.  When the call finishes
4499          successfully, the inferior will be standing at the same
4500          breakpoint as if nothing happened.  */
4501       if (tp->control.in_infcall)
4502         return;
4503     }
4504
4505   breakpoint_proceeded = 1;
4506 }
4507
4508 /* Stub for cleaning up our state if we error-out of a breakpoint
4509    command.  */
4510 static void
4511 cleanup_executing_breakpoints (void *ignore)
4512 {
4513   executing_breakpoint_commands = 0;
4514 }
4515
4516 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4517    or its equivalent.  */
4518
4519 static int
4520 command_line_is_silent (struct command_line *cmd)
4521 {
4522   return cmd && (strcmp ("silent", cmd->line) == 0
4523                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4524 }
4525
4526 /* Execute all the commands associated with all the breakpoints at
4527    this location.  Any of these commands could cause the process to
4528    proceed beyond this point, etc.  We look out for such changes by
4529    checking the global "breakpoint_proceeded" after each command.
4530
4531    Returns true if a breakpoint command resumed the inferior.  In that
4532    case, it is the caller's responsibility to recall it again with the
4533    bpstat of the current thread.  */
4534
4535 static int
4536 bpstat_do_actions_1 (bpstat *bsp)
4537 {
4538   bpstat bs;
4539   struct cleanup *old_chain;
4540   int again = 0;
4541
4542   /* Avoid endless recursion if a `source' command is contained
4543      in bs->commands.  */
4544   if (executing_breakpoint_commands)
4545     return 0;
4546
4547   executing_breakpoint_commands = 1;
4548   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4549
4550   prevent_dont_repeat ();
4551
4552   /* This pointer will iterate over the list of bpstat's.  */
4553   bs = *bsp;
4554
4555   breakpoint_proceeded = 0;
4556   for (; bs != NULL; bs = bs->next)
4557     {
4558       struct counted_command_line *ccmd;
4559       struct command_line *cmd;
4560       struct cleanup *this_cmd_tree_chain;
4561
4562       /* Take ownership of the BSP's command tree, if it has one.
4563
4564          The command tree could legitimately contain commands like
4565          'step' and 'next', which call clear_proceed_status, which
4566          frees stop_bpstat's command tree.  To make sure this doesn't
4567          free the tree we're executing out from under us, we need to
4568          take ownership of the tree ourselves.  Since a given bpstat's
4569          commands are only executed once, we don't need to copy it; we
4570          can clear the pointer in the bpstat, and make sure we free
4571          the tree when we're done.  */
4572       ccmd = bs->commands;
4573       bs->commands = NULL;
4574       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4575       cmd = ccmd ? ccmd->commands : NULL;
4576       if (command_line_is_silent (cmd))
4577         {
4578           /* The action has been already done by bpstat_stop_status.  */
4579           cmd = cmd->next;
4580         }
4581
4582       while (cmd != NULL)
4583         {
4584           execute_control_command (cmd);
4585
4586           if (breakpoint_proceeded)
4587             break;
4588           else
4589             cmd = cmd->next;
4590         }
4591
4592       /* We can free this command tree now.  */
4593       do_cleanups (this_cmd_tree_chain);
4594
4595       if (breakpoint_proceeded)
4596         {
4597           if (target_can_async_p ())
4598             /* If we are in async mode, then the target might be still
4599                running, not stopped at any breakpoint, so nothing for
4600                us to do here -- just return to the event loop.  */
4601             ;
4602           else
4603             /* In sync mode, when execute_control_command returns
4604                we're already standing on the next breakpoint.
4605                Breakpoint commands for that stop were not run, since
4606                execute_command does not run breakpoint commands --
4607                only command_line_handler does, but that one is not
4608                involved in execution of breakpoint commands.  So, we
4609                can now execute breakpoint commands.  It should be
4610                noted that making execute_command do bpstat actions is
4611                not an option -- in this case we'll have recursive
4612                invocation of bpstat for each breakpoint with a
4613                command, and can easily blow up GDB stack.  Instead, we
4614                return true, which will trigger the caller to recall us
4615                with the new stop_bpstat.  */
4616             again = 1;
4617           break;
4618         }
4619     }
4620   do_cleanups (old_chain);
4621   return again;
4622 }
4623
4624 void
4625 bpstat_do_actions (void)
4626 {
4627   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4628
4629   /* Do any commands attached to breakpoint we are stopped at.  */
4630   while (!ptid_equal (inferior_ptid, null_ptid)
4631          && target_has_execution
4632          && !is_exited (inferior_ptid)
4633          && !is_executing (inferior_ptid))
4634     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4635        and only return when it is stopped at the next breakpoint, we
4636        keep doing breakpoint actions until it returns false to
4637        indicate the inferior was not resumed.  */
4638     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4639       break;
4640
4641   discard_cleanups (cleanup_if_error);
4642 }
4643
4644 /* Print out the (old or new) value associated with a watchpoint.  */
4645
4646 static void
4647 watchpoint_value_print (struct value *val, struct ui_file *stream)
4648 {
4649   if (val == NULL)
4650     fprintf_unfiltered (stream, _("<unreadable>"));
4651   else
4652     {
4653       struct value_print_options opts;
4654       get_user_print_options (&opts);
4655       value_print (val, stream, &opts);
4656     }
4657 }
4658
4659 /* Generic routine for printing messages indicating why we
4660    stopped.  The behavior of this function depends on the value
4661    'print_it' in the bpstat structure.  Under some circumstances we
4662    may decide not to print anything here and delegate the task to
4663    normal_stop().  */
4664
4665 static enum print_stop_action
4666 print_bp_stop_message (bpstat bs)
4667 {
4668   switch (bs->print_it)
4669     {
4670     case print_it_noop:
4671       /* Nothing should be printed for this bpstat entry.  */
4672       return PRINT_UNKNOWN;
4673       break;
4674
4675     case print_it_done:
4676       /* We still want to print the frame, but we already printed the
4677          relevant messages.  */
4678       return PRINT_SRC_AND_LOC;
4679       break;
4680
4681     case print_it_normal:
4682       {
4683         struct breakpoint *b = bs->breakpoint_at;
4684
4685         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4686            which has since been deleted.  */
4687         if (b == NULL)
4688           return PRINT_UNKNOWN;
4689
4690         /* Normal case.  Call the breakpoint's print_it method.  */
4691         return b->ops->print_it (bs);
4692       }
4693       break;
4694
4695     default:
4696       internal_error (__FILE__, __LINE__,
4697                       _("print_bp_stop_message: unrecognized enum value"));
4698       break;
4699     }
4700 }
4701
4702 /* A helper function that prints a shared library stopped event.  */
4703
4704 static void
4705 print_solib_event (int is_catchpoint)
4706 {
4707   int any_deleted
4708     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4709   int any_added
4710     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4711
4712   if (!is_catchpoint)
4713     {
4714       if (any_added || any_deleted)
4715         ui_out_text (current_uiout,
4716                      _("Stopped due to shared library event:\n"));
4717       else
4718         ui_out_text (current_uiout,
4719                      _("Stopped due to shared library event (no "
4720                        "libraries added or removed)\n"));
4721     }
4722
4723   if (ui_out_is_mi_like_p (current_uiout))
4724     ui_out_field_string (current_uiout, "reason",
4725                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4726
4727   if (any_deleted)
4728     {
4729       struct cleanup *cleanup;
4730       char *name;
4731       int ix;
4732
4733       ui_out_text (current_uiout, _("  Inferior unloaded "));
4734       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4735                                                     "removed");
4736       for (ix = 0;
4737            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4738                         ix, name);
4739            ++ix)
4740         {
4741           if (ix > 0)
4742             ui_out_text (current_uiout, "    ");
4743           ui_out_field_string (current_uiout, "library", name);
4744           ui_out_text (current_uiout, "\n");
4745         }
4746
4747       do_cleanups (cleanup);
4748     }
4749
4750   if (any_added)
4751     {
4752       struct so_list *iter;
4753       int ix;
4754       struct cleanup *cleanup;
4755
4756       ui_out_text (current_uiout, _("  Inferior loaded "));
4757       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4758                                                     "added");
4759       for (ix = 0;
4760            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4761                         ix, iter);
4762            ++ix)
4763         {
4764           if (ix > 0)
4765             ui_out_text (current_uiout, "    ");
4766           ui_out_field_string (current_uiout, "library", iter->so_name);
4767           ui_out_text (current_uiout, "\n");
4768         }
4769
4770       do_cleanups (cleanup);
4771     }
4772 }
4773
4774 /* Print a message indicating what happened.  This is called from
4775    normal_stop().  The input to this routine is the head of the bpstat
4776    list - a list of the eventpoints that caused this stop.  KIND is
4777    the target_waitkind for the stopping event.  This
4778    routine calls the generic print routine for printing a message
4779    about reasons for stopping.  This will print (for example) the
4780    "Breakpoint n," part of the output.  The return value of this
4781    routine is one of:
4782
4783    PRINT_UNKNOWN: Means we printed nothing.
4784    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4785    code to print the location.  An example is 
4786    "Breakpoint 1, " which should be followed by
4787    the location.
4788    PRINT_SRC_ONLY: Means we printed something, but there is no need
4789    to also print the location part of the message.
4790    An example is the catch/throw messages, which
4791    don't require a location appended to the end.
4792    PRINT_NOTHING: We have done some printing and we don't need any 
4793    further info to be printed.  */
4794
4795 enum print_stop_action
4796 bpstat_print (bpstat bs, int kind)
4797 {
4798   int val;
4799
4800   /* Maybe another breakpoint in the chain caused us to stop.
4801      (Currently all watchpoints go on the bpstat whether hit or not.
4802      That probably could (should) be changed, provided care is taken
4803      with respect to bpstat_explains_signal).  */
4804   for (; bs; bs = bs->next)
4805     {
4806       val = print_bp_stop_message (bs);
4807       if (val == PRINT_SRC_ONLY 
4808           || val == PRINT_SRC_AND_LOC 
4809           || val == PRINT_NOTHING)
4810         return val;
4811     }
4812
4813   /* If we had hit a shared library event breakpoint,
4814      print_bp_stop_message would print out this message.  If we hit an
4815      OS-level shared library event, do the same thing.  */
4816   if (kind == TARGET_WAITKIND_LOADED)
4817     {
4818       print_solib_event (0);
4819       return PRINT_NOTHING;
4820     }
4821
4822   /* We reached the end of the chain, or we got a null BS to start
4823      with and nothing was printed.  */
4824   return PRINT_UNKNOWN;
4825 }
4826
4827 /* Evaluate the expression EXP and return 1 if value is zero.
4828    This returns the inverse of the condition because it is called
4829    from catch_errors which returns 0 if an exception happened, and if an
4830    exception happens we want execution to stop.
4831    The argument is a "struct expression *" that has been cast to a
4832    "void *" to make it pass through catch_errors.  */
4833
4834 static int
4835 breakpoint_cond_eval (void *exp)
4836 {
4837   struct value *mark = value_mark ();
4838   int i = !value_true (evaluate_expression ((struct expression *) exp));
4839
4840   value_free_to_mark (mark);
4841   return i;
4842 }
4843
4844 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4845
4846 static bpstat
4847 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4848 {
4849   bpstat bs;
4850
4851   bs = (bpstat) xmalloc (sizeof (*bs));
4852   bs->next = NULL;
4853   **bs_link_pointer = bs;
4854   *bs_link_pointer = &bs->next;
4855   bs->breakpoint_at = bl->owner;
4856   bs->bp_location_at = bl;
4857   incref_bp_location (bl);
4858   /* If the condition is false, etc., don't do the commands.  */
4859   bs->commands = NULL;
4860   bs->old_val = NULL;
4861   bs->print_it = print_it_normal;
4862   return bs;
4863 }
4864 \f
4865 /* The target has stopped with waitstatus WS.  Check if any hardware
4866    watchpoints have triggered, according to the target.  */
4867
4868 int
4869 watchpoints_triggered (struct target_waitstatus *ws)
4870 {
4871   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4872   CORE_ADDR addr;
4873   struct breakpoint *b;
4874
4875   if (!stopped_by_watchpoint)
4876     {
4877       /* We were not stopped by a watchpoint.  Mark all watchpoints
4878          as not triggered.  */
4879       ALL_BREAKPOINTS (b)
4880         if (is_hardware_watchpoint (b))
4881           {
4882             struct watchpoint *w = (struct watchpoint *) b;
4883
4884             w->watchpoint_triggered = watch_triggered_no;
4885           }
4886
4887       return 0;
4888     }
4889
4890   if (!target_stopped_data_address (&current_target, &addr))
4891     {
4892       /* We were stopped by a watchpoint, but we don't know where.
4893          Mark all watchpoints as unknown.  */
4894       ALL_BREAKPOINTS (b)
4895         if (is_hardware_watchpoint (b))
4896           {
4897             struct watchpoint *w = (struct watchpoint *) b;
4898
4899             w->watchpoint_triggered = watch_triggered_unknown;
4900           }
4901
4902       return 1;
4903     }
4904
4905   /* The target could report the data address.  Mark watchpoints
4906      affected by this data address as triggered, and all others as not
4907      triggered.  */
4908
4909   ALL_BREAKPOINTS (b)
4910     if (is_hardware_watchpoint (b))
4911       {
4912         struct watchpoint *w = (struct watchpoint *) b;
4913         struct bp_location *loc;
4914
4915         w->watchpoint_triggered = watch_triggered_no;
4916         for (loc = b->loc; loc; loc = loc->next)
4917           {
4918             if (is_masked_watchpoint (b))
4919               {
4920                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4921                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4922
4923                 if (newaddr == start)
4924                   {
4925                     w->watchpoint_triggered = watch_triggered_yes;
4926                     break;
4927                   }
4928               }
4929             /* Exact match not required.  Within range is sufficient.  */
4930             else if (target_watchpoint_addr_within_range (&current_target,
4931                                                          addr, loc->address,
4932                                                          loc->length))
4933               {
4934                 w->watchpoint_triggered = watch_triggered_yes;
4935                 break;
4936               }
4937           }
4938       }
4939
4940   return 1;
4941 }
4942
4943 /* Possible return values for watchpoint_check (this can't be an enum
4944    because of check_errors).  */
4945 /* The watchpoint has been deleted.  */
4946 #define WP_DELETED 1
4947 /* The value has changed.  */
4948 #define WP_VALUE_CHANGED 2
4949 /* The value has not changed.  */
4950 #define WP_VALUE_NOT_CHANGED 3
4951 /* Ignore this watchpoint, no matter if the value changed or not.  */
4952 #define WP_IGNORE 4
4953
4954 #define BP_TEMPFLAG 1
4955 #define BP_HARDWAREFLAG 2
4956
4957 /* Evaluate watchpoint condition expression and check if its value
4958    changed.
4959
4960    P should be a pointer to struct bpstat, but is defined as a void *
4961    in order for this function to be usable with catch_errors.  */
4962
4963 static int
4964 watchpoint_check (void *p)
4965 {
4966   bpstat bs = (bpstat) p;
4967   struct watchpoint *b;
4968   struct frame_info *fr;
4969   int within_current_scope;
4970
4971   /* BS is built from an existing struct breakpoint.  */
4972   gdb_assert (bs->breakpoint_at != NULL);
4973   b = (struct watchpoint *) bs->breakpoint_at;
4974
4975   /* If this is a local watchpoint, we only want to check if the
4976      watchpoint frame is in scope if the current thread is the thread
4977      that was used to create the watchpoint.  */
4978   if (!watchpoint_in_thread_scope (b))
4979     return WP_IGNORE;
4980
4981   if (b->exp_valid_block == NULL)
4982     within_current_scope = 1;
4983   else
4984     {
4985       struct frame_info *frame = get_current_frame ();
4986       struct gdbarch *frame_arch = get_frame_arch (frame);
4987       CORE_ADDR frame_pc = get_frame_pc (frame);
4988
4989       /* in_function_epilogue_p() returns a non-zero value if we're
4990          still in the function but the stack frame has already been
4991          invalidated.  Since we can't rely on the values of local
4992          variables after the stack has been destroyed, we are treating
4993          the watchpoint in that state as `not changed' without further
4994          checking.  Don't mark watchpoints as changed if the current
4995          frame is in an epilogue - even if they are in some other
4996          frame, our view of the stack is likely to be wrong and
4997          frame_find_by_id could error out.  */
4998       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
4999         return WP_IGNORE;
5000
5001       fr = frame_find_by_id (b->watchpoint_frame);
5002       within_current_scope = (fr != NULL);
5003
5004       /* If we've gotten confused in the unwinder, we might have
5005          returned a frame that can't describe this variable.  */
5006       if (within_current_scope)
5007         {
5008           struct symbol *function;
5009
5010           function = get_frame_function (fr);
5011           if (function == NULL
5012               || !contained_in (b->exp_valid_block,
5013                                 SYMBOL_BLOCK_VALUE (function)))
5014             within_current_scope = 0;
5015         }
5016
5017       if (within_current_scope)
5018         /* If we end up stopping, the current frame will get selected
5019            in normal_stop.  So this call to select_frame won't affect
5020            the user.  */
5021         select_frame (fr);
5022     }
5023
5024   if (within_current_scope)
5025     {
5026       /* We use value_{,free_to_}mark because it could be a *long*
5027          time before we return to the command level and call
5028          free_all_values.  We can't call free_all_values because we
5029          might be in the middle of evaluating a function call.  */
5030
5031       int pc = 0;
5032       struct value *mark;
5033       struct value *new_val;
5034
5035       if (is_masked_watchpoint (&b->base))
5036         /* Since we don't know the exact trigger address (from
5037            stopped_data_address), just tell the user we've triggered
5038            a mask watchpoint.  */
5039         return WP_VALUE_CHANGED;
5040
5041       mark = value_mark ();
5042       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5043
5044       /* We use value_equal_contents instead of value_equal because
5045          the latter coerces an array to a pointer, thus comparing just
5046          the address of the array instead of its contents.  This is
5047          not what we want.  */
5048       if ((b->val != NULL) != (new_val != NULL)
5049           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5050         {
5051           if (new_val != NULL)
5052             {
5053               release_value (new_val);
5054               value_free_to_mark (mark);
5055             }
5056           bs->old_val = b->val;
5057           b->val = new_val;
5058           b->val_valid = 1;
5059           return WP_VALUE_CHANGED;
5060         }
5061       else
5062         {
5063           /* Nothing changed.  */
5064           value_free_to_mark (mark);
5065           return WP_VALUE_NOT_CHANGED;
5066         }
5067     }
5068   else
5069     {
5070       struct ui_out *uiout = current_uiout;
5071
5072       /* This seems like the only logical thing to do because
5073          if we temporarily ignored the watchpoint, then when
5074          we reenter the block in which it is valid it contains
5075          garbage (in the case of a function, it may have two
5076          garbage values, one before and one after the prologue).
5077          So we can't even detect the first assignment to it and
5078          watch after that (since the garbage may or may not equal
5079          the first value assigned).  */
5080       /* We print all the stop information in
5081          breakpoint_ops->print_it, but in this case, by the time we
5082          call breakpoint_ops->print_it this bp will be deleted
5083          already.  So we have no choice but print the information
5084          here.  */
5085       if (ui_out_is_mi_like_p (uiout))
5086         ui_out_field_string
5087           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5088       ui_out_text (uiout, "\nWatchpoint ");
5089       ui_out_field_int (uiout, "wpnum", b->base.number);
5090       ui_out_text (uiout,
5091                    " deleted because the program has left the block in\n\
5092 which its expression is valid.\n");     
5093
5094       /* Make sure the watchpoint's commands aren't executed.  */
5095       decref_counted_command_line (&b->base.commands);
5096       watchpoint_del_at_next_stop (b);
5097
5098       return WP_DELETED;
5099     }
5100 }
5101
5102 /* Return true if it looks like target has stopped due to hitting
5103    breakpoint location BL.  This function does not check if we should
5104    stop, only if BL explains the stop.  */
5105
5106 static int
5107 bpstat_check_location (const struct bp_location *bl,
5108                        struct address_space *aspace, CORE_ADDR bp_addr,
5109                        const struct target_waitstatus *ws)
5110 {
5111   struct breakpoint *b = bl->owner;
5112
5113   /* BL is from an existing breakpoint.  */
5114   gdb_assert (b != NULL);
5115
5116   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5117 }
5118
5119 /* Determine if the watched values have actually changed, and we
5120    should stop.  If not, set BS->stop to 0.  */
5121
5122 static void
5123 bpstat_check_watchpoint (bpstat bs)
5124 {
5125   const struct bp_location *bl;
5126   struct watchpoint *b;
5127
5128   /* BS is built for existing struct breakpoint.  */
5129   bl = bs->bp_location_at;
5130   gdb_assert (bl != NULL);
5131   b = (struct watchpoint *) bs->breakpoint_at;
5132   gdb_assert (b != NULL);
5133
5134     {
5135       int must_check_value = 0;
5136       
5137       if (b->base.type == bp_watchpoint)
5138         /* For a software watchpoint, we must always check the
5139            watched value.  */
5140         must_check_value = 1;
5141       else if (b->watchpoint_triggered == watch_triggered_yes)
5142         /* We have a hardware watchpoint (read, write, or access)
5143            and the target earlier reported an address watched by
5144            this watchpoint.  */
5145         must_check_value = 1;
5146       else if (b->watchpoint_triggered == watch_triggered_unknown
5147                && b->base.type == bp_hardware_watchpoint)
5148         /* We were stopped by a hardware watchpoint, but the target could
5149            not report the data address.  We must check the watchpoint's
5150            value.  Access and read watchpoints are out of luck; without
5151            a data address, we can't figure it out.  */
5152         must_check_value = 1;
5153
5154       if (must_check_value)
5155         {
5156           char *message
5157             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5158                           b->base.number);
5159           struct cleanup *cleanups = make_cleanup (xfree, message);
5160           int e = catch_errors (watchpoint_check, bs, message,
5161                                 RETURN_MASK_ALL);
5162           do_cleanups (cleanups);
5163           switch (e)
5164             {
5165             case WP_DELETED:
5166               /* We've already printed what needs to be printed.  */
5167               bs->print_it = print_it_done;
5168               /* Stop.  */
5169               break;
5170             case WP_IGNORE:
5171               bs->print_it = print_it_noop;
5172               bs->stop = 0;
5173               break;
5174             case WP_VALUE_CHANGED:
5175               if (b->base.type == bp_read_watchpoint)
5176                 {
5177                   /* There are two cases to consider here:
5178
5179                      1. We're watching the triggered memory for reads.
5180                      In that case, trust the target, and always report
5181                      the watchpoint hit to the user.  Even though
5182                      reads don't cause value changes, the value may
5183                      have changed since the last time it was read, and
5184                      since we're not trapping writes, we will not see
5185                      those, and as such we should ignore our notion of
5186                      old value.
5187
5188                      2. We're watching the triggered memory for both
5189                      reads and writes.  There are two ways this may
5190                      happen:
5191
5192                      2.1. This is a target that can't break on data
5193                      reads only, but can break on accesses (reads or
5194                      writes), such as e.g., x86.  We detect this case
5195                      at the time we try to insert read watchpoints.
5196
5197                      2.2. Otherwise, the target supports read
5198                      watchpoints, but, the user set an access or write
5199                      watchpoint watching the same memory as this read
5200                      watchpoint.
5201
5202                      If we're watching memory writes as well as reads,
5203                      ignore watchpoint hits when we find that the
5204                      value hasn't changed, as reads don't cause
5205                      changes.  This still gives false positives when
5206                      the program writes the same value to memory as
5207                      what there was already in memory (we will confuse
5208                      it for a read), but it's much better than
5209                      nothing.  */
5210
5211                   int other_write_watchpoint = 0;
5212
5213                   if (bl->watchpoint_type == hw_read)
5214                     {
5215                       struct breakpoint *other_b;
5216
5217                       ALL_BREAKPOINTS (other_b)
5218                         if (other_b->type == bp_hardware_watchpoint
5219                             || other_b->type == bp_access_watchpoint)
5220                           {
5221                             struct watchpoint *other_w =
5222                               (struct watchpoint *) other_b;
5223
5224                             if (other_w->watchpoint_triggered
5225                                 == watch_triggered_yes)
5226                               {
5227                                 other_write_watchpoint = 1;
5228                                 break;
5229                               }
5230                           }
5231                     }
5232
5233                   if (other_write_watchpoint
5234                       || bl->watchpoint_type == hw_access)
5235                     {
5236                       /* We're watching the same memory for writes,
5237                          and the value changed since the last time we
5238                          updated it, so this trap must be for a write.
5239                          Ignore it.  */
5240                       bs->print_it = print_it_noop;
5241                       bs->stop = 0;
5242                     }
5243                 }
5244               break;
5245             case WP_VALUE_NOT_CHANGED:
5246               if (b->base.type == bp_hardware_watchpoint
5247                   || b->base.type == bp_watchpoint)
5248                 {
5249                   /* Don't stop: write watchpoints shouldn't fire if
5250                      the value hasn't changed.  */
5251                   bs->print_it = print_it_noop;
5252                   bs->stop = 0;
5253                 }
5254               /* Stop.  */
5255               break;
5256             default:
5257               /* Can't happen.  */
5258             case 0:
5259               /* Error from catch_errors.  */
5260               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5261               watchpoint_del_at_next_stop (b);
5262               /* We've already printed what needs to be printed.  */
5263               bs->print_it = print_it_done;
5264               break;
5265             }
5266         }
5267       else      /* must_check_value == 0 */
5268         {
5269           /* This is a case where some watchpoint(s) triggered, but
5270              not at the address of this watchpoint, or else no
5271              watchpoint triggered after all.  So don't print
5272              anything for this watchpoint.  */
5273           bs->print_it = print_it_noop;
5274           bs->stop = 0;
5275         }
5276     }
5277 }
5278
5279 /* For breakpoints that are currently marked as telling gdb to stop,
5280    check conditions (condition proper, frame, thread and ignore count)
5281    of breakpoint referred to by BS.  If we should not stop for this
5282    breakpoint, set BS->stop to 0.  */
5283
5284 static void
5285 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5286 {
5287   const struct bp_location *bl;
5288   struct breakpoint *b;
5289   int value_is_zero = 0;
5290   struct expression *cond;
5291
5292   gdb_assert (bs->stop);
5293
5294   /* BS is built for existing struct breakpoint.  */
5295   bl = bs->bp_location_at;
5296   gdb_assert (bl != NULL);
5297   b = bs->breakpoint_at;
5298   gdb_assert (b != NULL);
5299
5300   /* Even if the target evaluated the condition on its end and notified GDB, we
5301      need to do so again since GDB does not know if we stopped due to a
5302      breakpoint or a single step breakpoint.  */
5303
5304   if (frame_id_p (b->frame_id)
5305       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5306     {
5307       bs->stop = 0;
5308       return;
5309     }
5310
5311   /* If this is a thread/task-specific breakpoint, don't waste cpu
5312      evaluating the condition if this isn't the specified
5313      thread/task.  */
5314   if ((b->thread != -1 && b->thread != pid_to_thread_id (ptid))
5315       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5316
5317     {
5318       bs->stop = 0;
5319       return;
5320     }
5321
5322   /* Evaluate extension language breakpoints that have a "stop" method
5323      implemented.  */
5324   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5325
5326   if (is_watchpoint (b))
5327     {
5328       struct watchpoint *w = (struct watchpoint *) b;
5329
5330       cond = w->cond_exp;
5331     }
5332   else
5333     cond = bl->cond;
5334
5335   if (cond && b->disposition != disp_del_at_next_stop)
5336     {
5337       int within_current_scope = 1;
5338       struct watchpoint * w;
5339
5340       /* We use value_mark and value_free_to_mark because it could
5341          be a long time before we return to the command level and
5342          call free_all_values.  We can't call free_all_values
5343          because we might be in the middle of evaluating a
5344          function call.  */
5345       struct value *mark = value_mark ();
5346
5347       if (is_watchpoint (b))
5348         w = (struct watchpoint *) b;
5349       else
5350         w = NULL;
5351
5352       /* Need to select the frame, with all that implies so that
5353          the conditions will have the right context.  Because we
5354          use the frame, we will not see an inlined function's
5355          variables when we arrive at a breakpoint at the start
5356          of the inlined function; the current frame will be the
5357          call site.  */
5358       if (w == NULL || w->cond_exp_valid_block == NULL)
5359         select_frame (get_current_frame ());
5360       else
5361         {
5362           struct frame_info *frame;
5363
5364           /* For local watchpoint expressions, which particular
5365              instance of a local is being watched matters, so we
5366              keep track of the frame to evaluate the expression
5367              in.  To evaluate the condition however, it doesn't
5368              really matter which instantiation of the function
5369              where the condition makes sense triggers the
5370              watchpoint.  This allows an expression like "watch
5371              global if q > 10" set in `func', catch writes to
5372              global on all threads that call `func', or catch
5373              writes on all recursive calls of `func' by a single
5374              thread.  We simply always evaluate the condition in
5375              the innermost frame that's executing where it makes
5376              sense to evaluate the condition.  It seems
5377              intuitive.  */
5378           frame = block_innermost_frame (w->cond_exp_valid_block);
5379           if (frame != NULL)
5380             select_frame (frame);
5381           else
5382             within_current_scope = 0;
5383         }
5384       if (within_current_scope)
5385         value_is_zero
5386           = catch_errors (breakpoint_cond_eval, cond,
5387                           "Error in testing breakpoint condition:\n",
5388                           RETURN_MASK_ALL);
5389       else
5390         {
5391           warning (_("Watchpoint condition cannot be tested "
5392                      "in the current scope"));
5393           /* If we failed to set the right context for this
5394              watchpoint, unconditionally report it.  */
5395           value_is_zero = 0;
5396         }
5397       /* FIXME-someday, should give breakpoint #.  */
5398       value_free_to_mark (mark);
5399     }
5400
5401   if (cond && value_is_zero)
5402     {
5403       bs->stop = 0;
5404     }
5405   else if (b->ignore_count > 0)
5406     {
5407       b->ignore_count--;
5408       bs->stop = 0;
5409       /* Increase the hit count even though we don't stop.  */
5410       ++(b->hit_count);
5411       observer_notify_breakpoint_modified (b);
5412     }   
5413 }
5414
5415
5416 /* Get a bpstat associated with having just stopped at address
5417    BP_ADDR in thread PTID.
5418
5419    Determine whether we stopped at a breakpoint, etc, or whether we
5420    don't understand this stop.  Result is a chain of bpstat's such
5421    that:
5422
5423    if we don't understand the stop, the result is a null pointer.
5424
5425    if we understand why we stopped, the result is not null.
5426
5427    Each element of the chain refers to a particular breakpoint or
5428    watchpoint at which we have stopped.  (We may have stopped for
5429    several reasons concurrently.)
5430
5431    Each element of the chain has valid next, breakpoint_at,
5432    commands, FIXME??? fields.  */
5433
5434 bpstat
5435 bpstat_stop_status (struct address_space *aspace,
5436                     CORE_ADDR bp_addr, ptid_t ptid,
5437                     const struct target_waitstatus *ws)
5438 {
5439   struct breakpoint *b = NULL;
5440   struct bp_location *bl;
5441   struct bp_location *loc;
5442   /* First item of allocated bpstat's.  */
5443   bpstat bs_head = NULL, *bs_link = &bs_head;
5444   /* Pointer to the last thing in the chain currently.  */
5445   bpstat bs;
5446   int ix;
5447   int need_remove_insert;
5448   int removed_any;
5449
5450   /* First, build the bpstat chain with locations that explain a
5451      target stop, while being careful to not set the target running,
5452      as that may invalidate locations (in particular watchpoint
5453      locations are recreated).  Resuming will happen here with
5454      breakpoint conditions or watchpoint expressions that include
5455      inferior function calls.  */
5456
5457   ALL_BREAKPOINTS (b)
5458     {
5459       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5460         continue;
5461
5462       for (bl = b->loc; bl != NULL; bl = bl->next)
5463         {
5464           /* For hardware watchpoints, we look only at the first
5465              location.  The watchpoint_check function will work on the
5466              entire expression, not the individual locations.  For
5467              read watchpoints, the watchpoints_triggered function has
5468              checked all locations already.  */
5469           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5470             break;
5471
5472           if (!bl->enabled || bl->shlib_disabled)
5473             continue;
5474
5475           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5476             continue;
5477
5478           /* Come here if it's a watchpoint, or if the break address
5479              matches.  */
5480
5481           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5482                                                    explain stop.  */
5483
5484           /* Assume we stop.  Should we find a watchpoint that is not
5485              actually triggered, or if the condition of the breakpoint
5486              evaluates as false, we'll reset 'stop' to 0.  */
5487           bs->stop = 1;
5488           bs->print = 1;
5489
5490           /* If this is a scope breakpoint, mark the associated
5491              watchpoint as triggered so that we will handle the
5492              out-of-scope event.  We'll get to the watchpoint next
5493              iteration.  */
5494           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5495             {
5496               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5497
5498               w->watchpoint_triggered = watch_triggered_yes;
5499             }
5500         }
5501     }
5502
5503   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5504     {
5505       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5506         {
5507           bs = bpstat_alloc (loc, &bs_link);
5508           /* For hits of moribund locations, we should just proceed.  */
5509           bs->stop = 0;
5510           bs->print = 0;
5511           bs->print_it = print_it_noop;
5512         }
5513     }
5514
5515   /* A bit of special processing for shlib breakpoints.  We need to
5516      process solib loading here, so that the lists of loaded and
5517      unloaded libraries are correct before we handle "catch load" and
5518      "catch unload".  */
5519   for (bs = bs_head; bs != NULL; bs = bs->next)
5520     {
5521       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5522         {
5523           handle_solib_event ();
5524           break;
5525         }
5526     }
5527
5528   /* Now go through the locations that caused the target to stop, and
5529      check whether we're interested in reporting this stop to higher
5530      layers, or whether we should resume the target transparently.  */
5531
5532   removed_any = 0;
5533
5534   for (bs = bs_head; bs != NULL; bs = bs->next)
5535     {
5536       if (!bs->stop)
5537         continue;
5538
5539       b = bs->breakpoint_at;
5540       b->ops->check_status (bs);
5541       if (bs->stop)
5542         {
5543           bpstat_check_breakpoint_conditions (bs, ptid);
5544
5545           if (bs->stop)
5546             {
5547               ++(b->hit_count);
5548               observer_notify_breakpoint_modified (b);
5549
5550               /* We will stop here.  */
5551               if (b->disposition == disp_disable)
5552                 {
5553                   --(b->enable_count);
5554                   if (b->enable_count <= 0
5555                       && b->enable_state != bp_permanent)
5556                     b->enable_state = bp_disabled;
5557                   removed_any = 1;
5558                 }
5559               if (b->silent)
5560                 bs->print = 0;
5561               bs->commands = b->commands;
5562               incref_counted_command_line (bs->commands);
5563               if (command_line_is_silent (bs->commands
5564                                           ? bs->commands->commands : NULL))
5565                 bs->print = 0;
5566
5567               b->ops->after_condition_true (bs);
5568             }
5569
5570         }
5571
5572       /* Print nothing for this entry if we don't stop or don't
5573          print.  */
5574       if (!bs->stop || !bs->print)
5575         bs->print_it = print_it_noop;
5576     }
5577
5578   /* If we aren't stopping, the value of some hardware watchpoint may
5579      not have changed, but the intermediate memory locations we are
5580      watching may have.  Don't bother if we're stopping; this will get
5581      done later.  */
5582   need_remove_insert = 0;
5583   if (! bpstat_causes_stop (bs_head))
5584     for (bs = bs_head; bs != NULL; bs = bs->next)
5585       if (!bs->stop
5586           && bs->breakpoint_at
5587           && is_hardware_watchpoint (bs->breakpoint_at))
5588         {
5589           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5590
5591           update_watchpoint (w, 0 /* don't reparse.  */);
5592           need_remove_insert = 1;
5593         }
5594
5595   if (need_remove_insert)
5596     update_global_location_list (1);
5597   else if (removed_any)
5598     update_global_location_list (0);
5599
5600   return bs_head;
5601 }
5602
5603 static void
5604 handle_jit_event (void)
5605 {
5606   struct frame_info *frame;
5607   struct gdbarch *gdbarch;
5608
5609   /* Switch terminal for any messages produced by
5610      breakpoint_re_set.  */
5611   target_terminal_ours_for_output ();
5612
5613   frame = get_current_frame ();
5614   gdbarch = get_frame_arch (frame);
5615
5616   jit_event_handler (gdbarch);
5617
5618   target_terminal_inferior ();
5619 }
5620
5621 /* Prepare WHAT final decision for infrun.  */
5622
5623 /* Decide what infrun needs to do with this bpstat.  */
5624
5625 struct bpstat_what
5626 bpstat_what (bpstat bs_head)
5627 {
5628   struct bpstat_what retval;
5629   int jit_event = 0;
5630   bpstat bs;
5631
5632   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5633   retval.call_dummy = STOP_NONE;
5634   retval.is_longjmp = 0;
5635
5636   for (bs = bs_head; bs != NULL; bs = bs->next)
5637     {
5638       /* Extract this BS's action.  After processing each BS, we check
5639          if its action overrides all we've seem so far.  */
5640       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5641       enum bptype bptype;
5642
5643       if (bs->breakpoint_at == NULL)
5644         {
5645           /* I suspect this can happen if it was a momentary
5646              breakpoint which has since been deleted.  */
5647           bptype = bp_none;
5648         }
5649       else
5650         bptype = bs->breakpoint_at->type;
5651
5652       switch (bptype)
5653         {
5654         case bp_none:
5655           break;
5656         case bp_breakpoint:
5657         case bp_hardware_breakpoint:
5658         case bp_until:
5659         case bp_finish:
5660         case bp_shlib_event:
5661           if (bs->stop)
5662             {
5663               if (bs->print)
5664                 this_action = BPSTAT_WHAT_STOP_NOISY;
5665               else
5666                 this_action = BPSTAT_WHAT_STOP_SILENT;
5667             }
5668           else
5669             this_action = BPSTAT_WHAT_SINGLE;
5670           break;
5671         case bp_watchpoint:
5672         case bp_hardware_watchpoint:
5673         case bp_read_watchpoint:
5674         case bp_access_watchpoint:
5675           if (bs->stop)
5676             {
5677               if (bs->print)
5678                 this_action = BPSTAT_WHAT_STOP_NOISY;
5679               else
5680                 this_action = BPSTAT_WHAT_STOP_SILENT;
5681             }
5682           else
5683             {
5684               /* There was a watchpoint, but we're not stopping.
5685                  This requires no further action.  */
5686             }
5687           break;
5688         case bp_longjmp:
5689         case bp_longjmp_call_dummy:
5690         case bp_exception:
5691           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5692           retval.is_longjmp = bptype != bp_exception;
5693           break;
5694         case bp_longjmp_resume:
5695         case bp_exception_resume:
5696           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5697           retval.is_longjmp = bptype == bp_longjmp_resume;
5698           break;
5699         case bp_step_resume:
5700           if (bs->stop)
5701             this_action = BPSTAT_WHAT_STEP_RESUME;
5702           else
5703             {
5704               /* It is for the wrong frame.  */
5705               this_action = BPSTAT_WHAT_SINGLE;
5706             }
5707           break;
5708         case bp_hp_step_resume:
5709           if (bs->stop)
5710             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5711           else
5712             {
5713               /* It is for the wrong frame.  */
5714               this_action = BPSTAT_WHAT_SINGLE;
5715             }
5716           break;
5717         case bp_watchpoint_scope:
5718         case bp_thread_event:
5719         case bp_overlay_event:
5720         case bp_longjmp_master:
5721         case bp_std_terminate_master:
5722         case bp_exception_master:
5723           this_action = BPSTAT_WHAT_SINGLE;
5724           break;
5725         case bp_catchpoint:
5726           if (bs->stop)
5727             {
5728               if (bs->print)
5729                 this_action = BPSTAT_WHAT_STOP_NOISY;
5730               else
5731                 this_action = BPSTAT_WHAT_STOP_SILENT;
5732             }
5733           else
5734             {
5735               /* There was a catchpoint, but we're not stopping.
5736                  This requires no further action.  */
5737             }
5738           break;
5739         case bp_jit_event:
5740           jit_event = 1;
5741           this_action = BPSTAT_WHAT_SINGLE;
5742           break;
5743         case bp_call_dummy:
5744           /* Make sure the action is stop (silent or noisy),
5745              so infrun.c pops the dummy frame.  */
5746           retval.call_dummy = STOP_STACK_DUMMY;
5747           this_action = BPSTAT_WHAT_STOP_SILENT;
5748           break;
5749         case bp_std_terminate:
5750           /* Make sure the action is stop (silent or noisy),
5751              so infrun.c pops the dummy frame.  */
5752           retval.call_dummy = STOP_STD_TERMINATE;
5753           this_action = BPSTAT_WHAT_STOP_SILENT;
5754           break;
5755         case bp_tracepoint:
5756         case bp_fast_tracepoint:
5757         case bp_static_tracepoint:
5758           /* Tracepoint hits should not be reported back to GDB, and
5759              if one got through somehow, it should have been filtered
5760              out already.  */
5761           internal_error (__FILE__, __LINE__,
5762                           _("bpstat_what: tracepoint encountered"));
5763           break;
5764         case bp_gnu_ifunc_resolver:
5765           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5766           this_action = BPSTAT_WHAT_SINGLE;
5767           break;
5768         case bp_gnu_ifunc_resolver_return:
5769           /* The breakpoint will be removed, execution will restart from the
5770              PC of the former breakpoint.  */
5771           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5772           break;
5773
5774         case bp_dprintf:
5775           if (bs->stop)
5776             this_action = BPSTAT_WHAT_STOP_SILENT;
5777           else
5778             this_action = BPSTAT_WHAT_SINGLE;
5779           break;
5780
5781         default:
5782           internal_error (__FILE__, __LINE__,
5783                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5784         }
5785
5786       retval.main_action = max (retval.main_action, this_action);
5787     }
5788
5789   /* These operations may affect the bs->breakpoint_at state so they are
5790      delayed after MAIN_ACTION is decided above.  */
5791
5792   if (jit_event)
5793     {
5794       if (debug_infrun)
5795         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5796
5797       handle_jit_event ();
5798     }
5799
5800   for (bs = bs_head; bs != NULL; bs = bs->next)
5801     {
5802       struct breakpoint *b = bs->breakpoint_at;
5803
5804       if (b == NULL)
5805         continue;
5806       switch (b->type)
5807         {
5808         case bp_gnu_ifunc_resolver:
5809           gnu_ifunc_resolver_stop (b);
5810           break;
5811         case bp_gnu_ifunc_resolver_return:
5812           gnu_ifunc_resolver_return_stop (b);
5813           break;
5814         }
5815     }
5816
5817   return retval;
5818 }
5819
5820 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5821    without hardware support).  This isn't related to a specific bpstat,
5822    just to things like whether watchpoints are set.  */
5823
5824 int
5825 bpstat_should_step (void)
5826 {
5827   struct breakpoint *b;
5828
5829   ALL_BREAKPOINTS (b)
5830     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5831       return 1;
5832   return 0;
5833 }
5834
5835 int
5836 bpstat_causes_stop (bpstat bs)
5837 {
5838   for (; bs != NULL; bs = bs->next)
5839     if (bs->stop)
5840       return 1;
5841
5842   return 0;
5843 }
5844
5845 \f
5846
5847 /* Compute a string of spaces suitable to indent the next line
5848    so it starts at the position corresponding to the table column
5849    named COL_NAME in the currently active table of UIOUT.  */
5850
5851 static char *
5852 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5853 {
5854   static char wrap_indent[80];
5855   int i, total_width, width, align;
5856   char *text;
5857
5858   total_width = 0;
5859   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5860     {
5861       if (strcmp (text, col_name) == 0)
5862         {
5863           gdb_assert (total_width < sizeof wrap_indent);
5864           memset (wrap_indent, ' ', total_width);
5865           wrap_indent[total_width] = 0;
5866
5867           return wrap_indent;
5868         }
5869
5870       total_width += width + 1;
5871     }
5872
5873   return NULL;
5874 }
5875
5876 /* Determine if the locations of this breakpoint will have their conditions
5877    evaluated by the target, host or a mix of both.  Returns the following:
5878
5879     "host": Host evals condition.
5880     "host or target": Host or Target evals condition.
5881     "target": Target evals condition.
5882 */
5883
5884 static const char *
5885 bp_condition_evaluator (struct breakpoint *b)
5886 {
5887   struct bp_location *bl;
5888   char host_evals = 0;
5889   char target_evals = 0;
5890
5891   if (!b)
5892     return NULL;
5893
5894   if (!is_breakpoint (b))
5895     return NULL;
5896
5897   if (gdb_evaluates_breakpoint_condition_p ()
5898       || !target_supports_evaluation_of_breakpoint_conditions ())
5899     return condition_evaluation_host;
5900
5901   for (bl = b->loc; bl; bl = bl->next)
5902     {
5903       if (bl->cond_bytecode)
5904         target_evals++;
5905       else
5906         host_evals++;
5907     }
5908
5909   if (host_evals && target_evals)
5910     return condition_evaluation_both;
5911   else if (target_evals)
5912     return condition_evaluation_target;
5913   else
5914     return condition_evaluation_host;
5915 }
5916
5917 /* Determine the breakpoint location's condition evaluator.  This is
5918    similar to bp_condition_evaluator, but for locations.  */
5919
5920 static const char *
5921 bp_location_condition_evaluator (struct bp_location *bl)
5922 {
5923   if (bl && !is_breakpoint (bl->owner))
5924     return NULL;
5925
5926   if (gdb_evaluates_breakpoint_condition_p ()
5927       || !target_supports_evaluation_of_breakpoint_conditions ())
5928     return condition_evaluation_host;
5929
5930   if (bl && bl->cond_bytecode)
5931     return condition_evaluation_target;
5932   else
5933     return condition_evaluation_host;
5934 }
5935
5936 /* Print the LOC location out of the list of B->LOC locations.  */
5937
5938 static void
5939 print_breakpoint_location (struct breakpoint *b,
5940                            struct bp_location *loc)
5941 {
5942   struct ui_out *uiout = current_uiout;
5943   struct cleanup *old_chain = save_current_program_space ();
5944
5945   if (loc != NULL && loc->shlib_disabled)
5946     loc = NULL;
5947
5948   if (loc != NULL)
5949     set_current_program_space (loc->pspace);
5950
5951   if (b->display_canonical)
5952     ui_out_field_string (uiout, "what", b->addr_string);
5953   else if (loc && loc->symtab)
5954     {
5955       struct symbol *sym 
5956         = find_pc_sect_function (loc->address, loc->section);
5957       if (sym)
5958         {
5959           ui_out_text (uiout, "in ");
5960           ui_out_field_string (uiout, "func",
5961                                SYMBOL_PRINT_NAME (sym));
5962           ui_out_text (uiout, " ");
5963           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
5964           ui_out_text (uiout, "at ");
5965         }
5966       ui_out_field_string (uiout, "file",
5967                            symtab_to_filename_for_display (loc->symtab));
5968       ui_out_text (uiout, ":");
5969
5970       if (ui_out_is_mi_like_p (uiout))
5971         ui_out_field_string (uiout, "fullname",
5972                              symtab_to_fullname (loc->symtab));
5973       
5974       ui_out_field_int (uiout, "line", loc->line_number);
5975     }
5976   else if (loc)
5977     {
5978       struct ui_file *stb = mem_fileopen ();
5979       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
5980
5981       print_address_symbolic (loc->gdbarch, loc->address, stb,
5982                               demangle, "");
5983       ui_out_field_stream (uiout, "at", stb);
5984
5985       do_cleanups (stb_chain);
5986     }
5987   else
5988     ui_out_field_string (uiout, "pending", b->addr_string);
5989
5990   if (loc && is_breakpoint (b)
5991       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
5992       && bp_condition_evaluator (b) == condition_evaluation_both)
5993     {
5994       ui_out_text (uiout, " (");
5995       ui_out_field_string (uiout, "evaluated-by",
5996                            bp_location_condition_evaluator (loc));
5997       ui_out_text (uiout, ")");
5998     }
5999
6000   do_cleanups (old_chain);
6001 }
6002
6003 static const char *
6004 bptype_string (enum bptype type)
6005 {
6006   struct ep_type_description
6007     {
6008       enum bptype type;
6009       char *description;
6010     };
6011   static struct ep_type_description bptypes[] =
6012   {
6013     {bp_none, "?deleted?"},
6014     {bp_breakpoint, "breakpoint"},
6015     {bp_hardware_breakpoint, "hw breakpoint"},
6016     {bp_until, "until"},
6017     {bp_finish, "finish"},
6018     {bp_watchpoint, "watchpoint"},
6019     {bp_hardware_watchpoint, "hw watchpoint"},
6020     {bp_read_watchpoint, "read watchpoint"},
6021     {bp_access_watchpoint, "acc watchpoint"},
6022     {bp_longjmp, "longjmp"},
6023     {bp_longjmp_resume, "longjmp resume"},
6024     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6025     {bp_exception, "exception"},
6026     {bp_exception_resume, "exception resume"},
6027     {bp_step_resume, "step resume"},
6028     {bp_hp_step_resume, "high-priority step resume"},
6029     {bp_watchpoint_scope, "watchpoint scope"},
6030     {bp_call_dummy, "call dummy"},
6031     {bp_std_terminate, "std::terminate"},
6032     {bp_shlib_event, "shlib events"},
6033     {bp_thread_event, "thread events"},
6034     {bp_overlay_event, "overlay events"},
6035     {bp_longjmp_master, "longjmp master"},
6036     {bp_std_terminate_master, "std::terminate master"},
6037     {bp_exception_master, "exception master"},
6038     {bp_catchpoint, "catchpoint"},
6039     {bp_tracepoint, "tracepoint"},
6040     {bp_fast_tracepoint, "fast tracepoint"},
6041     {bp_static_tracepoint, "static tracepoint"},
6042     {bp_dprintf, "dprintf"},
6043     {bp_jit_event, "jit events"},
6044     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6045     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6046   };
6047
6048   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6049       || ((int) type != bptypes[(int) type].type))
6050     internal_error (__FILE__, __LINE__,
6051                     _("bptypes table does not describe type #%d."),
6052                     (int) type);
6053
6054   return bptypes[(int) type].description;
6055 }
6056
6057 /* For MI, output a field named 'thread-groups' with a list as the value.
6058    For CLI, prefix the list with the string 'inf'. */
6059
6060 static void
6061 output_thread_groups (struct ui_out *uiout,
6062                       const char *field_name,
6063                       VEC(int) *inf_num,
6064                       int mi_only)
6065 {
6066   struct cleanup *back_to;
6067   int is_mi = ui_out_is_mi_like_p (uiout);
6068   int inf;
6069   int i;
6070
6071   /* For backward compatibility, don't display inferiors in CLI unless
6072      there are several.  Always display them for MI. */
6073   if (!is_mi && mi_only)
6074     return;
6075
6076   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6077
6078   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6079     {
6080       if (is_mi)
6081         {
6082           char mi_group[10];
6083
6084           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6085           ui_out_field_string (uiout, NULL, mi_group);
6086         }
6087       else
6088         {
6089           if (i == 0)
6090             ui_out_text (uiout, " inf ");
6091           else
6092             ui_out_text (uiout, ", ");
6093         
6094           ui_out_text (uiout, plongest (inf));
6095         }
6096     }
6097
6098   do_cleanups (back_to);
6099 }
6100
6101 /* Print B to gdb_stdout.  */
6102
6103 static void
6104 print_one_breakpoint_location (struct breakpoint *b,
6105                                struct bp_location *loc,
6106                                int loc_number,
6107                                struct bp_location **last_loc,
6108                                int allflag)
6109 {
6110   struct command_line *l;
6111   static char bpenables[] = "nynny";
6112
6113   struct ui_out *uiout = current_uiout;
6114   int header_of_multiple = 0;
6115   int part_of_multiple = (loc != NULL);
6116   struct value_print_options opts;
6117
6118   get_user_print_options (&opts);
6119
6120   gdb_assert (!loc || loc_number != 0);
6121   /* See comment in print_one_breakpoint concerning treatment of
6122      breakpoints with single disabled location.  */
6123   if (loc == NULL 
6124       && (b->loc != NULL 
6125           && (b->loc->next != NULL || !b->loc->enabled)))
6126     header_of_multiple = 1;
6127   if (loc == NULL)
6128     loc = b->loc;
6129
6130   annotate_record ();
6131
6132   /* 1 */
6133   annotate_field (0);
6134   if (part_of_multiple)
6135     {
6136       char *formatted;
6137       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6138       ui_out_field_string (uiout, "number", formatted);
6139       xfree (formatted);
6140     }
6141   else
6142     {
6143       ui_out_field_int (uiout, "number", b->number);
6144     }
6145
6146   /* 2 */
6147   annotate_field (1);
6148   if (part_of_multiple)
6149     ui_out_field_skip (uiout, "type");
6150   else
6151     ui_out_field_string (uiout, "type", bptype_string (b->type));
6152
6153   /* 3 */
6154   annotate_field (2);
6155   if (part_of_multiple)
6156     ui_out_field_skip (uiout, "disp");
6157   else
6158     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6159
6160
6161   /* 4 */
6162   annotate_field (3);
6163   if (part_of_multiple)
6164     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6165   else
6166     ui_out_field_fmt (uiout, "enabled", "%c", 
6167                       bpenables[(int) b->enable_state]);
6168   ui_out_spaces (uiout, 2);
6169
6170   
6171   /* 5 and 6 */
6172   if (b->ops != NULL && b->ops->print_one != NULL)
6173     {
6174       /* Although the print_one can possibly print all locations,
6175          calling it here is not likely to get any nice result.  So,
6176          make sure there's just one location.  */
6177       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6178       b->ops->print_one (b, last_loc);
6179     }
6180   else
6181     switch (b->type)
6182       {
6183       case bp_none:
6184         internal_error (__FILE__, __LINE__,
6185                         _("print_one_breakpoint: bp_none encountered\n"));
6186         break;
6187
6188       case bp_watchpoint:
6189       case bp_hardware_watchpoint:
6190       case bp_read_watchpoint:
6191       case bp_access_watchpoint:
6192         {
6193           struct watchpoint *w = (struct watchpoint *) b;
6194
6195           /* Field 4, the address, is omitted (which makes the columns
6196              not line up too nicely with the headers, but the effect
6197              is relatively readable).  */
6198           if (opts.addressprint)
6199             ui_out_field_skip (uiout, "addr");
6200           annotate_field (5);
6201           ui_out_field_string (uiout, "what", w->exp_string);
6202         }
6203         break;
6204
6205       case bp_breakpoint:
6206       case bp_hardware_breakpoint:
6207       case bp_until:
6208       case bp_finish:
6209       case bp_longjmp:
6210       case bp_longjmp_resume:
6211       case bp_longjmp_call_dummy:
6212       case bp_exception:
6213       case bp_exception_resume:
6214       case bp_step_resume:
6215       case bp_hp_step_resume:
6216       case bp_watchpoint_scope:
6217       case bp_call_dummy:
6218       case bp_std_terminate:
6219       case bp_shlib_event:
6220       case bp_thread_event:
6221       case bp_overlay_event:
6222       case bp_longjmp_master:
6223       case bp_std_terminate_master:
6224       case bp_exception_master:
6225       case bp_tracepoint:
6226       case bp_fast_tracepoint:
6227       case bp_static_tracepoint:
6228       case bp_dprintf:
6229       case bp_jit_event:
6230       case bp_gnu_ifunc_resolver:
6231       case bp_gnu_ifunc_resolver_return:
6232         if (opts.addressprint)
6233           {
6234             annotate_field (4);
6235             if (header_of_multiple)
6236               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6237             else if (b->loc == NULL || loc->shlib_disabled)
6238               ui_out_field_string (uiout, "addr", "<PENDING>");
6239             else
6240               ui_out_field_core_addr (uiout, "addr",
6241                                       loc->gdbarch, loc->address);
6242           }
6243         annotate_field (5);
6244         if (!header_of_multiple)
6245           print_breakpoint_location (b, loc);
6246         if (b->loc)
6247           *last_loc = b->loc;
6248         break;
6249       }
6250
6251
6252   if (loc != NULL && !header_of_multiple)
6253     {
6254       struct inferior *inf;
6255       VEC(int) *inf_num = NULL;
6256       int mi_only = 1;
6257
6258       ALL_INFERIORS (inf)
6259         {
6260           if (inf->pspace == loc->pspace)
6261             VEC_safe_push (int, inf_num, inf->num);
6262         }
6263
6264         /* For backward compatibility, don't display inferiors in CLI unless
6265            there are several.  Always display for MI. */
6266         if (allflag
6267             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6268                 && (number_of_program_spaces () > 1
6269                     || number_of_inferiors () > 1)
6270                 /* LOC is for existing B, it cannot be in
6271                    moribund_locations and thus having NULL OWNER.  */
6272                 && loc->owner->type != bp_catchpoint))
6273         mi_only = 0;
6274       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6275       VEC_free (int, inf_num);
6276     }
6277
6278   if (!part_of_multiple)
6279     {
6280       if (b->thread != -1)
6281         {
6282           /* FIXME: This seems to be redundant and lost here; see the
6283              "stop only in" line a little further down.  */
6284           ui_out_text (uiout, " thread ");
6285           ui_out_field_int (uiout, "thread", b->thread);
6286         }
6287       else if (b->task != 0)
6288         {
6289           ui_out_text (uiout, " task ");
6290           ui_out_field_int (uiout, "task", b->task);
6291         }
6292     }
6293
6294   ui_out_text (uiout, "\n");
6295
6296   if (!part_of_multiple)
6297     b->ops->print_one_detail (b, uiout);
6298
6299   if (part_of_multiple && frame_id_p (b->frame_id))
6300     {
6301       annotate_field (6);
6302       ui_out_text (uiout, "\tstop only in stack frame at ");
6303       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6304          the frame ID.  */
6305       ui_out_field_core_addr (uiout, "frame",
6306                               b->gdbarch, b->frame_id.stack_addr);
6307       ui_out_text (uiout, "\n");
6308     }
6309   
6310   if (!part_of_multiple && b->cond_string)
6311     {
6312       annotate_field (7);
6313       if (is_tracepoint (b))
6314         ui_out_text (uiout, "\ttrace only if ");
6315       else
6316         ui_out_text (uiout, "\tstop only if ");
6317       ui_out_field_string (uiout, "cond", b->cond_string);
6318
6319       /* Print whether the target is doing the breakpoint's condition
6320          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6321       if (is_breakpoint (b)
6322           && breakpoint_condition_evaluation_mode ()
6323           == condition_evaluation_target)
6324         {
6325           ui_out_text (uiout, " (");
6326           ui_out_field_string (uiout, "evaluated-by",
6327                                bp_condition_evaluator (b));
6328           ui_out_text (uiout, " evals)");
6329         }
6330       ui_out_text (uiout, "\n");
6331     }
6332
6333   if (!part_of_multiple && b->thread != -1)
6334     {
6335       /* FIXME should make an annotation for this.  */
6336       ui_out_text (uiout, "\tstop only in thread ");
6337       ui_out_field_int (uiout, "thread", b->thread);
6338       ui_out_text (uiout, "\n");
6339     }
6340   
6341   if (!part_of_multiple)
6342     {
6343       if (b->hit_count)
6344         {
6345           /* FIXME should make an annotation for this.  */
6346           if (is_catchpoint (b))
6347             ui_out_text (uiout, "\tcatchpoint");
6348           else if (is_tracepoint (b))
6349             ui_out_text (uiout, "\ttracepoint");
6350           else
6351             ui_out_text (uiout, "\tbreakpoint");
6352           ui_out_text (uiout, " already hit ");
6353           ui_out_field_int (uiout, "times", b->hit_count);
6354           if (b->hit_count == 1)
6355             ui_out_text (uiout, " time\n");
6356           else
6357             ui_out_text (uiout, " times\n");
6358         }
6359       else
6360         {
6361           /* Output the count also if it is zero, but only if this is mi.  */
6362           if (ui_out_is_mi_like_p (uiout))
6363             ui_out_field_int (uiout, "times", b->hit_count);
6364         }
6365     }
6366
6367   if (!part_of_multiple && b->ignore_count)
6368     {
6369       annotate_field (8);
6370       ui_out_text (uiout, "\tignore next ");
6371       ui_out_field_int (uiout, "ignore", b->ignore_count);
6372       ui_out_text (uiout, " hits\n");
6373     }
6374
6375   /* Note that an enable count of 1 corresponds to "enable once"
6376      behavior, which is reported by the combination of enablement and
6377      disposition, so we don't need to mention it here.  */
6378   if (!part_of_multiple && b->enable_count > 1)
6379     {
6380       annotate_field (8);
6381       ui_out_text (uiout, "\tdisable after ");
6382       /* Tweak the wording to clarify that ignore and enable counts
6383          are distinct, and have additive effect.  */
6384       if (b->ignore_count)
6385         ui_out_text (uiout, "additional ");
6386       else
6387         ui_out_text (uiout, "next ");
6388       ui_out_field_int (uiout, "enable", b->enable_count);
6389       ui_out_text (uiout, " hits\n");
6390     }
6391
6392   if (!part_of_multiple && is_tracepoint (b))
6393     {
6394       struct tracepoint *tp = (struct tracepoint *) b;
6395
6396       if (tp->traceframe_usage)
6397         {
6398           ui_out_text (uiout, "\ttrace buffer usage ");
6399           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6400           ui_out_text (uiout, " bytes\n");
6401         }
6402     }
6403
6404   l = b->commands ? b->commands->commands : NULL;
6405   if (!part_of_multiple && l)
6406     {
6407       struct cleanup *script_chain;
6408
6409       annotate_field (9);
6410       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6411       print_command_lines (uiout, l, 4);
6412       do_cleanups (script_chain);
6413     }
6414
6415   if (is_tracepoint (b))
6416     {
6417       struct tracepoint *t = (struct tracepoint *) b;
6418
6419       if (!part_of_multiple && t->pass_count)
6420         {
6421           annotate_field (10);
6422           ui_out_text (uiout, "\tpass count ");
6423           ui_out_field_int (uiout, "pass", t->pass_count);
6424           ui_out_text (uiout, " \n");
6425         }
6426
6427       /* Don't display it when tracepoint or tracepoint location is
6428          pending.   */
6429       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6430         {
6431           annotate_field (11);
6432
6433           if (ui_out_is_mi_like_p (uiout))
6434             ui_out_field_string (uiout, "installed",
6435                                  loc->inserted ? "y" : "n");
6436           else
6437             {
6438               if (loc->inserted)
6439                 ui_out_text (uiout, "\t");
6440               else
6441                 ui_out_text (uiout, "\tnot ");
6442               ui_out_text (uiout, "installed on target\n");
6443             }
6444         }
6445     }
6446
6447   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6448     {
6449       if (is_watchpoint (b))
6450         {
6451           struct watchpoint *w = (struct watchpoint *) b;
6452
6453           ui_out_field_string (uiout, "original-location", w->exp_string);
6454         }
6455       else if (b->addr_string)
6456         ui_out_field_string (uiout, "original-location", b->addr_string);
6457     }
6458 }
6459
6460 static void
6461 print_one_breakpoint (struct breakpoint *b,
6462                       struct bp_location **last_loc, 
6463                       int allflag)
6464 {
6465   struct cleanup *bkpt_chain;
6466   struct ui_out *uiout = current_uiout;
6467
6468   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6469
6470   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6471   do_cleanups (bkpt_chain);
6472
6473   /* If this breakpoint has custom print function,
6474      it's already printed.  Otherwise, print individual
6475      locations, if any.  */
6476   if (b->ops == NULL || b->ops->print_one == NULL)
6477     {
6478       /* If breakpoint has a single location that is disabled, we
6479          print it as if it had several locations, since otherwise it's
6480          hard to represent "breakpoint enabled, location disabled"
6481          situation.
6482
6483          Note that while hardware watchpoints have several locations
6484          internally, that's not a property exposed to user.  */
6485       if (b->loc 
6486           && !is_hardware_watchpoint (b)
6487           && (b->loc->next || !b->loc->enabled))
6488         {
6489           struct bp_location *loc;
6490           int n = 1;
6491
6492           for (loc = b->loc; loc; loc = loc->next, ++n)
6493             {
6494               struct cleanup *inner2 =
6495                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6496               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6497               do_cleanups (inner2);
6498             }
6499         }
6500     }
6501 }
6502
6503 static int
6504 breakpoint_address_bits (struct breakpoint *b)
6505 {
6506   int print_address_bits = 0;
6507   struct bp_location *loc;
6508
6509   for (loc = b->loc; loc; loc = loc->next)
6510     {
6511       int addr_bit;
6512
6513       /* Software watchpoints that aren't watching memory don't have
6514          an address to print.  */
6515       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6516         continue;
6517
6518       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6519       if (addr_bit > print_address_bits)
6520         print_address_bits = addr_bit;
6521     }
6522
6523   return print_address_bits;
6524 }
6525
6526 struct captured_breakpoint_query_args
6527   {
6528     int bnum;
6529   };
6530
6531 static int
6532 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6533 {
6534   struct captured_breakpoint_query_args *args = data;
6535   struct breakpoint *b;
6536   struct bp_location *dummy_loc = NULL;
6537
6538   ALL_BREAKPOINTS (b)
6539     {
6540       if (args->bnum == b->number)
6541         {
6542           print_one_breakpoint (b, &dummy_loc, 0);
6543           return GDB_RC_OK;
6544         }
6545     }
6546   return GDB_RC_NONE;
6547 }
6548
6549 enum gdb_rc
6550 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6551                       char **error_message)
6552 {
6553   struct captured_breakpoint_query_args args;
6554
6555   args.bnum = bnum;
6556   /* For the moment we don't trust print_one_breakpoint() to not throw
6557      an error.  */
6558   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6559                                  error_message, RETURN_MASK_ALL) < 0)
6560     return GDB_RC_FAIL;
6561   else
6562     return GDB_RC_OK;
6563 }
6564
6565 /* Return true if this breakpoint was set by the user, false if it is
6566    internal or momentary.  */
6567
6568 int
6569 user_breakpoint_p (struct breakpoint *b)
6570 {
6571   return b->number > 0;
6572 }
6573
6574 /* Print information on user settable breakpoint (watchpoint, etc)
6575    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6576    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6577    FILTER is non-NULL, call it on each breakpoint and only include the
6578    ones for which it returns non-zero.  Return the total number of
6579    breakpoints listed.  */
6580
6581 static int
6582 breakpoint_1 (char *args, int allflag, 
6583               int (*filter) (const struct breakpoint *))
6584 {
6585   struct breakpoint *b;
6586   struct bp_location *last_loc = NULL;
6587   int nr_printable_breakpoints;
6588   struct cleanup *bkpttbl_chain;
6589   struct value_print_options opts;
6590   int print_address_bits = 0;
6591   int print_type_col_width = 14;
6592   struct ui_out *uiout = current_uiout;
6593
6594   get_user_print_options (&opts);
6595
6596   /* Compute the number of rows in the table, as well as the size
6597      required for address fields.  */
6598   nr_printable_breakpoints = 0;
6599   ALL_BREAKPOINTS (b)
6600     {
6601       /* If we have a filter, only list the breakpoints it accepts.  */
6602       if (filter && !filter (b))
6603         continue;
6604
6605       /* If we have an "args" string, it is a list of breakpoints to 
6606          accept.  Skip the others.  */
6607       if (args != NULL && *args != '\0')
6608         {
6609           if (allflag && parse_and_eval_long (args) != b->number)
6610             continue;
6611           if (!allflag && !number_is_in_list (args, b->number))
6612             continue;
6613         }
6614
6615       if (allflag || user_breakpoint_p (b))
6616         {
6617           int addr_bit, type_len;
6618
6619           addr_bit = breakpoint_address_bits (b);
6620           if (addr_bit > print_address_bits)
6621             print_address_bits = addr_bit;
6622
6623           type_len = strlen (bptype_string (b->type));
6624           if (type_len > print_type_col_width)
6625             print_type_col_width = type_len;
6626
6627           nr_printable_breakpoints++;
6628         }
6629     }
6630
6631   if (opts.addressprint)
6632     bkpttbl_chain 
6633       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6634                                              nr_printable_breakpoints,
6635                                              "BreakpointTable");
6636   else
6637     bkpttbl_chain 
6638       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6639                                              nr_printable_breakpoints,
6640                                              "BreakpointTable");
6641
6642   if (nr_printable_breakpoints > 0)
6643     annotate_breakpoints_headers ();
6644   if (nr_printable_breakpoints > 0)
6645     annotate_field (0);
6646   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6647   if (nr_printable_breakpoints > 0)
6648     annotate_field (1);
6649   ui_out_table_header (uiout, print_type_col_width, ui_left,
6650                        "type", "Type");                         /* 2 */
6651   if (nr_printable_breakpoints > 0)
6652     annotate_field (2);
6653   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6654   if (nr_printable_breakpoints > 0)
6655     annotate_field (3);
6656   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6657   if (opts.addressprint)
6658     {
6659       if (nr_printable_breakpoints > 0)
6660         annotate_field (4);
6661       if (print_address_bits <= 32)
6662         ui_out_table_header (uiout, 10, ui_left, 
6663                              "addr", "Address");                /* 5 */
6664       else
6665         ui_out_table_header (uiout, 18, ui_left, 
6666                              "addr", "Address");                /* 5 */
6667     }
6668   if (nr_printable_breakpoints > 0)
6669     annotate_field (5);
6670   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6671   ui_out_table_body (uiout);
6672   if (nr_printable_breakpoints > 0)
6673     annotate_breakpoints_table ();
6674
6675   ALL_BREAKPOINTS (b)
6676     {
6677       QUIT;
6678       /* If we have a filter, only list the breakpoints it accepts.  */
6679       if (filter && !filter (b))
6680         continue;
6681
6682       /* If we have an "args" string, it is a list of breakpoints to 
6683          accept.  Skip the others.  */
6684
6685       if (args != NULL && *args != '\0')
6686         {
6687           if (allflag)  /* maintenance info breakpoint */
6688             {
6689               if (parse_and_eval_long (args) != b->number)
6690                 continue;
6691             }
6692           else          /* all others */
6693             {
6694               if (!number_is_in_list (args, b->number))
6695                 continue;
6696             }
6697         }
6698       /* We only print out user settable breakpoints unless the
6699          allflag is set.  */
6700       if (allflag || user_breakpoint_p (b))
6701         print_one_breakpoint (b, &last_loc, allflag);
6702     }
6703
6704   do_cleanups (bkpttbl_chain);
6705
6706   if (nr_printable_breakpoints == 0)
6707     {
6708       /* If there's a filter, let the caller decide how to report
6709          empty list.  */
6710       if (!filter)
6711         {
6712           if (args == NULL || *args == '\0')
6713             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6714           else
6715             ui_out_message (uiout, 0, 
6716                             "No breakpoint or watchpoint matching '%s'.\n",
6717                             args);
6718         }
6719     }
6720   else
6721     {
6722       if (last_loc && !server_command)
6723         set_next_address (last_loc->gdbarch, last_loc->address);
6724     }
6725
6726   /* FIXME?  Should this be moved up so that it is only called when
6727      there have been breakpoints? */
6728   annotate_breakpoints_table_end ();
6729
6730   return nr_printable_breakpoints;
6731 }
6732
6733 /* Display the value of default-collect in a way that is generally
6734    compatible with the breakpoint list.  */
6735
6736 static void
6737 default_collect_info (void)
6738 {
6739   struct ui_out *uiout = current_uiout;
6740
6741   /* If it has no value (which is frequently the case), say nothing; a
6742      message like "No default-collect." gets in user's face when it's
6743      not wanted.  */
6744   if (!*default_collect)
6745     return;
6746
6747   /* The following phrase lines up nicely with per-tracepoint collect
6748      actions.  */
6749   ui_out_text (uiout, "default collect ");
6750   ui_out_field_string (uiout, "default-collect", default_collect);
6751   ui_out_text (uiout, " \n");
6752 }
6753   
6754 static void
6755 breakpoints_info (char *args, int from_tty)
6756 {
6757   breakpoint_1 (args, 0, NULL);
6758
6759   default_collect_info ();
6760 }
6761
6762 static void
6763 watchpoints_info (char *args, int from_tty)
6764 {
6765   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6766   struct ui_out *uiout = current_uiout;
6767
6768   if (num_printed == 0)
6769     {
6770       if (args == NULL || *args == '\0')
6771         ui_out_message (uiout, 0, "No watchpoints.\n");
6772       else
6773         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6774     }
6775 }
6776
6777 static void
6778 maintenance_info_breakpoints (char *args, int from_tty)
6779 {
6780   breakpoint_1 (args, 1, NULL);
6781
6782   default_collect_info ();
6783 }
6784
6785 static int
6786 breakpoint_has_pc (struct breakpoint *b,
6787                    struct program_space *pspace,
6788                    CORE_ADDR pc, struct obj_section *section)
6789 {
6790   struct bp_location *bl = b->loc;
6791
6792   for (; bl; bl = bl->next)
6793     {
6794       if (bl->pspace == pspace
6795           && bl->address == pc
6796           && (!overlay_debugging || bl->section == section))
6797         return 1;         
6798     }
6799   return 0;
6800 }
6801
6802 /* Print a message describing any user-breakpoints set at PC.  This
6803    concerns with logical breakpoints, so we match program spaces, not
6804    address spaces.  */
6805
6806 static void
6807 describe_other_breakpoints (struct gdbarch *gdbarch,
6808                             struct program_space *pspace, CORE_ADDR pc,
6809                             struct obj_section *section, int thread)
6810 {
6811   int others = 0;
6812   struct breakpoint *b;
6813
6814   ALL_BREAKPOINTS (b)
6815     others += (user_breakpoint_p (b)
6816                && breakpoint_has_pc (b, pspace, pc, section));
6817   if (others > 0)
6818     {
6819       if (others == 1)
6820         printf_filtered (_("Note: breakpoint "));
6821       else /* if (others == ???) */
6822         printf_filtered (_("Note: breakpoints "));
6823       ALL_BREAKPOINTS (b)
6824         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6825           {
6826             others--;
6827             printf_filtered ("%d", b->number);
6828             if (b->thread == -1 && thread != -1)
6829               printf_filtered (" (all threads)");
6830             else if (b->thread != -1)
6831               printf_filtered (" (thread %d)", b->thread);
6832             printf_filtered ("%s%s ",
6833                              ((b->enable_state == bp_disabled
6834                                || b->enable_state == bp_call_disabled)
6835                               ? " (disabled)"
6836                               : b->enable_state == bp_permanent 
6837                               ? " (permanent)"
6838                               : ""),
6839                              (others > 1) ? "," 
6840                              : ((others == 1) ? " and" : ""));
6841           }
6842       printf_filtered (_("also set at pc "));
6843       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6844       printf_filtered (".\n");
6845     }
6846 }
6847 \f
6848
6849 /* Return true iff it is meaningful to use the address member of
6850    BPT.  For some breakpoint types, the address member is irrelevant
6851    and it makes no sense to attempt to compare it to other addresses
6852    (or use it for any other purpose either).
6853
6854    More specifically, each of the following breakpoint types will
6855    always have a zero valued address and we don't want to mark
6856    breakpoints of any of these types to be a duplicate of an actual
6857    breakpoint at address zero:
6858
6859       bp_watchpoint
6860       bp_catchpoint
6861
6862 */
6863
6864 static int
6865 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6866 {
6867   enum bptype type = bpt->type;
6868
6869   return (type != bp_watchpoint && type != bp_catchpoint);
6870 }
6871
6872 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6873    true if LOC1 and LOC2 represent the same watchpoint location.  */
6874
6875 static int
6876 watchpoint_locations_match (struct bp_location *loc1, 
6877                             struct bp_location *loc2)
6878 {
6879   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6880   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6881
6882   /* Both of them must exist.  */
6883   gdb_assert (w1 != NULL);
6884   gdb_assert (w2 != NULL);
6885
6886   /* If the target can evaluate the condition expression in hardware,
6887      then we we need to insert both watchpoints even if they are at
6888      the same place.  Otherwise the watchpoint will only trigger when
6889      the condition of whichever watchpoint was inserted evaluates to
6890      true, not giving a chance for GDB to check the condition of the
6891      other watchpoint.  */
6892   if ((w1->cond_exp
6893        && target_can_accel_watchpoint_condition (loc1->address, 
6894                                                  loc1->length,
6895                                                  loc1->watchpoint_type,
6896                                                  w1->cond_exp))
6897       || (w2->cond_exp
6898           && target_can_accel_watchpoint_condition (loc2->address, 
6899                                                     loc2->length,
6900                                                     loc2->watchpoint_type,
6901                                                     w2->cond_exp)))
6902     return 0;
6903
6904   /* Note that this checks the owner's type, not the location's.  In
6905      case the target does not support read watchpoints, but does
6906      support access watchpoints, we'll have bp_read_watchpoint
6907      watchpoints with hw_access locations.  Those should be considered
6908      duplicates of hw_read locations.  The hw_read locations will
6909      become hw_access locations later.  */
6910   return (loc1->owner->type == loc2->owner->type
6911           && loc1->pspace->aspace == loc2->pspace->aspace
6912           && loc1->address == loc2->address
6913           && loc1->length == loc2->length);
6914 }
6915
6916 /* See breakpoint.h.  */
6917
6918 int
6919 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6920                           struct address_space *aspace2, CORE_ADDR addr2)
6921 {
6922   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6923            || aspace1 == aspace2)
6924           && addr1 == addr2);
6925 }
6926
6927 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
6928    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
6929    matches ASPACE2.  On targets that have global breakpoints, the address
6930    space doesn't really matter.  */
6931
6932 static int
6933 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
6934                                 int len1, struct address_space *aspace2,
6935                                 CORE_ADDR addr2)
6936 {
6937   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6938            || aspace1 == aspace2)
6939           && addr2 >= addr1 && addr2 < addr1 + len1);
6940 }
6941
6942 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
6943    a ranged breakpoint.  In most targets, a match happens only if ASPACE
6944    matches the breakpoint's address space.  On targets that have global
6945    breakpoints, the address space doesn't really matter.  */
6946
6947 static int
6948 breakpoint_location_address_match (struct bp_location *bl,
6949                                    struct address_space *aspace,
6950                                    CORE_ADDR addr)
6951 {
6952   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
6953                                     aspace, addr)
6954           || (bl->length
6955               && breakpoint_address_match_range (bl->pspace->aspace,
6956                                                  bl->address, bl->length,
6957                                                  aspace, addr)));
6958 }
6959
6960 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
6961    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
6962    true, otherwise returns false.  */
6963
6964 static int
6965 tracepoint_locations_match (struct bp_location *loc1,
6966                             struct bp_location *loc2)
6967 {
6968   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
6969     /* Since tracepoint locations are never duplicated with others', tracepoint
6970        locations at the same address of different tracepoints are regarded as
6971        different locations.  */
6972     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
6973   else
6974     return 0;
6975 }
6976
6977 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
6978    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
6979    represent the same location.  */
6980
6981 static int
6982 breakpoint_locations_match (struct bp_location *loc1, 
6983                             struct bp_location *loc2)
6984 {
6985   int hw_point1, hw_point2;
6986
6987   /* Both of them must not be in moribund_locations.  */
6988   gdb_assert (loc1->owner != NULL);
6989   gdb_assert (loc2->owner != NULL);
6990
6991   hw_point1 = is_hardware_watchpoint (loc1->owner);
6992   hw_point2 = is_hardware_watchpoint (loc2->owner);
6993
6994   if (hw_point1 != hw_point2)
6995     return 0;
6996   else if (hw_point1)
6997     return watchpoint_locations_match (loc1, loc2);
6998   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
6999     return tracepoint_locations_match (loc1, loc2);
7000   else
7001     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7002     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7003                                      loc2->pspace->aspace, loc2->address)
7004             && loc1->length == loc2->length);
7005 }
7006
7007 static void
7008 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7009                                int bnum, int have_bnum)
7010 {
7011   /* The longest string possibly returned by hex_string_custom
7012      is 50 chars.  These must be at least that big for safety.  */
7013   char astr1[64];
7014   char astr2[64];
7015
7016   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7017   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7018   if (have_bnum)
7019     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7020              bnum, astr1, astr2);
7021   else
7022     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7023 }
7024
7025 /* Adjust a breakpoint's address to account for architectural
7026    constraints on breakpoint placement.  Return the adjusted address.
7027    Note: Very few targets require this kind of adjustment.  For most
7028    targets, this function is simply the identity function.  */
7029
7030 static CORE_ADDR
7031 adjust_breakpoint_address (struct gdbarch *gdbarch,
7032                            CORE_ADDR bpaddr, enum bptype bptype)
7033 {
7034   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7035     {
7036       /* Very few targets need any kind of breakpoint adjustment.  */
7037       return bpaddr;
7038     }
7039   else if (bptype == bp_watchpoint
7040            || bptype == bp_hardware_watchpoint
7041            || bptype == bp_read_watchpoint
7042            || bptype == bp_access_watchpoint
7043            || bptype == bp_catchpoint)
7044     {
7045       /* Watchpoints and the various bp_catch_* eventpoints should not
7046          have their addresses modified.  */
7047       return bpaddr;
7048     }
7049   else
7050     {
7051       CORE_ADDR adjusted_bpaddr;
7052
7053       /* Some targets have architectural constraints on the placement
7054          of breakpoint instructions.  Obtain the adjusted address.  */
7055       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7056
7057       /* An adjusted breakpoint address can significantly alter
7058          a user's expectations.  Print a warning if an adjustment
7059          is required.  */
7060       if (adjusted_bpaddr != bpaddr)
7061         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7062
7063       return adjusted_bpaddr;
7064     }
7065 }
7066
7067 void
7068 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7069                   struct breakpoint *owner)
7070 {
7071   memset (loc, 0, sizeof (*loc));
7072
7073   gdb_assert (ops != NULL);
7074
7075   loc->ops = ops;
7076   loc->owner = owner;
7077   loc->cond = NULL;
7078   loc->cond_bytecode = NULL;
7079   loc->shlib_disabled = 0;
7080   loc->enabled = 1;
7081
7082   switch (owner->type)
7083     {
7084     case bp_breakpoint:
7085     case bp_until:
7086     case bp_finish:
7087     case bp_longjmp:
7088     case bp_longjmp_resume:
7089     case bp_longjmp_call_dummy:
7090     case bp_exception:
7091     case bp_exception_resume:
7092     case bp_step_resume:
7093     case bp_hp_step_resume:
7094     case bp_watchpoint_scope:
7095     case bp_call_dummy:
7096     case bp_std_terminate:
7097     case bp_shlib_event:
7098     case bp_thread_event:
7099     case bp_overlay_event:
7100     case bp_jit_event:
7101     case bp_longjmp_master:
7102     case bp_std_terminate_master:
7103     case bp_exception_master:
7104     case bp_gnu_ifunc_resolver:
7105     case bp_gnu_ifunc_resolver_return:
7106     case bp_dprintf:
7107       loc->loc_type = bp_loc_software_breakpoint;
7108       mark_breakpoint_location_modified (loc);
7109       break;
7110     case bp_hardware_breakpoint:
7111       loc->loc_type = bp_loc_hardware_breakpoint;
7112       mark_breakpoint_location_modified (loc);
7113       break;
7114     case bp_hardware_watchpoint:
7115     case bp_read_watchpoint:
7116     case bp_access_watchpoint:
7117       loc->loc_type = bp_loc_hardware_watchpoint;
7118       break;
7119     case bp_watchpoint:
7120     case bp_catchpoint:
7121     case bp_tracepoint:
7122     case bp_fast_tracepoint:
7123     case bp_static_tracepoint:
7124       loc->loc_type = bp_loc_other;
7125       break;
7126     default:
7127       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7128     }
7129
7130   loc->refc = 1;
7131 }
7132
7133 /* Allocate a struct bp_location.  */
7134
7135 static struct bp_location *
7136 allocate_bp_location (struct breakpoint *bpt)
7137 {
7138   return bpt->ops->allocate_location (bpt);
7139 }
7140
7141 static void
7142 free_bp_location (struct bp_location *loc)
7143 {
7144   loc->ops->dtor (loc);
7145   xfree (loc);
7146 }
7147
7148 /* Increment reference count.  */
7149
7150 static void
7151 incref_bp_location (struct bp_location *bl)
7152 {
7153   ++bl->refc;
7154 }
7155
7156 /* Decrement reference count.  If the reference count reaches 0,
7157    destroy the bp_location.  Sets *BLP to NULL.  */
7158
7159 static void
7160 decref_bp_location (struct bp_location **blp)
7161 {
7162   gdb_assert ((*blp)->refc > 0);
7163
7164   if (--(*blp)->refc == 0)
7165     free_bp_location (*blp);
7166   *blp = NULL;
7167 }
7168
7169 /* Add breakpoint B at the end of the global breakpoint chain.  */
7170
7171 static void
7172 add_to_breakpoint_chain (struct breakpoint *b)
7173 {
7174   struct breakpoint *b1;
7175
7176   /* Add this breakpoint to the end of the chain so that a list of
7177      breakpoints will come out in order of increasing numbers.  */
7178
7179   b1 = breakpoint_chain;
7180   if (b1 == 0)
7181     breakpoint_chain = b;
7182   else
7183     {
7184       while (b1->next)
7185         b1 = b1->next;
7186       b1->next = b;
7187     }
7188 }
7189
7190 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7191
7192 static void
7193 init_raw_breakpoint_without_location (struct breakpoint *b,
7194                                       struct gdbarch *gdbarch,
7195                                       enum bptype bptype,
7196                                       const struct breakpoint_ops *ops)
7197 {
7198   memset (b, 0, sizeof (*b));
7199
7200   gdb_assert (ops != NULL);
7201
7202   b->ops = ops;
7203   b->type = bptype;
7204   b->gdbarch = gdbarch;
7205   b->language = current_language->la_language;
7206   b->input_radix = input_radix;
7207   b->thread = -1;
7208   b->enable_state = bp_enabled;
7209   b->next = 0;
7210   b->silent = 0;
7211   b->ignore_count = 0;
7212   b->commands = NULL;
7213   b->frame_id = null_frame_id;
7214   b->condition_not_parsed = 0;
7215   b->py_bp_object = NULL;
7216   b->related_breakpoint = b;
7217 }
7218
7219 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7220    that has type BPTYPE and has no locations as yet.  */
7221
7222 static struct breakpoint *
7223 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7224                                      enum bptype bptype,
7225                                      const struct breakpoint_ops *ops)
7226 {
7227   struct breakpoint *b = XNEW (struct breakpoint);
7228
7229   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7230   add_to_breakpoint_chain (b);
7231   return b;
7232 }
7233
7234 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7235    resolutions should be made as the user specified the location explicitly
7236    enough.  */
7237
7238 static void
7239 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7240 {
7241   gdb_assert (loc->owner != NULL);
7242
7243   if (loc->owner->type == bp_breakpoint
7244       || loc->owner->type == bp_hardware_breakpoint
7245       || is_tracepoint (loc->owner))
7246     {
7247       int is_gnu_ifunc;
7248       const char *function_name;
7249       CORE_ADDR func_addr;
7250
7251       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7252                                           &func_addr, NULL, &is_gnu_ifunc);
7253
7254       if (is_gnu_ifunc && !explicit_loc)
7255         {
7256           struct breakpoint *b = loc->owner;
7257
7258           gdb_assert (loc->pspace == current_program_space);
7259           if (gnu_ifunc_resolve_name (function_name,
7260                                       &loc->requested_address))
7261             {
7262               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7263               loc->address = adjust_breakpoint_address (loc->gdbarch,
7264                                                         loc->requested_address,
7265                                                         b->type);
7266             }
7267           else if (b->type == bp_breakpoint && b->loc == loc
7268                    && loc->next == NULL && b->related_breakpoint == b)
7269             {
7270               /* Create only the whole new breakpoint of this type but do not
7271                  mess more complicated breakpoints with multiple locations.  */
7272               b->type = bp_gnu_ifunc_resolver;
7273               /* Remember the resolver's address for use by the return
7274                  breakpoint.  */
7275               loc->related_address = func_addr;
7276             }
7277         }
7278
7279       if (function_name)
7280         loc->function_name = xstrdup (function_name);
7281     }
7282 }
7283
7284 /* Attempt to determine architecture of location identified by SAL.  */
7285 struct gdbarch *
7286 get_sal_arch (struct symtab_and_line sal)
7287 {
7288   if (sal.section)
7289     return get_objfile_arch (sal.section->objfile);
7290   if (sal.symtab)
7291     return get_objfile_arch (sal.symtab->objfile);
7292
7293   return NULL;
7294 }
7295
7296 /* Low level routine for partially initializing a breakpoint of type
7297    BPTYPE.  The newly created breakpoint's address, section, source
7298    file name, and line number are provided by SAL.
7299
7300    It is expected that the caller will complete the initialization of
7301    the newly created breakpoint struct as well as output any status
7302    information regarding the creation of a new breakpoint.  */
7303
7304 static void
7305 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7306                      struct symtab_and_line sal, enum bptype bptype,
7307                      const struct breakpoint_ops *ops)
7308 {
7309   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7310
7311   add_location_to_breakpoint (b, &sal);
7312
7313   if (bptype != bp_catchpoint)
7314     gdb_assert (sal.pspace != NULL);
7315
7316   /* Store the program space that was used to set the breakpoint,
7317      except for ordinary breakpoints, which are independent of the
7318      program space.  */
7319   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7320     b->pspace = sal.pspace;
7321 }
7322
7323 /* set_raw_breakpoint is a low level routine for allocating and
7324    partially initializing a breakpoint of type BPTYPE.  The newly
7325    created breakpoint's address, section, source file name, and line
7326    number are provided by SAL.  The newly created and partially
7327    initialized breakpoint is added to the breakpoint chain and
7328    is also returned as the value of this function.
7329
7330    It is expected that the caller will complete the initialization of
7331    the newly created breakpoint struct as well as output any status
7332    information regarding the creation of a new breakpoint.  In
7333    particular, set_raw_breakpoint does NOT set the breakpoint
7334    number!  Care should be taken to not allow an error to occur
7335    prior to completing the initialization of the breakpoint.  If this
7336    should happen, a bogus breakpoint will be left on the chain.  */
7337
7338 struct breakpoint *
7339 set_raw_breakpoint (struct gdbarch *gdbarch,
7340                     struct symtab_and_line sal, enum bptype bptype,
7341                     const struct breakpoint_ops *ops)
7342 {
7343   struct breakpoint *b = XNEW (struct breakpoint);
7344
7345   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7346   add_to_breakpoint_chain (b);
7347   return b;
7348 }
7349
7350
7351 /* Note that the breakpoint object B describes a permanent breakpoint
7352    instruction, hard-wired into the inferior's code.  */
7353 void
7354 make_breakpoint_permanent (struct breakpoint *b)
7355 {
7356   struct bp_location *bl;
7357
7358   b->enable_state = bp_permanent;
7359
7360   /* By definition, permanent breakpoints are already present in the
7361      code.  Mark all locations as inserted.  For now,
7362      make_breakpoint_permanent is called in just one place, so it's
7363      hard to say if it's reasonable to have permanent breakpoint with
7364      multiple locations or not, but it's easy to implement.  */
7365   for (bl = b->loc; bl; bl = bl->next)
7366     bl->inserted = 1;
7367 }
7368
7369 /* Call this routine when stepping and nexting to enable a breakpoint
7370    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7371    initiated the operation.  */
7372
7373 void
7374 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7375 {
7376   struct breakpoint *b, *b_tmp;
7377   int thread = tp->num;
7378
7379   /* To avoid having to rescan all objfile symbols at every step,
7380      we maintain a list of continually-inserted but always disabled
7381      longjmp "master" breakpoints.  Here, we simply create momentary
7382      clones of those and enable them for the requested thread.  */
7383   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7384     if (b->pspace == current_program_space
7385         && (b->type == bp_longjmp_master
7386             || b->type == bp_exception_master))
7387       {
7388         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7389         struct breakpoint *clone;
7390
7391         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7392            after their removal.  */
7393         clone = momentary_breakpoint_from_master (b, type,
7394                                                   &longjmp_breakpoint_ops, 1);
7395         clone->thread = thread;
7396       }
7397
7398   tp->initiating_frame = frame;
7399 }
7400
7401 /* Delete all longjmp breakpoints from THREAD.  */
7402 void
7403 delete_longjmp_breakpoint (int thread)
7404 {
7405   struct breakpoint *b, *b_tmp;
7406
7407   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7408     if (b->type == bp_longjmp || b->type == bp_exception)
7409       {
7410         if (b->thread == thread)
7411           delete_breakpoint (b);
7412       }
7413 }
7414
7415 void
7416 delete_longjmp_breakpoint_at_next_stop (int thread)
7417 {
7418   struct breakpoint *b, *b_tmp;
7419
7420   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7421     if (b->type == bp_longjmp || b->type == bp_exception)
7422       {
7423         if (b->thread == thread)
7424           b->disposition = disp_del_at_next_stop;
7425       }
7426 }
7427
7428 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7429    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7430    pointer to any of them.  Return NULL if this system cannot place longjmp
7431    breakpoints.  */
7432
7433 struct breakpoint *
7434 set_longjmp_breakpoint_for_call_dummy (void)
7435 {
7436   struct breakpoint *b, *retval = NULL;
7437
7438   ALL_BREAKPOINTS (b)
7439     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7440       {
7441         struct breakpoint *new_b;
7442
7443         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7444                                                   &momentary_breakpoint_ops,
7445                                                   1);
7446         new_b->thread = pid_to_thread_id (inferior_ptid);
7447
7448         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7449
7450         gdb_assert (new_b->related_breakpoint == new_b);
7451         if (retval == NULL)
7452           retval = new_b;
7453         new_b->related_breakpoint = retval;
7454         while (retval->related_breakpoint != new_b->related_breakpoint)
7455           retval = retval->related_breakpoint;
7456         retval->related_breakpoint = new_b;
7457       }
7458
7459   return retval;
7460 }
7461
7462 /* Verify all existing dummy frames and their associated breakpoints for
7463    TP.  Remove those which can no longer be found in the current frame
7464    stack.
7465
7466    You should call this function only at places where it is safe to currently
7467    unwind the whole stack.  Failed stack unwind would discard live dummy
7468    frames.  */
7469
7470 void
7471 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7472 {
7473   struct breakpoint *b, *b_tmp;
7474
7475   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7476     if (b->type == bp_longjmp_call_dummy && b->thread == tp->num)
7477       {
7478         struct breakpoint *dummy_b = b->related_breakpoint;
7479
7480         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7481           dummy_b = dummy_b->related_breakpoint;
7482         if (dummy_b->type != bp_call_dummy
7483             || frame_find_by_id (dummy_b->frame_id) != NULL)
7484           continue;
7485         
7486         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7487
7488         while (b->related_breakpoint != b)
7489           {
7490             if (b_tmp == b->related_breakpoint)
7491               b_tmp = b->related_breakpoint->next;
7492             delete_breakpoint (b->related_breakpoint);
7493           }
7494         delete_breakpoint (b);
7495       }
7496 }
7497
7498 void
7499 enable_overlay_breakpoints (void)
7500 {
7501   struct breakpoint *b;
7502
7503   ALL_BREAKPOINTS (b)
7504     if (b->type == bp_overlay_event)
7505     {
7506       b->enable_state = bp_enabled;
7507       update_global_location_list (1);
7508       overlay_events_enabled = 1;
7509     }
7510 }
7511
7512 void
7513 disable_overlay_breakpoints (void)
7514 {
7515   struct breakpoint *b;
7516
7517   ALL_BREAKPOINTS (b)
7518     if (b->type == bp_overlay_event)
7519     {
7520       b->enable_state = bp_disabled;
7521       update_global_location_list (0);
7522       overlay_events_enabled = 0;
7523     }
7524 }
7525
7526 /* Set an active std::terminate breakpoint for each std::terminate
7527    master breakpoint.  */
7528 void
7529 set_std_terminate_breakpoint (void)
7530 {
7531   struct breakpoint *b, *b_tmp;
7532
7533   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7534     if (b->pspace == current_program_space
7535         && b->type == bp_std_terminate_master)
7536       {
7537         momentary_breakpoint_from_master (b, bp_std_terminate,
7538                                           &momentary_breakpoint_ops, 1);
7539       }
7540 }
7541
7542 /* Delete all the std::terminate breakpoints.  */
7543 void
7544 delete_std_terminate_breakpoint (void)
7545 {
7546   struct breakpoint *b, *b_tmp;
7547
7548   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7549     if (b->type == bp_std_terminate)
7550       delete_breakpoint (b);
7551 }
7552
7553 struct breakpoint *
7554 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7555 {
7556   struct breakpoint *b;
7557
7558   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7559                                   &internal_breakpoint_ops);
7560
7561   b->enable_state = bp_enabled;
7562   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7563   b->addr_string
7564     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7565
7566   update_global_location_list_nothrow (1);
7567
7568   return b;
7569 }
7570
7571 void
7572 remove_thread_event_breakpoints (void)
7573 {
7574   struct breakpoint *b, *b_tmp;
7575
7576   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7577     if (b->type == bp_thread_event
7578         && b->loc->pspace == current_program_space)
7579       delete_breakpoint (b);
7580 }
7581
7582 struct lang_and_radix
7583   {
7584     enum language lang;
7585     int radix;
7586   };
7587
7588 /* Create a breakpoint for JIT code registration and unregistration.  */
7589
7590 struct breakpoint *
7591 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7592 {
7593   struct breakpoint *b;
7594
7595   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7596                                   &internal_breakpoint_ops);
7597   update_global_location_list_nothrow (1);
7598   return b;
7599 }
7600
7601 /* Remove JIT code registration and unregistration breakpoint(s).  */
7602
7603 void
7604 remove_jit_event_breakpoints (void)
7605 {
7606   struct breakpoint *b, *b_tmp;
7607
7608   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7609     if (b->type == bp_jit_event
7610         && b->loc->pspace == current_program_space)
7611       delete_breakpoint (b);
7612 }
7613
7614 void
7615 remove_solib_event_breakpoints (void)
7616 {
7617   struct breakpoint *b, *b_tmp;
7618
7619   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7620     if (b->type == bp_shlib_event
7621         && b->loc->pspace == current_program_space)
7622       delete_breakpoint (b);
7623 }
7624
7625 struct breakpoint *
7626 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7627 {
7628   struct breakpoint *b;
7629
7630   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7631                                   &internal_breakpoint_ops);
7632   update_global_location_list_nothrow (1);
7633   return b;
7634 }
7635
7636 /* Disable any breakpoints that are on code in shared libraries.  Only
7637    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7638
7639 void
7640 disable_breakpoints_in_shlibs (void)
7641 {
7642   struct bp_location *loc, **locp_tmp;
7643
7644   ALL_BP_LOCATIONS (loc, locp_tmp)
7645   {
7646     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7647     struct breakpoint *b = loc->owner;
7648
7649     /* We apply the check to all breakpoints, including disabled for
7650        those with loc->duplicate set.  This is so that when breakpoint
7651        becomes enabled, or the duplicate is removed, gdb will try to
7652        insert all breakpoints.  If we don't set shlib_disabled here,
7653        we'll try to insert those breakpoints and fail.  */
7654     if (((b->type == bp_breakpoint)
7655          || (b->type == bp_jit_event)
7656          || (b->type == bp_hardware_breakpoint)
7657          || (is_tracepoint (b)))
7658         && loc->pspace == current_program_space
7659         && !loc->shlib_disabled
7660         && solib_name_from_address (loc->pspace, loc->address)
7661         )
7662       {
7663         loc->shlib_disabled = 1;
7664       }
7665   }
7666 }
7667
7668 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7669    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7670    disabled ones can just stay disabled.  */
7671
7672 static void
7673 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7674 {
7675   struct bp_location *loc, **locp_tmp;
7676   int disabled_shlib_breaks = 0;
7677
7678   /* SunOS a.out shared libraries are always mapped, so do not
7679      disable breakpoints; they will only be reported as unloaded
7680      through clear_solib when GDB discards its shared library
7681      list.  See clear_solib for more information.  */
7682   if (exec_bfd != NULL
7683       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7684     return;
7685
7686   ALL_BP_LOCATIONS (loc, locp_tmp)
7687   {
7688     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7689     struct breakpoint *b = loc->owner;
7690
7691     if (solib->pspace == loc->pspace
7692         && !loc->shlib_disabled
7693         && (((b->type == bp_breakpoint
7694               || b->type == bp_jit_event
7695               || b->type == bp_hardware_breakpoint)
7696              && (loc->loc_type == bp_loc_hardware_breakpoint
7697                  || loc->loc_type == bp_loc_software_breakpoint))
7698             || is_tracepoint (b))
7699         && solib_contains_address_p (solib, loc->address))
7700       {
7701         loc->shlib_disabled = 1;
7702         /* At this point, we cannot rely on remove_breakpoint
7703            succeeding so we must mark the breakpoint as not inserted
7704            to prevent future errors occurring in remove_breakpoints.  */
7705         loc->inserted = 0;
7706
7707         /* This may cause duplicate notifications for the same breakpoint.  */
7708         observer_notify_breakpoint_modified (b);
7709
7710         if (!disabled_shlib_breaks)
7711           {
7712             target_terminal_ours_for_output ();
7713             warning (_("Temporarily disabling breakpoints "
7714                        "for unloaded shared library \"%s\""),
7715                      solib->so_name);
7716           }
7717         disabled_shlib_breaks = 1;
7718       }
7719   }
7720 }
7721
7722 /* Disable any breakpoints and tracepoints in OBJFILE upon
7723    notification of free_objfile.  Only apply to enabled breakpoints,
7724    disabled ones can just stay disabled.  */
7725
7726 static void
7727 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7728 {
7729   struct breakpoint *b;
7730
7731   if (objfile == NULL)
7732     return;
7733
7734   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7735      managed by the user with add-symbol-file/remove-symbol-file.
7736      Similarly to how breakpoints in shared libraries are handled in
7737      response to "nosharedlibrary", mark breakpoints in such modules
7738      shlib_disabled so they end up uninserted on the next global
7739      location list update.  Shared libraries not loaded by the user
7740      aren't handled here -- they're already handled in
7741      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7742      solib_unloaded observer.  We skip objfiles that are not
7743      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7744      main objfile).  */
7745   if ((objfile->flags & OBJF_SHARED) == 0
7746       || (objfile->flags & OBJF_USERLOADED) == 0)
7747     return;
7748
7749   ALL_BREAKPOINTS (b)
7750     {
7751       struct bp_location *loc;
7752       int bp_modified = 0;
7753
7754       if (!is_breakpoint (b) && !is_tracepoint (b))
7755         continue;
7756
7757       for (loc = b->loc; loc != NULL; loc = loc->next)
7758         {
7759           CORE_ADDR loc_addr = loc->address;
7760
7761           if (loc->loc_type != bp_loc_hardware_breakpoint
7762               && loc->loc_type != bp_loc_software_breakpoint)
7763             continue;
7764
7765           if (loc->shlib_disabled != 0)
7766             continue;
7767
7768           if (objfile->pspace != loc->pspace)
7769             continue;
7770
7771           if (loc->loc_type != bp_loc_hardware_breakpoint
7772               && loc->loc_type != bp_loc_software_breakpoint)
7773             continue;
7774
7775           if (is_addr_in_objfile (loc_addr, objfile))
7776             {
7777               loc->shlib_disabled = 1;
7778               /* At this point, we don't know whether the object was
7779                  unmapped from the inferior or not, so leave the
7780                  inserted flag alone.  We'll handle failure to
7781                  uninsert quietly, in case the object was indeed
7782                  unmapped.  */
7783
7784               mark_breakpoint_location_modified (loc);
7785
7786               bp_modified = 1;
7787             }
7788         }
7789
7790       if (bp_modified)
7791         observer_notify_breakpoint_modified (b);
7792     }
7793 }
7794
7795 /* FORK & VFORK catchpoints.  */
7796
7797 /* An instance of this type is used to represent a fork or vfork
7798    catchpoint.  It includes a "struct breakpoint" as a kind of base
7799    class; users downcast to "struct breakpoint *" when needed.  A
7800    breakpoint is really of this type iff its ops pointer points to
7801    CATCH_FORK_BREAKPOINT_OPS.  */
7802
7803 struct fork_catchpoint
7804 {
7805   /* The base class.  */
7806   struct breakpoint base;
7807
7808   /* Process id of a child process whose forking triggered this
7809      catchpoint.  This field is only valid immediately after this
7810      catchpoint has triggered.  */
7811   ptid_t forked_inferior_pid;
7812 };
7813
7814 /* Implement the "insert" breakpoint_ops method for fork
7815    catchpoints.  */
7816
7817 static int
7818 insert_catch_fork (struct bp_location *bl)
7819 {
7820   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7821 }
7822
7823 /* Implement the "remove" breakpoint_ops method for fork
7824    catchpoints.  */
7825
7826 static int
7827 remove_catch_fork (struct bp_location *bl)
7828 {
7829   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7830 }
7831
7832 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7833    catchpoints.  */
7834
7835 static int
7836 breakpoint_hit_catch_fork (const struct bp_location *bl,
7837                            struct address_space *aspace, CORE_ADDR bp_addr,
7838                            const struct target_waitstatus *ws)
7839 {
7840   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7841
7842   if (ws->kind != TARGET_WAITKIND_FORKED)
7843     return 0;
7844
7845   c->forked_inferior_pid = ws->value.related_pid;
7846   return 1;
7847 }
7848
7849 /* Implement the "print_it" breakpoint_ops method for fork
7850    catchpoints.  */
7851
7852 static enum print_stop_action
7853 print_it_catch_fork (bpstat bs)
7854 {
7855   struct ui_out *uiout = current_uiout;
7856   struct breakpoint *b = bs->breakpoint_at;
7857   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7858
7859   annotate_catchpoint (b->number);
7860   if (b->disposition == disp_del)
7861     ui_out_text (uiout, "\nTemporary catchpoint ");
7862   else
7863     ui_out_text (uiout, "\nCatchpoint ");
7864   if (ui_out_is_mi_like_p (uiout))
7865     {
7866       ui_out_field_string (uiout, "reason",
7867                            async_reason_lookup (EXEC_ASYNC_FORK));
7868       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7869     }
7870   ui_out_field_int (uiout, "bkptno", b->number);
7871   ui_out_text (uiout, " (forked process ");
7872   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7873   ui_out_text (uiout, "), ");
7874   return PRINT_SRC_AND_LOC;
7875 }
7876
7877 /* Implement the "print_one" breakpoint_ops method for fork
7878    catchpoints.  */
7879
7880 static void
7881 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
7882 {
7883   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7884   struct value_print_options opts;
7885   struct ui_out *uiout = current_uiout;
7886
7887   get_user_print_options (&opts);
7888
7889   /* Field 4, the address, is omitted (which makes the columns not
7890      line up too nicely with the headers, but the effect is relatively
7891      readable).  */
7892   if (opts.addressprint)
7893     ui_out_field_skip (uiout, "addr");
7894   annotate_field (5);
7895   ui_out_text (uiout, "fork");
7896   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
7897     {
7898       ui_out_text (uiout, ", process ");
7899       ui_out_field_int (uiout, "what",
7900                         ptid_get_pid (c->forked_inferior_pid));
7901       ui_out_spaces (uiout, 1);
7902     }
7903
7904   if (ui_out_is_mi_like_p (uiout))
7905     ui_out_field_string (uiout, "catch-type", "fork");
7906 }
7907
7908 /* Implement the "print_mention" breakpoint_ops method for fork
7909    catchpoints.  */
7910
7911 static void
7912 print_mention_catch_fork (struct breakpoint *b)
7913 {
7914   printf_filtered (_("Catchpoint %d (fork)"), b->number);
7915 }
7916
7917 /* Implement the "print_recreate" breakpoint_ops method for fork
7918    catchpoints.  */
7919
7920 static void
7921 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
7922 {
7923   fprintf_unfiltered (fp, "catch fork");
7924   print_recreate_thread (b, fp);
7925 }
7926
7927 /* The breakpoint_ops structure to be used in fork catchpoints.  */
7928
7929 static struct breakpoint_ops catch_fork_breakpoint_ops;
7930
7931 /* Implement the "insert" breakpoint_ops method for vfork
7932    catchpoints.  */
7933
7934 static int
7935 insert_catch_vfork (struct bp_location *bl)
7936 {
7937   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7938 }
7939
7940 /* Implement the "remove" breakpoint_ops method for vfork
7941    catchpoints.  */
7942
7943 static int
7944 remove_catch_vfork (struct bp_location *bl)
7945 {
7946   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
7947 }
7948
7949 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
7950    catchpoints.  */
7951
7952 static int
7953 breakpoint_hit_catch_vfork (const struct bp_location *bl,
7954                             struct address_space *aspace, CORE_ADDR bp_addr,
7955                             const struct target_waitstatus *ws)
7956 {
7957   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7958
7959   if (ws->kind != TARGET_WAITKIND_VFORKED)
7960     return 0;
7961
7962   c->forked_inferior_pid = ws->value.related_pid;
7963   return 1;
7964 }
7965
7966 /* Implement the "print_it" breakpoint_ops method for vfork
7967    catchpoints.  */
7968
7969 static enum print_stop_action
7970 print_it_catch_vfork (bpstat bs)
7971 {
7972   struct ui_out *uiout = current_uiout;
7973   struct breakpoint *b = bs->breakpoint_at;
7974   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
7975
7976   annotate_catchpoint (b->number);
7977   if (b->disposition == disp_del)
7978     ui_out_text (uiout, "\nTemporary catchpoint ");
7979   else
7980     ui_out_text (uiout, "\nCatchpoint ");
7981   if (ui_out_is_mi_like_p (uiout))
7982     {
7983       ui_out_field_string (uiout, "reason",
7984                            async_reason_lookup (EXEC_ASYNC_VFORK));
7985       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7986     }
7987   ui_out_field_int (uiout, "bkptno", b->number);
7988   ui_out_text (uiout, " (vforked process ");
7989   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
7990   ui_out_text (uiout, "), ");
7991   return PRINT_SRC_AND_LOC;
7992 }
7993
7994 /* Implement the "print_one" breakpoint_ops method for vfork
7995    catchpoints.  */
7996
7997 static void
7998 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
7999 {
8000   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8001   struct value_print_options opts;
8002   struct ui_out *uiout = current_uiout;
8003
8004   get_user_print_options (&opts);
8005   /* Field 4, the address, is omitted (which makes the columns not
8006      line up too nicely with the headers, but the effect is relatively
8007      readable).  */
8008   if (opts.addressprint)
8009     ui_out_field_skip (uiout, "addr");
8010   annotate_field (5);
8011   ui_out_text (uiout, "vfork");
8012   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8013     {
8014       ui_out_text (uiout, ", process ");
8015       ui_out_field_int (uiout, "what",
8016                         ptid_get_pid (c->forked_inferior_pid));
8017       ui_out_spaces (uiout, 1);
8018     }
8019
8020   if (ui_out_is_mi_like_p (uiout))
8021     ui_out_field_string (uiout, "catch-type", "vfork");
8022 }
8023
8024 /* Implement the "print_mention" breakpoint_ops method for vfork
8025    catchpoints.  */
8026
8027 static void
8028 print_mention_catch_vfork (struct breakpoint *b)
8029 {
8030   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8031 }
8032
8033 /* Implement the "print_recreate" breakpoint_ops method for vfork
8034    catchpoints.  */
8035
8036 static void
8037 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8038 {
8039   fprintf_unfiltered (fp, "catch vfork");
8040   print_recreate_thread (b, fp);
8041 }
8042
8043 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8044
8045 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8046
8047 /* An instance of this type is used to represent an solib catchpoint.
8048    It includes a "struct breakpoint" as a kind of base class; users
8049    downcast to "struct breakpoint *" when needed.  A breakpoint is
8050    really of this type iff its ops pointer points to
8051    CATCH_SOLIB_BREAKPOINT_OPS.  */
8052
8053 struct solib_catchpoint
8054 {
8055   /* The base class.  */
8056   struct breakpoint base;
8057
8058   /* True for "catch load", false for "catch unload".  */
8059   unsigned char is_load;
8060
8061   /* Regular expression to match, if any.  COMPILED is only valid when
8062      REGEX is non-NULL.  */
8063   char *regex;
8064   regex_t compiled;
8065 };
8066
8067 static void
8068 dtor_catch_solib (struct breakpoint *b)
8069 {
8070   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8071
8072   if (self->regex)
8073     regfree (&self->compiled);
8074   xfree (self->regex);
8075
8076   base_breakpoint_ops.dtor (b);
8077 }
8078
8079 static int
8080 insert_catch_solib (struct bp_location *ignore)
8081 {
8082   return 0;
8083 }
8084
8085 static int
8086 remove_catch_solib (struct bp_location *ignore)
8087 {
8088   return 0;
8089 }
8090
8091 static int
8092 breakpoint_hit_catch_solib (const struct bp_location *bl,
8093                             struct address_space *aspace,
8094                             CORE_ADDR bp_addr,
8095                             const struct target_waitstatus *ws)
8096 {
8097   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8098   struct breakpoint *other;
8099
8100   if (ws->kind == TARGET_WAITKIND_LOADED)
8101     return 1;
8102
8103   ALL_BREAKPOINTS (other)
8104   {
8105     struct bp_location *other_bl;
8106
8107     if (other == bl->owner)
8108       continue;
8109
8110     if (other->type != bp_shlib_event)
8111       continue;
8112
8113     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8114       continue;
8115
8116     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8117       {
8118         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8119           return 1;
8120       }
8121   }
8122
8123   return 0;
8124 }
8125
8126 static void
8127 check_status_catch_solib (struct bpstats *bs)
8128 {
8129   struct solib_catchpoint *self
8130     = (struct solib_catchpoint *) bs->breakpoint_at;
8131   int ix;
8132
8133   if (self->is_load)
8134     {
8135       struct so_list *iter;
8136
8137       for (ix = 0;
8138            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8139                         ix, iter);
8140            ++ix)
8141         {
8142           if (!self->regex
8143               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8144             return;
8145         }
8146     }
8147   else
8148     {
8149       char *iter;
8150
8151       for (ix = 0;
8152            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8153                         ix, iter);
8154            ++ix)
8155         {
8156           if (!self->regex
8157               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8158             return;
8159         }
8160     }
8161
8162   bs->stop = 0;
8163   bs->print_it = print_it_noop;
8164 }
8165
8166 static enum print_stop_action
8167 print_it_catch_solib (bpstat bs)
8168 {
8169   struct breakpoint *b = bs->breakpoint_at;
8170   struct ui_out *uiout = current_uiout;
8171
8172   annotate_catchpoint (b->number);
8173   if (b->disposition == disp_del)
8174     ui_out_text (uiout, "\nTemporary catchpoint ");
8175   else
8176     ui_out_text (uiout, "\nCatchpoint ");
8177   ui_out_field_int (uiout, "bkptno", b->number);
8178   ui_out_text (uiout, "\n");
8179   if (ui_out_is_mi_like_p (uiout))
8180     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8181   print_solib_event (1);
8182   return PRINT_SRC_AND_LOC;
8183 }
8184
8185 static void
8186 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8187 {
8188   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8189   struct value_print_options opts;
8190   struct ui_out *uiout = current_uiout;
8191   char *msg;
8192
8193   get_user_print_options (&opts);
8194   /* Field 4, the address, is omitted (which makes the columns not
8195      line up too nicely with the headers, but the effect is relatively
8196      readable).  */
8197   if (opts.addressprint)
8198     {
8199       annotate_field (4);
8200       ui_out_field_skip (uiout, "addr");
8201     }
8202
8203   annotate_field (5);
8204   if (self->is_load)
8205     {
8206       if (self->regex)
8207         msg = xstrprintf (_("load of library matching %s"), self->regex);
8208       else
8209         msg = xstrdup (_("load of library"));
8210     }
8211   else
8212     {
8213       if (self->regex)
8214         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8215       else
8216         msg = xstrdup (_("unload of library"));
8217     }
8218   ui_out_field_string (uiout, "what", msg);
8219   xfree (msg);
8220
8221   if (ui_out_is_mi_like_p (uiout))
8222     ui_out_field_string (uiout, "catch-type",
8223                          self->is_load ? "load" : "unload");
8224 }
8225
8226 static void
8227 print_mention_catch_solib (struct breakpoint *b)
8228 {
8229   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8230
8231   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8232                    self->is_load ? "load" : "unload");
8233 }
8234
8235 static void
8236 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8237 {
8238   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8239
8240   fprintf_unfiltered (fp, "%s %s",
8241                       b->disposition == disp_del ? "tcatch" : "catch",
8242                       self->is_load ? "load" : "unload");
8243   if (self->regex)
8244     fprintf_unfiltered (fp, " %s", self->regex);
8245   fprintf_unfiltered (fp, "\n");
8246 }
8247
8248 static struct breakpoint_ops catch_solib_breakpoint_ops;
8249
8250 /* Shared helper function (MI and CLI) for creating and installing
8251    a shared object event catchpoint.  If IS_LOAD is non-zero then
8252    the events to be caught are load events, otherwise they are
8253    unload events.  If IS_TEMP is non-zero the catchpoint is a
8254    temporary one.  If ENABLED is non-zero the catchpoint is
8255    created in an enabled state.  */
8256
8257 void
8258 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8259 {
8260   struct solib_catchpoint *c;
8261   struct gdbarch *gdbarch = get_current_arch ();
8262   struct cleanup *cleanup;
8263
8264   if (!arg)
8265     arg = "";
8266   arg = skip_spaces (arg);
8267
8268   c = XCNEW (struct solib_catchpoint);
8269   cleanup = make_cleanup (xfree, c);
8270
8271   if (*arg != '\0')
8272     {
8273       int errcode;
8274
8275       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8276       if (errcode != 0)
8277         {
8278           char *err = get_regcomp_error (errcode, &c->compiled);
8279
8280           make_cleanup (xfree, err);
8281           error (_("Invalid regexp (%s): %s"), err, arg);
8282         }
8283       c->regex = xstrdup (arg);
8284     }
8285
8286   c->is_load = is_load;
8287   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8288                    &catch_solib_breakpoint_ops);
8289
8290   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8291
8292   discard_cleanups (cleanup);
8293   install_breakpoint (0, &c->base, 1);
8294 }
8295
8296 /* A helper function that does all the work for "catch load" and
8297    "catch unload".  */
8298
8299 static void
8300 catch_load_or_unload (char *arg, int from_tty, int is_load,
8301                       struct cmd_list_element *command)
8302 {
8303   int tempflag;
8304   const int enabled = 1;
8305
8306   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8307
8308   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8309 }
8310
8311 static void
8312 catch_load_command_1 (char *arg, int from_tty,
8313                       struct cmd_list_element *command)
8314 {
8315   catch_load_or_unload (arg, from_tty, 1, command);
8316 }
8317
8318 static void
8319 catch_unload_command_1 (char *arg, int from_tty,
8320                         struct cmd_list_element *command)
8321 {
8322   catch_load_or_unload (arg, from_tty, 0, command);
8323 }
8324
8325 /* An instance of this type is used to represent a syscall catchpoint.
8326    It includes a "struct breakpoint" as a kind of base class; users
8327    downcast to "struct breakpoint *" when needed.  A breakpoint is
8328    really of this type iff its ops pointer points to
8329    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8330
8331 struct syscall_catchpoint
8332 {
8333   /* The base class.  */
8334   struct breakpoint base;
8335
8336   /* Syscall numbers used for the 'catch syscall' feature.  If no
8337      syscall has been specified for filtering, its value is NULL.
8338      Otherwise, it holds a list of all syscalls to be caught.  The
8339      list elements are allocated with xmalloc.  */
8340   VEC(int) *syscalls_to_be_caught;
8341 };
8342
8343 /* Implement the "dtor" breakpoint_ops method for syscall
8344    catchpoints.  */
8345
8346 static void
8347 dtor_catch_syscall (struct breakpoint *b)
8348 {
8349   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8350
8351   VEC_free (int, c->syscalls_to_be_caught);
8352
8353   base_breakpoint_ops.dtor (b);
8354 }
8355
8356 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8357
8358 struct catch_syscall_inferior_data
8359 {
8360   /* We keep a count of the number of times the user has requested a
8361      particular syscall to be tracked, and pass this information to the
8362      target.  This lets capable targets implement filtering directly.  */
8363
8364   /* Number of times that "any" syscall is requested.  */
8365   int any_syscall_count;
8366
8367   /* Count of each system call.  */
8368   VEC(int) *syscalls_counts;
8369
8370   /* This counts all syscall catch requests, so we can readily determine
8371      if any catching is necessary.  */
8372   int total_syscalls_count;
8373 };
8374
8375 static struct catch_syscall_inferior_data*
8376 get_catch_syscall_inferior_data (struct inferior *inf)
8377 {
8378   struct catch_syscall_inferior_data *inf_data;
8379
8380   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8381   if (inf_data == NULL)
8382     {
8383       inf_data = XCNEW (struct catch_syscall_inferior_data);
8384       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8385     }
8386
8387   return inf_data;
8388 }
8389
8390 static void
8391 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8392 {
8393   xfree (arg);
8394 }
8395
8396
8397 /* Implement the "insert" breakpoint_ops method for syscall
8398    catchpoints.  */
8399
8400 static int
8401 insert_catch_syscall (struct bp_location *bl)
8402 {
8403   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8404   struct inferior *inf = current_inferior ();
8405   struct catch_syscall_inferior_data *inf_data
8406     = get_catch_syscall_inferior_data (inf);
8407
8408   ++inf_data->total_syscalls_count;
8409   if (!c->syscalls_to_be_caught)
8410     ++inf_data->any_syscall_count;
8411   else
8412     {
8413       int i, iter;
8414
8415       for (i = 0;
8416            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8417            i++)
8418         {
8419           int elem;
8420
8421           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8422             {
8423               int old_size = VEC_length (int, inf_data->syscalls_counts);
8424               uintptr_t vec_addr_offset
8425                 = old_size * ((uintptr_t) sizeof (int));
8426               uintptr_t vec_addr;
8427               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8428               vec_addr = ((uintptr_t) VEC_address (int,
8429                                                   inf_data->syscalls_counts)
8430                           + vec_addr_offset);
8431               memset ((void *) vec_addr, 0,
8432                       (iter + 1 - old_size) * sizeof (int));
8433             }
8434           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8435           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8436         }
8437     }
8438
8439   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8440                                         inf_data->total_syscalls_count != 0,
8441                                         inf_data->any_syscall_count,
8442                                         VEC_length (int,
8443                                                     inf_data->syscalls_counts),
8444                                         VEC_address (int,
8445                                                      inf_data->syscalls_counts));
8446 }
8447
8448 /* Implement the "remove" breakpoint_ops method for syscall
8449    catchpoints.  */
8450
8451 static int
8452 remove_catch_syscall (struct bp_location *bl)
8453 {
8454   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8455   struct inferior *inf = current_inferior ();
8456   struct catch_syscall_inferior_data *inf_data
8457     = get_catch_syscall_inferior_data (inf);
8458
8459   --inf_data->total_syscalls_count;
8460   if (!c->syscalls_to_be_caught)
8461     --inf_data->any_syscall_count;
8462   else
8463     {
8464       int i, iter;
8465
8466       for (i = 0;
8467            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8468            i++)
8469         {
8470           int elem;
8471           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8472             /* Shouldn't happen.  */
8473             continue;
8474           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8475           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8476         }
8477     }
8478
8479   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8480                                         inf_data->total_syscalls_count != 0,
8481                                         inf_data->any_syscall_count,
8482                                         VEC_length (int,
8483                                                     inf_data->syscalls_counts),
8484                                         VEC_address (int,
8485                                                      inf_data->syscalls_counts));
8486 }
8487
8488 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8489    catchpoints.  */
8490
8491 static int
8492 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8493                               struct address_space *aspace, CORE_ADDR bp_addr,
8494                               const struct target_waitstatus *ws)
8495 {
8496   /* We must check if we are catching specific syscalls in this
8497      breakpoint.  If we are, then we must guarantee that the called
8498      syscall is the same syscall we are catching.  */
8499   int syscall_number = 0;
8500   const struct syscall_catchpoint *c
8501     = (const struct syscall_catchpoint *) bl->owner;
8502
8503   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8504       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8505     return 0;
8506
8507   syscall_number = ws->value.syscall_number;
8508
8509   /* Now, checking if the syscall is the same.  */
8510   if (c->syscalls_to_be_caught)
8511     {
8512       int i, iter;
8513
8514       for (i = 0;
8515            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8516            i++)
8517         if (syscall_number == iter)
8518           return 1;
8519
8520       return 0;
8521     }
8522
8523   return 1;
8524 }
8525
8526 /* Implement the "print_it" breakpoint_ops method for syscall
8527    catchpoints.  */
8528
8529 static enum print_stop_action
8530 print_it_catch_syscall (bpstat bs)
8531 {
8532   struct ui_out *uiout = current_uiout;
8533   struct breakpoint *b = bs->breakpoint_at;
8534   /* These are needed because we want to know in which state a
8535      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8536      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8537      must print "called syscall" or "returned from syscall".  */
8538   ptid_t ptid;
8539   struct target_waitstatus last;
8540   struct syscall s;
8541
8542   get_last_target_status (&ptid, &last);
8543
8544   get_syscall_by_number (last.value.syscall_number, &s);
8545
8546   annotate_catchpoint (b->number);
8547
8548   if (b->disposition == disp_del)
8549     ui_out_text (uiout, "\nTemporary catchpoint ");
8550   else
8551     ui_out_text (uiout, "\nCatchpoint ");
8552   if (ui_out_is_mi_like_p (uiout))
8553     {
8554       ui_out_field_string (uiout, "reason",
8555                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8556                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8557                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8558       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8559     }
8560   ui_out_field_int (uiout, "bkptno", b->number);
8561
8562   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8563     ui_out_text (uiout, " (call to syscall ");
8564   else
8565     ui_out_text (uiout, " (returned from syscall ");
8566
8567   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8568     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8569   if (s.name != NULL)
8570     ui_out_field_string (uiout, "syscall-name", s.name);
8571
8572   ui_out_text (uiout, "), ");
8573
8574   return PRINT_SRC_AND_LOC;
8575 }
8576
8577 /* Implement the "print_one" breakpoint_ops method for syscall
8578    catchpoints.  */
8579
8580 static void
8581 print_one_catch_syscall (struct breakpoint *b,
8582                          struct bp_location **last_loc)
8583 {
8584   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8585   struct value_print_options opts;
8586   struct ui_out *uiout = current_uiout;
8587
8588   get_user_print_options (&opts);
8589   /* Field 4, the address, is omitted (which makes the columns not
8590      line up too nicely with the headers, but the effect is relatively
8591      readable).  */
8592   if (opts.addressprint)
8593     ui_out_field_skip (uiout, "addr");
8594   annotate_field (5);
8595
8596   if (c->syscalls_to_be_caught
8597       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8598     ui_out_text (uiout, "syscalls \"");
8599   else
8600     ui_out_text (uiout, "syscall \"");
8601
8602   if (c->syscalls_to_be_caught)
8603     {
8604       int i, iter;
8605       char *text = xstrprintf ("%s", "");
8606
8607       for (i = 0;
8608            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8609            i++)
8610         {
8611           char *x = text;
8612           struct syscall s;
8613           get_syscall_by_number (iter, &s);
8614
8615           if (s.name != NULL)
8616             text = xstrprintf ("%s%s, ", text, s.name);
8617           else
8618             text = xstrprintf ("%s%d, ", text, iter);
8619
8620           /* We have to xfree the last 'text' (now stored at 'x')
8621              because xstrprintf dynamically allocates new space for it
8622              on every call.  */
8623           xfree (x);
8624         }
8625       /* Remove the last comma.  */
8626       text[strlen (text) - 2] = '\0';
8627       ui_out_field_string (uiout, "what", text);
8628     }
8629   else
8630     ui_out_field_string (uiout, "what", "<any syscall>");
8631   ui_out_text (uiout, "\" ");
8632
8633   if (ui_out_is_mi_like_p (uiout))
8634     ui_out_field_string (uiout, "catch-type", "syscall");
8635 }
8636
8637 /* Implement the "print_mention" breakpoint_ops method for syscall
8638    catchpoints.  */
8639
8640 static void
8641 print_mention_catch_syscall (struct breakpoint *b)
8642 {
8643   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8644
8645   if (c->syscalls_to_be_caught)
8646     {
8647       int i, iter;
8648
8649       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8650         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8651       else
8652         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8653
8654       for (i = 0;
8655            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8656            i++)
8657         {
8658           struct syscall s;
8659           get_syscall_by_number (iter, &s);
8660
8661           if (s.name)
8662             printf_filtered (" '%s' [%d]", s.name, s.number);
8663           else
8664             printf_filtered (" %d", s.number);
8665         }
8666       printf_filtered (")");
8667     }
8668   else
8669     printf_filtered (_("Catchpoint %d (any syscall)"),
8670                      b->number);
8671 }
8672
8673 /* Implement the "print_recreate" breakpoint_ops method for syscall
8674    catchpoints.  */
8675
8676 static void
8677 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8678 {
8679   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8680
8681   fprintf_unfiltered (fp, "catch syscall");
8682
8683   if (c->syscalls_to_be_caught)
8684     {
8685       int i, iter;
8686
8687       for (i = 0;
8688            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8689            i++)
8690         {
8691           struct syscall s;
8692
8693           get_syscall_by_number (iter, &s);
8694           if (s.name)
8695             fprintf_unfiltered (fp, " %s", s.name);
8696           else
8697             fprintf_unfiltered (fp, " %d", s.number);
8698         }
8699     }
8700   print_recreate_thread (b, fp);
8701 }
8702
8703 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8704
8705 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8706
8707 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8708
8709 static int
8710 syscall_catchpoint_p (struct breakpoint *b)
8711 {
8712   return (b->ops == &catch_syscall_breakpoint_ops);
8713 }
8714
8715 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8716    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8717    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8718    the breakpoint_ops structure associated to the catchpoint.  */
8719
8720 void
8721 init_catchpoint (struct breakpoint *b,
8722                  struct gdbarch *gdbarch, int tempflag,
8723                  char *cond_string,
8724                  const struct breakpoint_ops *ops)
8725 {
8726   struct symtab_and_line sal;
8727
8728   init_sal (&sal);
8729   sal.pspace = current_program_space;
8730
8731   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8732
8733   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8734   b->disposition = tempflag ? disp_del : disp_donttouch;
8735 }
8736
8737 void
8738 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8739 {
8740   add_to_breakpoint_chain (b);
8741   set_breakpoint_number (internal, b);
8742   if (is_tracepoint (b))
8743     set_tracepoint_count (breakpoint_count);
8744   if (!internal)
8745     mention (b);
8746   observer_notify_breakpoint_created (b);
8747
8748   if (update_gll)
8749     update_global_location_list (1);
8750 }
8751
8752 static void
8753 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8754                                     int tempflag, char *cond_string,
8755                                     const struct breakpoint_ops *ops)
8756 {
8757   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8758
8759   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8760
8761   c->forked_inferior_pid = null_ptid;
8762
8763   install_breakpoint (0, &c->base, 1);
8764 }
8765
8766 /* Exec catchpoints.  */
8767
8768 /* An instance of this type is used to represent an exec catchpoint.
8769    It includes a "struct breakpoint" as a kind of base class; users
8770    downcast to "struct breakpoint *" when needed.  A breakpoint is
8771    really of this type iff its ops pointer points to
8772    CATCH_EXEC_BREAKPOINT_OPS.  */
8773
8774 struct exec_catchpoint
8775 {
8776   /* The base class.  */
8777   struct breakpoint base;
8778
8779   /* Filename of a program whose exec triggered this catchpoint.
8780      This field is only valid immediately after this catchpoint has
8781      triggered.  */
8782   char *exec_pathname;
8783 };
8784
8785 /* Implement the "dtor" breakpoint_ops method for exec
8786    catchpoints.  */
8787
8788 static void
8789 dtor_catch_exec (struct breakpoint *b)
8790 {
8791   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8792
8793   xfree (c->exec_pathname);
8794
8795   base_breakpoint_ops.dtor (b);
8796 }
8797
8798 static int
8799 insert_catch_exec (struct bp_location *bl)
8800 {
8801   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8802 }
8803
8804 static int
8805 remove_catch_exec (struct bp_location *bl)
8806 {
8807   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8808 }
8809
8810 static int
8811 breakpoint_hit_catch_exec (const struct bp_location *bl,
8812                            struct address_space *aspace, CORE_ADDR bp_addr,
8813                            const struct target_waitstatus *ws)
8814 {
8815   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8816
8817   if (ws->kind != TARGET_WAITKIND_EXECD)
8818     return 0;
8819
8820   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8821   return 1;
8822 }
8823
8824 static enum print_stop_action
8825 print_it_catch_exec (bpstat bs)
8826 {
8827   struct ui_out *uiout = current_uiout;
8828   struct breakpoint *b = bs->breakpoint_at;
8829   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8830
8831   annotate_catchpoint (b->number);
8832   if (b->disposition == disp_del)
8833     ui_out_text (uiout, "\nTemporary catchpoint ");
8834   else
8835     ui_out_text (uiout, "\nCatchpoint ");
8836   if (ui_out_is_mi_like_p (uiout))
8837     {
8838       ui_out_field_string (uiout, "reason",
8839                            async_reason_lookup (EXEC_ASYNC_EXEC));
8840       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8841     }
8842   ui_out_field_int (uiout, "bkptno", b->number);
8843   ui_out_text (uiout, " (exec'd ");
8844   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8845   ui_out_text (uiout, "), ");
8846
8847   return PRINT_SRC_AND_LOC;
8848 }
8849
8850 static void
8851 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8852 {
8853   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8854   struct value_print_options opts;
8855   struct ui_out *uiout = current_uiout;
8856
8857   get_user_print_options (&opts);
8858
8859   /* Field 4, the address, is omitted (which makes the columns
8860      not line up too nicely with the headers, but the effect
8861      is relatively readable).  */
8862   if (opts.addressprint)
8863     ui_out_field_skip (uiout, "addr");
8864   annotate_field (5);
8865   ui_out_text (uiout, "exec");
8866   if (c->exec_pathname != NULL)
8867     {
8868       ui_out_text (uiout, ", program \"");
8869       ui_out_field_string (uiout, "what", c->exec_pathname);
8870       ui_out_text (uiout, "\" ");
8871     }
8872
8873   if (ui_out_is_mi_like_p (uiout))
8874     ui_out_field_string (uiout, "catch-type", "exec");
8875 }
8876
8877 static void
8878 print_mention_catch_exec (struct breakpoint *b)
8879 {
8880   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8881 }
8882
8883 /* Implement the "print_recreate" breakpoint_ops method for exec
8884    catchpoints.  */
8885
8886 static void
8887 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8888 {
8889   fprintf_unfiltered (fp, "catch exec");
8890   print_recreate_thread (b, fp);
8891 }
8892
8893 static struct breakpoint_ops catch_exec_breakpoint_ops;
8894
8895 static void
8896 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
8897                                  const struct breakpoint_ops *ops)
8898 {
8899   struct syscall_catchpoint *c;
8900   struct gdbarch *gdbarch = get_current_arch ();
8901
8902   c = XNEW (struct syscall_catchpoint);
8903   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
8904   c->syscalls_to_be_caught = filter;
8905
8906   install_breakpoint (0, &c->base, 1);
8907 }
8908
8909 static int
8910 hw_breakpoint_used_count (void)
8911 {
8912   int i = 0;
8913   struct breakpoint *b;
8914   struct bp_location *bl;
8915
8916   ALL_BREAKPOINTS (b)
8917   {
8918     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8919       for (bl = b->loc; bl; bl = bl->next)
8920         {
8921           /* Special types of hardware breakpoints may use more than
8922              one register.  */
8923           i += b->ops->resources_needed (bl);
8924         }
8925   }
8926
8927   return i;
8928 }
8929
8930 /* Returns the resources B would use if it were a hardware
8931    watchpoint.  */
8932
8933 static int
8934 hw_watchpoint_use_count (struct breakpoint *b)
8935 {
8936   int i = 0;
8937   struct bp_location *bl;
8938
8939   if (!breakpoint_enabled (b))
8940     return 0;
8941
8942   for (bl = b->loc; bl; bl = bl->next)
8943     {
8944       /* Special types of hardware watchpoints may use more than
8945          one register.  */
8946       i += b->ops->resources_needed (bl);
8947     }
8948
8949   return i;
8950 }
8951
8952 /* Returns the sum the used resources of all hardware watchpoints of
8953    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8954    the sum of the used resources of all hardware watchpoints of other
8955    types _not_ TYPE.  */
8956
8957 static int
8958 hw_watchpoint_used_count_others (struct breakpoint *except,
8959                                  enum bptype type, int *other_type_used)
8960 {
8961   int i = 0;
8962   struct breakpoint *b;
8963
8964   *other_type_used = 0;
8965   ALL_BREAKPOINTS (b)
8966     {
8967       if (b == except)
8968         continue;
8969       if (!breakpoint_enabled (b))
8970         continue;
8971
8972       if (b->type == type)
8973         i += hw_watchpoint_use_count (b);
8974       else if (is_hardware_watchpoint (b))
8975         *other_type_used = 1;
8976     }
8977
8978   return i;
8979 }
8980
8981 void
8982 disable_watchpoints_before_interactive_call_start (void)
8983 {
8984   struct breakpoint *b;
8985
8986   ALL_BREAKPOINTS (b)
8987   {
8988     if (is_watchpoint (b) && breakpoint_enabled (b))
8989       {
8990         b->enable_state = bp_call_disabled;
8991         update_global_location_list (0);
8992       }
8993   }
8994 }
8995
8996 void
8997 enable_watchpoints_after_interactive_call_stop (void)
8998 {
8999   struct breakpoint *b;
9000
9001   ALL_BREAKPOINTS (b)
9002   {
9003     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
9004       {
9005         b->enable_state = bp_enabled;
9006         update_global_location_list (1);
9007       }
9008   }
9009 }
9010
9011 void
9012 disable_breakpoints_before_startup (void)
9013 {
9014   current_program_space->executing_startup = 1;
9015   update_global_location_list (0);
9016 }
9017
9018 void
9019 enable_breakpoints_after_startup (void)
9020 {
9021   current_program_space->executing_startup = 0;
9022   breakpoint_re_set ();
9023 }
9024
9025
9026 /* Set a breakpoint that will evaporate an end of command
9027    at address specified by SAL.
9028    Restrict it to frame FRAME if FRAME is nonzero.  */
9029
9030 struct breakpoint *
9031 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
9032                           struct frame_id frame_id, enum bptype type)
9033 {
9034   struct breakpoint *b;
9035
9036   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
9037      tail-called one.  */
9038   gdb_assert (!frame_id_artificial_p (frame_id));
9039
9040   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
9041   b->enable_state = bp_enabled;
9042   b->disposition = disp_donttouch;
9043   b->frame_id = frame_id;
9044
9045   /* If we're debugging a multi-threaded program, then we want
9046      momentary breakpoints to be active in only a single thread of
9047      control.  */
9048   if (in_thread_list (inferior_ptid))
9049     b->thread = pid_to_thread_id (inferior_ptid);
9050
9051   update_global_location_list_nothrow (1);
9052
9053   return b;
9054 }
9055
9056 /* Make a momentary breakpoint based on the master breakpoint ORIG.
9057    The new breakpoint will have type TYPE, use OPS as its
9058    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
9059
9060 static struct breakpoint *
9061 momentary_breakpoint_from_master (struct breakpoint *orig,
9062                                   enum bptype type,
9063                                   const struct breakpoint_ops *ops,
9064                                   int loc_enabled)
9065 {
9066   struct breakpoint *copy;
9067
9068   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
9069   copy->loc = allocate_bp_location (copy);
9070   set_breakpoint_location_function (copy->loc, 1);
9071
9072   copy->loc->gdbarch = orig->loc->gdbarch;
9073   copy->loc->requested_address = orig->loc->requested_address;
9074   copy->loc->address = orig->loc->address;
9075   copy->loc->section = orig->loc->section;
9076   copy->loc->pspace = orig->loc->pspace;
9077   copy->loc->probe = orig->loc->probe;
9078   copy->loc->line_number = orig->loc->line_number;
9079   copy->loc->symtab = orig->loc->symtab;
9080   copy->loc->enabled = loc_enabled;
9081   copy->frame_id = orig->frame_id;
9082   copy->thread = orig->thread;
9083   copy->pspace = orig->pspace;
9084
9085   copy->enable_state = bp_enabled;
9086   copy->disposition = disp_donttouch;
9087   copy->number = internal_breakpoint_number--;
9088
9089   update_global_location_list_nothrow (0);
9090   return copy;
9091 }
9092
9093 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
9094    ORIG is NULL.  */
9095
9096 struct breakpoint *
9097 clone_momentary_breakpoint (struct breakpoint *orig)
9098 {
9099   /* If there's nothing to clone, then return nothing.  */
9100   if (orig == NULL)
9101     return NULL;
9102
9103   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9104 }
9105
9106 struct breakpoint *
9107 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9108                                 enum bptype type)
9109 {
9110   struct symtab_and_line sal;
9111
9112   sal = find_pc_line (pc, 0);
9113   sal.pc = pc;
9114   sal.section = find_pc_overlay (pc);
9115   sal.explicit_pc = 1;
9116
9117   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9118 }
9119 \f
9120
9121 /* Tell the user we have just set a breakpoint B.  */
9122
9123 static void
9124 mention (struct breakpoint *b)
9125 {
9126   b->ops->print_mention (b);
9127   if (ui_out_is_mi_like_p (current_uiout))
9128     return;
9129   printf_filtered ("\n");
9130 }
9131 \f
9132
9133 static struct bp_location *
9134 add_location_to_breakpoint (struct breakpoint *b,
9135                             const struct symtab_and_line *sal)
9136 {
9137   struct bp_location *loc, **tmp;
9138   CORE_ADDR adjusted_address;
9139   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9140
9141   if (loc_gdbarch == NULL)
9142     loc_gdbarch = b->gdbarch;
9143
9144   /* Adjust the breakpoint's address prior to allocating a location.
9145      Once we call allocate_bp_location(), that mostly uninitialized
9146      location will be placed on the location chain.  Adjustment of the
9147      breakpoint may cause target_read_memory() to be called and we do
9148      not want its scan of the location chain to find a breakpoint and
9149      location that's only been partially initialized.  */
9150   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9151                                                 sal->pc, b->type);
9152
9153   /* Sort the locations by their ADDRESS.  */
9154   loc = allocate_bp_location (b);
9155   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9156        tmp = &((*tmp)->next))
9157     ;
9158   loc->next = *tmp;
9159   *tmp = loc;
9160
9161   loc->requested_address = sal->pc;
9162   loc->address = adjusted_address;
9163   loc->pspace = sal->pspace;
9164   loc->probe.probe = sal->probe;
9165   loc->probe.objfile = sal->objfile;
9166   gdb_assert (loc->pspace != NULL);
9167   loc->section = sal->section;
9168   loc->gdbarch = loc_gdbarch;
9169   loc->line_number = sal->line;
9170   loc->symtab = sal->symtab;
9171
9172   set_breakpoint_location_function (loc,
9173                                     sal->explicit_pc || sal->explicit_line);
9174   return loc;
9175 }
9176 \f
9177
9178 /* Return 1 if LOC is pointing to a permanent breakpoint, 
9179    return 0 otherwise.  */
9180
9181 static int
9182 bp_loc_is_permanent (struct bp_location *loc)
9183 {
9184   int len;
9185   CORE_ADDR addr;
9186   const gdb_byte *bpoint;
9187   gdb_byte *target_mem;
9188   struct cleanup *cleanup;
9189   int retval = 0;
9190
9191   gdb_assert (loc != NULL);
9192
9193   addr = loc->address;
9194   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
9195
9196   /* Software breakpoints unsupported?  */
9197   if (bpoint == NULL)
9198     return 0;
9199
9200   target_mem = alloca (len);
9201
9202   /* Enable the automatic memory restoration from breakpoints while
9203      we read the memory.  Otherwise we could say about our temporary
9204      breakpoints they are permanent.  */
9205   cleanup = save_current_space_and_thread ();
9206
9207   switch_to_program_space_and_thread (loc->pspace);
9208   make_show_memory_breakpoints_cleanup (0);
9209
9210   if (target_read_memory (loc->address, target_mem, len) == 0
9211       && memcmp (target_mem, bpoint, len) == 0)
9212     retval = 1;
9213
9214   do_cleanups (cleanup);
9215
9216   return retval;
9217 }
9218
9219 /* Build a command list for the dprintf corresponding to the current
9220    settings of the dprintf style options.  */
9221
9222 static void
9223 update_dprintf_command_list (struct breakpoint *b)
9224 {
9225   char *dprintf_args = b->extra_string;
9226   char *printf_line = NULL;
9227
9228   if (!dprintf_args)
9229     return;
9230
9231   dprintf_args = skip_spaces (dprintf_args);
9232
9233   /* Allow a comma, as it may have terminated a location, but don't
9234      insist on it.  */
9235   if (*dprintf_args == ',')
9236     ++dprintf_args;
9237   dprintf_args = skip_spaces (dprintf_args);
9238
9239   if (*dprintf_args != '"')
9240     error (_("Bad format string, missing '\"'."));
9241
9242   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9243     printf_line = xstrprintf ("printf %s", dprintf_args);
9244   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9245     {
9246       if (!dprintf_function)
9247         error (_("No function supplied for dprintf call"));
9248
9249       if (dprintf_channel && strlen (dprintf_channel) > 0)
9250         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9251                                   dprintf_function,
9252                                   dprintf_channel,
9253                                   dprintf_args);
9254       else
9255         printf_line = xstrprintf ("call (void) %s (%s)",
9256                                   dprintf_function,
9257                                   dprintf_args);
9258     }
9259   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9260     {
9261       if (target_can_run_breakpoint_commands ())
9262         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9263       else
9264         {
9265           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9266           printf_line = xstrprintf ("printf %s", dprintf_args);
9267         }
9268     }
9269   else
9270     internal_error (__FILE__, __LINE__,
9271                     _("Invalid dprintf style."));
9272
9273   gdb_assert (printf_line != NULL);
9274   /* Manufacture a printf sequence.  */
9275   {
9276     struct command_line *printf_cmd_line
9277       = xmalloc (sizeof (struct command_line));
9278
9279     printf_cmd_line = xmalloc (sizeof (struct command_line));
9280     printf_cmd_line->control_type = simple_control;
9281     printf_cmd_line->body_count = 0;
9282     printf_cmd_line->body_list = NULL;
9283     printf_cmd_line->next = NULL;
9284     printf_cmd_line->line = printf_line;
9285
9286     breakpoint_set_commands (b, printf_cmd_line);
9287   }
9288 }
9289
9290 /* Update all dprintf commands, making their command lists reflect
9291    current style settings.  */
9292
9293 static void
9294 update_dprintf_commands (char *args, int from_tty,
9295                          struct cmd_list_element *c)
9296 {
9297   struct breakpoint *b;
9298
9299   ALL_BREAKPOINTS (b)
9300     {
9301       if (b->type == bp_dprintf)
9302         update_dprintf_command_list (b);
9303     }
9304 }
9305
9306 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9307    as textual description of the location, and COND_STRING
9308    as condition expression.  */
9309
9310 static void
9311 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9312                      struct symtabs_and_lines sals, char *addr_string,
9313                      char *filter, char *cond_string,
9314                      char *extra_string,
9315                      enum bptype type, enum bpdisp disposition,
9316                      int thread, int task, int ignore_count,
9317                      const struct breakpoint_ops *ops, int from_tty,
9318                      int enabled, int internal, unsigned flags,
9319                      int display_canonical)
9320 {
9321   int i;
9322
9323   if (type == bp_hardware_breakpoint)
9324     {
9325       int target_resources_ok;
9326
9327       i = hw_breakpoint_used_count ();
9328       target_resources_ok =
9329         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9330                                             i + 1, 0);
9331       if (target_resources_ok == 0)
9332         error (_("No hardware breakpoint support in the target."));
9333       else if (target_resources_ok < 0)
9334         error (_("Hardware breakpoints used exceeds limit."));
9335     }
9336
9337   gdb_assert (sals.nelts > 0);
9338
9339   for (i = 0; i < sals.nelts; ++i)
9340     {
9341       struct symtab_and_line sal = sals.sals[i];
9342       struct bp_location *loc;
9343
9344       if (from_tty)
9345         {
9346           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9347           if (!loc_gdbarch)
9348             loc_gdbarch = gdbarch;
9349
9350           describe_other_breakpoints (loc_gdbarch,
9351                                       sal.pspace, sal.pc, sal.section, thread);
9352         }
9353
9354       if (i == 0)
9355         {
9356           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9357           b->thread = thread;
9358           b->task = task;
9359
9360           b->cond_string = cond_string;
9361           b->extra_string = extra_string;
9362           b->ignore_count = ignore_count;
9363           b->enable_state = enabled ? bp_enabled : bp_disabled;
9364           b->disposition = disposition;
9365
9366           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9367             b->loc->inserted = 1;
9368
9369           if (type == bp_static_tracepoint)
9370             {
9371               struct tracepoint *t = (struct tracepoint *) b;
9372               struct static_tracepoint_marker marker;
9373
9374               if (strace_marker_p (b))
9375                 {
9376                   /* We already know the marker exists, otherwise, we
9377                      wouldn't see a sal for it.  */
9378                   char *p = &addr_string[3];
9379                   char *endp;
9380                   char *marker_str;
9381
9382                   p = skip_spaces (p);
9383
9384                   endp = skip_to_space (p);
9385
9386                   marker_str = savestring (p, endp - p);
9387                   t->static_trace_marker_id = marker_str;
9388
9389                   printf_filtered (_("Probed static tracepoint "
9390                                      "marker \"%s\"\n"),
9391                                    t->static_trace_marker_id);
9392                 }
9393               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9394                 {
9395                   t->static_trace_marker_id = xstrdup (marker.str_id);
9396                   release_static_tracepoint_marker (&marker);
9397
9398                   printf_filtered (_("Probed static tracepoint "
9399                                      "marker \"%s\"\n"),
9400                                    t->static_trace_marker_id);
9401                 }
9402               else
9403                 warning (_("Couldn't determine the static "
9404                            "tracepoint marker to probe"));
9405             }
9406
9407           loc = b->loc;
9408         }
9409       else
9410         {
9411           loc = add_location_to_breakpoint (b, &sal);
9412           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9413             loc->inserted = 1;
9414         }
9415
9416       if (bp_loc_is_permanent (loc))
9417         make_breakpoint_permanent (b);
9418
9419       if (b->cond_string)
9420         {
9421           const char *arg = b->cond_string;
9422
9423           loc->cond = parse_exp_1 (&arg, loc->address,
9424                                    block_for_pc (loc->address), 0);
9425           if (*arg)
9426               error (_("Garbage '%s' follows condition"), arg);
9427         }
9428
9429       /* Dynamic printf requires and uses additional arguments on the
9430          command line, otherwise it's an error.  */
9431       if (type == bp_dprintf)
9432         {
9433           if (b->extra_string)
9434             update_dprintf_command_list (b);
9435           else
9436             error (_("Format string required"));
9437         }
9438       else if (b->extra_string)
9439         error (_("Garbage '%s' at end of command"), b->extra_string);
9440     }
9441
9442   b->display_canonical = display_canonical;
9443   if (addr_string)
9444     b->addr_string = addr_string;
9445   else
9446     /* addr_string has to be used or breakpoint_re_set will delete
9447        me.  */
9448     b->addr_string
9449       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9450   b->filter = filter;
9451 }
9452
9453 static void
9454 create_breakpoint_sal (struct gdbarch *gdbarch,
9455                        struct symtabs_and_lines sals, char *addr_string,
9456                        char *filter, char *cond_string,
9457                        char *extra_string,
9458                        enum bptype type, enum bpdisp disposition,
9459                        int thread, int task, int ignore_count,
9460                        const struct breakpoint_ops *ops, int from_tty,
9461                        int enabled, int internal, unsigned flags,
9462                        int display_canonical)
9463 {
9464   struct breakpoint *b;
9465   struct cleanup *old_chain;
9466
9467   if (is_tracepoint_type (type))
9468     {
9469       struct tracepoint *t;
9470
9471       t = XCNEW (struct tracepoint);
9472       b = &t->base;
9473     }
9474   else
9475     b = XNEW (struct breakpoint);
9476
9477   old_chain = make_cleanup (xfree, b);
9478
9479   init_breakpoint_sal (b, gdbarch,
9480                        sals, addr_string,
9481                        filter, cond_string, extra_string,
9482                        type, disposition,
9483                        thread, task, ignore_count,
9484                        ops, from_tty,
9485                        enabled, internal, flags,
9486                        display_canonical);
9487   discard_cleanups (old_chain);
9488
9489   install_breakpoint (internal, b, 0);
9490 }
9491
9492 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9493    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9494    value.  COND_STRING, if not NULL, specified the condition to be
9495    used for all breakpoints.  Essentially the only case where
9496    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9497    function.  In that case, it's still not possible to specify
9498    separate conditions for different overloaded functions, so
9499    we take just a single condition string.
9500    
9501    NOTE: If the function succeeds, the caller is expected to cleanup
9502    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9503    array contents).  If the function fails (error() is called), the
9504    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9505    COND and SALS arrays and each of those arrays contents.  */
9506
9507 static void
9508 create_breakpoints_sal (struct gdbarch *gdbarch,
9509                         struct linespec_result *canonical,
9510                         char *cond_string, char *extra_string,
9511                         enum bptype type, enum bpdisp disposition,
9512                         int thread, int task, int ignore_count,
9513                         const struct breakpoint_ops *ops, int from_tty,
9514                         int enabled, int internal, unsigned flags)
9515 {
9516   int i;
9517   struct linespec_sals *lsal;
9518
9519   if (canonical->pre_expanded)
9520     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9521
9522   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9523     {
9524       /* Note that 'addr_string' can be NULL in the case of a plain
9525          'break', without arguments.  */
9526       char *addr_string = (canonical->addr_string
9527                            ? xstrdup (canonical->addr_string)
9528                            : NULL);
9529       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9530       struct cleanup *inner = make_cleanup (xfree, addr_string);
9531
9532       make_cleanup (xfree, filter_string);
9533       create_breakpoint_sal (gdbarch, lsal->sals,
9534                              addr_string,
9535                              filter_string,
9536                              cond_string, extra_string,
9537                              type, disposition,
9538                              thread, task, ignore_count, ops,
9539                              from_tty, enabled, internal, flags,
9540                              canonical->special_display);
9541       discard_cleanups (inner);
9542     }
9543 }
9544
9545 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9546    followed by conditionals.  On return, SALS contains an array of SAL
9547    addresses found.  ADDR_STRING contains a vector of (canonical)
9548    address strings.  ADDRESS points to the end of the SAL.
9549
9550    The array and the line spec strings are allocated on the heap, it is
9551    the caller's responsibility to free them.  */
9552
9553 static void
9554 parse_breakpoint_sals (char **address,
9555                        struct linespec_result *canonical)
9556 {
9557   /* If no arg given, or if first arg is 'if ', use the default
9558      breakpoint.  */
9559   if ((*address) == NULL
9560       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9561     {
9562       /* The last displayed codepoint, if it's valid, is our default breakpoint
9563          address.  */
9564       if (last_displayed_sal_is_valid ())
9565         {
9566           struct linespec_sals lsal;
9567           struct symtab_and_line sal;
9568           CORE_ADDR pc;
9569
9570           init_sal (&sal);              /* Initialize to zeroes.  */
9571           lsal.sals.sals = (struct symtab_and_line *)
9572             xmalloc (sizeof (struct symtab_and_line));
9573
9574           /* Set sal's pspace, pc, symtab, and line to the values
9575              corresponding to the last call to print_frame_info.
9576              Be sure to reinitialize LINE with NOTCURRENT == 0
9577              as the breakpoint line number is inappropriate otherwise.
9578              find_pc_line would adjust PC, re-set it back.  */
9579           get_last_displayed_sal (&sal);
9580           pc = sal.pc;
9581           sal = find_pc_line (pc, 0);
9582
9583           /* "break" without arguments is equivalent to "break *PC"
9584              where PC is the last displayed codepoint's address.  So
9585              make sure to set sal.explicit_pc to prevent GDB from
9586              trying to expand the list of sals to include all other
9587              instances with the same symtab and line.  */
9588           sal.pc = pc;
9589           sal.explicit_pc = 1;
9590
9591           lsal.sals.sals[0] = sal;
9592           lsal.sals.nelts = 1;
9593           lsal.canonical = NULL;
9594
9595           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9596         }
9597       else
9598         error (_("No default breakpoint address now."));
9599     }
9600   else
9601     {
9602       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9603
9604       /* Force almost all breakpoints to be in terms of the
9605          current_source_symtab (which is decode_line_1's default).
9606          This should produce the results we want almost all of the
9607          time while leaving default_breakpoint_* alone.
9608
9609          ObjC: However, don't match an Objective-C method name which
9610          may have a '+' or '-' succeeded by a '['.  */
9611       if (last_displayed_sal_is_valid ()
9612           && (!cursal.symtab
9613               || ((strchr ("+-", (*address)[0]) != NULL)
9614                   && ((*address)[1] != '['))))
9615         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9616                           get_last_displayed_symtab (),
9617                           get_last_displayed_line (),
9618                           canonical, NULL, NULL);
9619       else
9620         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9621                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9622     }
9623 }
9624
9625
9626 /* Convert each SAL into a real PC.  Verify that the PC can be
9627    inserted as a breakpoint.  If it can't throw an error.  */
9628
9629 static void
9630 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9631 {    
9632   int i;
9633
9634   for (i = 0; i < sals->nelts; i++)
9635     resolve_sal_pc (&sals->sals[i]);
9636 }
9637
9638 /* Fast tracepoints may have restrictions on valid locations.  For
9639    instance, a fast tracepoint using a jump instead of a trap will
9640    likely have to overwrite more bytes than a trap would, and so can
9641    only be placed where the instruction is longer than the jump, or a
9642    multi-instruction sequence does not have a jump into the middle of
9643    it, etc.  */
9644
9645 static void
9646 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9647                             struct symtabs_and_lines *sals)
9648 {
9649   int i, rslt;
9650   struct symtab_and_line *sal;
9651   char *msg;
9652   struct cleanup *old_chain;
9653
9654   for (i = 0; i < sals->nelts; i++)
9655     {
9656       struct gdbarch *sarch;
9657
9658       sal = &sals->sals[i];
9659
9660       sarch = get_sal_arch (*sal);
9661       /* We fall back to GDBARCH if there is no architecture
9662          associated with SAL.  */
9663       if (sarch == NULL)
9664         sarch = gdbarch;
9665       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9666                                                NULL, &msg);
9667       old_chain = make_cleanup (xfree, msg);
9668
9669       if (!rslt)
9670         error (_("May not have a fast tracepoint at 0x%s%s"),
9671                paddress (sarch, sal->pc), (msg ? msg : ""));
9672
9673       do_cleanups (old_chain);
9674     }
9675 }
9676
9677 /* Issue an invalid thread ID error.  */
9678
9679 static void ATTRIBUTE_NORETURN
9680 invalid_thread_id_error (int id)
9681 {
9682   error (_("Unknown thread %d."), id);
9683 }
9684
9685 /* Given TOK, a string specification of condition and thread, as
9686    accepted by the 'break' command, extract the condition
9687    string and thread number and set *COND_STRING and *THREAD.
9688    PC identifies the context at which the condition should be parsed.
9689    If no condition is found, *COND_STRING is set to NULL.
9690    If no thread is found, *THREAD is set to -1.  */
9691
9692 static void
9693 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9694                            char **cond_string, int *thread, int *task,
9695                            char **rest)
9696 {
9697   *cond_string = NULL;
9698   *thread = -1;
9699   *task = 0;
9700   *rest = NULL;
9701
9702   while (tok && *tok)
9703     {
9704       const char *end_tok;
9705       int toklen;
9706       const char *cond_start = NULL;
9707       const char *cond_end = NULL;
9708
9709       tok = skip_spaces_const (tok);
9710
9711       if ((*tok == '"' || *tok == ',') && rest)
9712         {
9713           *rest = savestring (tok, strlen (tok));
9714           return;
9715         }
9716
9717       end_tok = skip_to_space_const (tok);
9718
9719       toklen = end_tok - tok;
9720
9721       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9722         {
9723           struct expression *expr;
9724
9725           tok = cond_start = end_tok + 1;
9726           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9727           xfree (expr);
9728           cond_end = tok;
9729           *cond_string = savestring (cond_start, cond_end - cond_start);
9730         }
9731       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9732         {
9733           char *tmptok;
9734
9735           tok = end_tok + 1;
9736           *thread = strtol (tok, &tmptok, 0);
9737           if (tok == tmptok)
9738             error (_("Junk after thread keyword."));
9739           if (!valid_thread_id (*thread))
9740             invalid_thread_id_error (*thread);
9741           tok = tmptok;
9742         }
9743       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9744         {
9745           char *tmptok;
9746
9747           tok = end_tok + 1;
9748           *task = strtol (tok, &tmptok, 0);
9749           if (tok == tmptok)
9750             error (_("Junk after task keyword."));
9751           if (!valid_task_id (*task))
9752             error (_("Unknown task %d."), *task);
9753           tok = tmptok;
9754         }
9755       else if (rest)
9756         {
9757           *rest = savestring (tok, strlen (tok));
9758           return;
9759         }
9760       else
9761         error (_("Junk at end of arguments."));
9762     }
9763 }
9764
9765 /* Decode a static tracepoint marker spec.  */
9766
9767 static struct symtabs_and_lines
9768 decode_static_tracepoint_spec (char **arg_p)
9769 {
9770   VEC(static_tracepoint_marker_p) *markers = NULL;
9771   struct symtabs_and_lines sals;
9772   struct cleanup *old_chain;
9773   char *p = &(*arg_p)[3];
9774   char *endp;
9775   char *marker_str;
9776   int i;
9777
9778   p = skip_spaces (p);
9779
9780   endp = skip_to_space (p);
9781
9782   marker_str = savestring (p, endp - p);
9783   old_chain = make_cleanup (xfree, marker_str);
9784
9785   markers = target_static_tracepoint_markers_by_strid (marker_str);
9786   if (VEC_empty(static_tracepoint_marker_p, markers))
9787     error (_("No known static tracepoint marker named %s"), marker_str);
9788
9789   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9790   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9791
9792   for (i = 0; i < sals.nelts; i++)
9793     {
9794       struct static_tracepoint_marker *marker;
9795
9796       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9797
9798       init_sal (&sals.sals[i]);
9799
9800       sals.sals[i] = find_pc_line (marker->address, 0);
9801       sals.sals[i].pc = marker->address;
9802
9803       release_static_tracepoint_marker (marker);
9804     }
9805
9806   do_cleanups (old_chain);
9807
9808   *arg_p = endp;
9809   return sals;
9810 }
9811
9812 /* Set a breakpoint.  This function is shared between CLI and MI
9813    functions for setting a breakpoint.  This function has two major
9814    modes of operations, selected by the PARSE_ARG parameter.  If
9815    non-zero, the function will parse ARG, extracting location,
9816    condition, thread and extra string.  Otherwise, ARG is just the
9817    breakpoint's location, with condition, thread, and extra string
9818    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9819    If INTERNAL is non-zero, the breakpoint number will be allocated
9820    from the internal breakpoint count.  Returns true if any breakpoint
9821    was created; false otherwise.  */
9822
9823 int
9824 create_breakpoint (struct gdbarch *gdbarch,
9825                    char *arg, char *cond_string,
9826                    int thread, char *extra_string,
9827                    int parse_arg,
9828                    int tempflag, enum bptype type_wanted,
9829                    int ignore_count,
9830                    enum auto_boolean pending_break_support,
9831                    const struct breakpoint_ops *ops,
9832                    int from_tty, int enabled, int internal,
9833                    unsigned flags)
9834 {
9835   volatile struct gdb_exception e;
9836   char *copy_arg = NULL;
9837   char *addr_start = arg;
9838   struct linespec_result canonical;
9839   struct cleanup *old_chain;
9840   struct cleanup *bkpt_chain = NULL;
9841   int pending = 0;
9842   int task = 0;
9843   int prev_bkpt_count = breakpoint_count;
9844
9845   gdb_assert (ops != NULL);
9846
9847   init_linespec_result (&canonical);
9848
9849   TRY_CATCH (e, RETURN_MASK_ALL)
9850     {
9851       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9852                                      addr_start, &copy_arg);
9853     }
9854
9855   /* If caller is interested in rc value from parse, set value.  */
9856   switch (e.reason)
9857     {
9858     case GDB_NO_ERROR:
9859       if (VEC_empty (linespec_sals, canonical.sals))
9860         return 0;
9861       break;
9862     case RETURN_ERROR:
9863       switch (e.error)
9864         {
9865         case NOT_FOUND_ERROR:
9866
9867           /* If pending breakpoint support is turned off, throw
9868              error.  */
9869
9870           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9871             throw_exception (e);
9872
9873           exception_print (gdb_stderr, e);
9874
9875           /* If pending breakpoint support is auto query and the user
9876              selects no, then simply return the error code.  */
9877           if (pending_break_support == AUTO_BOOLEAN_AUTO
9878               && !nquery (_("Make %s pending on future shared library load? "),
9879                           bptype_string (type_wanted)))
9880             return 0;
9881
9882           /* At this point, either the user was queried about setting
9883              a pending breakpoint and selected yes, or pending
9884              breakpoint behavior is on and thus a pending breakpoint
9885              is defaulted on behalf of the user.  */
9886           {
9887             struct linespec_sals lsal;
9888
9889             copy_arg = xstrdup (addr_start);
9890             lsal.canonical = xstrdup (copy_arg);
9891             lsal.sals.nelts = 1;
9892             lsal.sals.sals = XNEW (struct symtab_and_line);
9893             init_sal (&lsal.sals.sals[0]);
9894             pending = 1;
9895             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9896           }
9897           break;
9898         default:
9899           throw_exception (e);
9900         }
9901       break;
9902     default:
9903       throw_exception (e);
9904     }
9905
9906   /* Create a chain of things that always need to be cleaned up.  */
9907   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9908
9909   /* ----------------------------- SNIP -----------------------------
9910      Anything added to the cleanup chain beyond this point is assumed
9911      to be part of a breakpoint.  If the breakpoint create succeeds
9912      then the memory is not reclaimed.  */
9913   bkpt_chain = make_cleanup (null_cleanup, 0);
9914
9915   /* Resolve all line numbers to PC's and verify that the addresses
9916      are ok for the target.  */
9917   if (!pending)
9918     {
9919       int ix;
9920       struct linespec_sals *iter;
9921
9922       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9923         breakpoint_sals_to_pc (&iter->sals);
9924     }
9925
9926   /* Fast tracepoints may have additional restrictions on location.  */
9927   if (!pending && type_wanted == bp_fast_tracepoint)
9928     {
9929       int ix;
9930       struct linespec_sals *iter;
9931
9932       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9933         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9934     }
9935
9936   /* Verify that condition can be parsed, before setting any
9937      breakpoints.  Allocate a separate condition expression for each
9938      breakpoint.  */
9939   if (!pending)
9940     {
9941       if (parse_arg)
9942         {
9943           char *rest;
9944           struct linespec_sals *lsal;
9945
9946           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9947
9948           /* Here we only parse 'arg' to separate condition
9949              from thread number, so parsing in context of first
9950              sal is OK.  When setting the breakpoint we'll
9951              re-parse it in context of each sal.  */
9952
9953           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9954                                      &thread, &task, &rest);
9955           if (cond_string)
9956             make_cleanup (xfree, cond_string);
9957           if (rest)
9958             make_cleanup (xfree, rest);
9959           if (rest)
9960             extra_string = rest;
9961         }
9962       else
9963         {
9964           if (*arg != '\0')
9965             error (_("Garbage '%s' at end of location"), arg);
9966
9967           /* Create a private copy of condition string.  */
9968           if (cond_string)
9969             {
9970               cond_string = xstrdup (cond_string);
9971               make_cleanup (xfree, cond_string);
9972             }
9973           /* Create a private copy of any extra string.  */
9974           if (extra_string)
9975             {
9976               extra_string = xstrdup (extra_string);
9977               make_cleanup (xfree, extra_string);
9978             }
9979         }
9980
9981       ops->create_breakpoints_sal (gdbarch, &canonical,
9982                                    cond_string, extra_string, type_wanted,
9983                                    tempflag ? disp_del : disp_donttouch,
9984                                    thread, task, ignore_count, ops,
9985                                    from_tty, enabled, internal, flags);
9986     }
9987   else
9988     {
9989       struct breakpoint *b;
9990
9991       make_cleanup (xfree, copy_arg);
9992
9993       if (is_tracepoint_type (type_wanted))
9994         {
9995           struct tracepoint *t;
9996
9997           t = XCNEW (struct tracepoint);
9998           b = &t->base;
9999         }
10000       else
10001         b = XNEW (struct breakpoint);
10002
10003       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
10004
10005       b->addr_string = copy_arg;
10006       if (parse_arg)
10007         b->cond_string = NULL;
10008       else
10009         {
10010           /* Create a private copy of condition string.  */
10011           if (cond_string)
10012             {
10013               cond_string = xstrdup (cond_string);
10014               make_cleanup (xfree, cond_string);
10015             }
10016           b->cond_string = cond_string;
10017         }
10018       b->extra_string = NULL;
10019       b->ignore_count = ignore_count;
10020       b->disposition = tempflag ? disp_del : disp_donttouch;
10021       b->condition_not_parsed = 1;
10022       b->enable_state = enabled ? bp_enabled : bp_disabled;
10023       if ((type_wanted != bp_breakpoint
10024            && type_wanted != bp_hardware_breakpoint) || thread != -1)
10025         b->pspace = current_program_space;
10026
10027       install_breakpoint (internal, b, 0);
10028     }
10029   
10030   if (VEC_length (linespec_sals, canonical.sals) > 1)
10031     {
10032       warning (_("Multiple breakpoints were set.\nUse the "
10033                  "\"delete\" command to delete unwanted breakpoints."));
10034       prev_breakpoint_count = prev_bkpt_count;
10035     }
10036
10037   /* That's it.  Discard the cleanups for data inserted into the
10038      breakpoint.  */
10039   discard_cleanups (bkpt_chain);
10040   /* But cleanup everything else.  */
10041   do_cleanups (old_chain);
10042
10043   /* error call may happen here - have BKPT_CHAIN already discarded.  */
10044   update_global_location_list (1);
10045
10046   return 1;
10047 }
10048
10049 /* Set a breakpoint.
10050    ARG is a string describing breakpoint address,
10051    condition, and thread.
10052    FLAG specifies if a breakpoint is hardware on,
10053    and if breakpoint is temporary, using BP_HARDWARE_FLAG
10054    and BP_TEMPFLAG.  */
10055
10056 static void
10057 break_command_1 (char *arg, int flag, int from_tty)
10058 {
10059   int tempflag = flag & BP_TEMPFLAG;
10060   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10061                              ? bp_hardware_breakpoint
10062                              : bp_breakpoint);
10063   struct breakpoint_ops *ops;
10064   const char *arg_cp = arg;
10065
10066   /* Matching breakpoints on probes.  */
10067   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
10068     ops = &bkpt_probe_breakpoint_ops;
10069   else
10070     ops = &bkpt_breakpoint_ops;
10071
10072   create_breakpoint (get_current_arch (),
10073                      arg,
10074                      NULL, 0, NULL, 1 /* parse arg */,
10075                      tempflag, type_wanted,
10076                      0 /* Ignore count */,
10077                      pending_break_support,
10078                      ops,
10079                      from_tty,
10080                      1 /* enabled */,
10081                      0 /* internal */,
10082                      0);
10083 }
10084
10085 /* Helper function for break_command_1 and disassemble_command.  */
10086
10087 void
10088 resolve_sal_pc (struct symtab_and_line *sal)
10089 {
10090   CORE_ADDR pc;
10091
10092   if (sal->pc == 0 && sal->symtab != NULL)
10093     {
10094       if (!find_line_pc (sal->symtab, sal->line, &pc))
10095         error (_("No line %d in file \"%s\"."),
10096                sal->line, symtab_to_filename_for_display (sal->symtab));
10097       sal->pc = pc;
10098
10099       /* If this SAL corresponds to a breakpoint inserted using a line
10100          number, then skip the function prologue if necessary.  */
10101       if (sal->explicit_line)
10102         skip_prologue_sal (sal);
10103     }
10104
10105   if (sal->section == 0 && sal->symtab != NULL)
10106     {
10107       const struct blockvector *bv;
10108       const struct block *b;
10109       struct symbol *sym;
10110
10111       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
10112       if (bv != NULL)
10113         {
10114           sym = block_linkage_function (b);
10115           if (sym != NULL)
10116             {
10117               fixup_symbol_section (sym, sal->symtab->objfile);
10118               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
10119             }
10120           else
10121             {
10122               /* It really is worthwhile to have the section, so we'll
10123                  just have to look harder. This case can be executed
10124                  if we have line numbers but no functions (as can
10125                  happen in assembly source).  */
10126
10127               struct bound_minimal_symbol msym;
10128               struct cleanup *old_chain = save_current_space_and_thread ();
10129
10130               switch_to_program_space_and_thread (sal->pspace);
10131
10132               msym = lookup_minimal_symbol_by_pc (sal->pc);
10133               if (msym.minsym)
10134                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10135
10136               do_cleanups (old_chain);
10137             }
10138         }
10139     }
10140 }
10141
10142 void
10143 break_command (char *arg, int from_tty)
10144 {
10145   break_command_1 (arg, 0, from_tty);
10146 }
10147
10148 void
10149 tbreak_command (char *arg, int from_tty)
10150 {
10151   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10152 }
10153
10154 static void
10155 hbreak_command (char *arg, int from_tty)
10156 {
10157   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10158 }
10159
10160 static void
10161 thbreak_command (char *arg, int from_tty)
10162 {
10163   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10164 }
10165
10166 static void
10167 stop_command (char *arg, int from_tty)
10168 {
10169   printf_filtered (_("Specify the type of breakpoint to set.\n\
10170 Usage: stop in <function | address>\n\
10171        stop at <line>\n"));
10172 }
10173
10174 static void
10175 stopin_command (char *arg, int from_tty)
10176 {
10177   int badInput = 0;
10178
10179   if (arg == (char *) NULL)
10180     badInput = 1;
10181   else if (*arg != '*')
10182     {
10183       char *argptr = arg;
10184       int hasColon = 0;
10185
10186       /* Look for a ':'.  If this is a line number specification, then
10187          say it is bad, otherwise, it should be an address or
10188          function/method name.  */
10189       while (*argptr && !hasColon)
10190         {
10191           hasColon = (*argptr == ':');
10192           argptr++;
10193         }
10194
10195       if (hasColon)
10196         badInput = (*argptr != ':');    /* Not a class::method */
10197       else
10198         badInput = isdigit (*arg);      /* a simple line number */
10199     }
10200
10201   if (badInput)
10202     printf_filtered (_("Usage: stop in <function | address>\n"));
10203   else
10204     break_command_1 (arg, 0, from_tty);
10205 }
10206
10207 static void
10208 stopat_command (char *arg, int from_tty)
10209 {
10210   int badInput = 0;
10211
10212   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10213     badInput = 1;
10214   else
10215     {
10216       char *argptr = arg;
10217       int hasColon = 0;
10218
10219       /* Look for a ':'.  If there is a '::' then get out, otherwise
10220          it is probably a line number.  */
10221       while (*argptr && !hasColon)
10222         {
10223           hasColon = (*argptr == ':');
10224           argptr++;
10225         }
10226
10227       if (hasColon)
10228         badInput = (*argptr == ':');    /* we have class::method */
10229       else
10230         badInput = !isdigit (*arg);     /* not a line number */
10231     }
10232
10233   if (badInput)
10234     printf_filtered (_("Usage: stop at <line>\n"));
10235   else
10236     break_command_1 (arg, 0, from_tty);
10237 }
10238
10239 /* The dynamic printf command is mostly like a regular breakpoint, but
10240    with a prewired command list consisting of a single output command,
10241    built from extra arguments supplied on the dprintf command
10242    line.  */
10243
10244 static void
10245 dprintf_command (char *arg, int from_tty)
10246 {
10247   create_breakpoint (get_current_arch (),
10248                      arg,
10249                      NULL, 0, NULL, 1 /* parse arg */,
10250                      0, bp_dprintf,
10251                      0 /* Ignore count */,
10252                      pending_break_support,
10253                      &dprintf_breakpoint_ops,
10254                      from_tty,
10255                      1 /* enabled */,
10256                      0 /* internal */,
10257                      0);
10258 }
10259
10260 static void
10261 agent_printf_command (char *arg, int from_tty)
10262 {
10263   error (_("May only run agent-printf on the target"));
10264 }
10265
10266 /* Implement the "breakpoint_hit" breakpoint_ops method for
10267    ranged breakpoints.  */
10268
10269 static int
10270 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10271                                   struct address_space *aspace,
10272                                   CORE_ADDR bp_addr,
10273                                   const struct target_waitstatus *ws)
10274 {
10275   if (ws->kind != TARGET_WAITKIND_STOPPED
10276       || ws->value.sig != GDB_SIGNAL_TRAP)
10277     return 0;
10278
10279   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10280                                          bl->length, aspace, bp_addr);
10281 }
10282
10283 /* Implement the "resources_needed" breakpoint_ops method for
10284    ranged breakpoints.  */
10285
10286 static int
10287 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10288 {
10289   return target_ranged_break_num_registers ();
10290 }
10291
10292 /* Implement the "print_it" breakpoint_ops method for
10293    ranged breakpoints.  */
10294
10295 static enum print_stop_action
10296 print_it_ranged_breakpoint (bpstat bs)
10297 {
10298   struct breakpoint *b = bs->breakpoint_at;
10299   struct bp_location *bl = b->loc;
10300   struct ui_out *uiout = current_uiout;
10301
10302   gdb_assert (b->type == bp_hardware_breakpoint);
10303
10304   /* Ranged breakpoints have only one location.  */
10305   gdb_assert (bl && bl->next == NULL);
10306
10307   annotate_breakpoint (b->number);
10308   if (b->disposition == disp_del)
10309     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10310   else
10311     ui_out_text (uiout, "\nRanged breakpoint ");
10312   if (ui_out_is_mi_like_p (uiout))
10313     {
10314       ui_out_field_string (uiout, "reason",
10315                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10316       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10317     }
10318   ui_out_field_int (uiout, "bkptno", b->number);
10319   ui_out_text (uiout, ", ");
10320
10321   return PRINT_SRC_AND_LOC;
10322 }
10323
10324 /* Implement the "print_one" breakpoint_ops method for
10325    ranged breakpoints.  */
10326
10327 static void
10328 print_one_ranged_breakpoint (struct breakpoint *b,
10329                              struct bp_location **last_loc)
10330 {
10331   struct bp_location *bl = b->loc;
10332   struct value_print_options opts;
10333   struct ui_out *uiout = current_uiout;
10334
10335   /* Ranged breakpoints have only one location.  */
10336   gdb_assert (bl && bl->next == NULL);
10337
10338   get_user_print_options (&opts);
10339
10340   if (opts.addressprint)
10341     /* We don't print the address range here, it will be printed later
10342        by print_one_detail_ranged_breakpoint.  */
10343     ui_out_field_skip (uiout, "addr");
10344   annotate_field (5);
10345   print_breakpoint_location (b, bl);
10346   *last_loc = bl;
10347 }
10348
10349 /* Implement the "print_one_detail" breakpoint_ops method for
10350    ranged breakpoints.  */
10351
10352 static void
10353 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10354                                     struct ui_out *uiout)
10355 {
10356   CORE_ADDR address_start, address_end;
10357   struct bp_location *bl = b->loc;
10358   struct ui_file *stb = mem_fileopen ();
10359   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10360
10361   gdb_assert (bl);
10362
10363   address_start = bl->address;
10364   address_end = address_start + bl->length - 1;
10365
10366   ui_out_text (uiout, "\taddress range: ");
10367   fprintf_unfiltered (stb, "[%s, %s]",
10368                       print_core_address (bl->gdbarch, address_start),
10369                       print_core_address (bl->gdbarch, address_end));
10370   ui_out_field_stream (uiout, "addr", stb);
10371   ui_out_text (uiout, "\n");
10372
10373   do_cleanups (cleanup);
10374 }
10375
10376 /* Implement the "print_mention" breakpoint_ops method for
10377    ranged breakpoints.  */
10378
10379 static void
10380 print_mention_ranged_breakpoint (struct breakpoint *b)
10381 {
10382   struct bp_location *bl = b->loc;
10383   struct ui_out *uiout = current_uiout;
10384
10385   gdb_assert (bl);
10386   gdb_assert (b->type == bp_hardware_breakpoint);
10387
10388   if (ui_out_is_mi_like_p (uiout))
10389     return;
10390
10391   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10392                    b->number, paddress (bl->gdbarch, bl->address),
10393                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10394 }
10395
10396 /* Implement the "print_recreate" breakpoint_ops method for
10397    ranged breakpoints.  */
10398
10399 static void
10400 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10401 {
10402   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10403                       b->addr_string_range_end);
10404   print_recreate_thread (b, fp);
10405 }
10406
10407 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10408
10409 static struct breakpoint_ops ranged_breakpoint_ops;
10410
10411 /* Find the address where the end of the breakpoint range should be
10412    placed, given the SAL of the end of the range.  This is so that if
10413    the user provides a line number, the end of the range is set to the
10414    last instruction of the given line.  */
10415
10416 static CORE_ADDR
10417 find_breakpoint_range_end (struct symtab_and_line sal)
10418 {
10419   CORE_ADDR end;
10420
10421   /* If the user provided a PC value, use it.  Otherwise,
10422      find the address of the end of the given location.  */
10423   if (sal.explicit_pc)
10424     end = sal.pc;
10425   else
10426     {
10427       int ret;
10428       CORE_ADDR start;
10429
10430       ret = find_line_pc_range (sal, &start, &end);
10431       if (!ret)
10432         error (_("Could not find location of the end of the range."));
10433
10434       /* find_line_pc_range returns the start of the next line.  */
10435       end--;
10436     }
10437
10438   return end;
10439 }
10440
10441 /* Implement the "break-range" CLI command.  */
10442
10443 static void
10444 break_range_command (char *arg, int from_tty)
10445 {
10446   char *arg_start, *addr_string_start, *addr_string_end;
10447   struct linespec_result canonical_start, canonical_end;
10448   int bp_count, can_use_bp, length;
10449   CORE_ADDR end;
10450   struct breakpoint *b;
10451   struct symtab_and_line sal_start, sal_end;
10452   struct cleanup *cleanup_bkpt;
10453   struct linespec_sals *lsal_start, *lsal_end;
10454
10455   /* We don't support software ranged breakpoints.  */
10456   if (target_ranged_break_num_registers () < 0)
10457     error (_("This target does not support hardware ranged breakpoints."));
10458
10459   bp_count = hw_breakpoint_used_count ();
10460   bp_count += target_ranged_break_num_registers ();
10461   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10462                                                    bp_count, 0);
10463   if (can_use_bp < 0)
10464     error (_("Hardware breakpoints used exceeds limit."));
10465
10466   arg = skip_spaces (arg);
10467   if (arg == NULL || arg[0] == '\0')
10468     error(_("No address range specified."));
10469
10470   init_linespec_result (&canonical_start);
10471
10472   arg_start = arg;
10473   parse_breakpoint_sals (&arg, &canonical_start);
10474
10475   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10476
10477   if (arg[0] != ',')
10478     error (_("Too few arguments."));
10479   else if (VEC_empty (linespec_sals, canonical_start.sals))
10480     error (_("Could not find location of the beginning of the range."));
10481
10482   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10483
10484   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10485       || lsal_start->sals.nelts != 1)
10486     error (_("Cannot create a ranged breakpoint with multiple locations."));
10487
10488   sal_start = lsal_start->sals.sals[0];
10489   addr_string_start = savestring (arg_start, arg - arg_start);
10490   make_cleanup (xfree, addr_string_start);
10491
10492   arg++;        /* Skip the comma.  */
10493   arg = skip_spaces (arg);
10494
10495   /* Parse the end location.  */
10496
10497   init_linespec_result (&canonical_end);
10498   arg_start = arg;
10499
10500   /* We call decode_line_full directly here instead of using
10501      parse_breakpoint_sals because we need to specify the start location's
10502      symtab and line as the default symtab and line for the end of the
10503      range.  This makes it possible to have ranges like "foo.c:27, +14",
10504      where +14 means 14 lines from the start location.  */
10505   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10506                     sal_start.symtab, sal_start.line,
10507                     &canonical_end, NULL, NULL);
10508
10509   make_cleanup_destroy_linespec_result (&canonical_end);
10510
10511   if (VEC_empty (linespec_sals, canonical_end.sals))
10512     error (_("Could not find location of the end of the range."));
10513
10514   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10515   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10516       || lsal_end->sals.nelts != 1)
10517     error (_("Cannot create a ranged breakpoint with multiple locations."));
10518
10519   sal_end = lsal_end->sals.sals[0];
10520   addr_string_end = savestring (arg_start, arg - arg_start);
10521   make_cleanup (xfree, addr_string_end);
10522
10523   end = find_breakpoint_range_end (sal_end);
10524   if (sal_start.pc > end)
10525     error (_("Invalid address range, end precedes start."));
10526
10527   length = end - sal_start.pc + 1;
10528   if (length < 0)
10529     /* Length overflowed.  */
10530     error (_("Address range too large."));
10531   else if (length == 1)
10532     {
10533       /* This range is simple enough to be handled by
10534          the `hbreak' command.  */
10535       hbreak_command (addr_string_start, 1);
10536
10537       do_cleanups (cleanup_bkpt);
10538
10539       return;
10540     }
10541
10542   /* Now set up the breakpoint.  */
10543   b = set_raw_breakpoint (get_current_arch (), sal_start,
10544                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10545   set_breakpoint_count (breakpoint_count + 1);
10546   b->number = breakpoint_count;
10547   b->disposition = disp_donttouch;
10548   b->addr_string = xstrdup (addr_string_start);
10549   b->addr_string_range_end = xstrdup (addr_string_end);
10550   b->loc->length = length;
10551
10552   do_cleanups (cleanup_bkpt);
10553
10554   mention (b);
10555   observer_notify_breakpoint_created (b);
10556   update_global_location_list (1);
10557 }
10558
10559 /*  Return non-zero if EXP is verified as constant.  Returned zero
10560     means EXP is variable.  Also the constant detection may fail for
10561     some constant expressions and in such case still falsely return
10562     zero.  */
10563
10564 static int
10565 watchpoint_exp_is_const (const struct expression *exp)
10566 {
10567   int i = exp->nelts;
10568
10569   while (i > 0)
10570     {
10571       int oplenp, argsp;
10572
10573       /* We are only interested in the descriptor of each element.  */
10574       operator_length (exp, i, &oplenp, &argsp);
10575       i -= oplenp;
10576
10577       switch (exp->elts[i].opcode)
10578         {
10579         case BINOP_ADD:
10580         case BINOP_SUB:
10581         case BINOP_MUL:
10582         case BINOP_DIV:
10583         case BINOP_REM:
10584         case BINOP_MOD:
10585         case BINOP_LSH:
10586         case BINOP_RSH:
10587         case BINOP_LOGICAL_AND:
10588         case BINOP_LOGICAL_OR:
10589         case BINOP_BITWISE_AND:
10590         case BINOP_BITWISE_IOR:
10591         case BINOP_BITWISE_XOR:
10592         case BINOP_EQUAL:
10593         case BINOP_NOTEQUAL:
10594         case BINOP_LESS:
10595         case BINOP_GTR:
10596         case BINOP_LEQ:
10597         case BINOP_GEQ:
10598         case BINOP_REPEAT:
10599         case BINOP_COMMA:
10600         case BINOP_EXP:
10601         case BINOP_MIN:
10602         case BINOP_MAX:
10603         case BINOP_INTDIV:
10604         case BINOP_CONCAT:
10605         case TERNOP_COND:
10606         case TERNOP_SLICE:
10607
10608         case OP_LONG:
10609         case OP_DOUBLE:
10610         case OP_DECFLOAT:
10611         case OP_LAST:
10612         case OP_COMPLEX:
10613         case OP_STRING:
10614         case OP_ARRAY:
10615         case OP_TYPE:
10616         case OP_TYPEOF:
10617         case OP_DECLTYPE:
10618         case OP_TYPEID:
10619         case OP_NAME:
10620         case OP_OBJC_NSSTRING:
10621
10622         case UNOP_NEG:
10623         case UNOP_LOGICAL_NOT:
10624         case UNOP_COMPLEMENT:
10625         case UNOP_ADDR:
10626         case UNOP_HIGH:
10627         case UNOP_CAST:
10628
10629         case UNOP_CAST_TYPE:
10630         case UNOP_REINTERPRET_CAST:
10631         case UNOP_DYNAMIC_CAST:
10632           /* Unary, binary and ternary operators: We have to check
10633              their operands.  If they are constant, then so is the
10634              result of that operation.  For instance, if A and B are
10635              determined to be constants, then so is "A + B".
10636
10637              UNOP_IND is one exception to the rule above, because the
10638              value of *ADDR is not necessarily a constant, even when
10639              ADDR is.  */
10640           break;
10641
10642         case OP_VAR_VALUE:
10643           /* Check whether the associated symbol is a constant.
10644
10645              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10646              possible that a buggy compiler could mark a variable as
10647              constant even when it is not, and TYPE_CONST would return
10648              true in this case, while SYMBOL_CLASS wouldn't.
10649
10650              We also have to check for function symbols because they
10651              are always constant.  */
10652           {
10653             struct symbol *s = exp->elts[i + 2].symbol;
10654
10655             if (SYMBOL_CLASS (s) != LOC_BLOCK
10656                 && SYMBOL_CLASS (s) != LOC_CONST
10657                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10658               return 0;
10659             break;
10660           }
10661
10662         /* The default action is to return 0 because we are using
10663            the optimistic approach here: If we don't know something,
10664            then it is not a constant.  */
10665         default:
10666           return 0;
10667         }
10668     }
10669
10670   return 1;
10671 }
10672
10673 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10674
10675 static void
10676 dtor_watchpoint (struct breakpoint *self)
10677 {
10678   struct watchpoint *w = (struct watchpoint *) self;
10679
10680   xfree (w->cond_exp);
10681   xfree (w->exp);
10682   xfree (w->exp_string);
10683   xfree (w->exp_string_reparse);
10684   value_free (w->val);
10685
10686   base_breakpoint_ops.dtor (self);
10687 }
10688
10689 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10690
10691 static void
10692 re_set_watchpoint (struct breakpoint *b)
10693 {
10694   struct watchpoint *w = (struct watchpoint *) b;
10695
10696   /* Watchpoint can be either on expression using entirely global
10697      variables, or it can be on local variables.
10698
10699      Watchpoints of the first kind are never auto-deleted, and even
10700      persist across program restarts.  Since they can use variables
10701      from shared libraries, we need to reparse expression as libraries
10702      are loaded and unloaded.
10703
10704      Watchpoints on local variables can also change meaning as result
10705      of solib event.  For example, if a watchpoint uses both a local
10706      and a global variables in expression, it's a local watchpoint,
10707      but unloading of a shared library will make the expression
10708      invalid.  This is not a very common use case, but we still
10709      re-evaluate expression, to avoid surprises to the user.
10710
10711      Note that for local watchpoints, we re-evaluate it only if
10712      watchpoints frame id is still valid.  If it's not, it means the
10713      watchpoint is out of scope and will be deleted soon.  In fact,
10714      I'm not sure we'll ever be called in this case.
10715
10716      If a local watchpoint's frame id is still valid, then
10717      w->exp_valid_block is likewise valid, and we can safely use it.
10718
10719      Don't do anything about disabled watchpoints, since they will be
10720      reevaluated again when enabled.  */
10721   update_watchpoint (w, 1 /* reparse */);
10722 }
10723
10724 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10725
10726 static int
10727 insert_watchpoint (struct bp_location *bl)
10728 {
10729   struct watchpoint *w = (struct watchpoint *) bl->owner;
10730   int length = w->exact ? 1 : bl->length;
10731
10732   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10733                                    w->cond_exp);
10734 }
10735
10736 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10737
10738 static int
10739 remove_watchpoint (struct bp_location *bl)
10740 {
10741   struct watchpoint *w = (struct watchpoint *) bl->owner;
10742   int length = w->exact ? 1 : bl->length;
10743
10744   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10745                                    w->cond_exp);
10746 }
10747
10748 static int
10749 breakpoint_hit_watchpoint (const struct bp_location *bl,
10750                            struct address_space *aspace, CORE_ADDR bp_addr,
10751                            const struct target_waitstatus *ws)
10752 {
10753   struct breakpoint *b = bl->owner;
10754   struct watchpoint *w = (struct watchpoint *) b;
10755
10756   /* Continuable hardware watchpoints are treated as non-existent if the
10757      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10758      some data address).  Otherwise gdb won't stop on a break instruction
10759      in the code (not from a breakpoint) when a hardware watchpoint has
10760      been defined.  Also skip watchpoints which we know did not trigger
10761      (did not match the data address).  */
10762   if (is_hardware_watchpoint (b)
10763       && w->watchpoint_triggered == watch_triggered_no)
10764     return 0;
10765
10766   return 1;
10767 }
10768
10769 static void
10770 check_status_watchpoint (bpstat bs)
10771 {
10772   gdb_assert (is_watchpoint (bs->breakpoint_at));
10773
10774   bpstat_check_watchpoint (bs);
10775 }
10776
10777 /* Implement the "resources_needed" breakpoint_ops method for
10778    hardware watchpoints.  */
10779
10780 static int
10781 resources_needed_watchpoint (const struct bp_location *bl)
10782 {
10783   struct watchpoint *w = (struct watchpoint *) bl->owner;
10784   int length = w->exact? 1 : bl->length;
10785
10786   return target_region_ok_for_hw_watchpoint (bl->address, length);
10787 }
10788
10789 /* Implement the "works_in_software_mode" breakpoint_ops method for
10790    hardware watchpoints.  */
10791
10792 static int
10793 works_in_software_mode_watchpoint (const struct breakpoint *b)
10794 {
10795   /* Read and access watchpoints only work with hardware support.  */
10796   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10797 }
10798
10799 static enum print_stop_action
10800 print_it_watchpoint (bpstat bs)
10801 {
10802   struct cleanup *old_chain;
10803   struct breakpoint *b;
10804   struct ui_file *stb;
10805   enum print_stop_action result;
10806   struct watchpoint *w;
10807   struct ui_out *uiout = current_uiout;
10808
10809   gdb_assert (bs->bp_location_at != NULL);
10810
10811   b = bs->breakpoint_at;
10812   w = (struct watchpoint *) b;
10813
10814   stb = mem_fileopen ();
10815   old_chain = make_cleanup_ui_file_delete (stb);
10816
10817   switch (b->type)
10818     {
10819     case bp_watchpoint:
10820     case bp_hardware_watchpoint:
10821       annotate_watchpoint (b->number);
10822       if (ui_out_is_mi_like_p (uiout))
10823         ui_out_field_string
10824           (uiout, "reason",
10825            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10826       mention (b);
10827       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10828       ui_out_text (uiout, "\nOld value = ");
10829       watchpoint_value_print (bs->old_val, stb);
10830       ui_out_field_stream (uiout, "old", stb);
10831       ui_out_text (uiout, "\nNew value = ");
10832       watchpoint_value_print (w->val, stb);
10833       ui_out_field_stream (uiout, "new", stb);
10834       ui_out_text (uiout, "\n");
10835       /* More than one watchpoint may have been triggered.  */
10836       result = PRINT_UNKNOWN;
10837       break;
10838
10839     case bp_read_watchpoint:
10840       if (ui_out_is_mi_like_p (uiout))
10841         ui_out_field_string
10842           (uiout, "reason",
10843            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10844       mention (b);
10845       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10846       ui_out_text (uiout, "\nValue = ");
10847       watchpoint_value_print (w->val, stb);
10848       ui_out_field_stream (uiout, "value", stb);
10849       ui_out_text (uiout, "\n");
10850       result = PRINT_UNKNOWN;
10851       break;
10852
10853     case bp_access_watchpoint:
10854       if (bs->old_val != NULL)
10855         {
10856           annotate_watchpoint (b->number);
10857           if (ui_out_is_mi_like_p (uiout))
10858             ui_out_field_string
10859               (uiout, "reason",
10860                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10861           mention (b);
10862           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10863           ui_out_text (uiout, "\nOld value = ");
10864           watchpoint_value_print (bs->old_val, stb);
10865           ui_out_field_stream (uiout, "old", stb);
10866           ui_out_text (uiout, "\nNew value = ");
10867         }
10868       else
10869         {
10870           mention (b);
10871           if (ui_out_is_mi_like_p (uiout))
10872             ui_out_field_string
10873               (uiout, "reason",
10874                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10875           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10876           ui_out_text (uiout, "\nValue = ");
10877         }
10878       watchpoint_value_print (w->val, stb);
10879       ui_out_field_stream (uiout, "new", stb);
10880       ui_out_text (uiout, "\n");
10881       result = PRINT_UNKNOWN;
10882       break;
10883     default:
10884       result = PRINT_UNKNOWN;
10885     }
10886
10887   do_cleanups (old_chain);
10888   return result;
10889 }
10890
10891 /* Implement the "print_mention" breakpoint_ops method for hardware
10892    watchpoints.  */
10893
10894 static void
10895 print_mention_watchpoint (struct breakpoint *b)
10896 {
10897   struct cleanup *ui_out_chain;
10898   struct watchpoint *w = (struct watchpoint *) b;
10899   struct ui_out *uiout = current_uiout;
10900
10901   switch (b->type)
10902     {
10903     case bp_watchpoint:
10904       ui_out_text (uiout, "Watchpoint ");
10905       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10906       break;
10907     case bp_hardware_watchpoint:
10908       ui_out_text (uiout, "Hardware watchpoint ");
10909       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10910       break;
10911     case bp_read_watchpoint:
10912       ui_out_text (uiout, "Hardware read watchpoint ");
10913       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10914       break;
10915     case bp_access_watchpoint:
10916       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10917       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10918       break;
10919     default:
10920       internal_error (__FILE__, __LINE__,
10921                       _("Invalid hardware watchpoint type."));
10922     }
10923
10924   ui_out_field_int (uiout, "number", b->number);
10925   ui_out_text (uiout, ": ");
10926   ui_out_field_string (uiout, "exp", w->exp_string);
10927   do_cleanups (ui_out_chain);
10928 }
10929
10930 /* Implement the "print_recreate" breakpoint_ops method for
10931    watchpoints.  */
10932
10933 static void
10934 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10935 {
10936   struct watchpoint *w = (struct watchpoint *) b;
10937
10938   switch (b->type)
10939     {
10940     case bp_watchpoint:
10941     case bp_hardware_watchpoint:
10942       fprintf_unfiltered (fp, "watch");
10943       break;
10944     case bp_read_watchpoint:
10945       fprintf_unfiltered (fp, "rwatch");
10946       break;
10947     case bp_access_watchpoint:
10948       fprintf_unfiltered (fp, "awatch");
10949       break;
10950     default:
10951       internal_error (__FILE__, __LINE__,
10952                       _("Invalid watchpoint type."));
10953     }
10954
10955   fprintf_unfiltered (fp, " %s", w->exp_string);
10956   print_recreate_thread (b, fp);
10957 }
10958
10959 /* Implement the "explains_signal" breakpoint_ops method for
10960    watchpoints.  */
10961
10962 static int
10963 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10964 {
10965   /* A software watchpoint cannot cause a signal other than
10966      GDB_SIGNAL_TRAP.  */
10967   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10968     return 0;
10969
10970   return 1;
10971 }
10972
10973 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10974
10975 static struct breakpoint_ops watchpoint_breakpoint_ops;
10976
10977 /* Implement the "insert" breakpoint_ops method for
10978    masked hardware watchpoints.  */
10979
10980 static int
10981 insert_masked_watchpoint (struct bp_location *bl)
10982 {
10983   struct watchpoint *w = (struct watchpoint *) bl->owner;
10984
10985   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10986                                         bl->watchpoint_type);
10987 }
10988
10989 /* Implement the "remove" breakpoint_ops method for
10990    masked hardware watchpoints.  */
10991
10992 static int
10993 remove_masked_watchpoint (struct bp_location *bl)
10994 {
10995   struct watchpoint *w = (struct watchpoint *) bl->owner;
10996
10997   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10998                                         bl->watchpoint_type);
10999 }
11000
11001 /* Implement the "resources_needed" breakpoint_ops method for
11002    masked hardware watchpoints.  */
11003
11004 static int
11005 resources_needed_masked_watchpoint (const struct bp_location *bl)
11006 {
11007   struct watchpoint *w = (struct watchpoint *) bl->owner;
11008
11009   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
11010 }
11011
11012 /* Implement the "works_in_software_mode" breakpoint_ops method for
11013    masked hardware watchpoints.  */
11014
11015 static int
11016 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
11017 {
11018   return 0;
11019 }
11020
11021 /* Implement the "print_it" breakpoint_ops method for
11022    masked hardware watchpoints.  */
11023
11024 static enum print_stop_action
11025 print_it_masked_watchpoint (bpstat bs)
11026 {
11027   struct breakpoint *b = bs->breakpoint_at;
11028   struct ui_out *uiout = current_uiout;
11029
11030   /* Masked watchpoints have only one location.  */
11031   gdb_assert (b->loc && b->loc->next == NULL);
11032
11033   switch (b->type)
11034     {
11035     case bp_hardware_watchpoint:
11036       annotate_watchpoint (b->number);
11037       if (ui_out_is_mi_like_p (uiout))
11038         ui_out_field_string
11039           (uiout, "reason",
11040            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11041       break;
11042
11043     case bp_read_watchpoint:
11044       if (ui_out_is_mi_like_p (uiout))
11045         ui_out_field_string
11046           (uiout, "reason",
11047            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11048       break;
11049
11050     case bp_access_watchpoint:
11051       if (ui_out_is_mi_like_p (uiout))
11052         ui_out_field_string
11053           (uiout, "reason",
11054            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11055       break;
11056     default:
11057       internal_error (__FILE__, __LINE__,
11058                       _("Invalid hardware watchpoint type."));
11059     }
11060
11061   mention (b);
11062   ui_out_text (uiout, _("\n\
11063 Check the underlying instruction at PC for the memory\n\
11064 address and value which triggered this watchpoint.\n"));
11065   ui_out_text (uiout, "\n");
11066
11067   /* More than one watchpoint may have been triggered.  */
11068   return PRINT_UNKNOWN;
11069 }
11070
11071 /* Implement the "print_one_detail" breakpoint_ops method for
11072    masked hardware watchpoints.  */
11073
11074 static void
11075 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11076                                     struct ui_out *uiout)
11077 {
11078   struct watchpoint *w = (struct watchpoint *) b;
11079
11080   /* Masked watchpoints have only one location.  */
11081   gdb_assert (b->loc && b->loc->next == NULL);
11082
11083   ui_out_text (uiout, "\tmask ");
11084   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11085   ui_out_text (uiout, "\n");
11086 }
11087
11088 /* Implement the "print_mention" breakpoint_ops method for
11089    masked hardware watchpoints.  */
11090
11091 static void
11092 print_mention_masked_watchpoint (struct breakpoint *b)
11093 {
11094   struct watchpoint *w = (struct watchpoint *) b;
11095   struct ui_out *uiout = current_uiout;
11096   struct cleanup *ui_out_chain;
11097
11098   switch (b->type)
11099     {
11100     case bp_hardware_watchpoint:
11101       ui_out_text (uiout, "Masked hardware watchpoint ");
11102       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11103       break;
11104     case bp_read_watchpoint:
11105       ui_out_text (uiout, "Masked hardware read watchpoint ");
11106       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11107       break;
11108     case bp_access_watchpoint:
11109       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11110       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11111       break;
11112     default:
11113       internal_error (__FILE__, __LINE__,
11114                       _("Invalid hardware watchpoint type."));
11115     }
11116
11117   ui_out_field_int (uiout, "number", b->number);
11118   ui_out_text (uiout, ": ");
11119   ui_out_field_string (uiout, "exp", w->exp_string);
11120   do_cleanups (ui_out_chain);
11121 }
11122
11123 /* Implement the "print_recreate" breakpoint_ops method for
11124    masked hardware watchpoints.  */
11125
11126 static void
11127 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11128 {
11129   struct watchpoint *w = (struct watchpoint *) b;
11130   char tmp[40];
11131
11132   switch (b->type)
11133     {
11134     case bp_hardware_watchpoint:
11135       fprintf_unfiltered (fp, "watch");
11136       break;
11137     case bp_read_watchpoint:
11138       fprintf_unfiltered (fp, "rwatch");
11139       break;
11140     case bp_access_watchpoint:
11141       fprintf_unfiltered (fp, "awatch");
11142       break;
11143     default:
11144       internal_error (__FILE__, __LINE__,
11145                       _("Invalid hardware watchpoint type."));
11146     }
11147
11148   sprintf_vma (tmp, w->hw_wp_mask);
11149   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11150   print_recreate_thread (b, fp);
11151 }
11152
11153 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11154
11155 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11156
11157 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11158
11159 static int
11160 is_masked_watchpoint (const struct breakpoint *b)
11161 {
11162   return b->ops == &masked_watchpoint_breakpoint_ops;
11163 }
11164
11165 /* accessflag:  hw_write:  watch write, 
11166                 hw_read:   watch read, 
11167                 hw_access: watch access (read or write) */
11168 static void
11169 watch_command_1 (const char *arg, int accessflag, int from_tty,
11170                  int just_location, int internal)
11171 {
11172   volatile struct gdb_exception e;
11173   struct breakpoint *b, *scope_breakpoint = NULL;
11174   struct expression *exp;
11175   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11176   struct value *val, *mark, *result;
11177   struct frame_info *frame;
11178   const char *exp_start = NULL;
11179   const char *exp_end = NULL;
11180   const char *tok, *end_tok;
11181   int toklen = -1;
11182   const char *cond_start = NULL;
11183   const char *cond_end = NULL;
11184   enum bptype bp_type;
11185   int thread = -1;
11186   int pc = 0;
11187   /* Flag to indicate whether we are going to use masks for
11188      the hardware watchpoint.  */
11189   int use_mask = 0;
11190   CORE_ADDR mask = 0;
11191   struct watchpoint *w;
11192   char *expression;
11193   struct cleanup *back_to;
11194
11195   /* Make sure that we actually have parameters to parse.  */
11196   if (arg != NULL && arg[0] != '\0')
11197     {
11198       const char *value_start;
11199
11200       exp_end = arg + strlen (arg);
11201
11202       /* Look for "parameter value" pairs at the end
11203          of the arguments string.  */
11204       for (tok = exp_end - 1; tok > arg; tok--)
11205         {
11206           /* Skip whitespace at the end of the argument list.  */
11207           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11208             tok--;
11209
11210           /* Find the beginning of the last token.
11211              This is the value of the parameter.  */
11212           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11213             tok--;
11214           value_start = tok + 1;
11215
11216           /* Skip whitespace.  */
11217           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11218             tok--;
11219
11220           end_tok = tok;
11221
11222           /* Find the beginning of the second to last token.
11223              This is the parameter itself.  */
11224           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11225             tok--;
11226           tok++;
11227           toklen = end_tok - tok + 1;
11228
11229           if (toklen == 6 && !strncmp (tok, "thread", 6))
11230             {
11231               /* At this point we've found a "thread" token, which means
11232                  the user is trying to set a watchpoint that triggers
11233                  only in a specific thread.  */
11234               char *endp;
11235
11236               if (thread != -1)
11237                 error(_("You can specify only one thread."));
11238
11239               /* Extract the thread ID from the next token.  */
11240               thread = strtol (value_start, &endp, 0);
11241
11242               /* Check if the user provided a valid numeric value for the
11243                  thread ID.  */
11244               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11245                 error (_("Invalid thread ID specification %s."), value_start);
11246
11247               /* Check if the thread actually exists.  */
11248               if (!valid_thread_id (thread))
11249                 invalid_thread_id_error (thread);
11250             }
11251           else if (toklen == 4 && !strncmp (tok, "mask", 4))
11252             {
11253               /* We've found a "mask" token, which means the user wants to
11254                  create a hardware watchpoint that is going to have the mask
11255                  facility.  */
11256               struct value *mask_value, *mark;
11257
11258               if (use_mask)
11259                 error(_("You can specify only one mask."));
11260
11261               use_mask = just_location = 1;
11262
11263               mark = value_mark ();
11264               mask_value = parse_to_comma_and_eval (&value_start);
11265               mask = value_as_address (mask_value);
11266               value_free_to_mark (mark);
11267             }
11268           else
11269             /* We didn't recognize what we found.  We should stop here.  */
11270             break;
11271
11272           /* Truncate the string and get rid of the "parameter value" pair before
11273              the arguments string is parsed by the parse_exp_1 function.  */
11274           exp_end = tok;
11275         }
11276     }
11277   else
11278     exp_end = arg;
11279
11280   /* Parse the rest of the arguments.  From here on out, everything
11281      is in terms of a newly allocated string instead of the original
11282      ARG.  */
11283   innermost_block = NULL;
11284   expression = savestring (arg, exp_end - arg);
11285   back_to = make_cleanup (xfree, expression);
11286   exp_start = arg = expression;
11287   exp = parse_exp_1 (&arg, 0, 0, 0);
11288   exp_end = arg;
11289   /* Remove trailing whitespace from the expression before saving it.
11290      This makes the eventual display of the expression string a bit
11291      prettier.  */
11292   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11293     --exp_end;
11294
11295   /* Checking if the expression is not constant.  */
11296   if (watchpoint_exp_is_const (exp))
11297     {
11298       int len;
11299
11300       len = exp_end - exp_start;
11301       while (len > 0 && isspace (exp_start[len - 1]))
11302         len--;
11303       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11304     }
11305
11306   exp_valid_block = innermost_block;
11307   mark = value_mark ();
11308   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11309
11310   if (just_location)
11311     {
11312       int ret;
11313
11314       exp_valid_block = NULL;
11315       val = value_addr (result);
11316       release_value (val);
11317       value_free_to_mark (mark);
11318
11319       if (use_mask)
11320         {
11321           ret = target_masked_watch_num_registers (value_as_address (val),
11322                                                    mask);
11323           if (ret == -1)
11324             error (_("This target does not support masked watchpoints."));
11325           else if (ret == -2)
11326             error (_("Invalid mask or memory region."));
11327         }
11328     }
11329   else if (val != NULL)
11330     release_value (val);
11331
11332   tok = skip_spaces_const (arg);
11333   end_tok = skip_to_space_const (tok);
11334
11335   toklen = end_tok - tok;
11336   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11337     {
11338       struct expression *cond;
11339
11340       innermost_block = NULL;
11341       tok = cond_start = end_tok + 1;
11342       cond = parse_exp_1 (&tok, 0, 0, 0);
11343
11344       /* The watchpoint expression may not be local, but the condition
11345          may still be.  E.g.: `watch global if local > 0'.  */
11346       cond_exp_valid_block = innermost_block;
11347
11348       xfree (cond);
11349       cond_end = tok;
11350     }
11351   if (*tok)
11352     error (_("Junk at end of command."));
11353
11354   frame = block_innermost_frame (exp_valid_block);
11355
11356   /* If the expression is "local", then set up a "watchpoint scope"
11357      breakpoint at the point where we've left the scope of the watchpoint
11358      expression.  Create the scope breakpoint before the watchpoint, so
11359      that we will encounter it first in bpstat_stop_status.  */
11360   if (exp_valid_block && frame)
11361     {
11362       if (frame_id_p (frame_unwind_caller_id (frame)))
11363         {
11364           scope_breakpoint
11365             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11366                                           frame_unwind_caller_pc (frame),
11367                                           bp_watchpoint_scope,
11368                                           &momentary_breakpoint_ops);
11369
11370           scope_breakpoint->enable_state = bp_enabled;
11371
11372           /* Automatically delete the breakpoint when it hits.  */
11373           scope_breakpoint->disposition = disp_del;
11374
11375           /* Only break in the proper frame (help with recursion).  */
11376           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11377
11378           /* Set the address at which we will stop.  */
11379           scope_breakpoint->loc->gdbarch
11380             = frame_unwind_caller_arch (frame);
11381           scope_breakpoint->loc->requested_address
11382             = frame_unwind_caller_pc (frame);
11383           scope_breakpoint->loc->address
11384             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11385                                          scope_breakpoint->loc->requested_address,
11386                                          scope_breakpoint->type);
11387         }
11388     }
11389
11390   /* Now set up the breakpoint.  We create all watchpoints as hardware
11391      watchpoints here even if hardware watchpoints are turned off, a call
11392      to update_watchpoint later in this function will cause the type to
11393      drop back to bp_watchpoint (software watchpoint) if required.  */
11394
11395   if (accessflag == hw_read)
11396     bp_type = bp_read_watchpoint;
11397   else if (accessflag == hw_access)
11398     bp_type = bp_access_watchpoint;
11399   else
11400     bp_type = bp_hardware_watchpoint;
11401
11402   w = XCNEW (struct watchpoint);
11403   b = &w->base;
11404   if (use_mask)
11405     init_raw_breakpoint_without_location (b, NULL, bp_type,
11406                                           &masked_watchpoint_breakpoint_ops);
11407   else
11408     init_raw_breakpoint_without_location (b, NULL, bp_type,
11409                                           &watchpoint_breakpoint_ops);
11410   b->thread = thread;
11411   b->disposition = disp_donttouch;
11412   b->pspace = current_program_space;
11413   w->exp = exp;
11414   w->exp_valid_block = exp_valid_block;
11415   w->cond_exp_valid_block = cond_exp_valid_block;
11416   if (just_location)
11417     {
11418       struct type *t = value_type (val);
11419       CORE_ADDR addr = value_as_address (val);
11420       char *name;
11421
11422       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11423       name = type_to_string (t);
11424
11425       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11426                                           core_addr_to_string (addr));
11427       xfree (name);
11428
11429       w->exp_string = xstrprintf ("-location %.*s",
11430                                   (int) (exp_end - exp_start), exp_start);
11431
11432       /* The above expression is in C.  */
11433       b->language = language_c;
11434     }
11435   else
11436     w->exp_string = savestring (exp_start, exp_end - exp_start);
11437
11438   if (use_mask)
11439     {
11440       w->hw_wp_mask = mask;
11441     }
11442   else
11443     {
11444       w->val = val;
11445       w->val_valid = 1;
11446     }
11447
11448   if (cond_start)
11449     b->cond_string = savestring (cond_start, cond_end - cond_start);
11450   else
11451     b->cond_string = 0;
11452
11453   if (frame)
11454     {
11455       w->watchpoint_frame = get_frame_id (frame);
11456       w->watchpoint_thread = inferior_ptid;
11457     }
11458   else
11459     {
11460       w->watchpoint_frame = null_frame_id;
11461       w->watchpoint_thread = null_ptid;
11462     }
11463
11464   if (scope_breakpoint != NULL)
11465     {
11466       /* The scope breakpoint is related to the watchpoint.  We will
11467          need to act on them together.  */
11468       b->related_breakpoint = scope_breakpoint;
11469       scope_breakpoint->related_breakpoint = b;
11470     }
11471
11472   if (!just_location)
11473     value_free_to_mark (mark);
11474
11475   TRY_CATCH (e, RETURN_MASK_ALL)
11476     {
11477       /* Finally update the new watchpoint.  This creates the locations
11478          that should be inserted.  */
11479       update_watchpoint (w, 1);
11480     }
11481   if (e.reason < 0)
11482     {
11483       delete_breakpoint (b);
11484       throw_exception (e);
11485     }
11486
11487   install_breakpoint (internal, b, 1);
11488   do_cleanups (back_to);
11489 }
11490
11491 /* Return count of debug registers needed to watch the given expression.
11492    If the watchpoint cannot be handled in hardware return zero.  */
11493
11494 static int
11495 can_use_hardware_watchpoint (struct value *v)
11496 {
11497   int found_memory_cnt = 0;
11498   struct value *head = v;
11499
11500   /* Did the user specifically forbid us to use hardware watchpoints? */
11501   if (!can_use_hw_watchpoints)
11502     return 0;
11503
11504   /* Make sure that the value of the expression depends only upon
11505      memory contents, and values computed from them within GDB.  If we
11506      find any register references or function calls, we can't use a
11507      hardware watchpoint.
11508
11509      The idea here is that evaluating an expression generates a series
11510      of values, one holding the value of every subexpression.  (The
11511      expression a*b+c has five subexpressions: a, b, a*b, c, and
11512      a*b+c.)  GDB's values hold almost enough information to establish
11513      the criteria given above --- they identify memory lvalues,
11514      register lvalues, computed values, etcetera.  So we can evaluate
11515      the expression, and then scan the chain of values that leaves
11516      behind to decide whether we can detect any possible change to the
11517      expression's final value using only hardware watchpoints.
11518
11519      However, I don't think that the values returned by inferior
11520      function calls are special in any way.  So this function may not
11521      notice that an expression involving an inferior function call
11522      can't be watched with hardware watchpoints.  FIXME.  */
11523   for (; v; v = value_next (v))
11524     {
11525       if (VALUE_LVAL (v) == lval_memory)
11526         {
11527           if (v != head && value_lazy (v))
11528             /* A lazy memory lvalue in the chain is one that GDB never
11529                needed to fetch; we either just used its address (e.g.,
11530                `a' in `a.b') or we never needed it at all (e.g., `a'
11531                in `a,b').  This doesn't apply to HEAD; if that is
11532                lazy then it was not readable, but watch it anyway.  */
11533             ;
11534           else
11535             {
11536               /* Ahh, memory we actually used!  Check if we can cover
11537                  it with hardware watchpoints.  */
11538               struct type *vtype = check_typedef (value_type (v));
11539
11540               /* We only watch structs and arrays if user asked for it
11541                  explicitly, never if they just happen to appear in a
11542                  middle of some value chain.  */
11543               if (v == head
11544                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11545                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11546                 {
11547                   CORE_ADDR vaddr = value_address (v);
11548                   int len;
11549                   int num_regs;
11550
11551                   len = (target_exact_watchpoints
11552                          && is_scalar_type_recursive (vtype))?
11553                     1 : TYPE_LENGTH (value_type (v));
11554
11555                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11556                   if (!num_regs)
11557                     return 0;
11558                   else
11559                     found_memory_cnt += num_regs;
11560                 }
11561             }
11562         }
11563       else if (VALUE_LVAL (v) != not_lval
11564                && deprecated_value_modifiable (v) == 0)
11565         return 0;       /* These are values from the history (e.g., $1).  */
11566       else if (VALUE_LVAL (v) == lval_register)
11567         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11568     }
11569
11570   /* The expression itself looks suitable for using a hardware
11571      watchpoint, but give the target machine a chance to reject it.  */
11572   return found_memory_cnt;
11573 }
11574
11575 void
11576 watch_command_wrapper (char *arg, int from_tty, int internal)
11577 {
11578   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11579 }
11580
11581 /* A helper function that looks for the "-location" argument and then
11582    calls watch_command_1.  */
11583
11584 static void
11585 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11586 {
11587   int just_location = 0;
11588
11589   if (arg
11590       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11591           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11592     {
11593       arg = skip_spaces (arg);
11594       just_location = 1;
11595     }
11596
11597   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11598 }
11599
11600 static void
11601 watch_command (char *arg, int from_tty)
11602 {
11603   watch_maybe_just_location (arg, hw_write, from_tty);
11604 }
11605
11606 void
11607 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11608 {
11609   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11610 }
11611
11612 static void
11613 rwatch_command (char *arg, int from_tty)
11614 {
11615   watch_maybe_just_location (arg, hw_read, from_tty);
11616 }
11617
11618 void
11619 awatch_command_wrapper (char *arg, int from_tty, int internal)
11620 {
11621   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11622 }
11623
11624 static void
11625 awatch_command (char *arg, int from_tty)
11626 {
11627   watch_maybe_just_location (arg, hw_access, from_tty);
11628 }
11629 \f
11630
11631 /* Helper routines for the until_command routine in infcmd.c.  Here
11632    because it uses the mechanisms of breakpoints.  */
11633
11634 struct until_break_command_continuation_args
11635 {
11636   struct breakpoint *breakpoint;
11637   struct breakpoint *breakpoint2;
11638   int thread_num;
11639 };
11640
11641 /* This function is called by fetch_inferior_event via the
11642    cmd_continuation pointer, to complete the until command.  It takes
11643    care of cleaning up the temporary breakpoints set up by the until
11644    command.  */
11645 static void
11646 until_break_command_continuation (void *arg, int err)
11647 {
11648   struct until_break_command_continuation_args *a = arg;
11649
11650   delete_breakpoint (a->breakpoint);
11651   if (a->breakpoint2)
11652     delete_breakpoint (a->breakpoint2);
11653   delete_longjmp_breakpoint (a->thread_num);
11654 }
11655
11656 void
11657 until_break_command (char *arg, int from_tty, int anywhere)
11658 {
11659   struct symtabs_and_lines sals;
11660   struct symtab_and_line sal;
11661   struct frame_info *frame;
11662   struct gdbarch *frame_gdbarch;
11663   struct frame_id stack_frame_id;
11664   struct frame_id caller_frame_id;
11665   struct breakpoint *breakpoint;
11666   struct breakpoint *breakpoint2 = NULL;
11667   struct cleanup *old_chain;
11668   int thread;
11669   struct thread_info *tp;
11670
11671   clear_proceed_status ();
11672
11673   /* Set a breakpoint where the user wants it and at return from
11674      this function.  */
11675
11676   if (last_displayed_sal_is_valid ())
11677     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11678                           get_last_displayed_symtab (),
11679                           get_last_displayed_line ());
11680   else
11681     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11682                           (struct symtab *) NULL, 0);
11683
11684   if (sals.nelts != 1)
11685     error (_("Couldn't get information on specified line."));
11686
11687   sal = sals.sals[0];
11688   xfree (sals.sals);    /* malloc'd, so freed.  */
11689
11690   if (*arg)
11691     error (_("Junk at end of arguments."));
11692
11693   resolve_sal_pc (&sal);
11694
11695   tp = inferior_thread ();
11696   thread = tp->num;
11697
11698   old_chain = make_cleanup (null_cleanup, NULL);
11699
11700   /* Note linespec handling above invalidates the frame chain.
11701      Installing a breakpoint also invalidates the frame chain (as it
11702      may need to switch threads), so do any frame handling before
11703      that.  */
11704
11705   frame = get_selected_frame (NULL);
11706   frame_gdbarch = get_frame_arch (frame);
11707   stack_frame_id = get_stack_frame_id (frame);
11708   caller_frame_id = frame_unwind_caller_id (frame);
11709
11710   /* Keep within the current frame, or in frames called by the current
11711      one.  */
11712
11713   if (frame_id_p (caller_frame_id))
11714     {
11715       struct symtab_and_line sal2;
11716
11717       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11718       sal2.pc = frame_unwind_caller_pc (frame);
11719       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11720                                               sal2,
11721                                               caller_frame_id,
11722                                               bp_until);
11723       make_cleanup_delete_breakpoint (breakpoint2);
11724
11725       set_longjmp_breakpoint (tp, caller_frame_id);
11726       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11727     }
11728
11729   /* set_momentary_breakpoint could invalidate FRAME.  */
11730   frame = NULL;
11731
11732   if (anywhere)
11733     /* If the user told us to continue until a specified location,
11734        we don't specify a frame at which we need to stop.  */
11735     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11736                                            null_frame_id, bp_until);
11737   else
11738     /* Otherwise, specify the selected frame, because we want to stop
11739        only at the very same frame.  */
11740     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11741                                            stack_frame_id, bp_until);
11742   make_cleanup_delete_breakpoint (breakpoint);
11743
11744   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11745
11746   /* If we are running asynchronously, and proceed call above has
11747      actually managed to start the target, arrange for breakpoints to
11748      be deleted when the target stops.  Otherwise, we're already
11749      stopped and delete breakpoints via cleanup chain.  */
11750
11751   if (target_can_async_p () && is_running (inferior_ptid))
11752     {
11753       struct until_break_command_continuation_args *args;
11754       args = xmalloc (sizeof (*args));
11755
11756       args->breakpoint = breakpoint;
11757       args->breakpoint2 = breakpoint2;
11758       args->thread_num = thread;
11759
11760       discard_cleanups (old_chain);
11761       add_continuation (inferior_thread (),
11762                         until_break_command_continuation, args,
11763                         xfree);
11764     }
11765   else
11766     do_cleanups (old_chain);
11767 }
11768
11769 /* This function attempts to parse an optional "if <cond>" clause
11770    from the arg string.  If one is not found, it returns NULL.
11771
11772    Else, it returns a pointer to the condition string.  (It does not
11773    attempt to evaluate the string against a particular block.)  And,
11774    it updates arg to point to the first character following the parsed
11775    if clause in the arg string.  */
11776
11777 char *
11778 ep_parse_optional_if_clause (char **arg)
11779 {
11780   char *cond_string;
11781
11782   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11783     return NULL;
11784
11785   /* Skip the "if" keyword.  */
11786   (*arg) += 2;
11787
11788   /* Skip any extra leading whitespace, and record the start of the
11789      condition string.  */
11790   *arg = skip_spaces (*arg);
11791   cond_string = *arg;
11792
11793   /* Assume that the condition occupies the remainder of the arg
11794      string.  */
11795   (*arg) += strlen (cond_string);
11796
11797   return cond_string;
11798 }
11799
11800 /* Commands to deal with catching events, such as signals, exceptions,
11801    process start/exit, etc.  */
11802
11803 typedef enum
11804 {
11805   catch_fork_temporary, catch_vfork_temporary,
11806   catch_fork_permanent, catch_vfork_permanent
11807 }
11808 catch_fork_kind;
11809
11810 static void
11811 catch_fork_command_1 (char *arg, int from_tty, 
11812                       struct cmd_list_element *command)
11813 {
11814   struct gdbarch *gdbarch = get_current_arch ();
11815   char *cond_string = NULL;
11816   catch_fork_kind fork_kind;
11817   int tempflag;
11818
11819   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11820   tempflag = (fork_kind == catch_fork_temporary
11821               || fork_kind == catch_vfork_temporary);
11822
11823   if (!arg)
11824     arg = "";
11825   arg = skip_spaces (arg);
11826
11827   /* The allowed syntax is:
11828      catch [v]fork
11829      catch [v]fork if <cond>
11830
11831      First, check if there's an if clause.  */
11832   cond_string = ep_parse_optional_if_clause (&arg);
11833
11834   if ((*arg != '\0') && !isspace (*arg))
11835     error (_("Junk at end of arguments."));
11836
11837   /* If this target supports it, create a fork or vfork catchpoint
11838      and enable reporting of such events.  */
11839   switch (fork_kind)
11840     {
11841     case catch_fork_temporary:
11842     case catch_fork_permanent:
11843       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11844                                           &catch_fork_breakpoint_ops);
11845       break;
11846     case catch_vfork_temporary:
11847     case catch_vfork_permanent:
11848       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11849                                           &catch_vfork_breakpoint_ops);
11850       break;
11851     default:
11852       error (_("unsupported or unknown fork kind; cannot catch it"));
11853       break;
11854     }
11855 }
11856
11857 static void
11858 catch_exec_command_1 (char *arg, int from_tty, 
11859                       struct cmd_list_element *command)
11860 {
11861   struct exec_catchpoint *c;
11862   struct gdbarch *gdbarch = get_current_arch ();
11863   int tempflag;
11864   char *cond_string = NULL;
11865
11866   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11867
11868   if (!arg)
11869     arg = "";
11870   arg = skip_spaces (arg);
11871
11872   /* The allowed syntax is:
11873      catch exec
11874      catch exec if <cond>
11875
11876      First, check if there's an if clause.  */
11877   cond_string = ep_parse_optional_if_clause (&arg);
11878
11879   if ((*arg != '\0') && !isspace (*arg))
11880     error (_("Junk at end of arguments."));
11881
11882   c = XNEW (struct exec_catchpoint);
11883   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11884                    &catch_exec_breakpoint_ops);
11885   c->exec_pathname = NULL;
11886
11887   install_breakpoint (0, &c->base, 1);
11888 }
11889
11890 void
11891 init_ada_exception_breakpoint (struct breakpoint *b,
11892                                struct gdbarch *gdbarch,
11893                                struct symtab_and_line sal,
11894                                char *addr_string,
11895                                const struct breakpoint_ops *ops,
11896                                int tempflag,
11897                                int enabled,
11898                                int from_tty)
11899 {
11900   if (from_tty)
11901     {
11902       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11903       if (!loc_gdbarch)
11904         loc_gdbarch = gdbarch;
11905
11906       describe_other_breakpoints (loc_gdbarch,
11907                                   sal.pspace, sal.pc, sal.section, -1);
11908       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11909          version for exception catchpoints, because two catchpoints
11910          used for different exception names will use the same address.
11911          In this case, a "breakpoint ... also set at..." warning is
11912          unproductive.  Besides, the warning phrasing is also a bit
11913          inappropriate, we should use the word catchpoint, and tell
11914          the user what type of catchpoint it is.  The above is good
11915          enough for now, though.  */
11916     }
11917
11918   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11919
11920   b->enable_state = enabled ? bp_enabled : bp_disabled;
11921   b->disposition = tempflag ? disp_del : disp_donttouch;
11922   b->addr_string = addr_string;
11923   b->language = language_ada;
11924 }
11925
11926 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
11927    filter list, or NULL if no filtering is required.  */
11928 static VEC(int) *
11929 catch_syscall_split_args (char *arg)
11930 {
11931   VEC(int) *result = NULL;
11932   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
11933
11934   while (*arg != '\0')
11935     {
11936       int i, syscall_number;
11937       char *endptr;
11938       char cur_name[128];
11939       struct syscall s;
11940
11941       /* Skip whitespace.  */
11942       arg = skip_spaces (arg);
11943
11944       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
11945         cur_name[i] = arg[i];
11946       cur_name[i] = '\0';
11947       arg += i;
11948
11949       /* Check if the user provided a syscall name or a number.  */
11950       syscall_number = (int) strtol (cur_name, &endptr, 0);
11951       if (*endptr == '\0')
11952         get_syscall_by_number (syscall_number, &s);
11953       else
11954         {
11955           /* We have a name.  Let's check if it's valid and convert it
11956              to a number.  */
11957           get_syscall_by_name (cur_name, &s);
11958
11959           if (s.number == UNKNOWN_SYSCALL)
11960             /* Here we have to issue an error instead of a warning,
11961                because GDB cannot do anything useful if there's no
11962                syscall number to be caught.  */
11963             error (_("Unknown syscall name '%s'."), cur_name);
11964         }
11965
11966       /* Ok, it's valid.  */
11967       VEC_safe_push (int, result, s.number);
11968     }
11969
11970   discard_cleanups (cleanup);
11971   return result;
11972 }
11973
11974 /* Implement the "catch syscall" command.  */
11975
11976 static void
11977 catch_syscall_command_1 (char *arg, int from_tty, 
11978                          struct cmd_list_element *command)
11979 {
11980   int tempflag;
11981   VEC(int) *filter;
11982   struct syscall s;
11983   struct gdbarch *gdbarch = get_current_arch ();
11984
11985   /* Checking if the feature if supported.  */
11986   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
11987     error (_("The feature 'catch syscall' is not supported on \
11988 this architecture yet."));
11989
11990   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11991
11992   arg = skip_spaces (arg);
11993
11994   /* We need to do this first "dummy" translation in order
11995      to get the syscall XML file loaded or, most important,
11996      to display a warning to the user if there's no XML file
11997      for his/her architecture.  */
11998   get_syscall_by_number (0, &s);
11999
12000   /* The allowed syntax is:
12001      catch syscall
12002      catch syscall <name | number> [<name | number> ... <name | number>]
12003
12004      Let's check if there's a syscall name.  */
12005
12006   if (arg != NULL)
12007     filter = catch_syscall_split_args (arg);
12008   else
12009     filter = NULL;
12010
12011   create_syscall_event_catchpoint (tempflag, filter,
12012                                    &catch_syscall_breakpoint_ops);
12013 }
12014
12015 static void
12016 catch_command (char *arg, int from_tty)
12017 {
12018   error (_("Catch requires an event name."));
12019 }
12020 \f
12021
12022 static void
12023 tcatch_command (char *arg, int from_tty)
12024 {
12025   error (_("Catch requires an event name."));
12026 }
12027
12028 /* A qsort comparison function that sorts breakpoints in order.  */
12029
12030 static int
12031 compare_breakpoints (const void *a, const void *b)
12032 {
12033   const breakpoint_p *ba = a;
12034   uintptr_t ua = (uintptr_t) *ba;
12035   const breakpoint_p *bb = b;
12036   uintptr_t ub = (uintptr_t) *bb;
12037
12038   if ((*ba)->number < (*bb)->number)
12039     return -1;
12040   else if ((*ba)->number > (*bb)->number)
12041     return 1;
12042
12043   /* Now sort by address, in case we see, e..g, two breakpoints with
12044      the number 0.  */
12045   if (ua < ub)
12046     return -1;
12047   return ua > ub ? 1 : 0;
12048 }
12049
12050 /* Delete breakpoints by address or line.  */
12051
12052 static void
12053 clear_command (char *arg, int from_tty)
12054 {
12055   struct breakpoint *b, *prev;
12056   VEC(breakpoint_p) *found = 0;
12057   int ix;
12058   int default_match;
12059   struct symtabs_and_lines sals;
12060   struct symtab_and_line sal;
12061   int i;
12062   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12063
12064   if (arg)
12065     {
12066       sals = decode_line_with_current_source (arg,
12067                                               (DECODE_LINE_FUNFIRSTLINE
12068                                                | DECODE_LINE_LIST_MODE));
12069       make_cleanup (xfree, sals.sals);
12070       default_match = 0;
12071     }
12072   else
12073     {
12074       sals.sals = (struct symtab_and_line *)
12075         xmalloc (sizeof (struct symtab_and_line));
12076       make_cleanup (xfree, sals.sals);
12077       init_sal (&sal);          /* Initialize to zeroes.  */
12078
12079       /* Set sal's line, symtab, pc, and pspace to the values
12080          corresponding to the last call to print_frame_info.  If the
12081          codepoint is not valid, this will set all the fields to 0.  */
12082       get_last_displayed_sal (&sal);
12083       if (sal.symtab == 0)
12084         error (_("No source file specified."));
12085
12086       sals.sals[0] = sal;
12087       sals.nelts = 1;
12088
12089       default_match = 1;
12090     }
12091
12092   /* We don't call resolve_sal_pc here.  That's not as bad as it
12093      seems, because all existing breakpoints typically have both
12094      file/line and pc set.  So, if clear is given file/line, we can
12095      match this to existing breakpoint without obtaining pc at all.
12096
12097      We only support clearing given the address explicitly 
12098      present in breakpoint table.  Say, we've set breakpoint 
12099      at file:line.  There were several PC values for that file:line,
12100      due to optimization, all in one block.
12101
12102      We've picked one PC value.  If "clear" is issued with another
12103      PC corresponding to the same file:line, the breakpoint won't
12104      be cleared.  We probably can still clear the breakpoint, but 
12105      since the other PC value is never presented to user, user
12106      can only find it by guessing, and it does not seem important
12107      to support that.  */
12108
12109   /* For each line spec given, delete bps which correspond to it.  Do
12110      it in two passes, solely to preserve the current behavior that
12111      from_tty is forced true if we delete more than one
12112      breakpoint.  */
12113
12114   found = NULL;
12115   make_cleanup (VEC_cleanup (breakpoint_p), &found);
12116   for (i = 0; i < sals.nelts; i++)
12117     {
12118       const char *sal_fullname;
12119
12120       /* If exact pc given, clear bpts at that pc.
12121          If line given (pc == 0), clear all bpts on specified line.
12122          If defaulting, clear all bpts on default line
12123          or at default pc.
12124
12125          defaulting    sal.pc != 0    tests to do
12126
12127          0              1             pc
12128          1              1             pc _and_ line
12129          0              0             line
12130          1              0             <can't happen> */
12131
12132       sal = sals.sals[i];
12133       sal_fullname = (sal.symtab == NULL
12134                       ? NULL : symtab_to_fullname (sal.symtab));
12135
12136       /* Find all matching breakpoints and add them to 'found'.  */
12137       ALL_BREAKPOINTS (b)
12138         {
12139           int match = 0;
12140           /* Are we going to delete b?  */
12141           if (b->type != bp_none && !is_watchpoint (b))
12142             {
12143               struct bp_location *loc = b->loc;
12144               for (; loc; loc = loc->next)
12145                 {
12146                   /* If the user specified file:line, don't allow a PC
12147                      match.  This matches historical gdb behavior.  */
12148                   int pc_match = (!sal.explicit_line
12149                                   && sal.pc
12150                                   && (loc->pspace == sal.pspace)
12151                                   && (loc->address == sal.pc)
12152                                   && (!section_is_overlay (loc->section)
12153                                       || loc->section == sal.section));
12154                   int line_match = 0;
12155
12156                   if ((default_match || sal.explicit_line)
12157                       && loc->symtab != NULL
12158                       && sal_fullname != NULL
12159                       && sal.pspace == loc->pspace
12160                       && loc->line_number == sal.line
12161                       && filename_cmp (symtab_to_fullname (loc->symtab),
12162                                        sal_fullname) == 0)
12163                     line_match = 1;
12164
12165                   if (pc_match || line_match)
12166                     {
12167                       match = 1;
12168                       break;
12169                     }
12170                 }
12171             }
12172
12173           if (match)
12174             VEC_safe_push(breakpoint_p, found, b);
12175         }
12176     }
12177
12178   /* Now go thru the 'found' chain and delete them.  */
12179   if (VEC_empty(breakpoint_p, found))
12180     {
12181       if (arg)
12182         error (_("No breakpoint at %s."), arg);
12183       else
12184         error (_("No breakpoint at this line."));
12185     }
12186
12187   /* Remove duplicates from the vec.  */
12188   qsort (VEC_address (breakpoint_p, found),
12189          VEC_length (breakpoint_p, found),
12190          sizeof (breakpoint_p),
12191          compare_breakpoints);
12192   prev = VEC_index (breakpoint_p, found, 0);
12193   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12194     {
12195       if (b == prev)
12196         {
12197           VEC_ordered_remove (breakpoint_p, found, ix);
12198           --ix;
12199         }
12200     }
12201
12202   if (VEC_length(breakpoint_p, found) > 1)
12203     from_tty = 1;       /* Always report if deleted more than one.  */
12204   if (from_tty)
12205     {
12206       if (VEC_length(breakpoint_p, found) == 1)
12207         printf_unfiltered (_("Deleted breakpoint "));
12208       else
12209         printf_unfiltered (_("Deleted breakpoints "));
12210     }
12211
12212   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12213     {
12214       if (from_tty)
12215         printf_unfiltered ("%d ", b->number);
12216       delete_breakpoint (b);
12217     }
12218   if (from_tty)
12219     putchar_unfiltered ('\n');
12220
12221   do_cleanups (cleanups);
12222 }
12223 \f
12224 /* Delete breakpoint in BS if they are `delete' breakpoints and
12225    all breakpoints that are marked for deletion, whether hit or not.
12226    This is called after any breakpoint is hit, or after errors.  */
12227
12228 void
12229 breakpoint_auto_delete (bpstat bs)
12230 {
12231   struct breakpoint *b, *b_tmp;
12232
12233   for (; bs; bs = bs->next)
12234     if (bs->breakpoint_at
12235         && bs->breakpoint_at->disposition == disp_del
12236         && bs->stop)
12237       delete_breakpoint (bs->breakpoint_at);
12238
12239   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12240   {
12241     if (b->disposition == disp_del_at_next_stop)
12242       delete_breakpoint (b);
12243   }
12244 }
12245
12246 /* A comparison function for bp_location AP and BP being interfaced to
12247    qsort.  Sort elements primarily by their ADDRESS (no matter what
12248    does breakpoint_address_is_meaningful say for its OWNER),
12249    secondarily by ordering first bp_permanent OWNERed elements and
12250    terciarily just ensuring the array is sorted stable way despite
12251    qsort being an unstable algorithm.  */
12252
12253 static int
12254 bp_location_compare (const void *ap, const void *bp)
12255 {
12256   struct bp_location *a = *(void **) ap;
12257   struct bp_location *b = *(void **) bp;
12258   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12259   int a_perm = a->owner->enable_state == bp_permanent;
12260   int b_perm = b->owner->enable_state == bp_permanent;
12261
12262   if (a->address != b->address)
12263     return (a->address > b->address) - (a->address < b->address);
12264
12265   /* Sort locations at the same address by their pspace number, keeping
12266      locations of the same inferior (in a multi-inferior environment)
12267      grouped.  */
12268
12269   if (a->pspace->num != b->pspace->num)
12270     return ((a->pspace->num > b->pspace->num)
12271             - (a->pspace->num < b->pspace->num));
12272
12273   /* Sort permanent breakpoints first.  */
12274   if (a_perm != b_perm)
12275     return (a_perm < b_perm) - (a_perm > b_perm);
12276
12277   /* Make the internal GDB representation stable across GDB runs
12278      where A and B memory inside GDB can differ.  Breakpoint locations of
12279      the same type at the same address can be sorted in arbitrary order.  */
12280
12281   if (a->owner->number != b->owner->number)
12282     return ((a->owner->number > b->owner->number)
12283             - (a->owner->number < b->owner->number));
12284
12285   return (a > b) - (a < b);
12286 }
12287
12288 /* Set bp_location_placed_address_before_address_max and
12289    bp_location_shadow_len_after_address_max according to the current
12290    content of the bp_location array.  */
12291
12292 static void
12293 bp_location_target_extensions_update (void)
12294 {
12295   struct bp_location *bl, **blp_tmp;
12296
12297   bp_location_placed_address_before_address_max = 0;
12298   bp_location_shadow_len_after_address_max = 0;
12299
12300   ALL_BP_LOCATIONS (bl, blp_tmp)
12301     {
12302       CORE_ADDR start, end, addr;
12303
12304       if (!bp_location_has_shadow (bl))
12305         continue;
12306
12307       start = bl->target_info.placed_address;
12308       end = start + bl->target_info.shadow_len;
12309
12310       gdb_assert (bl->address >= start);
12311       addr = bl->address - start;
12312       if (addr > bp_location_placed_address_before_address_max)
12313         bp_location_placed_address_before_address_max = addr;
12314
12315       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12316
12317       gdb_assert (bl->address < end);
12318       addr = end - bl->address;
12319       if (addr > bp_location_shadow_len_after_address_max)
12320         bp_location_shadow_len_after_address_max = addr;
12321     }
12322 }
12323
12324 /* Download tracepoint locations if they haven't been.  */
12325
12326 static void
12327 download_tracepoint_locations (void)
12328 {
12329   struct breakpoint *b;
12330   struct cleanup *old_chain;
12331
12332   if (!target_can_download_tracepoint ())
12333     return;
12334
12335   old_chain = save_current_space_and_thread ();
12336
12337   ALL_TRACEPOINTS (b)
12338     {
12339       struct bp_location *bl;
12340       struct tracepoint *t;
12341       int bp_location_downloaded = 0;
12342
12343       if ((b->type == bp_fast_tracepoint
12344            ? !may_insert_fast_tracepoints
12345            : !may_insert_tracepoints))
12346         continue;
12347
12348       for (bl = b->loc; bl; bl = bl->next)
12349         {
12350           /* In tracepoint, locations are _never_ duplicated, so
12351              should_be_inserted is equivalent to
12352              unduplicated_should_be_inserted.  */
12353           if (!should_be_inserted (bl) || bl->inserted)
12354             continue;
12355
12356           switch_to_program_space_and_thread (bl->pspace);
12357
12358           target_download_tracepoint (bl);
12359
12360           bl->inserted = 1;
12361           bp_location_downloaded = 1;
12362         }
12363       t = (struct tracepoint *) b;
12364       t->number_on_target = b->number;
12365       if (bp_location_downloaded)
12366         observer_notify_breakpoint_modified (b);
12367     }
12368
12369   do_cleanups (old_chain);
12370 }
12371
12372 /* Swap the insertion/duplication state between two locations.  */
12373
12374 static void
12375 swap_insertion (struct bp_location *left, struct bp_location *right)
12376 {
12377   const int left_inserted = left->inserted;
12378   const int left_duplicate = left->duplicate;
12379   const int left_needs_update = left->needs_update;
12380   const struct bp_target_info left_target_info = left->target_info;
12381
12382   /* Locations of tracepoints can never be duplicated.  */
12383   if (is_tracepoint (left->owner))
12384     gdb_assert (!left->duplicate);
12385   if (is_tracepoint (right->owner))
12386     gdb_assert (!right->duplicate);
12387
12388   left->inserted = right->inserted;
12389   left->duplicate = right->duplicate;
12390   left->needs_update = right->needs_update;
12391   left->target_info = right->target_info;
12392   right->inserted = left_inserted;
12393   right->duplicate = left_duplicate;
12394   right->needs_update = left_needs_update;
12395   right->target_info = left_target_info;
12396 }
12397
12398 /* Force the re-insertion of the locations at ADDRESS.  This is called
12399    once a new/deleted/modified duplicate location is found and we are evaluating
12400    conditions on the target's side.  Such conditions need to be updated on
12401    the target.  */
12402
12403 static void
12404 force_breakpoint_reinsertion (struct bp_location *bl)
12405 {
12406   struct bp_location **locp = NULL, **loc2p;
12407   struct bp_location *loc;
12408   CORE_ADDR address = 0;
12409   int pspace_num;
12410
12411   address = bl->address;
12412   pspace_num = bl->pspace->num;
12413
12414   /* This is only meaningful if the target is
12415      evaluating conditions and if the user has
12416      opted for condition evaluation on the target's
12417      side.  */
12418   if (gdb_evaluates_breakpoint_condition_p ()
12419       || !target_supports_evaluation_of_breakpoint_conditions ())
12420     return;
12421
12422   /* Flag all breakpoint locations with this address and
12423      the same program space as the location
12424      as "its condition has changed".  We need to
12425      update the conditions on the target's side.  */
12426   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12427     {
12428       loc = *loc2p;
12429
12430       if (!is_breakpoint (loc->owner)
12431           || pspace_num != loc->pspace->num)
12432         continue;
12433
12434       /* Flag the location appropriately.  We use a different state to
12435          let everyone know that we already updated the set of locations
12436          with addr bl->address and program space bl->pspace.  This is so
12437          we don't have to keep calling these functions just to mark locations
12438          that have already been marked.  */
12439       loc->condition_changed = condition_updated;
12440
12441       /* Free the agent expression bytecode as well.  We will compute
12442          it later on.  */
12443       if (loc->cond_bytecode)
12444         {
12445           free_agent_expr (loc->cond_bytecode);
12446           loc->cond_bytecode = NULL;
12447         }
12448     }
12449 }
12450
12451 /* If SHOULD_INSERT is false, do not insert any breakpoint locations
12452    into the inferior, only remove already-inserted locations that no
12453    longer should be inserted.  Functions that delete a breakpoint or
12454    breakpoints should pass false, so that deleting a breakpoint
12455    doesn't have the side effect of inserting the locations of other
12456    breakpoints that are marked not-inserted, but should_be_inserted
12457    returns true on them.
12458
12459    This behaviour is useful is situations close to tear-down -- e.g.,
12460    after an exec, while the target still has execution, but breakpoint
12461    shadows of the previous executable image should *NOT* be restored
12462    to the new image; or before detaching, where the target still has
12463    execution and wants to delete breakpoints from GDB's lists, and all
12464    breakpoints had already been removed from the inferior.  */
12465
12466 static void
12467 update_global_location_list (int should_insert)
12468 {
12469   struct breakpoint *b;
12470   struct bp_location **locp, *loc;
12471   struct cleanup *cleanups;
12472   /* Last breakpoint location address that was marked for update.  */
12473   CORE_ADDR last_addr = 0;
12474   /* Last breakpoint location program space that was marked for update.  */
12475   int last_pspace_num = -1;
12476
12477   /* Used in the duplicates detection below.  When iterating over all
12478      bp_locations, points to the first bp_location of a given address.
12479      Breakpoints and watchpoints of different types are never
12480      duplicates of each other.  Keep one pointer for each type of
12481      breakpoint/watchpoint, so we only need to loop over all locations
12482      once.  */
12483   struct bp_location *bp_loc_first;  /* breakpoint */
12484   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12485   struct bp_location *awp_loc_first; /* access watchpoint */
12486   struct bp_location *rwp_loc_first; /* read watchpoint */
12487
12488   /* Saved former bp_location array which we compare against the newly
12489      built bp_location from the current state of ALL_BREAKPOINTS.  */
12490   struct bp_location **old_location, **old_locp;
12491   unsigned old_location_count;
12492
12493   old_location = bp_location;
12494   old_location_count = bp_location_count;
12495   bp_location = NULL;
12496   bp_location_count = 0;
12497   cleanups = make_cleanup (xfree, old_location);
12498
12499   ALL_BREAKPOINTS (b)
12500     for (loc = b->loc; loc; loc = loc->next)
12501       bp_location_count++;
12502
12503   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12504   locp = bp_location;
12505   ALL_BREAKPOINTS (b)
12506     for (loc = b->loc; loc; loc = loc->next)
12507       *locp++ = loc;
12508   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12509          bp_location_compare);
12510
12511   bp_location_target_extensions_update ();
12512
12513   /* Identify bp_location instances that are no longer present in the
12514      new list, and therefore should be freed.  Note that it's not
12515      necessary that those locations should be removed from inferior --
12516      if there's another location at the same address (previously
12517      marked as duplicate), we don't need to remove/insert the
12518      location.
12519      
12520      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12521      and former bp_location array state respectively.  */
12522
12523   locp = bp_location;
12524   for (old_locp = old_location; old_locp < old_location + old_location_count;
12525        old_locp++)
12526     {
12527       struct bp_location *old_loc = *old_locp;
12528       struct bp_location **loc2p;
12529
12530       /* Tells if 'old_loc' is found among the new locations.  If
12531          not, we have to free it.  */
12532       int found_object = 0;
12533       /* Tells if the location should remain inserted in the target.  */
12534       int keep_in_target = 0;
12535       int removed = 0;
12536
12537       /* Skip LOCP entries which will definitely never be needed.
12538          Stop either at or being the one matching OLD_LOC.  */
12539       while (locp < bp_location + bp_location_count
12540              && (*locp)->address < old_loc->address)
12541         locp++;
12542
12543       for (loc2p = locp;
12544            (loc2p < bp_location + bp_location_count
12545             && (*loc2p)->address == old_loc->address);
12546            loc2p++)
12547         {
12548           /* Check if this is a new/duplicated location or a duplicated
12549              location that had its condition modified.  If so, we want to send
12550              its condition to the target if evaluation of conditions is taking
12551              place there.  */
12552           if ((*loc2p)->condition_changed == condition_modified
12553               && (last_addr != old_loc->address
12554                   || last_pspace_num != old_loc->pspace->num))
12555             {
12556               force_breakpoint_reinsertion (*loc2p);
12557               last_pspace_num = old_loc->pspace->num;
12558             }
12559
12560           if (*loc2p == old_loc)
12561             found_object = 1;
12562         }
12563
12564       /* We have already handled this address, update it so that we don't
12565          have to go through updates again.  */
12566       last_addr = old_loc->address;
12567
12568       /* Target-side condition evaluation: Handle deleted locations.  */
12569       if (!found_object)
12570         force_breakpoint_reinsertion (old_loc);
12571
12572       /* If this location is no longer present, and inserted, look if
12573          there's maybe a new location at the same address.  If so,
12574          mark that one inserted, and don't remove this one.  This is
12575          needed so that we don't have a time window where a breakpoint
12576          at certain location is not inserted.  */
12577
12578       if (old_loc->inserted)
12579         {
12580           /* If the location is inserted now, we might have to remove
12581              it.  */
12582
12583           if (found_object && should_be_inserted (old_loc))
12584             {
12585               /* The location is still present in the location list,
12586                  and still should be inserted.  Don't do anything.  */
12587               keep_in_target = 1;
12588             }
12589           else
12590             {
12591               /* This location still exists, but it won't be kept in the
12592                  target since it may have been disabled.  We proceed to
12593                  remove its target-side condition.  */
12594
12595               /* The location is either no longer present, or got
12596                  disabled.  See if there's another location at the
12597                  same address, in which case we don't need to remove
12598                  this one from the target.  */
12599
12600               /* OLD_LOC comes from existing struct breakpoint.  */
12601               if (breakpoint_address_is_meaningful (old_loc->owner))
12602                 {
12603                   for (loc2p = locp;
12604                        (loc2p < bp_location + bp_location_count
12605                         && (*loc2p)->address == old_loc->address);
12606                        loc2p++)
12607                     {
12608                       struct bp_location *loc2 = *loc2p;
12609
12610                       if (breakpoint_locations_match (loc2, old_loc))
12611                         {
12612                           /* Read watchpoint locations are switched to
12613                              access watchpoints, if the former are not
12614                              supported, but the latter are.  */
12615                           if (is_hardware_watchpoint (old_loc->owner))
12616                             {
12617                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12618                               loc2->watchpoint_type = old_loc->watchpoint_type;
12619                             }
12620
12621                           /* loc2 is a duplicated location. We need to check
12622                              if it should be inserted in case it will be
12623                              unduplicated.  */
12624                           if (loc2 != old_loc
12625                               && unduplicated_should_be_inserted (loc2))
12626                             {
12627                               swap_insertion (old_loc, loc2);
12628                               keep_in_target = 1;
12629                               break;
12630                             }
12631                         }
12632                     }
12633                 }
12634             }
12635
12636           if (!keep_in_target)
12637             {
12638               if (remove_breakpoint (old_loc, mark_uninserted))
12639                 {
12640                   /* This is just about all we can do.  We could keep
12641                      this location on the global list, and try to
12642                      remove it next time, but there's no particular
12643                      reason why we will succeed next time.
12644                      
12645                      Note that at this point, old_loc->owner is still
12646                      valid, as delete_breakpoint frees the breakpoint
12647                      only after calling us.  */
12648                   printf_filtered (_("warning: Error removing "
12649                                      "breakpoint %d\n"), 
12650                                    old_loc->owner->number);
12651                 }
12652               removed = 1;
12653             }
12654         }
12655
12656       if (!found_object)
12657         {
12658           if (removed && non_stop
12659               && breakpoint_address_is_meaningful (old_loc->owner)
12660               && !is_hardware_watchpoint (old_loc->owner))
12661             {
12662               /* This location was removed from the target.  In
12663                  non-stop mode, a race condition is possible where
12664                  we've removed a breakpoint, but stop events for that
12665                  breakpoint are already queued and will arrive later.
12666                  We apply an heuristic to be able to distinguish such
12667                  SIGTRAPs from other random SIGTRAPs: we keep this
12668                  breakpoint location for a bit, and will retire it
12669                  after we see some number of events.  The theory here
12670                  is that reporting of events should, "on the average",
12671                  be fair, so after a while we'll see events from all
12672                  threads that have anything of interest, and no longer
12673                  need to keep this breakpoint location around.  We
12674                  don't hold locations forever so to reduce chances of
12675                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12676                  SIGTRAP.
12677
12678                  The heuristic failing can be disastrous on
12679                  decr_pc_after_break targets.
12680
12681                  On decr_pc_after_break targets, like e.g., x86-linux,
12682                  if we fail to recognize a late breakpoint SIGTRAP,
12683                  because events_till_retirement has reached 0 too
12684                  soon, we'll fail to do the PC adjustment, and report
12685                  a random SIGTRAP to the user.  When the user resumes
12686                  the inferior, it will most likely immediately crash
12687                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12688                  corrupted, because of being resumed e.g., in the
12689                  middle of a multi-byte instruction, or skipped a
12690                  one-byte instruction.  This was actually seen happen
12691                  on native x86-linux, and should be less rare on
12692                  targets that do not support new thread events, like
12693                  remote, due to the heuristic depending on
12694                  thread_count.
12695
12696                  Mistaking a random SIGTRAP for a breakpoint trap
12697                  causes similar symptoms (PC adjustment applied when
12698                  it shouldn't), but then again, playing with SIGTRAPs
12699                  behind the debugger's back is asking for trouble.
12700
12701                  Since hardware watchpoint traps are always
12702                  distinguishable from other traps, so we don't need to
12703                  apply keep hardware watchpoint moribund locations
12704                  around.  We simply always ignore hardware watchpoint
12705                  traps we can no longer explain.  */
12706
12707               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12708               old_loc->owner = NULL;
12709
12710               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12711             }
12712           else
12713             {
12714               old_loc->owner = NULL;
12715               decref_bp_location (&old_loc);
12716             }
12717         }
12718     }
12719
12720   /* Rescan breakpoints at the same address and section, marking the
12721      first one as "first" and any others as "duplicates".  This is so
12722      that the bpt instruction is only inserted once.  If we have a
12723      permanent breakpoint at the same place as BPT, make that one the
12724      official one, and the rest as duplicates.  Permanent breakpoints
12725      are sorted first for the same address.
12726
12727      Do the same for hardware watchpoints, but also considering the
12728      watchpoint's type (regular/access/read) and length.  */
12729
12730   bp_loc_first = NULL;
12731   wp_loc_first = NULL;
12732   awp_loc_first = NULL;
12733   rwp_loc_first = NULL;
12734   ALL_BP_LOCATIONS (loc, locp)
12735     {
12736       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12737          non-NULL.  */
12738       struct bp_location **loc_first_p;
12739       b = loc->owner;
12740
12741       if (!unduplicated_should_be_inserted (loc)
12742           || !breakpoint_address_is_meaningful (b)
12743           /* Don't detect duplicate for tracepoint locations because they are
12744            never duplicated.  See the comments in field `duplicate' of
12745            `struct bp_location'.  */
12746           || is_tracepoint (b))
12747         {
12748           /* Clear the condition modification flag.  */
12749           loc->condition_changed = condition_unchanged;
12750           continue;
12751         }
12752
12753       /* Permanent breakpoint should always be inserted.  */
12754       if (b->enable_state == bp_permanent && ! loc->inserted)
12755         internal_error (__FILE__, __LINE__,
12756                         _("allegedly permanent breakpoint is not "
12757                         "actually inserted"));
12758
12759       if (b->type == bp_hardware_watchpoint)
12760         loc_first_p = &wp_loc_first;
12761       else if (b->type == bp_read_watchpoint)
12762         loc_first_p = &rwp_loc_first;
12763       else if (b->type == bp_access_watchpoint)
12764         loc_first_p = &awp_loc_first;
12765       else
12766         loc_first_p = &bp_loc_first;
12767
12768       if (*loc_first_p == NULL
12769           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12770           || !breakpoint_locations_match (loc, *loc_first_p))
12771         {
12772           *loc_first_p = loc;
12773           loc->duplicate = 0;
12774
12775           if (is_breakpoint (loc->owner) && loc->condition_changed)
12776             {
12777               loc->needs_update = 1;
12778               /* Clear the condition modification flag.  */
12779               loc->condition_changed = condition_unchanged;
12780             }
12781           continue;
12782         }
12783
12784
12785       /* This and the above ensure the invariant that the first location
12786          is not duplicated, and is the inserted one.
12787          All following are marked as duplicated, and are not inserted.  */
12788       if (loc->inserted)
12789         swap_insertion (loc, *loc_first_p);
12790       loc->duplicate = 1;
12791
12792       /* Clear the condition modification flag.  */
12793       loc->condition_changed = condition_unchanged;
12794
12795       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12796           && b->enable_state != bp_permanent)
12797         internal_error (__FILE__, __LINE__,
12798                         _("another breakpoint was inserted on top of "
12799                         "a permanent breakpoint"));
12800     }
12801
12802   if (breakpoints_always_inserted_mode ()
12803       && (have_live_inferiors ()
12804           || (gdbarch_has_global_breakpoints (target_gdbarch ()))))
12805     {
12806       if (should_insert)
12807         insert_breakpoint_locations ();
12808       else
12809         {
12810           /* Though should_insert is false, we may need to update conditions
12811              on the target's side if it is evaluating such conditions.  We
12812              only update conditions for locations that are marked
12813              "needs_update".  */
12814           update_inserted_breakpoint_locations ();
12815         }
12816     }
12817
12818   if (should_insert)
12819     download_tracepoint_locations ();
12820
12821   do_cleanups (cleanups);
12822 }
12823
12824 void
12825 breakpoint_retire_moribund (void)
12826 {
12827   struct bp_location *loc;
12828   int ix;
12829
12830   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12831     if (--(loc->events_till_retirement) == 0)
12832       {
12833         decref_bp_location (&loc);
12834         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12835         --ix;
12836       }
12837 }
12838
12839 static void
12840 update_global_location_list_nothrow (int inserting)
12841 {
12842   volatile struct gdb_exception e;
12843
12844   TRY_CATCH (e, RETURN_MASK_ERROR)
12845     update_global_location_list (inserting);
12846 }
12847
12848 /* Clear BKP from a BPS.  */
12849
12850 static void
12851 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12852 {
12853   bpstat bs;
12854
12855   for (bs = bps; bs; bs = bs->next)
12856     if (bs->breakpoint_at == bpt)
12857       {
12858         bs->breakpoint_at = NULL;
12859         bs->old_val = NULL;
12860         /* bs->commands will be freed later.  */
12861       }
12862 }
12863
12864 /* Callback for iterate_over_threads.  */
12865 static int
12866 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12867 {
12868   struct breakpoint *bpt = data;
12869
12870   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12871   return 0;
12872 }
12873
12874 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12875    callbacks.  */
12876
12877 static void
12878 say_where (struct breakpoint *b)
12879 {
12880   struct value_print_options opts;
12881
12882   get_user_print_options (&opts);
12883
12884   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12885      single string.  */
12886   if (b->loc == NULL)
12887     {
12888       printf_filtered (_(" (%s) pending."), b->addr_string);
12889     }
12890   else
12891     {
12892       if (opts.addressprint || b->loc->symtab == NULL)
12893         {
12894           printf_filtered (" at ");
12895           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12896                           gdb_stdout);
12897         }
12898       if (b->loc->symtab != NULL)
12899         {
12900           /* If there is a single location, we can print the location
12901              more nicely.  */
12902           if (b->loc->next == NULL)
12903             printf_filtered (": file %s, line %d.",
12904                              symtab_to_filename_for_display (b->loc->symtab),
12905                              b->loc->line_number);
12906           else
12907             /* This is not ideal, but each location may have a
12908                different file name, and this at least reflects the
12909                real situation somewhat.  */
12910             printf_filtered (": %s.", b->addr_string);
12911         }
12912
12913       if (b->loc->next)
12914         {
12915           struct bp_location *loc = b->loc;
12916           int n = 0;
12917           for (; loc; loc = loc->next)
12918             ++n;
12919           printf_filtered (" (%d locations)", n);
12920         }
12921     }
12922 }
12923
12924 /* Default bp_location_ops methods.  */
12925
12926 static void
12927 bp_location_dtor (struct bp_location *self)
12928 {
12929   xfree (self->cond);
12930   if (self->cond_bytecode)
12931     free_agent_expr (self->cond_bytecode);
12932   xfree (self->function_name);
12933
12934   VEC_free (agent_expr_p, self->target_info.conditions);
12935   VEC_free (agent_expr_p, self->target_info.tcommands);
12936 }
12937
12938 static const struct bp_location_ops bp_location_ops =
12939 {
12940   bp_location_dtor
12941 };
12942
12943 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12944    inherit from.  */
12945
12946 static void
12947 base_breakpoint_dtor (struct breakpoint *self)
12948 {
12949   decref_counted_command_line (&self->commands);
12950   xfree (self->cond_string);
12951   xfree (self->extra_string);
12952   xfree (self->addr_string);
12953   xfree (self->filter);
12954   xfree (self->addr_string_range_end);
12955 }
12956
12957 static struct bp_location *
12958 base_breakpoint_allocate_location (struct breakpoint *self)
12959 {
12960   struct bp_location *loc;
12961
12962   loc = XNEW (struct bp_location);
12963   init_bp_location (loc, &bp_location_ops, self);
12964   return loc;
12965 }
12966
12967 static void
12968 base_breakpoint_re_set (struct breakpoint *b)
12969 {
12970   /* Nothing to re-set. */
12971 }
12972
12973 #define internal_error_pure_virtual_called() \
12974   gdb_assert_not_reached ("pure virtual function called")
12975
12976 static int
12977 base_breakpoint_insert_location (struct bp_location *bl)
12978 {
12979   internal_error_pure_virtual_called ();
12980 }
12981
12982 static int
12983 base_breakpoint_remove_location (struct bp_location *bl)
12984 {
12985   internal_error_pure_virtual_called ();
12986 }
12987
12988 static int
12989 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12990                                 struct address_space *aspace,
12991                                 CORE_ADDR bp_addr,
12992                                 const struct target_waitstatus *ws)
12993 {
12994   internal_error_pure_virtual_called ();
12995 }
12996
12997 static void
12998 base_breakpoint_check_status (bpstat bs)
12999 {
13000   /* Always stop.   */
13001 }
13002
13003 /* A "works_in_software_mode" breakpoint_ops method that just internal
13004    errors.  */
13005
13006 static int
13007 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
13008 {
13009   internal_error_pure_virtual_called ();
13010 }
13011
13012 /* A "resources_needed" breakpoint_ops method that just internal
13013    errors.  */
13014
13015 static int
13016 base_breakpoint_resources_needed (const struct bp_location *bl)
13017 {
13018   internal_error_pure_virtual_called ();
13019 }
13020
13021 static enum print_stop_action
13022 base_breakpoint_print_it (bpstat bs)
13023 {
13024   internal_error_pure_virtual_called ();
13025 }
13026
13027 static void
13028 base_breakpoint_print_one_detail (const struct breakpoint *self,
13029                                   struct ui_out *uiout)
13030 {
13031   /* nothing */
13032 }
13033
13034 static void
13035 base_breakpoint_print_mention (struct breakpoint *b)
13036 {
13037   internal_error_pure_virtual_called ();
13038 }
13039
13040 static void
13041 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13042 {
13043   internal_error_pure_virtual_called ();
13044 }
13045
13046 static void
13047 base_breakpoint_create_sals_from_address (char **arg,
13048                                           struct linespec_result *canonical,
13049                                           enum bptype type_wanted,
13050                                           char *addr_start,
13051                                           char **copy_arg)
13052 {
13053   internal_error_pure_virtual_called ();
13054 }
13055
13056 static void
13057 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13058                                         struct linespec_result *c,
13059                                         char *cond_string,
13060                                         char *extra_string,
13061                                         enum bptype type_wanted,
13062                                         enum bpdisp disposition,
13063                                         int thread,
13064                                         int task, int ignore_count,
13065                                         const struct breakpoint_ops *o,
13066                                         int from_tty, int enabled,
13067                                         int internal, unsigned flags)
13068 {
13069   internal_error_pure_virtual_called ();
13070 }
13071
13072 static void
13073 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
13074                                  struct symtabs_and_lines *sals)
13075 {
13076   internal_error_pure_virtual_called ();
13077 }
13078
13079 /* The default 'explains_signal' method.  */
13080
13081 static int
13082 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13083 {
13084   return 1;
13085 }
13086
13087 /* The default "after_condition_true" method.  */
13088
13089 static void
13090 base_breakpoint_after_condition_true (struct bpstats *bs)
13091 {
13092   /* Nothing to do.   */
13093 }
13094
13095 struct breakpoint_ops base_breakpoint_ops =
13096 {
13097   base_breakpoint_dtor,
13098   base_breakpoint_allocate_location,
13099   base_breakpoint_re_set,
13100   base_breakpoint_insert_location,
13101   base_breakpoint_remove_location,
13102   base_breakpoint_breakpoint_hit,
13103   base_breakpoint_check_status,
13104   base_breakpoint_resources_needed,
13105   base_breakpoint_works_in_software_mode,
13106   base_breakpoint_print_it,
13107   NULL,
13108   base_breakpoint_print_one_detail,
13109   base_breakpoint_print_mention,
13110   base_breakpoint_print_recreate,
13111   base_breakpoint_create_sals_from_address,
13112   base_breakpoint_create_breakpoints_sal,
13113   base_breakpoint_decode_linespec,
13114   base_breakpoint_explains_signal,
13115   base_breakpoint_after_condition_true,
13116 };
13117
13118 /* Default breakpoint_ops methods.  */
13119
13120 static void
13121 bkpt_re_set (struct breakpoint *b)
13122 {
13123   /* FIXME: is this still reachable?  */
13124   if (b->addr_string == NULL)
13125     {
13126       /* Anything without a string can't be re-set.  */
13127       delete_breakpoint (b);
13128       return;
13129     }
13130
13131   breakpoint_re_set_default (b);
13132 }
13133
13134 /* Copy SRC's shadow buffer and whatever else we'd set if we actually
13135    inserted DEST, so we can remove it later, in case SRC is removed
13136    first.  */
13137
13138 static void
13139 bp_target_info_copy_insertion_state (struct bp_target_info *dest,
13140                                      const struct bp_target_info *src)
13141 {
13142   dest->shadow_len = src->shadow_len;
13143   memcpy (dest->shadow_contents, src->shadow_contents, src->shadow_len);
13144   dest->placed_size = src->placed_size;
13145 }
13146
13147 static int
13148 bkpt_insert_location (struct bp_location *bl)
13149 {
13150   if (bl->loc_type == bp_loc_hardware_breakpoint)
13151     return target_insert_hw_breakpoint (bl->gdbarch,
13152                                         &bl->target_info);
13153   else
13154     {
13155       struct bp_target_info *bp_tgt = &bl->target_info;
13156       int ret;
13157       int sss_slot;
13158
13159       /* There is no need to insert a breakpoint if an unconditional
13160          raw/sss breakpoint is already inserted at that location.  */
13161       sss_slot = find_single_step_breakpoint (bp_tgt->placed_address_space,
13162                                               bp_tgt->placed_address);
13163       if (sss_slot >= 0)
13164         {
13165           struct bp_target_info *sss_bp_tgt = single_step_breakpoints[sss_slot];
13166
13167           bp_target_info_copy_insertion_state (bp_tgt, sss_bp_tgt);
13168           return 0;
13169         }
13170
13171       return target_insert_breakpoint (bl->gdbarch, bp_tgt);
13172     }
13173 }
13174
13175 static int
13176 bkpt_remove_location (struct bp_location *bl)
13177 {
13178   if (bl->loc_type == bp_loc_hardware_breakpoint)
13179     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13180   else
13181     {
13182       struct bp_target_info *bp_tgt = &bl->target_info;
13183       struct address_space *aspace = bp_tgt->placed_address_space;
13184       CORE_ADDR address = bp_tgt->placed_address;
13185
13186       /* Only remove the breakpoint if there is no raw/sss breakpoint
13187          still inserted at this location.  Otherwise, we would be
13188          effectively disabling the raw/sss breakpoint.  */
13189       if (single_step_breakpoint_inserted_here_p (aspace, address))
13190         return 0;
13191
13192       return target_remove_breakpoint (bl->gdbarch, bp_tgt);
13193     }
13194 }
13195
13196 static int
13197 bkpt_breakpoint_hit (const struct bp_location *bl,
13198                      struct address_space *aspace, CORE_ADDR bp_addr,
13199                      const struct target_waitstatus *ws)
13200 {
13201   if (ws->kind != TARGET_WAITKIND_STOPPED
13202       || ws->value.sig != GDB_SIGNAL_TRAP)
13203     return 0;
13204
13205   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13206                                  aspace, bp_addr))
13207     return 0;
13208
13209   if (overlay_debugging         /* unmapped overlay section */
13210       && section_is_overlay (bl->section)
13211       && !section_is_mapped (bl->section))
13212     return 0;
13213
13214   return 1;
13215 }
13216
13217 static int
13218 dprintf_breakpoint_hit (const struct bp_location *bl,
13219                         struct address_space *aspace, CORE_ADDR bp_addr,
13220                         const struct target_waitstatus *ws)
13221 {
13222   if (dprintf_style == dprintf_style_agent
13223       && target_can_run_breakpoint_commands ())
13224     {
13225       /* An agent-style dprintf never causes a stop.  If we see a trap
13226          for this address it must be for a breakpoint that happens to
13227          be set at the same address.  */
13228       return 0;
13229     }
13230
13231   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13232 }
13233
13234 static int
13235 bkpt_resources_needed (const struct bp_location *bl)
13236 {
13237   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13238
13239   return 1;
13240 }
13241
13242 static enum print_stop_action
13243 bkpt_print_it (bpstat bs)
13244 {
13245   struct breakpoint *b;
13246   const struct bp_location *bl;
13247   int bp_temp;
13248   struct ui_out *uiout = current_uiout;
13249
13250   gdb_assert (bs->bp_location_at != NULL);
13251
13252   bl = bs->bp_location_at;
13253   b = bs->breakpoint_at;
13254
13255   bp_temp = b->disposition == disp_del;
13256   if (bl->address != bl->requested_address)
13257     breakpoint_adjustment_warning (bl->requested_address,
13258                                    bl->address,
13259                                    b->number, 1);
13260   annotate_breakpoint (b->number);
13261   if (bp_temp)
13262     ui_out_text (uiout, "\nTemporary breakpoint ");
13263   else
13264     ui_out_text (uiout, "\nBreakpoint ");
13265   if (ui_out_is_mi_like_p (uiout))
13266     {
13267       ui_out_field_string (uiout, "reason",
13268                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13269       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13270     }
13271   ui_out_field_int (uiout, "bkptno", b->number);
13272   ui_out_text (uiout, ", ");
13273
13274   return PRINT_SRC_AND_LOC;
13275 }
13276
13277 static void
13278 bkpt_print_mention (struct breakpoint *b)
13279 {
13280   if (ui_out_is_mi_like_p (current_uiout))
13281     return;
13282
13283   switch (b->type)
13284     {
13285     case bp_breakpoint:
13286     case bp_gnu_ifunc_resolver:
13287       if (b->disposition == disp_del)
13288         printf_filtered (_("Temporary breakpoint"));
13289       else
13290         printf_filtered (_("Breakpoint"));
13291       printf_filtered (_(" %d"), b->number);
13292       if (b->type == bp_gnu_ifunc_resolver)
13293         printf_filtered (_(" at gnu-indirect-function resolver"));
13294       break;
13295     case bp_hardware_breakpoint:
13296       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13297       break;
13298     case bp_dprintf:
13299       printf_filtered (_("Dprintf %d"), b->number);
13300       break;
13301     }
13302
13303   say_where (b);
13304 }
13305
13306 static void
13307 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13308 {
13309   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13310     fprintf_unfiltered (fp, "tbreak");
13311   else if (tp->type == bp_breakpoint)
13312     fprintf_unfiltered (fp, "break");
13313   else if (tp->type == bp_hardware_breakpoint
13314            && tp->disposition == disp_del)
13315     fprintf_unfiltered (fp, "thbreak");
13316   else if (tp->type == bp_hardware_breakpoint)
13317     fprintf_unfiltered (fp, "hbreak");
13318   else
13319     internal_error (__FILE__, __LINE__,
13320                     _("unhandled breakpoint type %d"), (int) tp->type);
13321
13322   fprintf_unfiltered (fp, " %s", tp->addr_string);
13323   print_recreate_thread (tp, fp);
13324 }
13325
13326 static void
13327 bkpt_create_sals_from_address (char **arg,
13328                                struct linespec_result *canonical,
13329                                enum bptype type_wanted,
13330                                char *addr_start, char **copy_arg)
13331 {
13332   create_sals_from_address_default (arg, canonical, type_wanted,
13333                                     addr_start, copy_arg);
13334 }
13335
13336 static void
13337 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13338                              struct linespec_result *canonical,
13339                              char *cond_string,
13340                              char *extra_string,
13341                              enum bptype type_wanted,
13342                              enum bpdisp disposition,
13343                              int thread,
13344                              int task, int ignore_count,
13345                              const struct breakpoint_ops *ops,
13346                              int from_tty, int enabled,
13347                              int internal, unsigned flags)
13348 {
13349   create_breakpoints_sal_default (gdbarch, canonical,
13350                                   cond_string, extra_string,
13351                                   type_wanted,
13352                                   disposition, thread, task,
13353                                   ignore_count, ops, from_tty,
13354                                   enabled, internal, flags);
13355 }
13356
13357 static void
13358 bkpt_decode_linespec (struct breakpoint *b, char **s,
13359                       struct symtabs_and_lines *sals)
13360 {
13361   decode_linespec_default (b, s, sals);
13362 }
13363
13364 /* Virtual table for internal breakpoints.  */
13365
13366 static void
13367 internal_bkpt_re_set (struct breakpoint *b)
13368 {
13369   switch (b->type)
13370     {
13371       /* Delete overlay event and longjmp master breakpoints; they
13372          will be reset later by breakpoint_re_set.  */
13373     case bp_overlay_event:
13374     case bp_longjmp_master:
13375     case bp_std_terminate_master:
13376     case bp_exception_master:
13377       delete_breakpoint (b);
13378       break;
13379
13380       /* This breakpoint is special, it's set up when the inferior
13381          starts and we really don't want to touch it.  */
13382     case bp_shlib_event:
13383
13384       /* Like bp_shlib_event, this breakpoint type is special.  Once
13385          it is set up, we do not want to touch it.  */
13386     case bp_thread_event:
13387       break;
13388     }
13389 }
13390
13391 static void
13392 internal_bkpt_check_status (bpstat bs)
13393 {
13394   if (bs->breakpoint_at->type == bp_shlib_event)
13395     {
13396       /* If requested, stop when the dynamic linker notifies GDB of
13397          events.  This allows the user to get control and place
13398          breakpoints in initializer routines for dynamically loaded
13399          objects (among other things).  */
13400       bs->stop = stop_on_solib_events;
13401       bs->print = stop_on_solib_events;
13402     }
13403   else
13404     bs->stop = 0;
13405 }
13406
13407 static enum print_stop_action
13408 internal_bkpt_print_it (bpstat bs)
13409 {
13410   struct breakpoint *b;
13411
13412   b = bs->breakpoint_at;
13413
13414   switch (b->type)
13415     {
13416     case bp_shlib_event:
13417       /* Did we stop because the user set the stop_on_solib_events
13418          variable?  (If so, we report this as a generic, "Stopped due
13419          to shlib event" message.) */
13420       print_solib_event (0);
13421       break;
13422
13423     case bp_thread_event:
13424       /* Not sure how we will get here.
13425          GDB should not stop for these breakpoints.  */
13426       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13427       break;
13428
13429     case bp_overlay_event:
13430       /* By analogy with the thread event, GDB should not stop for these.  */
13431       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13432       break;
13433
13434     case bp_longjmp_master:
13435       /* These should never be enabled.  */
13436       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13437       break;
13438
13439     case bp_std_terminate_master:
13440       /* These should never be enabled.  */
13441       printf_filtered (_("std::terminate Master Breakpoint: "
13442                          "gdb should not stop!\n"));
13443       break;
13444
13445     case bp_exception_master:
13446       /* These should never be enabled.  */
13447       printf_filtered (_("Exception Master Breakpoint: "
13448                          "gdb should not stop!\n"));
13449       break;
13450     }
13451
13452   return PRINT_NOTHING;
13453 }
13454
13455 static void
13456 internal_bkpt_print_mention (struct breakpoint *b)
13457 {
13458   /* Nothing to mention.  These breakpoints are internal.  */
13459 }
13460
13461 /* Virtual table for momentary breakpoints  */
13462
13463 static void
13464 momentary_bkpt_re_set (struct breakpoint *b)
13465 {
13466   /* Keep temporary breakpoints, which can be encountered when we step
13467      over a dlopen call and solib_add is resetting the breakpoints.
13468      Otherwise these should have been blown away via the cleanup chain
13469      or by breakpoint_init_inferior when we rerun the executable.  */
13470 }
13471
13472 static void
13473 momentary_bkpt_check_status (bpstat bs)
13474 {
13475   /* Nothing.  The point of these breakpoints is causing a stop.  */
13476 }
13477
13478 static enum print_stop_action
13479 momentary_bkpt_print_it (bpstat bs)
13480 {
13481   struct ui_out *uiout = current_uiout;
13482
13483   if (ui_out_is_mi_like_p (uiout))
13484     {
13485       struct breakpoint *b = bs->breakpoint_at;
13486
13487       switch (b->type)
13488         {
13489         case bp_finish:
13490           ui_out_field_string
13491             (uiout, "reason",
13492              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13493           break;
13494
13495         case bp_until:
13496           ui_out_field_string
13497             (uiout, "reason",
13498              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13499           break;
13500         }
13501     }
13502
13503   return PRINT_UNKNOWN;
13504 }
13505
13506 static void
13507 momentary_bkpt_print_mention (struct breakpoint *b)
13508 {
13509   /* Nothing to mention.  These breakpoints are internal.  */
13510 }
13511
13512 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13513
13514    It gets cleared already on the removal of the first one of such placed
13515    breakpoints.  This is OK as they get all removed altogether.  */
13516
13517 static void
13518 longjmp_bkpt_dtor (struct breakpoint *self)
13519 {
13520   struct thread_info *tp = find_thread_id (self->thread);
13521
13522   if (tp)
13523     tp->initiating_frame = null_frame_id;
13524
13525   momentary_breakpoint_ops.dtor (self);
13526 }
13527
13528 /* Specific methods for probe breakpoints.  */
13529
13530 static int
13531 bkpt_probe_insert_location (struct bp_location *bl)
13532 {
13533   int v = bkpt_insert_location (bl);
13534
13535   if (v == 0)
13536     {
13537       /* The insertion was successful, now let's set the probe's semaphore
13538          if needed.  */
13539       bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13540                                             bl->probe.objfile,
13541                                             bl->gdbarch);
13542     }
13543
13544   return v;
13545 }
13546
13547 static int
13548 bkpt_probe_remove_location (struct bp_location *bl)
13549 {
13550   /* Let's clear the semaphore before removing the location.  */
13551   bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13552                                           bl->probe.objfile,
13553                                           bl->gdbarch);
13554
13555   return bkpt_remove_location (bl);
13556 }
13557
13558 static void
13559 bkpt_probe_create_sals_from_address (char **arg,
13560                                      struct linespec_result *canonical,
13561                                      enum bptype type_wanted,
13562                                      char *addr_start, char **copy_arg)
13563 {
13564   struct linespec_sals lsal;
13565
13566   lsal.sals = parse_probes (arg, canonical);
13567
13568   *copy_arg = xstrdup (canonical->addr_string);
13569   lsal.canonical = xstrdup (*copy_arg);
13570
13571   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13572 }
13573
13574 static void
13575 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13576                             struct symtabs_and_lines *sals)
13577 {
13578   *sals = parse_probes (s, NULL);
13579   if (!sals->sals)
13580     error (_("probe not found"));
13581 }
13582
13583 /* The breakpoint_ops structure to be used in tracepoints.  */
13584
13585 static void
13586 tracepoint_re_set (struct breakpoint *b)
13587 {
13588   breakpoint_re_set_default (b);
13589 }
13590
13591 static int
13592 tracepoint_breakpoint_hit (const struct bp_location *bl,
13593                            struct address_space *aspace, CORE_ADDR bp_addr,
13594                            const struct target_waitstatus *ws)
13595 {
13596   /* By definition, the inferior does not report stops at
13597      tracepoints.  */
13598   return 0;
13599 }
13600
13601 static void
13602 tracepoint_print_one_detail (const struct breakpoint *self,
13603                              struct ui_out *uiout)
13604 {
13605   struct tracepoint *tp = (struct tracepoint *) self;
13606   if (tp->static_trace_marker_id)
13607     {
13608       gdb_assert (self->type == bp_static_tracepoint);
13609
13610       ui_out_text (uiout, "\tmarker id is ");
13611       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13612                            tp->static_trace_marker_id);
13613       ui_out_text (uiout, "\n");
13614     }
13615 }
13616
13617 static void
13618 tracepoint_print_mention (struct breakpoint *b)
13619 {
13620   if (ui_out_is_mi_like_p (current_uiout))
13621     return;
13622
13623   switch (b->type)
13624     {
13625     case bp_tracepoint:
13626       printf_filtered (_("Tracepoint"));
13627       printf_filtered (_(" %d"), b->number);
13628       break;
13629     case bp_fast_tracepoint:
13630       printf_filtered (_("Fast tracepoint"));
13631       printf_filtered (_(" %d"), b->number);
13632       break;
13633     case bp_static_tracepoint:
13634       printf_filtered (_("Static tracepoint"));
13635       printf_filtered (_(" %d"), b->number);
13636       break;
13637     default:
13638       internal_error (__FILE__, __LINE__,
13639                       _("unhandled tracepoint type %d"), (int) b->type);
13640     }
13641
13642   say_where (b);
13643 }
13644
13645 static void
13646 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13647 {
13648   struct tracepoint *tp = (struct tracepoint *) self;
13649
13650   if (self->type == bp_fast_tracepoint)
13651     fprintf_unfiltered (fp, "ftrace");
13652   if (self->type == bp_static_tracepoint)
13653     fprintf_unfiltered (fp, "strace");
13654   else if (self->type == bp_tracepoint)
13655     fprintf_unfiltered (fp, "trace");
13656   else
13657     internal_error (__FILE__, __LINE__,
13658                     _("unhandled tracepoint type %d"), (int) self->type);
13659
13660   fprintf_unfiltered (fp, " %s", self->addr_string);
13661   print_recreate_thread (self, fp);
13662
13663   if (tp->pass_count)
13664     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13665 }
13666
13667 static void
13668 tracepoint_create_sals_from_address (char **arg,
13669                                      struct linespec_result *canonical,
13670                                      enum bptype type_wanted,
13671                                      char *addr_start, char **copy_arg)
13672 {
13673   create_sals_from_address_default (arg, canonical, type_wanted,
13674                                     addr_start, copy_arg);
13675 }
13676
13677 static void
13678 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13679                                    struct linespec_result *canonical,
13680                                    char *cond_string,
13681                                    char *extra_string,
13682                                    enum bptype type_wanted,
13683                                    enum bpdisp disposition,
13684                                    int thread,
13685                                    int task, int ignore_count,
13686                                    const struct breakpoint_ops *ops,
13687                                    int from_tty, int enabled,
13688                                    int internal, unsigned flags)
13689 {
13690   create_breakpoints_sal_default (gdbarch, canonical,
13691                                   cond_string, extra_string,
13692                                   type_wanted,
13693                                   disposition, thread, task,
13694                                   ignore_count, ops, from_tty,
13695                                   enabled, internal, flags);
13696 }
13697
13698 static void
13699 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13700                             struct symtabs_and_lines *sals)
13701 {
13702   decode_linespec_default (b, s, sals);
13703 }
13704
13705 struct breakpoint_ops tracepoint_breakpoint_ops;
13706
13707 /* The breakpoint_ops structure to be use on tracepoints placed in a
13708    static probe.  */
13709
13710 static void
13711 tracepoint_probe_create_sals_from_address (char **arg,
13712                                            struct linespec_result *canonical,
13713                                            enum bptype type_wanted,
13714                                            char *addr_start, char **copy_arg)
13715 {
13716   /* We use the same method for breakpoint on probes.  */
13717   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13718                                        addr_start, copy_arg);
13719 }
13720
13721 static void
13722 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13723                                   struct symtabs_and_lines *sals)
13724 {
13725   /* We use the same method for breakpoint on probes.  */
13726   bkpt_probe_decode_linespec (b, s, sals);
13727 }
13728
13729 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13730
13731 /* Dprintf breakpoint_ops methods.  */
13732
13733 static void
13734 dprintf_re_set (struct breakpoint *b)
13735 {
13736   breakpoint_re_set_default (b);
13737
13738   /* This breakpoint could have been pending, and be resolved now, and
13739      if so, we should now have the extra string.  If we don't, the
13740      dprintf was malformed when created, but we couldn't tell because
13741      we can't extract the extra string until the location is
13742      resolved.  */
13743   if (b->loc != NULL && b->extra_string == NULL)
13744     error (_("Format string required"));
13745
13746   /* 1 - connect to target 1, that can run breakpoint commands.
13747      2 - create a dprintf, which resolves fine.
13748      3 - disconnect from target 1
13749      4 - connect to target 2, that can NOT run breakpoint commands.
13750
13751      After steps #3/#4, you'll want the dprintf command list to
13752      be updated, because target 1 and 2 may well return different
13753      answers for target_can_run_breakpoint_commands().
13754      Given absence of finer grained resetting, we get to do
13755      it all the time.  */
13756   if (b->extra_string != NULL)
13757     update_dprintf_command_list (b);
13758 }
13759
13760 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13761
13762 static void
13763 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13764 {
13765   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13766                       tp->extra_string);
13767   print_recreate_thread (tp, fp);
13768 }
13769
13770 /* Implement the "after_condition_true" breakpoint_ops method for
13771    dprintf.
13772
13773    dprintf's are implemented with regular commands in their command
13774    list, but we run the commands here instead of before presenting the
13775    stop to the user, as dprintf's don't actually cause a stop.  This
13776    also makes it so that the commands of multiple dprintfs at the same
13777    address are all handled.  */
13778
13779 static void
13780 dprintf_after_condition_true (struct bpstats *bs)
13781 {
13782   struct cleanup *old_chain;
13783   struct bpstats tmp_bs = { NULL };
13784   struct bpstats *tmp_bs_p = &tmp_bs;
13785
13786   /* dprintf's never cause a stop.  This wasn't set in the
13787      check_status hook instead because that would make the dprintf's
13788      condition not be evaluated.  */
13789   bs->stop = 0;
13790
13791   /* Run the command list here.  Take ownership of it instead of
13792      copying.  We never want these commands to run later in
13793      bpstat_do_actions, if a breakpoint that causes a stop happens to
13794      be set at same address as this dprintf, or even if running the
13795      commands here throws.  */
13796   tmp_bs.commands = bs->commands;
13797   bs->commands = NULL;
13798   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13799
13800   bpstat_do_actions_1 (&tmp_bs_p);
13801
13802   /* 'tmp_bs.commands' will usually be NULL by now, but
13803      bpstat_do_actions_1 may return early without processing the whole
13804      list.  */
13805   do_cleanups (old_chain);
13806 }
13807
13808 /* The breakpoint_ops structure to be used on static tracepoints with
13809    markers (`-m').  */
13810
13811 static void
13812 strace_marker_create_sals_from_address (char **arg,
13813                                         struct linespec_result *canonical,
13814                                         enum bptype type_wanted,
13815                                         char *addr_start, char **copy_arg)
13816 {
13817   struct linespec_sals lsal;
13818
13819   lsal.sals = decode_static_tracepoint_spec (arg);
13820
13821   *copy_arg = savestring (addr_start, *arg - addr_start);
13822
13823   canonical->addr_string = xstrdup (*copy_arg);
13824   lsal.canonical = xstrdup (*copy_arg);
13825   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13826 }
13827
13828 static void
13829 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13830                                       struct linespec_result *canonical,
13831                                       char *cond_string,
13832                                       char *extra_string,
13833                                       enum bptype type_wanted,
13834                                       enum bpdisp disposition,
13835                                       int thread,
13836                                       int task, int ignore_count,
13837                                       const struct breakpoint_ops *ops,
13838                                       int from_tty, int enabled,
13839                                       int internal, unsigned flags)
13840 {
13841   int i;
13842   struct linespec_sals *lsal = VEC_index (linespec_sals,
13843                                           canonical->sals, 0);
13844
13845   /* If the user is creating a static tracepoint by marker id
13846      (strace -m MARKER_ID), then store the sals index, so that
13847      breakpoint_re_set can try to match up which of the newly
13848      found markers corresponds to this one, and, don't try to
13849      expand multiple locations for each sal, given than SALS
13850      already should contain all sals for MARKER_ID.  */
13851
13852   for (i = 0; i < lsal->sals.nelts; ++i)
13853     {
13854       struct symtabs_and_lines expanded;
13855       struct tracepoint *tp;
13856       struct cleanup *old_chain;
13857       char *addr_string;
13858
13859       expanded.nelts = 1;
13860       expanded.sals = &lsal->sals.sals[i];
13861
13862       addr_string = xstrdup (canonical->addr_string);
13863       old_chain = make_cleanup (xfree, addr_string);
13864
13865       tp = XCNEW (struct tracepoint);
13866       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13867                            addr_string, NULL,
13868                            cond_string, extra_string,
13869                            type_wanted, disposition,
13870                            thread, task, ignore_count, ops,
13871                            from_tty, enabled, internal, flags,
13872                            canonical->special_display);
13873       /* Given that its possible to have multiple markers with
13874          the same string id, if the user is creating a static
13875          tracepoint by marker id ("strace -m MARKER_ID"), then
13876          store the sals index, so that breakpoint_re_set can
13877          try to match up which of the newly found markers
13878          corresponds to this one  */
13879       tp->static_trace_marker_id_idx = i;
13880
13881       install_breakpoint (internal, &tp->base, 0);
13882
13883       discard_cleanups (old_chain);
13884     }
13885 }
13886
13887 static void
13888 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13889                                struct symtabs_and_lines *sals)
13890 {
13891   struct tracepoint *tp = (struct tracepoint *) b;
13892
13893   *sals = decode_static_tracepoint_spec (s);
13894   if (sals->nelts > tp->static_trace_marker_id_idx)
13895     {
13896       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13897       sals->nelts = 1;
13898     }
13899   else
13900     error (_("marker %s not found"), tp->static_trace_marker_id);
13901 }
13902
13903 static struct breakpoint_ops strace_marker_breakpoint_ops;
13904
13905 static int
13906 strace_marker_p (struct breakpoint *b)
13907 {
13908   return b->ops == &strace_marker_breakpoint_ops;
13909 }
13910
13911 /* Delete a breakpoint and clean up all traces of it in the data
13912    structures.  */
13913
13914 void
13915 delete_breakpoint (struct breakpoint *bpt)
13916 {
13917   struct breakpoint *b;
13918
13919   gdb_assert (bpt != NULL);
13920
13921   /* Has this bp already been deleted?  This can happen because
13922      multiple lists can hold pointers to bp's.  bpstat lists are
13923      especial culprits.
13924
13925      One example of this happening is a watchpoint's scope bp.  When
13926      the scope bp triggers, we notice that the watchpoint is out of
13927      scope, and delete it.  We also delete its scope bp.  But the
13928      scope bp is marked "auto-deleting", and is already on a bpstat.
13929      That bpstat is then checked for auto-deleting bp's, which are
13930      deleted.
13931
13932      A real solution to this problem might involve reference counts in
13933      bp's, and/or giving them pointers back to their referencing
13934      bpstat's, and teaching delete_breakpoint to only free a bp's
13935      storage when no more references were extent.  A cheaper bandaid
13936      was chosen.  */
13937   if (bpt->type == bp_none)
13938     return;
13939
13940   /* At least avoid this stale reference until the reference counting
13941      of breakpoints gets resolved.  */
13942   if (bpt->related_breakpoint != bpt)
13943     {
13944       struct breakpoint *related;
13945       struct watchpoint *w;
13946
13947       if (bpt->type == bp_watchpoint_scope)
13948         w = (struct watchpoint *) bpt->related_breakpoint;
13949       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13950         w = (struct watchpoint *) bpt;
13951       else
13952         w = NULL;
13953       if (w != NULL)
13954         watchpoint_del_at_next_stop (w);
13955
13956       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13957       for (related = bpt; related->related_breakpoint != bpt;
13958            related = related->related_breakpoint);
13959       related->related_breakpoint = bpt->related_breakpoint;
13960       bpt->related_breakpoint = bpt;
13961     }
13962
13963   /* watch_command_1 creates a watchpoint but only sets its number if
13964      update_watchpoint succeeds in creating its bp_locations.  If there's
13965      a problem in that process, we'll be asked to delete the half-created
13966      watchpoint.  In that case, don't announce the deletion.  */
13967   if (bpt->number)
13968     observer_notify_breakpoint_deleted (bpt);
13969
13970   if (breakpoint_chain == bpt)
13971     breakpoint_chain = bpt->next;
13972
13973   ALL_BREAKPOINTS (b)
13974     if (b->next == bpt)
13975     {
13976       b->next = bpt->next;
13977       break;
13978     }
13979
13980   /* Be sure no bpstat's are pointing at the breakpoint after it's
13981      been freed.  */
13982   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13983      in all threads for now.  Note that we cannot just remove bpstats
13984      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13985      commands are associated with the bpstat; if we remove it here,
13986      then the later call to bpstat_do_actions (&stop_bpstat); in
13987      event-top.c won't do anything, and temporary breakpoints with
13988      commands won't work.  */
13989
13990   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13991
13992   /* Now that breakpoint is removed from breakpoint list, update the
13993      global location list.  This will remove locations that used to
13994      belong to this breakpoint.  Do this before freeing the breakpoint
13995      itself, since remove_breakpoint looks at location's owner.  It
13996      might be better design to have location completely
13997      self-contained, but it's not the case now.  */
13998   update_global_location_list (0);
13999
14000   bpt->ops->dtor (bpt);
14001   /* On the chance that someone will soon try again to delete this
14002      same bp, we mark it as deleted before freeing its storage.  */
14003   bpt->type = bp_none;
14004   xfree (bpt);
14005 }
14006
14007 static void
14008 do_delete_breakpoint_cleanup (void *b)
14009 {
14010   delete_breakpoint (b);
14011 }
14012
14013 struct cleanup *
14014 make_cleanup_delete_breakpoint (struct breakpoint *b)
14015 {
14016   return make_cleanup (do_delete_breakpoint_cleanup, b);
14017 }
14018
14019 /* Iterator function to call a user-provided callback function once
14020    for each of B and its related breakpoints.  */
14021
14022 static void
14023 iterate_over_related_breakpoints (struct breakpoint *b,
14024                                   void (*function) (struct breakpoint *,
14025                                                     void *),
14026                                   void *data)
14027 {
14028   struct breakpoint *related;
14029
14030   related = b;
14031   do
14032     {
14033       struct breakpoint *next;
14034
14035       /* FUNCTION may delete RELATED.  */
14036       next = related->related_breakpoint;
14037
14038       if (next == related)
14039         {
14040           /* RELATED is the last ring entry.  */
14041           function (related, data);
14042
14043           /* FUNCTION may have deleted it, so we'd never reach back to
14044              B.  There's nothing left to do anyway, so just break
14045              out.  */
14046           break;
14047         }
14048       else
14049         function (related, data);
14050
14051       related = next;
14052     }
14053   while (related != b);
14054 }
14055
14056 static void
14057 do_delete_breakpoint (struct breakpoint *b, void *ignore)
14058 {
14059   delete_breakpoint (b);
14060 }
14061
14062 /* A callback for map_breakpoint_numbers that calls
14063    delete_breakpoint.  */
14064
14065 static void
14066 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
14067 {
14068   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14069 }
14070
14071 void
14072 delete_command (char *arg, int from_tty)
14073 {
14074   struct breakpoint *b, *b_tmp;
14075
14076   dont_repeat ();
14077
14078   if (arg == 0)
14079     {
14080       int breaks_to_delete = 0;
14081
14082       /* Delete all breakpoints if no argument.  Do not delete
14083          internal breakpoints, these have to be deleted with an
14084          explicit breakpoint number argument.  */
14085       ALL_BREAKPOINTS (b)
14086         if (user_breakpoint_p (b))
14087           {
14088             breaks_to_delete = 1;
14089             break;
14090           }
14091
14092       /* Ask user only if there are some breakpoints to delete.  */
14093       if (!from_tty
14094           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14095         {
14096           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14097             if (user_breakpoint_p (b))
14098               delete_breakpoint (b);
14099         }
14100     }
14101   else
14102     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14103 }
14104
14105 static int
14106 all_locations_are_pending (struct bp_location *loc)
14107 {
14108   for (; loc; loc = loc->next)
14109     if (!loc->shlib_disabled
14110         && !loc->pspace->executing_startup)
14111       return 0;
14112   return 1;
14113 }
14114
14115 /* Subroutine of update_breakpoint_locations to simplify it.
14116    Return non-zero if multiple fns in list LOC have the same name.
14117    Null names are ignored.  */
14118
14119 static int
14120 ambiguous_names_p (struct bp_location *loc)
14121 {
14122   struct bp_location *l;
14123   htab_t htab = htab_create_alloc (13, htab_hash_string,
14124                                    (int (*) (const void *, 
14125                                              const void *)) streq,
14126                                    NULL, xcalloc, xfree);
14127
14128   for (l = loc; l != NULL; l = l->next)
14129     {
14130       const char **slot;
14131       const char *name = l->function_name;
14132
14133       /* Allow for some names to be NULL, ignore them.  */
14134       if (name == NULL)
14135         continue;
14136
14137       slot = (const char **) htab_find_slot (htab, (const void *) name,
14138                                              INSERT);
14139       /* NOTE: We can assume slot != NULL here because xcalloc never
14140          returns NULL.  */
14141       if (*slot != NULL)
14142         {
14143           htab_delete (htab);
14144           return 1;
14145         }
14146       *slot = name;
14147     }
14148
14149   htab_delete (htab);
14150   return 0;
14151 }
14152
14153 /* When symbols change, it probably means the sources changed as well,
14154    and it might mean the static tracepoint markers are no longer at
14155    the same address or line numbers they used to be at last we
14156    checked.  Losing your static tracepoints whenever you rebuild is
14157    undesirable.  This function tries to resync/rematch gdb static
14158    tracepoints with the markers on the target, for static tracepoints
14159    that have not been set by marker id.  Static tracepoint that have
14160    been set by marker id are reset by marker id in breakpoint_re_set.
14161    The heuristic is:
14162
14163    1) For a tracepoint set at a specific address, look for a marker at
14164    the old PC.  If one is found there, assume to be the same marker.
14165    If the name / string id of the marker found is different from the
14166    previous known name, assume that means the user renamed the marker
14167    in the sources, and output a warning.
14168
14169    2) For a tracepoint set at a given line number, look for a marker
14170    at the new address of the old line number.  If one is found there,
14171    assume to be the same marker.  If the name / string id of the
14172    marker found is different from the previous known name, assume that
14173    means the user renamed the marker in the sources, and output a
14174    warning.
14175
14176    3) If a marker is no longer found at the same address or line, it
14177    may mean the marker no longer exists.  But it may also just mean
14178    the code changed a bit.  Maybe the user added a few lines of code
14179    that made the marker move up or down (in line number terms).  Ask
14180    the target for info about the marker with the string id as we knew
14181    it.  If found, update line number and address in the matching
14182    static tracepoint.  This will get confused if there's more than one
14183    marker with the same ID (possible in UST, although unadvised
14184    precisely because it confuses tools).  */
14185
14186 static struct symtab_and_line
14187 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14188 {
14189   struct tracepoint *tp = (struct tracepoint *) b;
14190   struct static_tracepoint_marker marker;
14191   CORE_ADDR pc;
14192
14193   pc = sal.pc;
14194   if (sal.line)
14195     find_line_pc (sal.symtab, sal.line, &pc);
14196
14197   if (target_static_tracepoint_marker_at (pc, &marker))
14198     {
14199       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14200         warning (_("static tracepoint %d changed probed marker from %s to %s"),
14201                  b->number,
14202                  tp->static_trace_marker_id, marker.str_id);
14203
14204       xfree (tp->static_trace_marker_id);
14205       tp->static_trace_marker_id = xstrdup (marker.str_id);
14206       release_static_tracepoint_marker (&marker);
14207
14208       return sal;
14209     }
14210
14211   /* Old marker wasn't found on target at lineno.  Try looking it up
14212      by string ID.  */
14213   if (!sal.explicit_pc
14214       && sal.line != 0
14215       && sal.symtab != NULL
14216       && tp->static_trace_marker_id != NULL)
14217     {
14218       VEC(static_tracepoint_marker_p) *markers;
14219
14220       markers
14221         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14222
14223       if (!VEC_empty(static_tracepoint_marker_p, markers))
14224         {
14225           struct symtab_and_line sal2;
14226           struct symbol *sym;
14227           struct static_tracepoint_marker *tpmarker;
14228           struct ui_out *uiout = current_uiout;
14229
14230           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14231
14232           xfree (tp->static_trace_marker_id);
14233           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14234
14235           warning (_("marker for static tracepoint %d (%s) not "
14236                      "found at previous line number"),
14237                    b->number, tp->static_trace_marker_id);
14238
14239           init_sal (&sal2);
14240
14241           sal2.pc = tpmarker->address;
14242
14243           sal2 = find_pc_line (tpmarker->address, 0);
14244           sym = find_pc_sect_function (tpmarker->address, NULL);
14245           ui_out_text (uiout, "Now in ");
14246           if (sym)
14247             {
14248               ui_out_field_string (uiout, "func",
14249                                    SYMBOL_PRINT_NAME (sym));
14250               ui_out_text (uiout, " at ");
14251             }
14252           ui_out_field_string (uiout, "file",
14253                                symtab_to_filename_for_display (sal2.symtab));
14254           ui_out_text (uiout, ":");
14255
14256           if (ui_out_is_mi_like_p (uiout))
14257             {
14258               const char *fullname = symtab_to_fullname (sal2.symtab);
14259
14260               ui_out_field_string (uiout, "fullname", fullname);
14261             }
14262
14263           ui_out_field_int (uiout, "line", sal2.line);
14264           ui_out_text (uiout, "\n");
14265
14266           b->loc->line_number = sal2.line;
14267           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14268
14269           xfree (b->addr_string);
14270           b->addr_string = xstrprintf ("%s:%d",
14271                                    symtab_to_filename_for_display (sal2.symtab),
14272                                        b->loc->line_number);
14273
14274           /* Might be nice to check if function changed, and warn if
14275              so.  */
14276
14277           release_static_tracepoint_marker (tpmarker);
14278         }
14279     }
14280   return sal;
14281 }
14282
14283 /* Returns 1 iff locations A and B are sufficiently same that
14284    we don't need to report breakpoint as changed.  */
14285
14286 static int
14287 locations_are_equal (struct bp_location *a, struct bp_location *b)
14288 {
14289   while (a && b)
14290     {
14291       if (a->address != b->address)
14292         return 0;
14293
14294       if (a->shlib_disabled != b->shlib_disabled)
14295         return 0;
14296
14297       if (a->enabled != b->enabled)
14298         return 0;
14299
14300       a = a->next;
14301       b = b->next;
14302     }
14303
14304   if ((a == NULL) != (b == NULL))
14305     return 0;
14306
14307   return 1;
14308 }
14309
14310 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14311    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14312    a ranged breakpoint.  */
14313
14314 void
14315 update_breakpoint_locations (struct breakpoint *b,
14316                              struct symtabs_and_lines sals,
14317                              struct symtabs_and_lines sals_end)
14318 {
14319   int i;
14320   struct bp_location *existing_locations = b->loc;
14321
14322   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14323     {
14324       /* Ranged breakpoints have only one start location and one end
14325          location.  */
14326       b->enable_state = bp_disabled;
14327       update_global_location_list (1);
14328       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14329                            "multiple locations found\n"),
14330                          b->number);
14331       return;
14332     }
14333
14334   /* If there's no new locations, and all existing locations are
14335      pending, don't do anything.  This optimizes the common case where
14336      all locations are in the same shared library, that was unloaded.
14337      We'd like to retain the location, so that when the library is
14338      loaded again, we don't loose the enabled/disabled status of the
14339      individual locations.  */
14340   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14341     return;
14342
14343   b->loc = NULL;
14344
14345   for (i = 0; i < sals.nelts; ++i)
14346     {
14347       struct bp_location *new_loc;
14348
14349       switch_to_program_space_and_thread (sals.sals[i].pspace);
14350
14351       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14352
14353       /* Reparse conditions, they might contain references to the
14354          old symtab.  */
14355       if (b->cond_string != NULL)
14356         {
14357           const char *s;
14358           volatile struct gdb_exception e;
14359
14360           s = b->cond_string;
14361           TRY_CATCH (e, RETURN_MASK_ERROR)
14362             {
14363               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14364                                            block_for_pc (sals.sals[i].pc), 
14365                                            0);
14366             }
14367           if (e.reason < 0)
14368             {
14369               warning (_("failed to reevaluate condition "
14370                          "for breakpoint %d: %s"), 
14371                        b->number, e.message);
14372               new_loc->enabled = 0;
14373             }
14374         }
14375
14376       if (sals_end.nelts)
14377         {
14378           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14379
14380           new_loc->length = end - sals.sals[0].pc + 1;
14381         }
14382     }
14383
14384   /* Update locations of permanent breakpoints.  */
14385   if (b->enable_state == bp_permanent)
14386     make_breakpoint_permanent (b);
14387
14388   /* If possible, carry over 'disable' status from existing
14389      breakpoints.  */
14390   {
14391     struct bp_location *e = existing_locations;
14392     /* If there are multiple breakpoints with the same function name,
14393        e.g. for inline functions, comparing function names won't work.
14394        Instead compare pc addresses; this is just a heuristic as things
14395        may have moved, but in practice it gives the correct answer
14396        often enough until a better solution is found.  */
14397     int have_ambiguous_names = ambiguous_names_p (b->loc);
14398
14399     for (; e; e = e->next)
14400       {
14401         if (!e->enabled && e->function_name)
14402           {
14403             struct bp_location *l = b->loc;
14404             if (have_ambiguous_names)
14405               {
14406                 for (; l; l = l->next)
14407                   if (breakpoint_locations_match (e, l))
14408                     {
14409                       l->enabled = 0;
14410                       break;
14411                     }
14412               }
14413             else
14414               {
14415                 for (; l; l = l->next)
14416                   if (l->function_name
14417                       && strcmp (e->function_name, l->function_name) == 0)
14418                     {
14419                       l->enabled = 0;
14420                       break;
14421                     }
14422               }
14423           }
14424       }
14425   }
14426
14427   if (!locations_are_equal (existing_locations, b->loc))
14428     observer_notify_breakpoint_modified (b);
14429
14430   update_global_location_list (1);
14431 }
14432
14433 /* Find the SaL locations corresponding to the given ADDR_STRING.
14434    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14435
14436 static struct symtabs_and_lines
14437 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14438 {
14439   char *s;
14440   struct symtabs_and_lines sals = {0};
14441   volatile struct gdb_exception e;
14442
14443   gdb_assert (b->ops != NULL);
14444   s = addr_string;
14445
14446   TRY_CATCH (e, RETURN_MASK_ERROR)
14447     {
14448       b->ops->decode_linespec (b, &s, &sals);
14449     }
14450   if (e.reason < 0)
14451     {
14452       int not_found_and_ok = 0;
14453       /* For pending breakpoints, it's expected that parsing will
14454          fail until the right shared library is loaded.  User has
14455          already told to create pending breakpoints and don't need
14456          extra messages.  If breakpoint is in bp_shlib_disabled
14457          state, then user already saw the message about that
14458          breakpoint being disabled, and don't want to see more
14459          errors.  */
14460       if (e.error == NOT_FOUND_ERROR
14461           && (b->condition_not_parsed 
14462               || (b->loc && b->loc->shlib_disabled)
14463               || (b->loc && b->loc->pspace->executing_startup)
14464               || b->enable_state == bp_disabled))
14465         not_found_and_ok = 1;
14466
14467       if (!not_found_and_ok)
14468         {
14469           /* We surely don't want to warn about the same breakpoint
14470              10 times.  One solution, implemented here, is disable
14471              the breakpoint on error.  Another solution would be to
14472              have separate 'warning emitted' flag.  Since this
14473              happens only when a binary has changed, I don't know
14474              which approach is better.  */
14475           b->enable_state = bp_disabled;
14476           throw_exception (e);
14477         }
14478     }
14479
14480   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14481     {
14482       int i;
14483
14484       for (i = 0; i < sals.nelts; ++i)
14485         resolve_sal_pc (&sals.sals[i]);
14486       if (b->condition_not_parsed && s && s[0])
14487         {
14488           char *cond_string, *extra_string;
14489           int thread, task;
14490
14491           find_condition_and_thread (s, sals.sals[0].pc,
14492                                      &cond_string, &thread, &task,
14493                                      &extra_string);
14494           if (cond_string)
14495             b->cond_string = cond_string;
14496           b->thread = thread;
14497           b->task = task;
14498           if (extra_string)
14499             b->extra_string = extra_string;
14500           b->condition_not_parsed = 0;
14501         }
14502
14503       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14504         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14505
14506       *found = 1;
14507     }
14508   else
14509     *found = 0;
14510
14511   return sals;
14512 }
14513
14514 /* The default re_set method, for typical hardware or software
14515    breakpoints.  Reevaluate the breakpoint and recreate its
14516    locations.  */
14517
14518 static void
14519 breakpoint_re_set_default (struct breakpoint *b)
14520 {
14521   int found;
14522   struct symtabs_and_lines sals, sals_end;
14523   struct symtabs_and_lines expanded = {0};
14524   struct symtabs_and_lines expanded_end = {0};
14525
14526   sals = addr_string_to_sals (b, b->addr_string, &found);
14527   if (found)
14528     {
14529       make_cleanup (xfree, sals.sals);
14530       expanded = sals;
14531     }
14532
14533   if (b->addr_string_range_end)
14534     {
14535       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14536       if (found)
14537         {
14538           make_cleanup (xfree, sals_end.sals);
14539           expanded_end = sals_end;
14540         }
14541     }
14542
14543   update_breakpoint_locations (b, expanded, expanded_end);
14544 }
14545
14546 /* Default method for creating SALs from an address string.  It basically
14547    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14548
14549 static void
14550 create_sals_from_address_default (char **arg,
14551                                   struct linespec_result *canonical,
14552                                   enum bptype type_wanted,
14553                                   char *addr_start, char **copy_arg)
14554 {
14555   parse_breakpoint_sals (arg, canonical);
14556 }
14557
14558 /* Call create_breakpoints_sal for the given arguments.  This is the default
14559    function for the `create_breakpoints_sal' method of
14560    breakpoint_ops.  */
14561
14562 static void
14563 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14564                                 struct linespec_result *canonical,
14565                                 char *cond_string,
14566                                 char *extra_string,
14567                                 enum bptype type_wanted,
14568                                 enum bpdisp disposition,
14569                                 int thread,
14570                                 int task, int ignore_count,
14571                                 const struct breakpoint_ops *ops,
14572                                 int from_tty, int enabled,
14573                                 int internal, unsigned flags)
14574 {
14575   create_breakpoints_sal (gdbarch, canonical, cond_string,
14576                           extra_string,
14577                           type_wanted, disposition,
14578                           thread, task, ignore_count, ops, from_tty,
14579                           enabled, internal, flags);
14580 }
14581
14582 /* Decode the line represented by S by calling decode_line_full.  This is the
14583    default function for the `decode_linespec' method of breakpoint_ops.  */
14584
14585 static void
14586 decode_linespec_default (struct breakpoint *b, char **s,
14587                          struct symtabs_and_lines *sals)
14588 {
14589   struct linespec_result canonical;
14590
14591   init_linespec_result (&canonical);
14592   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14593                     (struct symtab *) NULL, 0,
14594                     &canonical, multiple_symbols_all,
14595                     b->filter);
14596
14597   /* We should get 0 or 1 resulting SALs.  */
14598   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14599
14600   if (VEC_length (linespec_sals, canonical.sals) > 0)
14601     {
14602       struct linespec_sals *lsal;
14603
14604       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14605       *sals = lsal->sals;
14606       /* Arrange it so the destructor does not free the
14607          contents.  */
14608       lsal->sals.sals = NULL;
14609     }
14610
14611   destroy_linespec_result (&canonical);
14612 }
14613
14614 /* Prepare the global context for a re-set of breakpoint B.  */
14615
14616 static struct cleanup *
14617 prepare_re_set_context (struct breakpoint *b)
14618 {
14619   struct cleanup *cleanups;
14620
14621   input_radix = b->input_radix;
14622   cleanups = save_current_space_and_thread ();
14623   if (b->pspace != NULL)
14624     switch_to_program_space_and_thread (b->pspace);
14625   set_language (b->language);
14626
14627   return cleanups;
14628 }
14629
14630 /* Reset a breakpoint given it's struct breakpoint * BINT.
14631    The value we return ends up being the return value from catch_errors.
14632    Unused in this case.  */
14633
14634 static int
14635 breakpoint_re_set_one (void *bint)
14636 {
14637   /* Get past catch_errs.  */
14638   struct breakpoint *b = (struct breakpoint *) bint;
14639   struct cleanup *cleanups;
14640
14641   cleanups = prepare_re_set_context (b);
14642   b->ops->re_set (b);
14643   do_cleanups (cleanups);
14644   return 0;
14645 }
14646
14647 /* Re-set all breakpoints after symbols have been re-loaded.  */
14648 void
14649 breakpoint_re_set (void)
14650 {
14651   struct breakpoint *b, *b_tmp;
14652   enum language save_language;
14653   int save_input_radix;
14654   struct cleanup *old_chain;
14655
14656   save_language = current_language->la_language;
14657   save_input_radix = input_radix;
14658   old_chain = save_current_program_space ();
14659
14660   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14661   {
14662     /* Format possible error msg.  */
14663     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14664                                 b->number);
14665     struct cleanup *cleanups = make_cleanup (xfree, message);
14666     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14667     do_cleanups (cleanups);
14668   }
14669   set_language (save_language);
14670   input_radix = save_input_radix;
14671
14672   jit_breakpoint_re_set ();
14673
14674   do_cleanups (old_chain);
14675
14676   create_overlay_event_breakpoint ();
14677   create_longjmp_master_breakpoint ();
14678   create_std_terminate_master_breakpoint ();
14679   create_exception_master_breakpoint ();
14680 }
14681 \f
14682 /* Reset the thread number of this breakpoint:
14683
14684    - If the breakpoint is for all threads, leave it as-is.
14685    - Else, reset it to the current thread for inferior_ptid.  */
14686 void
14687 breakpoint_re_set_thread (struct breakpoint *b)
14688 {
14689   if (b->thread != -1)
14690     {
14691       if (in_thread_list (inferior_ptid))
14692         b->thread = pid_to_thread_id (inferior_ptid);
14693
14694       /* We're being called after following a fork.  The new fork is
14695          selected as current, and unless this was a vfork will have a
14696          different program space from the original thread.  Reset that
14697          as well.  */
14698       b->loc->pspace = current_program_space;
14699     }
14700 }
14701
14702 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14703    If from_tty is nonzero, it prints a message to that effect,
14704    which ends with a period (no newline).  */
14705
14706 void
14707 set_ignore_count (int bptnum, int count, int from_tty)
14708 {
14709   struct breakpoint *b;
14710
14711   if (count < 0)
14712     count = 0;
14713
14714   ALL_BREAKPOINTS (b)
14715     if (b->number == bptnum)
14716     {
14717       if (is_tracepoint (b))
14718         {
14719           if (from_tty && count != 0)
14720             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14721                              bptnum);
14722           return;
14723         }
14724       
14725       b->ignore_count = count;
14726       if (from_tty)
14727         {
14728           if (count == 0)
14729             printf_filtered (_("Will stop next time "
14730                                "breakpoint %d is reached."),
14731                              bptnum);
14732           else if (count == 1)
14733             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14734                              bptnum);
14735           else
14736             printf_filtered (_("Will ignore next %d "
14737                                "crossings of breakpoint %d."),
14738                              count, bptnum);
14739         }
14740       observer_notify_breakpoint_modified (b);
14741       return;
14742     }
14743
14744   error (_("No breakpoint number %d."), bptnum);
14745 }
14746
14747 /* Command to set ignore-count of breakpoint N to COUNT.  */
14748
14749 static void
14750 ignore_command (char *args, int from_tty)
14751 {
14752   char *p = args;
14753   int num;
14754
14755   if (p == 0)
14756     error_no_arg (_("a breakpoint number"));
14757
14758   num = get_number (&p);
14759   if (num == 0)
14760     error (_("bad breakpoint number: '%s'"), args);
14761   if (*p == 0)
14762     error (_("Second argument (specified ignore-count) is missing."));
14763
14764   set_ignore_count (num,
14765                     longest_to_int (value_as_long (parse_and_eval (p))),
14766                     from_tty);
14767   if (from_tty)
14768     printf_filtered ("\n");
14769 }
14770 \f
14771 /* Call FUNCTION on each of the breakpoints
14772    whose numbers are given in ARGS.  */
14773
14774 static void
14775 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14776                                                       void *),
14777                         void *data)
14778 {
14779   int num;
14780   struct breakpoint *b, *tmp;
14781   int match;
14782   struct get_number_or_range_state state;
14783
14784   if (args == 0)
14785     error_no_arg (_("one or more breakpoint numbers"));
14786
14787   init_number_or_range (&state, args);
14788
14789   while (!state.finished)
14790     {
14791       char *p = state.string;
14792
14793       match = 0;
14794
14795       num = get_number_or_range (&state);
14796       if (num == 0)
14797         {
14798           warning (_("bad breakpoint number at or near '%s'"), p);
14799         }
14800       else
14801         {
14802           ALL_BREAKPOINTS_SAFE (b, tmp)
14803             if (b->number == num)
14804               {
14805                 match = 1;
14806                 function (b, data);
14807                 break;
14808               }
14809           if (match == 0)
14810             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14811         }
14812     }
14813 }
14814
14815 static struct bp_location *
14816 find_location_by_number (char *number)
14817 {
14818   char *dot = strchr (number, '.');
14819   char *p1;
14820   int bp_num;
14821   int loc_num;
14822   struct breakpoint *b;
14823   struct bp_location *loc;  
14824
14825   *dot = '\0';
14826
14827   p1 = number;
14828   bp_num = get_number (&p1);
14829   if (bp_num == 0)
14830     error (_("Bad breakpoint number '%s'"), number);
14831
14832   ALL_BREAKPOINTS (b)
14833     if (b->number == bp_num)
14834       {
14835         break;
14836       }
14837
14838   if (!b || b->number != bp_num)
14839     error (_("Bad breakpoint number '%s'"), number);
14840   
14841   p1 = dot+1;
14842   loc_num = get_number (&p1);
14843   if (loc_num == 0)
14844     error (_("Bad breakpoint location number '%s'"), number);
14845
14846   --loc_num;
14847   loc = b->loc;
14848   for (;loc_num && loc; --loc_num, loc = loc->next)
14849     ;
14850   if (!loc)
14851     error (_("Bad breakpoint location number '%s'"), dot+1);
14852     
14853   return loc;  
14854 }
14855
14856
14857 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14858    If from_tty is nonzero, it prints a message to that effect,
14859    which ends with a period (no newline).  */
14860
14861 void
14862 disable_breakpoint (struct breakpoint *bpt)
14863 {
14864   /* Never disable a watchpoint scope breakpoint; we want to
14865      hit them when we leave scope so we can delete both the
14866      watchpoint and its scope breakpoint at that time.  */
14867   if (bpt->type == bp_watchpoint_scope)
14868     return;
14869
14870   /* You can't disable permanent breakpoints.  */
14871   if (bpt->enable_state == bp_permanent)
14872     return;
14873
14874   bpt->enable_state = bp_disabled;
14875
14876   /* Mark breakpoint locations modified.  */
14877   mark_breakpoint_modified (bpt);
14878
14879   if (target_supports_enable_disable_tracepoint ()
14880       && current_trace_status ()->running && is_tracepoint (bpt))
14881     {
14882       struct bp_location *location;
14883      
14884       for (location = bpt->loc; location; location = location->next)
14885         target_disable_tracepoint (location);
14886     }
14887
14888   update_global_location_list (0);
14889
14890   observer_notify_breakpoint_modified (bpt);
14891 }
14892
14893 /* A callback for iterate_over_related_breakpoints.  */
14894
14895 static void
14896 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14897 {
14898   disable_breakpoint (b);
14899 }
14900
14901 /* A callback for map_breakpoint_numbers that calls
14902    disable_breakpoint.  */
14903
14904 static void
14905 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14906 {
14907   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14908 }
14909
14910 static void
14911 disable_command (char *args, int from_tty)
14912 {
14913   if (args == 0)
14914     {
14915       struct breakpoint *bpt;
14916
14917       ALL_BREAKPOINTS (bpt)
14918         if (user_breakpoint_p (bpt))
14919           disable_breakpoint (bpt);
14920     }
14921   else
14922     {
14923       char *num = extract_arg (&args);
14924
14925       while (num)
14926         {
14927           if (strchr (num, '.'))
14928             {
14929               struct bp_location *loc = find_location_by_number (num);
14930
14931               if (loc)
14932                 {
14933                   if (loc->enabled)
14934                     {
14935                       loc->enabled = 0;
14936                       mark_breakpoint_location_modified (loc);
14937                     }
14938                   if (target_supports_enable_disable_tracepoint ()
14939                       && current_trace_status ()->running && loc->owner
14940                       && is_tracepoint (loc->owner))
14941                     target_disable_tracepoint (loc);
14942                 }
14943               update_global_location_list (0);
14944             }
14945           else
14946             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14947           num = extract_arg (&args);
14948         }
14949     }
14950 }
14951
14952 static void
14953 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14954                         int count)
14955 {
14956   int target_resources_ok;
14957
14958   if (bpt->type == bp_hardware_breakpoint)
14959     {
14960       int i;
14961       i = hw_breakpoint_used_count ();
14962       target_resources_ok = 
14963         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14964                                             i + 1, 0);
14965       if (target_resources_ok == 0)
14966         error (_("No hardware breakpoint support in the target."));
14967       else if (target_resources_ok < 0)
14968         error (_("Hardware breakpoints used exceeds limit."));
14969     }
14970
14971   if (is_watchpoint (bpt))
14972     {
14973       /* Initialize it just to avoid a GCC false warning.  */
14974       enum enable_state orig_enable_state = 0;
14975       volatile struct gdb_exception e;
14976
14977       TRY_CATCH (e, RETURN_MASK_ALL)
14978         {
14979           struct watchpoint *w = (struct watchpoint *) bpt;
14980
14981           orig_enable_state = bpt->enable_state;
14982           bpt->enable_state = bp_enabled;
14983           update_watchpoint (w, 1 /* reparse */);
14984         }
14985       if (e.reason < 0)
14986         {
14987           bpt->enable_state = orig_enable_state;
14988           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14989                              bpt->number);
14990           return;
14991         }
14992     }
14993
14994   if (bpt->enable_state != bp_permanent)
14995     bpt->enable_state = bp_enabled;
14996
14997   bpt->enable_state = bp_enabled;
14998
14999   /* Mark breakpoint locations modified.  */
15000   mark_breakpoint_modified (bpt);
15001
15002   if (target_supports_enable_disable_tracepoint ()
15003       && current_trace_status ()->running && is_tracepoint (bpt))
15004     {
15005       struct bp_location *location;
15006
15007       for (location = bpt->loc; location; location = location->next)
15008         target_enable_tracepoint (location);
15009     }
15010
15011   bpt->disposition = disposition;
15012   bpt->enable_count = count;
15013   update_global_location_list (1);
15014
15015   observer_notify_breakpoint_modified (bpt);
15016 }
15017
15018
15019 void
15020 enable_breakpoint (struct breakpoint *bpt)
15021 {
15022   enable_breakpoint_disp (bpt, bpt->disposition, 0);
15023 }
15024
15025 static void
15026 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15027 {
15028   enable_breakpoint (bpt);
15029 }
15030
15031 /* A callback for map_breakpoint_numbers that calls
15032    enable_breakpoint.  */
15033
15034 static void
15035 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15036 {
15037   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15038 }
15039
15040 /* The enable command enables the specified breakpoints (or all defined
15041    breakpoints) so they once again become (or continue to be) effective
15042    in stopping the inferior.  */
15043
15044 static void
15045 enable_command (char *args, int from_tty)
15046 {
15047   if (args == 0)
15048     {
15049       struct breakpoint *bpt;
15050
15051       ALL_BREAKPOINTS (bpt)
15052         if (user_breakpoint_p (bpt))
15053           enable_breakpoint (bpt);
15054     }
15055   else
15056     {
15057       char *num = extract_arg (&args);
15058
15059       while (num)
15060         {
15061           if (strchr (num, '.'))
15062             {
15063               struct bp_location *loc = find_location_by_number (num);
15064
15065               if (loc)
15066                 {
15067                   if (!loc->enabled)
15068                     {
15069                       loc->enabled = 1;
15070                       mark_breakpoint_location_modified (loc);
15071                     }
15072                   if (target_supports_enable_disable_tracepoint ()
15073                       && current_trace_status ()->running && loc->owner
15074                       && is_tracepoint (loc->owner))
15075                     target_enable_tracepoint (loc);
15076                 }
15077               update_global_location_list (1);
15078             }
15079           else
15080             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15081           num = extract_arg (&args);
15082         }
15083     }
15084 }
15085
15086 /* This struct packages up disposition data for application to multiple
15087    breakpoints.  */
15088
15089 struct disp_data
15090 {
15091   enum bpdisp disp;
15092   int count;
15093 };
15094
15095 static void
15096 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15097 {
15098   struct disp_data disp_data = *(struct disp_data *) arg;
15099
15100   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15101 }
15102
15103 static void
15104 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15105 {
15106   struct disp_data disp = { disp_disable, 1 };
15107
15108   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15109 }
15110
15111 static void
15112 enable_once_command (char *args, int from_tty)
15113 {
15114   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15115 }
15116
15117 static void
15118 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15119 {
15120   struct disp_data disp = { disp_disable, *(int *) countptr };
15121
15122   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15123 }
15124
15125 static void
15126 enable_count_command (char *args, int from_tty)
15127 {
15128   int count = get_number (&args);
15129
15130   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15131 }
15132
15133 static void
15134 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15135 {
15136   struct disp_data disp = { disp_del, 1 };
15137
15138   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15139 }
15140
15141 static void
15142 enable_delete_command (char *args, int from_tty)
15143 {
15144   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15145 }
15146 \f
15147 static void
15148 set_breakpoint_cmd (char *args, int from_tty)
15149 {
15150 }
15151
15152 static void
15153 show_breakpoint_cmd (char *args, int from_tty)
15154 {
15155 }
15156
15157 /* Invalidate last known value of any hardware watchpoint if
15158    the memory which that value represents has been written to by
15159    GDB itself.  */
15160
15161 static void
15162 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15163                                       CORE_ADDR addr, ssize_t len,
15164                                       const bfd_byte *data)
15165 {
15166   struct breakpoint *bp;
15167
15168   ALL_BREAKPOINTS (bp)
15169     if (bp->enable_state == bp_enabled
15170         && bp->type == bp_hardware_watchpoint)
15171       {
15172         struct watchpoint *wp = (struct watchpoint *) bp;
15173
15174         if (wp->val_valid && wp->val)
15175           {
15176             struct bp_location *loc;
15177
15178             for (loc = bp->loc; loc != NULL; loc = loc->next)
15179               if (loc->loc_type == bp_loc_hardware_watchpoint
15180                   && loc->address + loc->length > addr
15181                   && addr + len > loc->address)
15182                 {
15183                   value_free (wp->val);
15184                   wp->val = NULL;
15185                   wp->val_valid = 0;
15186                 }
15187           }
15188       }
15189 }
15190
15191 /* Create and insert a raw software breakpoint at PC.  Return an
15192    identifier, which should be used to remove the breakpoint later.
15193    In general, places which call this should be using something on the
15194    breakpoint chain instead; this function should be eliminated
15195    someday.  */
15196
15197 void *
15198 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
15199                                   struct address_space *aspace, CORE_ADDR pc)
15200 {
15201   struct bp_target_info *bp_tgt;
15202   struct bp_location *bl;
15203
15204   bp_tgt = XCNEW (struct bp_target_info);
15205
15206   bp_tgt->placed_address_space = aspace;
15207   bp_tgt->placed_address = pc;
15208
15209   /* If an unconditional non-raw breakpoint is already inserted at
15210      that location, there's no need to insert another.  However, with
15211      target-side evaluation of breakpoint conditions, if the
15212      breakpoint that is currently inserted on the target is
15213      conditional, we need to make it unconditional.  Note that a
15214      breakpoint with target-side commands is not reported even if
15215      unconditional, so we need to remove the commands from the target
15216      as well.  */
15217   bl = find_non_raw_software_breakpoint_inserted_here (aspace, pc);
15218   if (bl != NULL
15219       && VEC_empty (agent_expr_p, bl->target_info.conditions)
15220       && VEC_empty (agent_expr_p, bl->target_info.tcommands))
15221     {
15222       bp_target_info_copy_insertion_state (bp_tgt, &bl->target_info);
15223       return bp_tgt;
15224     }
15225
15226   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
15227     {
15228       /* Could not insert the breakpoint.  */
15229       xfree (bp_tgt);
15230       return NULL;
15231     }
15232
15233   return bp_tgt;
15234 }
15235
15236 /* Remove a breakpoint BP inserted by
15237    deprecated_insert_raw_breakpoint.  */
15238
15239 int
15240 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
15241 {
15242   struct bp_target_info *bp_tgt = bp;
15243   struct address_space *aspace = bp_tgt->placed_address_space;
15244   CORE_ADDR address = bp_tgt->placed_address;
15245   struct bp_location *bl;
15246   int ret;
15247
15248   bl = find_non_raw_software_breakpoint_inserted_here (aspace, address);
15249
15250   /* Only remove the raw breakpoint if there are no other non-raw
15251      breakpoints still inserted at this location.  Otherwise, we would
15252      be effectively disabling those breakpoints.  */
15253   if (bl == NULL)
15254     ret = target_remove_breakpoint (gdbarch, bp_tgt);
15255   else if (!VEC_empty (agent_expr_p, bl->target_info.conditions)
15256            || !VEC_empty (agent_expr_p, bl->target_info.tcommands))
15257     {
15258       /* The target is evaluating conditions, and when we inserted the
15259          software single-step breakpoint, we had made the breakpoint
15260          unconditional and command-less on the target side.  Reinsert
15261          to restore the conditions/commands.  */
15262       ret = target_insert_breakpoint (bl->gdbarch, &bl->target_info);
15263     }
15264   else
15265     ret = 0;
15266
15267   xfree (bp_tgt);
15268
15269   return ret;
15270 }
15271
15272 /* Create and insert a breakpoint for software single step.  */
15273
15274 void
15275 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15276                                struct address_space *aspace, 
15277                                CORE_ADDR next_pc)
15278 {
15279   void **bpt_p;
15280
15281   if (single_step_breakpoints[0] == NULL)
15282     {
15283       bpt_p = &single_step_breakpoints[0];
15284       single_step_gdbarch[0] = gdbarch;
15285     }
15286   else
15287     {
15288       gdb_assert (single_step_breakpoints[1] == NULL);
15289       bpt_p = &single_step_breakpoints[1];
15290       single_step_gdbarch[1] = gdbarch;
15291     }
15292
15293   /* NOTE drow/2006-04-11: A future improvement to this function would
15294      be to only create the breakpoints once, and actually put them on
15295      the breakpoint chain.  That would let us use set_raw_breakpoint.
15296      We could adjust the addresses each time they were needed.  Doing
15297      this requires corresponding changes elsewhere where single step
15298      breakpoints are handled, however.  So, for now, we use this.  */
15299
15300   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
15301   if (*bpt_p == NULL)
15302     error (_("Could not insert single-step breakpoint at %s"),
15303              paddress (gdbarch, next_pc));
15304 }
15305
15306 /* Check if the breakpoints used for software single stepping
15307    were inserted or not.  */
15308
15309 int
15310 single_step_breakpoints_inserted (void)
15311 {
15312   return (single_step_breakpoints[0] != NULL
15313           || single_step_breakpoints[1] != NULL);
15314 }
15315
15316 /* Remove and delete any breakpoints used for software single step.  */
15317
15318 void
15319 remove_single_step_breakpoints (void)
15320 {
15321   gdb_assert (single_step_breakpoints[0] != NULL);
15322
15323   /* See insert_single_step_breakpoint for more about this deprecated
15324      call.  */
15325   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
15326                                     single_step_breakpoints[0]);
15327   single_step_gdbarch[0] = NULL;
15328   single_step_breakpoints[0] = NULL;
15329
15330   if (single_step_breakpoints[1] != NULL)
15331     {
15332       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
15333                                         single_step_breakpoints[1]);
15334       single_step_gdbarch[1] = NULL;
15335       single_step_breakpoints[1] = NULL;
15336     }
15337 }
15338
15339 /* Delete software single step breakpoints without removing them from
15340    the inferior.  This is intended to be used if the inferior's address
15341    space where they were inserted is already gone, e.g. after exit or
15342    exec.  */
15343
15344 void
15345 cancel_single_step_breakpoints (void)
15346 {
15347   int i;
15348
15349   for (i = 0; i < 2; i++)
15350     if (single_step_breakpoints[i])
15351       {
15352         xfree (single_step_breakpoints[i]);
15353         single_step_breakpoints[i] = NULL;
15354         single_step_gdbarch[i] = NULL;
15355       }
15356 }
15357
15358 /* Detach software single-step breakpoints from INFERIOR_PTID without
15359    removing them.  */
15360
15361 static void
15362 detach_single_step_breakpoints (void)
15363 {
15364   int i;
15365
15366   for (i = 0; i < 2; i++)
15367     if (single_step_breakpoints[i])
15368       target_remove_breakpoint (single_step_gdbarch[i],
15369                                 single_step_breakpoints[i]);
15370 }
15371
15372 /* Find the software single-step breakpoint that inserted at PC.
15373    Returns its slot if found, and -1 if not found.  */
15374
15375 static int
15376 find_single_step_breakpoint (struct address_space *aspace,
15377                              CORE_ADDR pc)
15378 {
15379   int i;
15380
15381   for (i = 0; i < 2; i++)
15382     {
15383       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15384       if (bp_tgt
15385           && breakpoint_address_match (bp_tgt->placed_address_space,
15386                                        bp_tgt->placed_address,
15387                                        aspace, pc))
15388         return i;
15389     }
15390
15391   return -1;
15392 }
15393
15394 /* Check whether a software single-step breakpoint is inserted at
15395    PC.  */
15396
15397 int
15398 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15399                                         CORE_ADDR pc)
15400 {
15401   return find_single_step_breakpoint (aspace, pc) >= 0;
15402 }
15403
15404 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15405    non-zero otherwise.  */
15406 static int
15407 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15408 {
15409   if (syscall_catchpoint_p (bp)
15410       && bp->enable_state != bp_disabled
15411       && bp->enable_state != bp_call_disabled)
15412     return 1;
15413   else
15414     return 0;
15415 }
15416
15417 int
15418 catch_syscall_enabled (void)
15419 {
15420   struct catch_syscall_inferior_data *inf_data
15421     = get_catch_syscall_inferior_data (current_inferior ());
15422
15423   return inf_data->total_syscalls_count != 0;
15424 }
15425
15426 int
15427 catching_syscall_number (int syscall_number)
15428 {
15429   struct breakpoint *bp;
15430
15431   ALL_BREAKPOINTS (bp)
15432     if (is_syscall_catchpoint_enabled (bp))
15433       {
15434         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15435
15436         if (c->syscalls_to_be_caught)
15437           {
15438             int i, iter;
15439             for (i = 0;
15440                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15441                  i++)
15442               if (syscall_number == iter)
15443                 return 1;
15444           }
15445         else
15446           return 1;
15447       }
15448
15449   return 0;
15450 }
15451
15452 /* Complete syscall names.  Used by "catch syscall".  */
15453 static VEC (char_ptr) *
15454 catch_syscall_completer (struct cmd_list_element *cmd,
15455                          const char *text, const char *word)
15456 {
15457   const char **list = get_syscall_names ();
15458   VEC (char_ptr) *retlist
15459     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15460
15461   xfree (list);
15462   return retlist;
15463 }
15464
15465 /* Tracepoint-specific operations.  */
15466
15467 /* Set tracepoint count to NUM.  */
15468 static void
15469 set_tracepoint_count (int num)
15470 {
15471   tracepoint_count = num;
15472   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15473 }
15474
15475 static void
15476 trace_command (char *arg, int from_tty)
15477 {
15478   struct breakpoint_ops *ops;
15479   const char *arg_cp = arg;
15480
15481   if (arg && probe_linespec_to_ops (&arg_cp))
15482     ops = &tracepoint_probe_breakpoint_ops;
15483   else
15484     ops = &tracepoint_breakpoint_ops;
15485
15486   create_breakpoint (get_current_arch (),
15487                      arg,
15488                      NULL, 0, NULL, 1 /* parse arg */,
15489                      0 /* tempflag */,
15490                      bp_tracepoint /* type_wanted */,
15491                      0 /* Ignore count */,
15492                      pending_break_support,
15493                      ops,
15494                      from_tty,
15495                      1 /* enabled */,
15496                      0 /* internal */, 0);
15497 }
15498
15499 static void
15500 ftrace_command (char *arg, int from_tty)
15501 {
15502   create_breakpoint (get_current_arch (),
15503                      arg,
15504                      NULL, 0, NULL, 1 /* parse arg */,
15505                      0 /* tempflag */,
15506                      bp_fast_tracepoint /* type_wanted */,
15507                      0 /* Ignore count */,
15508                      pending_break_support,
15509                      &tracepoint_breakpoint_ops,
15510                      from_tty,
15511                      1 /* enabled */,
15512                      0 /* internal */, 0);
15513 }
15514
15515 /* strace command implementation.  Creates a static tracepoint.  */
15516
15517 static void
15518 strace_command (char *arg, int from_tty)
15519 {
15520   struct breakpoint_ops *ops;
15521
15522   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15523      or with a normal static tracepoint.  */
15524   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15525     ops = &strace_marker_breakpoint_ops;
15526   else
15527     ops = &tracepoint_breakpoint_ops;
15528
15529   create_breakpoint (get_current_arch (),
15530                      arg,
15531                      NULL, 0, NULL, 1 /* parse arg */,
15532                      0 /* tempflag */,
15533                      bp_static_tracepoint /* type_wanted */,
15534                      0 /* Ignore count */,
15535                      pending_break_support,
15536                      ops,
15537                      from_tty,
15538                      1 /* enabled */,
15539                      0 /* internal */, 0);
15540 }
15541
15542 /* Set up a fake reader function that gets command lines from a linked
15543    list that was acquired during tracepoint uploading.  */
15544
15545 static struct uploaded_tp *this_utp;
15546 static int next_cmd;
15547
15548 static char *
15549 read_uploaded_action (void)
15550 {
15551   char *rslt;
15552
15553   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15554
15555   next_cmd++;
15556
15557   return rslt;
15558 }
15559
15560 /* Given information about a tracepoint as recorded on a target (which
15561    can be either a live system or a trace file), attempt to create an
15562    equivalent GDB tracepoint.  This is not a reliable process, since
15563    the target does not necessarily have all the information used when
15564    the tracepoint was originally defined.  */
15565   
15566 struct tracepoint *
15567 create_tracepoint_from_upload (struct uploaded_tp *utp)
15568 {
15569   char *addr_str, small_buf[100];
15570   struct tracepoint *tp;
15571
15572   if (utp->at_string)
15573     addr_str = utp->at_string;
15574   else
15575     {
15576       /* In the absence of a source location, fall back to raw
15577          address.  Since there is no way to confirm that the address
15578          means the same thing as when the trace was started, warn the
15579          user.  */
15580       warning (_("Uploaded tracepoint %d has no "
15581                  "source location, using raw address"),
15582                utp->number);
15583       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15584       addr_str = small_buf;
15585     }
15586
15587   /* There's not much we can do with a sequence of bytecodes.  */
15588   if (utp->cond && !utp->cond_string)
15589     warning (_("Uploaded tracepoint %d condition "
15590                "has no source form, ignoring it"),
15591              utp->number);
15592
15593   if (!create_breakpoint (get_current_arch (),
15594                           addr_str,
15595                           utp->cond_string, -1, NULL,
15596                           0 /* parse cond/thread */,
15597                           0 /* tempflag */,
15598                           utp->type /* type_wanted */,
15599                           0 /* Ignore count */,
15600                           pending_break_support,
15601                           &tracepoint_breakpoint_ops,
15602                           0 /* from_tty */,
15603                           utp->enabled /* enabled */,
15604                           0 /* internal */,
15605                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15606     return NULL;
15607
15608   /* Get the tracepoint we just created.  */
15609   tp = get_tracepoint (tracepoint_count);
15610   gdb_assert (tp != NULL);
15611
15612   if (utp->pass > 0)
15613     {
15614       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15615                  tp->base.number);
15616
15617       trace_pass_command (small_buf, 0);
15618     }
15619
15620   /* If we have uploaded versions of the original commands, set up a
15621      special-purpose "reader" function and call the usual command line
15622      reader, then pass the result to the breakpoint command-setting
15623      function.  */
15624   if (!VEC_empty (char_ptr, utp->cmd_strings))
15625     {
15626       struct command_line *cmd_list;
15627
15628       this_utp = utp;
15629       next_cmd = 0;
15630
15631       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15632
15633       breakpoint_set_commands (&tp->base, cmd_list);
15634     }
15635   else if (!VEC_empty (char_ptr, utp->actions)
15636            || !VEC_empty (char_ptr, utp->step_actions))
15637     warning (_("Uploaded tracepoint %d actions "
15638                "have no source form, ignoring them"),
15639              utp->number);
15640
15641   /* Copy any status information that might be available.  */
15642   tp->base.hit_count = utp->hit_count;
15643   tp->traceframe_usage = utp->traceframe_usage;
15644
15645   return tp;
15646 }
15647   
15648 /* Print information on tracepoint number TPNUM_EXP, or all if
15649    omitted.  */
15650
15651 static void
15652 tracepoints_info (char *args, int from_tty)
15653 {
15654   struct ui_out *uiout = current_uiout;
15655   int num_printed;
15656
15657   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15658
15659   if (num_printed == 0)
15660     {
15661       if (args == NULL || *args == '\0')
15662         ui_out_message (uiout, 0, "No tracepoints.\n");
15663       else
15664         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15665     }
15666
15667   default_collect_info ();
15668 }
15669
15670 /* The 'enable trace' command enables tracepoints.
15671    Not supported by all targets.  */
15672 static void
15673 enable_trace_command (char *args, int from_tty)
15674 {
15675   enable_command (args, from_tty);
15676 }
15677
15678 /* The 'disable trace' command disables tracepoints.
15679    Not supported by all targets.  */
15680 static void
15681 disable_trace_command (char *args, int from_tty)
15682 {
15683   disable_command (args, from_tty);
15684 }
15685
15686 /* Remove a tracepoint (or all if no argument).  */
15687 static void
15688 delete_trace_command (char *arg, int from_tty)
15689 {
15690   struct breakpoint *b, *b_tmp;
15691
15692   dont_repeat ();
15693
15694   if (arg == 0)
15695     {
15696       int breaks_to_delete = 0;
15697
15698       /* Delete all breakpoints if no argument.
15699          Do not delete internal or call-dummy breakpoints, these
15700          have to be deleted with an explicit breakpoint number 
15701          argument.  */
15702       ALL_TRACEPOINTS (b)
15703         if (is_tracepoint (b) && user_breakpoint_p (b))
15704           {
15705             breaks_to_delete = 1;
15706             break;
15707           }
15708
15709       /* Ask user only if there are some breakpoints to delete.  */
15710       if (!from_tty
15711           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15712         {
15713           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15714             if (is_tracepoint (b) && user_breakpoint_p (b))
15715               delete_breakpoint (b);
15716         }
15717     }
15718   else
15719     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15720 }
15721
15722 /* Helper function for trace_pass_command.  */
15723
15724 static void
15725 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15726 {
15727   tp->pass_count = count;
15728   observer_notify_breakpoint_modified (&tp->base);
15729   if (from_tty)
15730     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15731                      tp->base.number, count);
15732 }
15733
15734 /* Set passcount for tracepoint.
15735
15736    First command argument is passcount, second is tracepoint number.
15737    If tracepoint number omitted, apply to most recently defined.
15738    Also accepts special argument "all".  */
15739
15740 static void
15741 trace_pass_command (char *args, int from_tty)
15742 {
15743   struct tracepoint *t1;
15744   unsigned int count;
15745
15746   if (args == 0 || *args == 0)
15747     error (_("passcount command requires an "
15748              "argument (count + optional TP num)"));
15749
15750   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15751
15752   args = skip_spaces (args);
15753   if (*args && strncasecmp (args, "all", 3) == 0)
15754     {
15755       struct breakpoint *b;
15756
15757       args += 3;                        /* Skip special argument "all".  */
15758       if (*args)
15759         error (_("Junk at end of arguments."));
15760
15761       ALL_TRACEPOINTS (b)
15762       {
15763         t1 = (struct tracepoint *) b;
15764         trace_pass_set_count (t1, count, from_tty);
15765       }
15766     }
15767   else if (*args == '\0')
15768     {
15769       t1 = get_tracepoint_by_number (&args, NULL);
15770       if (t1)
15771         trace_pass_set_count (t1, count, from_tty);
15772     }
15773   else
15774     {
15775       struct get_number_or_range_state state;
15776
15777       init_number_or_range (&state, args);
15778       while (!state.finished)
15779         {
15780           t1 = get_tracepoint_by_number (&args, &state);
15781           if (t1)
15782             trace_pass_set_count (t1, count, from_tty);
15783         }
15784     }
15785 }
15786
15787 struct tracepoint *
15788 get_tracepoint (int num)
15789 {
15790   struct breakpoint *t;
15791
15792   ALL_TRACEPOINTS (t)
15793     if (t->number == num)
15794       return (struct tracepoint *) t;
15795
15796   return NULL;
15797 }
15798
15799 /* Find the tracepoint with the given target-side number (which may be
15800    different from the tracepoint number after disconnecting and
15801    reconnecting).  */
15802
15803 struct tracepoint *
15804 get_tracepoint_by_number_on_target (int num)
15805 {
15806   struct breakpoint *b;
15807
15808   ALL_TRACEPOINTS (b)
15809     {
15810       struct tracepoint *t = (struct tracepoint *) b;
15811
15812       if (t->number_on_target == num)
15813         return t;
15814     }
15815
15816   return NULL;
15817 }
15818
15819 /* Utility: parse a tracepoint number and look it up in the list.
15820    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15821    If the argument is missing, the most recent tracepoint
15822    (tracepoint_count) is returned.  */
15823
15824 struct tracepoint *
15825 get_tracepoint_by_number (char **arg,
15826                           struct get_number_or_range_state *state)
15827 {
15828   struct breakpoint *t;
15829   int tpnum;
15830   char *instring = arg == NULL ? NULL : *arg;
15831
15832   if (state)
15833     {
15834       gdb_assert (!state->finished);
15835       tpnum = get_number_or_range (state);
15836     }
15837   else if (arg == NULL || *arg == NULL || ! **arg)
15838     tpnum = tracepoint_count;
15839   else
15840     tpnum = get_number (arg);
15841
15842   if (tpnum <= 0)
15843     {
15844       if (instring && *instring)
15845         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15846                          instring);
15847       else
15848         printf_filtered (_("No previous tracepoint\n"));
15849       return NULL;
15850     }
15851
15852   ALL_TRACEPOINTS (t)
15853     if (t->number == tpnum)
15854     {
15855       return (struct tracepoint *) t;
15856     }
15857
15858   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15859   return NULL;
15860 }
15861
15862 void
15863 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15864 {
15865   if (b->thread != -1)
15866     fprintf_unfiltered (fp, " thread %d", b->thread);
15867
15868   if (b->task != 0)
15869     fprintf_unfiltered (fp, " task %d", b->task);
15870
15871   fprintf_unfiltered (fp, "\n");
15872 }
15873
15874 /* Save information on user settable breakpoints (watchpoints, etc) to
15875    a new script file named FILENAME.  If FILTER is non-NULL, call it
15876    on each breakpoint and only include the ones for which it returns
15877    non-zero.  */
15878
15879 static void
15880 save_breakpoints (char *filename, int from_tty,
15881                   int (*filter) (const struct breakpoint *))
15882 {
15883   struct breakpoint *tp;
15884   int any = 0;
15885   struct cleanup *cleanup;
15886   struct ui_file *fp;
15887   int extra_trace_bits = 0;
15888
15889   if (filename == 0 || *filename == 0)
15890     error (_("Argument required (file name in which to save)"));
15891
15892   /* See if we have anything to save.  */
15893   ALL_BREAKPOINTS (tp)
15894   {
15895     /* Skip internal and momentary breakpoints.  */
15896     if (!user_breakpoint_p (tp))
15897       continue;
15898
15899     /* If we have a filter, only save the breakpoints it accepts.  */
15900     if (filter && !filter (tp))
15901       continue;
15902
15903     any = 1;
15904
15905     if (is_tracepoint (tp))
15906       {
15907         extra_trace_bits = 1;
15908
15909         /* We can stop searching.  */
15910         break;
15911       }
15912   }
15913
15914   if (!any)
15915     {
15916       warning (_("Nothing to save."));
15917       return;
15918     }
15919
15920   filename = tilde_expand (filename);
15921   cleanup = make_cleanup (xfree, filename);
15922   fp = gdb_fopen (filename, "w");
15923   if (!fp)
15924     error (_("Unable to open file '%s' for saving (%s)"),
15925            filename, safe_strerror (errno));
15926   make_cleanup_ui_file_delete (fp);
15927
15928   if (extra_trace_bits)
15929     save_trace_state_variables (fp);
15930
15931   ALL_BREAKPOINTS (tp)
15932   {
15933     /* Skip internal and momentary breakpoints.  */
15934     if (!user_breakpoint_p (tp))
15935       continue;
15936
15937     /* If we have a filter, only save the breakpoints it accepts.  */
15938     if (filter && !filter (tp))
15939       continue;
15940
15941     tp->ops->print_recreate (tp, fp);
15942
15943     /* Note, we can't rely on tp->number for anything, as we can't
15944        assume the recreated breakpoint numbers will match.  Use $bpnum
15945        instead.  */
15946
15947     if (tp->cond_string)
15948       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15949
15950     if (tp->ignore_count)
15951       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15952
15953     if (tp->type != bp_dprintf && tp->commands)
15954       {
15955         volatile struct gdb_exception ex;       
15956
15957         fprintf_unfiltered (fp, "  commands\n");
15958         
15959         ui_out_redirect (current_uiout, fp);
15960         TRY_CATCH (ex, RETURN_MASK_ALL)
15961           {
15962             print_command_lines (current_uiout, tp->commands->commands, 2);
15963           }
15964         ui_out_redirect (current_uiout, NULL);
15965
15966         if (ex.reason < 0)
15967           throw_exception (ex);
15968
15969         fprintf_unfiltered (fp, "  end\n");
15970       }
15971
15972     if (tp->enable_state == bp_disabled)
15973       fprintf_unfiltered (fp, "disable\n");
15974
15975     /* If this is a multi-location breakpoint, check if the locations
15976        should be individually disabled.  Watchpoint locations are
15977        special, and not user visible.  */
15978     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15979       {
15980         struct bp_location *loc;
15981         int n = 1;
15982
15983         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15984           if (!loc->enabled)
15985             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15986       }
15987   }
15988
15989   if (extra_trace_bits && *default_collect)
15990     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15991
15992   if (from_tty)
15993     printf_filtered (_("Saved to file '%s'.\n"), filename);
15994   do_cleanups (cleanup);
15995 }
15996
15997 /* The `save breakpoints' command.  */
15998
15999 static void
16000 save_breakpoints_command (char *args, int from_tty)
16001 {
16002   save_breakpoints (args, from_tty, NULL);
16003 }
16004
16005 /* The `save tracepoints' command.  */
16006
16007 static void
16008 save_tracepoints_command (char *args, int from_tty)
16009 {
16010   save_breakpoints (args, from_tty, is_tracepoint);
16011 }
16012
16013 /* Create a vector of all tracepoints.  */
16014
16015 VEC(breakpoint_p) *
16016 all_tracepoints (void)
16017 {
16018   VEC(breakpoint_p) *tp_vec = 0;
16019   struct breakpoint *tp;
16020
16021   ALL_TRACEPOINTS (tp)
16022   {
16023     VEC_safe_push (breakpoint_p, tp_vec, tp);
16024   }
16025
16026   return tp_vec;
16027 }
16028
16029 \f
16030 /* This help string is used for the break, hbreak, tbreak and thbreak
16031    commands.  It is defined as a macro to prevent duplication.
16032    COMMAND should be a string constant containing the name of the
16033    command.  */
16034 #define BREAK_ARGS_HELP(command) \
16035 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
16036 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
16037 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
16038 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
16039 LOCATION may be a line number, function name, or \"*\" and an address.\n\
16040 If a line number is specified, break at start of code for that line.\n\
16041 If a function is specified, break at start of code for that function.\n\
16042 If an address is specified, break at that exact address.\n\
16043 With no LOCATION, uses current execution address of the selected\n\
16044 stack frame.  This is useful for breaking on return to a stack frame.\n\
16045 \n\
16046 THREADNUM is the number from \"info threads\".\n\
16047 CONDITION is a boolean expression.\n\
16048 \n\
16049 Multiple breakpoints at one place are permitted, and useful if their\n\
16050 conditions are different.\n\
16051 \n\
16052 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
16053
16054 /* List of subcommands for "catch".  */
16055 static struct cmd_list_element *catch_cmdlist;
16056
16057 /* List of subcommands for "tcatch".  */
16058 static struct cmd_list_element *tcatch_cmdlist;
16059
16060 void
16061 add_catch_command (char *name, char *docstring,
16062                    cmd_sfunc_ftype *sfunc,
16063                    completer_ftype *completer,
16064                    void *user_data_catch,
16065                    void *user_data_tcatch)
16066 {
16067   struct cmd_list_element *command;
16068
16069   command = add_cmd (name, class_breakpoint, NULL, docstring,
16070                      &catch_cmdlist);
16071   set_cmd_sfunc (command, sfunc);
16072   set_cmd_context (command, user_data_catch);
16073   set_cmd_completer (command, completer);
16074
16075   command = add_cmd (name, class_breakpoint, NULL, docstring,
16076                      &tcatch_cmdlist);
16077   set_cmd_sfunc (command, sfunc);
16078   set_cmd_context (command, user_data_tcatch);
16079   set_cmd_completer (command, completer);
16080 }
16081
16082 static void
16083 clear_syscall_counts (struct inferior *inf)
16084 {
16085   struct catch_syscall_inferior_data *inf_data
16086     = get_catch_syscall_inferior_data (inf);
16087
16088   inf_data->total_syscalls_count = 0;
16089   inf_data->any_syscall_count = 0;
16090   VEC_free (int, inf_data->syscalls_counts);
16091 }
16092
16093 static void
16094 save_command (char *arg, int from_tty)
16095 {
16096   printf_unfiltered (_("\"save\" must be followed by "
16097                        "the name of a save subcommand.\n"));
16098   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
16099 }
16100
16101 struct breakpoint *
16102 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
16103                           void *data)
16104 {
16105   struct breakpoint *b, *b_tmp;
16106
16107   ALL_BREAKPOINTS_SAFE (b, b_tmp)
16108     {
16109       if ((*callback) (b, data))
16110         return b;
16111     }
16112
16113   return NULL;
16114 }
16115
16116 /* Zero if any of the breakpoint's locations could be a location where
16117    functions have been inlined, nonzero otherwise.  */
16118
16119 static int
16120 is_non_inline_function (struct breakpoint *b)
16121 {
16122   /* The shared library event breakpoint is set on the address of a
16123      non-inline function.  */
16124   if (b->type == bp_shlib_event)
16125     return 1;
16126
16127   return 0;
16128 }
16129
16130 /* Nonzero if the specified PC cannot be a location where functions
16131    have been inlined.  */
16132
16133 int
16134 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
16135                            const struct target_waitstatus *ws)
16136 {
16137   struct breakpoint *b;
16138   struct bp_location *bl;
16139
16140   ALL_BREAKPOINTS (b)
16141     {
16142       if (!is_non_inline_function (b))
16143         continue;
16144
16145       for (bl = b->loc; bl != NULL; bl = bl->next)
16146         {
16147           if (!bl->shlib_disabled
16148               && bpstat_check_location (bl, aspace, pc, ws))
16149             return 1;
16150         }
16151     }
16152
16153   return 0;
16154 }
16155
16156 /* Remove any references to OBJFILE which is going to be freed.  */
16157
16158 void
16159 breakpoint_free_objfile (struct objfile *objfile)
16160 {
16161   struct bp_location **locp, *loc;
16162
16163   ALL_BP_LOCATIONS (loc, locp)
16164     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
16165       loc->symtab = NULL;
16166 }
16167
16168 void
16169 initialize_breakpoint_ops (void)
16170 {
16171   static int initialized = 0;
16172
16173   struct breakpoint_ops *ops;
16174
16175   if (initialized)
16176     return;
16177   initialized = 1;
16178
16179   /* The breakpoint_ops structure to be inherit by all kinds of
16180      breakpoints (real breakpoints, i.e., user "break" breakpoints,
16181      internal and momentary breakpoints, etc.).  */
16182   ops = &bkpt_base_breakpoint_ops;
16183   *ops = base_breakpoint_ops;
16184   ops->re_set = bkpt_re_set;
16185   ops->insert_location = bkpt_insert_location;
16186   ops->remove_location = bkpt_remove_location;
16187   ops->breakpoint_hit = bkpt_breakpoint_hit;
16188   ops->create_sals_from_address = bkpt_create_sals_from_address;
16189   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16190   ops->decode_linespec = bkpt_decode_linespec;
16191
16192   /* The breakpoint_ops structure to be used in regular breakpoints.  */
16193   ops = &bkpt_breakpoint_ops;
16194   *ops = bkpt_base_breakpoint_ops;
16195   ops->re_set = bkpt_re_set;
16196   ops->resources_needed = bkpt_resources_needed;
16197   ops->print_it = bkpt_print_it;
16198   ops->print_mention = bkpt_print_mention;
16199   ops->print_recreate = bkpt_print_recreate;
16200
16201   /* Ranged breakpoints.  */
16202   ops = &ranged_breakpoint_ops;
16203   *ops = bkpt_breakpoint_ops;
16204   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16205   ops->resources_needed = resources_needed_ranged_breakpoint;
16206   ops->print_it = print_it_ranged_breakpoint;
16207   ops->print_one = print_one_ranged_breakpoint;
16208   ops->print_one_detail = print_one_detail_ranged_breakpoint;
16209   ops->print_mention = print_mention_ranged_breakpoint;
16210   ops->print_recreate = print_recreate_ranged_breakpoint;
16211
16212   /* Internal breakpoints.  */
16213   ops = &internal_breakpoint_ops;
16214   *ops = bkpt_base_breakpoint_ops;
16215   ops->re_set = internal_bkpt_re_set;
16216   ops->check_status = internal_bkpt_check_status;
16217   ops->print_it = internal_bkpt_print_it;
16218   ops->print_mention = internal_bkpt_print_mention;
16219
16220   /* Momentary breakpoints.  */
16221   ops = &momentary_breakpoint_ops;
16222   *ops = bkpt_base_breakpoint_ops;
16223   ops->re_set = momentary_bkpt_re_set;
16224   ops->check_status = momentary_bkpt_check_status;
16225   ops->print_it = momentary_bkpt_print_it;
16226   ops->print_mention = momentary_bkpt_print_mention;
16227
16228   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
16229   ops = &longjmp_breakpoint_ops;
16230   *ops = momentary_breakpoint_ops;
16231   ops->dtor = longjmp_bkpt_dtor;
16232
16233   /* Probe breakpoints.  */
16234   ops = &bkpt_probe_breakpoint_ops;
16235   *ops = bkpt_breakpoint_ops;
16236   ops->insert_location = bkpt_probe_insert_location;
16237   ops->remove_location = bkpt_probe_remove_location;
16238   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
16239   ops->decode_linespec = bkpt_probe_decode_linespec;
16240
16241   /* Watchpoints.  */
16242   ops = &watchpoint_breakpoint_ops;
16243   *ops = base_breakpoint_ops;
16244   ops->dtor = dtor_watchpoint;
16245   ops->re_set = re_set_watchpoint;
16246   ops->insert_location = insert_watchpoint;
16247   ops->remove_location = remove_watchpoint;
16248   ops->breakpoint_hit = breakpoint_hit_watchpoint;
16249   ops->check_status = check_status_watchpoint;
16250   ops->resources_needed = resources_needed_watchpoint;
16251   ops->works_in_software_mode = works_in_software_mode_watchpoint;
16252   ops->print_it = print_it_watchpoint;
16253   ops->print_mention = print_mention_watchpoint;
16254   ops->print_recreate = print_recreate_watchpoint;
16255   ops->explains_signal = explains_signal_watchpoint;
16256
16257   /* Masked watchpoints.  */
16258   ops = &masked_watchpoint_breakpoint_ops;
16259   *ops = watchpoint_breakpoint_ops;
16260   ops->insert_location = insert_masked_watchpoint;
16261   ops->remove_location = remove_masked_watchpoint;
16262   ops->resources_needed = resources_needed_masked_watchpoint;
16263   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16264   ops->print_it = print_it_masked_watchpoint;
16265   ops->print_one_detail = print_one_detail_masked_watchpoint;
16266   ops->print_mention = print_mention_masked_watchpoint;
16267   ops->print_recreate = print_recreate_masked_watchpoint;
16268
16269   /* Tracepoints.  */
16270   ops = &tracepoint_breakpoint_ops;
16271   *ops = base_breakpoint_ops;
16272   ops->re_set = tracepoint_re_set;
16273   ops->breakpoint_hit = tracepoint_breakpoint_hit;
16274   ops->print_one_detail = tracepoint_print_one_detail;
16275   ops->print_mention = tracepoint_print_mention;
16276   ops->print_recreate = tracepoint_print_recreate;
16277   ops->create_sals_from_address = tracepoint_create_sals_from_address;
16278   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16279   ops->decode_linespec = tracepoint_decode_linespec;
16280
16281   /* Probe tracepoints.  */
16282   ops = &tracepoint_probe_breakpoint_ops;
16283   *ops = tracepoint_breakpoint_ops;
16284   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
16285   ops->decode_linespec = tracepoint_probe_decode_linespec;
16286
16287   /* Static tracepoints with marker (`-m').  */
16288   ops = &strace_marker_breakpoint_ops;
16289   *ops = tracepoint_breakpoint_ops;
16290   ops->create_sals_from_address = strace_marker_create_sals_from_address;
16291   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16292   ops->decode_linespec = strace_marker_decode_linespec;
16293
16294   /* Fork catchpoints.  */
16295   ops = &catch_fork_breakpoint_ops;
16296   *ops = base_breakpoint_ops;
16297   ops->insert_location = insert_catch_fork;
16298   ops->remove_location = remove_catch_fork;
16299   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16300   ops->print_it = print_it_catch_fork;
16301   ops->print_one = print_one_catch_fork;
16302   ops->print_mention = print_mention_catch_fork;
16303   ops->print_recreate = print_recreate_catch_fork;
16304
16305   /* Vfork catchpoints.  */
16306   ops = &catch_vfork_breakpoint_ops;
16307   *ops = base_breakpoint_ops;
16308   ops->insert_location = insert_catch_vfork;
16309   ops->remove_location = remove_catch_vfork;
16310   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16311   ops->print_it = print_it_catch_vfork;
16312   ops->print_one = print_one_catch_vfork;
16313   ops->print_mention = print_mention_catch_vfork;
16314   ops->print_recreate = print_recreate_catch_vfork;
16315
16316   /* Exec catchpoints.  */
16317   ops = &catch_exec_breakpoint_ops;
16318   *ops = base_breakpoint_ops;
16319   ops->dtor = dtor_catch_exec;
16320   ops->insert_location = insert_catch_exec;
16321   ops->remove_location = remove_catch_exec;
16322   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16323   ops->print_it = print_it_catch_exec;
16324   ops->print_one = print_one_catch_exec;
16325   ops->print_mention = print_mention_catch_exec;
16326   ops->print_recreate = print_recreate_catch_exec;
16327
16328   /* Syscall catchpoints.  */
16329   ops = &catch_syscall_breakpoint_ops;
16330   *ops = base_breakpoint_ops;
16331   ops->dtor = dtor_catch_syscall;
16332   ops->insert_location = insert_catch_syscall;
16333   ops->remove_location = remove_catch_syscall;
16334   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
16335   ops->print_it = print_it_catch_syscall;
16336   ops->print_one = print_one_catch_syscall;
16337   ops->print_mention = print_mention_catch_syscall;
16338   ops->print_recreate = print_recreate_catch_syscall;
16339
16340   /* Solib-related catchpoints.  */
16341   ops = &catch_solib_breakpoint_ops;
16342   *ops = base_breakpoint_ops;
16343   ops->dtor = dtor_catch_solib;
16344   ops->insert_location = insert_catch_solib;
16345   ops->remove_location = remove_catch_solib;
16346   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16347   ops->check_status = check_status_catch_solib;
16348   ops->print_it = print_it_catch_solib;
16349   ops->print_one = print_one_catch_solib;
16350   ops->print_mention = print_mention_catch_solib;
16351   ops->print_recreate = print_recreate_catch_solib;
16352
16353   ops = &dprintf_breakpoint_ops;
16354   *ops = bkpt_base_breakpoint_ops;
16355   ops->re_set = dprintf_re_set;
16356   ops->resources_needed = bkpt_resources_needed;
16357   ops->print_it = bkpt_print_it;
16358   ops->print_mention = bkpt_print_mention;
16359   ops->print_recreate = dprintf_print_recreate;
16360   ops->after_condition_true = dprintf_after_condition_true;
16361   ops->breakpoint_hit = dprintf_breakpoint_hit;
16362 }
16363
16364 /* Chain containing all defined "enable breakpoint" subcommands.  */
16365
16366 static struct cmd_list_element *enablebreaklist = NULL;
16367
16368 void
16369 _initialize_breakpoint (void)
16370 {
16371   struct cmd_list_element *c;
16372
16373   initialize_breakpoint_ops ();
16374
16375   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16376   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16377   observer_attach_inferior_exit (clear_syscall_counts);
16378   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16379
16380   breakpoint_objfile_key
16381     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16382
16383   catch_syscall_inferior_data
16384     = register_inferior_data_with_cleanup (NULL,
16385                                            catch_syscall_inferior_data_cleanup);
16386
16387   breakpoint_chain = 0;
16388   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16389      before a breakpoint is set.  */
16390   breakpoint_count = 0;
16391
16392   tracepoint_count = 0;
16393
16394   add_com ("ignore", class_breakpoint, ignore_command, _("\
16395 Set ignore-count of breakpoint number N to COUNT.\n\
16396 Usage is `ignore N COUNT'."));
16397   if (xdb_commands)
16398     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16399
16400   add_com ("commands", class_breakpoint, commands_command, _("\
16401 Set commands to be executed when a breakpoint is hit.\n\
16402 Give breakpoint number as argument after \"commands\".\n\
16403 With no argument, the targeted breakpoint is the last one set.\n\
16404 The commands themselves follow starting on the next line.\n\
16405 Type a line containing \"end\" to indicate the end of them.\n\
16406 Give \"silent\" as the first line to make the breakpoint silent;\n\
16407 then no output is printed when it is hit, except what the commands print."));
16408
16409   c = add_com ("condition", class_breakpoint, condition_command, _("\
16410 Specify breakpoint number N to break only if COND is true.\n\
16411 Usage is `condition N COND', where N is an integer and COND is an\n\
16412 expression to be evaluated whenever breakpoint N is reached."));
16413   set_cmd_completer (c, condition_completer);
16414
16415   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16416 Set a temporary breakpoint.\n\
16417 Like \"break\" except the breakpoint is only temporary,\n\
16418 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16419 by using \"enable delete\" on the breakpoint number.\n\
16420 \n"
16421 BREAK_ARGS_HELP ("tbreak")));
16422   set_cmd_completer (c, location_completer);
16423
16424   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16425 Set a hardware assisted breakpoint.\n\
16426 Like \"break\" except the breakpoint requires hardware support,\n\
16427 some target hardware may not have this support.\n\
16428 \n"
16429 BREAK_ARGS_HELP ("hbreak")));
16430   set_cmd_completer (c, location_completer);
16431
16432   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16433 Set a temporary hardware assisted breakpoint.\n\
16434 Like \"hbreak\" except the breakpoint is only temporary,\n\
16435 so it will be deleted when hit.\n\
16436 \n"
16437 BREAK_ARGS_HELP ("thbreak")));
16438   set_cmd_completer (c, location_completer);
16439
16440   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16441 Enable some breakpoints.\n\
16442 Give breakpoint numbers (separated by spaces) as arguments.\n\
16443 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16444 This is used to cancel the effect of the \"disable\" command.\n\
16445 With a subcommand you can enable temporarily."),
16446                   &enablelist, "enable ", 1, &cmdlist);
16447   if (xdb_commands)
16448     add_com ("ab", class_breakpoint, enable_command, _("\
16449 Enable some breakpoints.\n\
16450 Give breakpoint numbers (separated by spaces) as arguments.\n\
16451 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16452 This is used to cancel the effect of the \"disable\" command.\n\
16453 With a subcommand you can enable temporarily."));
16454
16455   add_com_alias ("en", "enable", class_breakpoint, 1);
16456
16457   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16458 Enable some breakpoints.\n\
16459 Give breakpoint numbers (separated by spaces) as arguments.\n\
16460 This is used to cancel the effect of the \"disable\" command.\n\
16461 May be abbreviated to simply \"enable\".\n"),
16462                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16463
16464   add_cmd ("once", no_class, enable_once_command, _("\
16465 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16466 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16467            &enablebreaklist);
16468
16469   add_cmd ("delete", no_class, enable_delete_command, _("\
16470 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16471 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16472            &enablebreaklist);
16473
16474   add_cmd ("count", no_class, enable_count_command, _("\
16475 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16476 If a breakpoint is hit while enabled in this fashion,\n\
16477 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16478            &enablebreaklist);
16479
16480   add_cmd ("delete", no_class, enable_delete_command, _("\
16481 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16482 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16483            &enablelist);
16484
16485   add_cmd ("once", no_class, enable_once_command, _("\
16486 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16487 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16488            &enablelist);
16489
16490   add_cmd ("count", no_class, enable_count_command, _("\
16491 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16492 If a breakpoint is hit while enabled in this fashion,\n\
16493 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16494            &enablelist);
16495
16496   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16497 Disable some breakpoints.\n\
16498 Arguments are breakpoint numbers with spaces in between.\n\
16499 To disable all breakpoints, give no argument.\n\
16500 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16501                   &disablelist, "disable ", 1, &cmdlist);
16502   add_com_alias ("dis", "disable", class_breakpoint, 1);
16503   add_com_alias ("disa", "disable", class_breakpoint, 1);
16504   if (xdb_commands)
16505     add_com ("sb", class_breakpoint, disable_command, _("\
16506 Disable some breakpoints.\n\
16507 Arguments are breakpoint numbers with spaces in between.\n\
16508 To disable all breakpoints, give no argument.\n\
16509 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16510
16511   add_cmd ("breakpoints", class_alias, disable_command, _("\
16512 Disable some breakpoints.\n\
16513 Arguments are breakpoint numbers with spaces in between.\n\
16514 To disable all breakpoints, give no argument.\n\
16515 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16516 This command may be abbreviated \"disable\"."),
16517            &disablelist);
16518
16519   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16520 Delete some breakpoints or auto-display expressions.\n\
16521 Arguments are breakpoint numbers with spaces in between.\n\
16522 To delete all breakpoints, give no argument.\n\
16523 \n\
16524 Also a prefix command for deletion of other GDB objects.\n\
16525 The \"unset\" command is also an alias for \"delete\"."),
16526                   &deletelist, "delete ", 1, &cmdlist);
16527   add_com_alias ("d", "delete", class_breakpoint, 1);
16528   add_com_alias ("del", "delete", class_breakpoint, 1);
16529   if (xdb_commands)
16530     add_com ("db", class_breakpoint, delete_command, _("\
16531 Delete some breakpoints.\n\
16532 Arguments are breakpoint numbers with spaces in between.\n\
16533 To delete all breakpoints, give no argument.\n"));
16534
16535   add_cmd ("breakpoints", class_alias, delete_command, _("\
16536 Delete some breakpoints or auto-display expressions.\n\
16537 Arguments are breakpoint numbers with spaces in between.\n\
16538 To delete all breakpoints, give no argument.\n\
16539 This command may be abbreviated \"delete\"."),
16540            &deletelist);
16541
16542   add_com ("clear", class_breakpoint, clear_command, _("\
16543 Clear breakpoint at specified line or function.\n\
16544 Argument may be line number, function name, or \"*\" and an address.\n\
16545 If line number is specified, all breakpoints in that line are cleared.\n\
16546 If function is specified, breakpoints at beginning of function are cleared.\n\
16547 If an address is specified, breakpoints at that address are cleared.\n\
16548 \n\
16549 With no argument, clears all breakpoints in the line that the selected frame\n\
16550 is executing in.\n\
16551 \n\
16552 See also the \"delete\" command which clears breakpoints by number."));
16553   add_com_alias ("cl", "clear", class_breakpoint, 1);
16554
16555   c = add_com ("break", class_breakpoint, break_command, _("\
16556 Set breakpoint at specified line or function.\n"
16557 BREAK_ARGS_HELP ("break")));
16558   set_cmd_completer (c, location_completer);
16559
16560   add_com_alias ("b", "break", class_run, 1);
16561   add_com_alias ("br", "break", class_run, 1);
16562   add_com_alias ("bre", "break", class_run, 1);
16563   add_com_alias ("brea", "break", class_run, 1);
16564
16565   if (xdb_commands)
16566    add_com_alias ("ba", "break", class_breakpoint, 1);
16567
16568   if (dbx_commands)
16569     {
16570       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16571 Break in function/address or break at a line in the current file."),
16572                              &stoplist, "stop ", 1, &cmdlist);
16573       add_cmd ("in", class_breakpoint, stopin_command,
16574                _("Break in function or address."), &stoplist);
16575       add_cmd ("at", class_breakpoint, stopat_command,
16576                _("Break at a line in the current file."), &stoplist);
16577       add_com ("status", class_info, breakpoints_info, _("\
16578 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16579 The \"Type\" column indicates one of:\n\
16580 \tbreakpoint     - normal breakpoint\n\
16581 \twatchpoint     - watchpoint\n\
16582 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16583 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16584 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16585 address and file/line number respectively.\n\
16586 \n\
16587 Convenience variable \"$_\" and default examine address for \"x\"\n\
16588 are set to the address of the last breakpoint listed unless the command\n\
16589 is prefixed with \"server \".\n\n\
16590 Convenience variable \"$bpnum\" contains the number of the last\n\
16591 breakpoint set."));
16592     }
16593
16594   add_info ("breakpoints", breakpoints_info, _("\
16595 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16596 The \"Type\" column indicates one of:\n\
16597 \tbreakpoint     - normal breakpoint\n\
16598 \twatchpoint     - watchpoint\n\
16599 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16600 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16601 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16602 address and file/line number respectively.\n\
16603 \n\
16604 Convenience variable \"$_\" and default examine address for \"x\"\n\
16605 are set to the address of the last breakpoint listed unless the command\n\
16606 is prefixed with \"server \".\n\n\
16607 Convenience variable \"$bpnum\" contains the number of the last\n\
16608 breakpoint set."));
16609
16610   add_info_alias ("b", "breakpoints", 1);
16611
16612   if (xdb_commands)
16613     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16614 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16615 The \"Type\" column indicates one of:\n\
16616 \tbreakpoint     - normal breakpoint\n\
16617 \twatchpoint     - watchpoint\n\
16618 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16619 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16620 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16621 address and file/line number respectively.\n\
16622 \n\
16623 Convenience variable \"$_\" and default examine address for \"x\"\n\
16624 are set to the address of the last breakpoint listed unless the command\n\
16625 is prefixed with \"server \".\n\n\
16626 Convenience variable \"$bpnum\" contains the number of the last\n\
16627 breakpoint set."));
16628
16629   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16630 Status of all breakpoints, or breakpoint number NUMBER.\n\
16631 The \"Type\" column indicates one of:\n\
16632 \tbreakpoint     - normal breakpoint\n\
16633 \twatchpoint     - watchpoint\n\
16634 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16635 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16636 \tuntil          - internal breakpoint used by the \"until\" command\n\
16637 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16638 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16639 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16640 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16641 address and file/line number respectively.\n\
16642 \n\
16643 Convenience variable \"$_\" and default examine address for \"x\"\n\
16644 are set to the address of the last breakpoint listed unless the command\n\
16645 is prefixed with \"server \".\n\n\
16646 Convenience variable \"$bpnum\" contains the number of the last\n\
16647 breakpoint set."),
16648            &maintenanceinfolist);
16649
16650   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16651 Set catchpoints to catch events."),
16652                   &catch_cmdlist, "catch ",
16653                   0/*allow-unknown*/, &cmdlist);
16654
16655   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16656 Set temporary catchpoints to catch events."),
16657                   &tcatch_cmdlist, "tcatch ",
16658                   0/*allow-unknown*/, &cmdlist);
16659
16660   add_catch_command ("fork", _("Catch calls to fork."),
16661                      catch_fork_command_1,
16662                      NULL,
16663                      (void *) (uintptr_t) catch_fork_permanent,
16664                      (void *) (uintptr_t) catch_fork_temporary);
16665   add_catch_command ("vfork", _("Catch calls to vfork."),
16666                      catch_fork_command_1,
16667                      NULL,
16668                      (void *) (uintptr_t) catch_vfork_permanent,
16669                      (void *) (uintptr_t) catch_vfork_temporary);
16670   add_catch_command ("exec", _("Catch calls to exec."),
16671                      catch_exec_command_1,
16672                      NULL,
16673                      CATCH_PERMANENT,
16674                      CATCH_TEMPORARY);
16675   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16676 Usage: catch load [REGEX]\n\
16677 If REGEX is given, only stop for libraries matching the regular expression."),
16678                      catch_load_command_1,
16679                      NULL,
16680                      CATCH_PERMANENT,
16681                      CATCH_TEMPORARY);
16682   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16683 Usage: catch unload [REGEX]\n\
16684 If REGEX is given, only stop for libraries matching the regular expression."),
16685                      catch_unload_command_1,
16686                      NULL,
16687                      CATCH_PERMANENT,
16688                      CATCH_TEMPORARY);
16689   add_catch_command ("syscall", _("\
16690 Catch system calls by their names and/or numbers.\n\
16691 Arguments say which system calls to catch.  If no arguments\n\
16692 are given, every system call will be caught.\n\
16693 Arguments, if given, should be one or more system call names\n\
16694 (if your system supports that), or system call numbers."),
16695                      catch_syscall_command_1,
16696                      catch_syscall_completer,
16697                      CATCH_PERMANENT,
16698                      CATCH_TEMPORARY);
16699
16700   c = add_com ("watch", class_breakpoint, watch_command, _("\
16701 Set a watchpoint for an expression.\n\
16702 Usage: watch [-l|-location] EXPRESSION\n\
16703 A watchpoint stops execution of your program whenever the value of\n\
16704 an expression changes.\n\
16705 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16706 the memory to which it refers."));
16707   set_cmd_completer (c, expression_completer);
16708
16709   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16710 Set a read watchpoint for an expression.\n\
16711 Usage: rwatch [-l|-location] EXPRESSION\n\
16712 A watchpoint stops execution of your program whenever the value of\n\
16713 an expression is read.\n\
16714 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16715 the memory to which it refers."));
16716   set_cmd_completer (c, expression_completer);
16717
16718   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16719 Set a watchpoint for an expression.\n\
16720 Usage: awatch [-l|-location] EXPRESSION\n\
16721 A watchpoint stops execution of your program whenever the value of\n\
16722 an expression is either read or written.\n\
16723 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16724 the memory to which it refers."));
16725   set_cmd_completer (c, expression_completer);
16726
16727   add_info ("watchpoints", watchpoints_info, _("\
16728 Status of specified watchpoints (all watchpoints if no argument)."));
16729
16730   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16731      respond to changes - contrary to the description.  */
16732   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16733                             &can_use_hw_watchpoints, _("\
16734 Set debugger's willingness to use watchpoint hardware."), _("\
16735 Show debugger's willingness to use watchpoint hardware."), _("\
16736 If zero, gdb will not use hardware for new watchpoints, even if\n\
16737 such is available.  (However, any hardware watchpoints that were\n\
16738 created before setting this to nonzero, will continue to use watchpoint\n\
16739 hardware.)"),
16740                             NULL,
16741                             show_can_use_hw_watchpoints,
16742                             &setlist, &showlist);
16743
16744   can_use_hw_watchpoints = 1;
16745
16746   /* Tracepoint manipulation commands.  */
16747
16748   c = add_com ("trace", class_breakpoint, trace_command, _("\
16749 Set a tracepoint at specified line or function.\n\
16750 \n"
16751 BREAK_ARGS_HELP ("trace") "\n\
16752 Do \"help tracepoints\" for info on other tracepoint commands."));
16753   set_cmd_completer (c, location_completer);
16754
16755   add_com_alias ("tp", "trace", class_alias, 0);
16756   add_com_alias ("tr", "trace", class_alias, 1);
16757   add_com_alias ("tra", "trace", class_alias, 1);
16758   add_com_alias ("trac", "trace", class_alias, 1);
16759
16760   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16761 Set a fast tracepoint at specified line or function.\n\
16762 \n"
16763 BREAK_ARGS_HELP ("ftrace") "\n\
16764 Do \"help tracepoints\" for info on other tracepoint commands."));
16765   set_cmd_completer (c, location_completer);
16766
16767   c = add_com ("strace", class_breakpoint, strace_command, _("\
16768 Set a static tracepoint at specified line, function or marker.\n\
16769 \n\
16770 strace [LOCATION] [if CONDITION]\n\
16771 LOCATION may be a line number, function name, \"*\" and an address,\n\
16772 or -m MARKER_ID.\n\
16773 If a line number is specified, probe the marker at start of code\n\
16774 for that line.  If a function is specified, probe the marker at start\n\
16775 of code for that function.  If an address is specified, probe the marker\n\
16776 at that exact address.  If a marker id is specified, probe the marker\n\
16777 with that name.  With no LOCATION, uses current execution address of\n\
16778 the selected stack frame.\n\
16779 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16780 This collects arbitrary user data passed in the probe point call to the\n\
16781 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16782 by printing the $_sdata variable like any other convenience variable.\n\
16783 \n\
16784 CONDITION is a boolean expression.\n\
16785 \n\
16786 Multiple tracepoints at one place are permitted, and useful if their\n\
16787 conditions are different.\n\
16788 \n\
16789 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16790 Do \"help tracepoints\" for info on other tracepoint commands."));
16791   set_cmd_completer (c, location_completer);
16792
16793   add_info ("tracepoints", tracepoints_info, _("\
16794 Status of specified tracepoints (all tracepoints if no argument).\n\
16795 Convenience variable \"$tpnum\" contains the number of the\n\
16796 last tracepoint set."));
16797
16798   add_info_alias ("tp", "tracepoints", 1);
16799
16800   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16801 Delete specified tracepoints.\n\
16802 Arguments are tracepoint numbers, separated by spaces.\n\
16803 No argument means delete all tracepoints."),
16804            &deletelist);
16805   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16806
16807   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16808 Disable specified tracepoints.\n\
16809 Arguments are tracepoint numbers, separated by spaces.\n\
16810 No argument means disable all tracepoints."),
16811            &disablelist);
16812   deprecate_cmd (c, "disable");
16813
16814   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16815 Enable specified tracepoints.\n\
16816 Arguments are tracepoint numbers, separated by spaces.\n\
16817 No argument means enable all tracepoints."),
16818            &enablelist);
16819   deprecate_cmd (c, "enable");
16820
16821   add_com ("passcount", class_trace, trace_pass_command, _("\
16822 Set the passcount for a tracepoint.\n\
16823 The trace will end when the tracepoint has been passed 'count' times.\n\
16824 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16825 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16826
16827   add_prefix_cmd ("save", class_breakpoint, save_command,
16828                   _("Save breakpoint definitions as a script."),
16829                   &save_cmdlist, "save ",
16830                   0/*allow-unknown*/, &cmdlist);
16831
16832   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16833 Save current breakpoint definitions as a script.\n\
16834 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16835 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16836 session to restore them."),
16837                &save_cmdlist);
16838   set_cmd_completer (c, filename_completer);
16839
16840   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16841 Save current tracepoint definitions as a script.\n\
16842 Use the 'source' command in another debug session to restore them."),
16843                &save_cmdlist);
16844   set_cmd_completer (c, filename_completer);
16845
16846   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16847   deprecate_cmd (c, "save tracepoints");
16848
16849   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16850 Breakpoint specific settings\n\
16851 Configure various breakpoint-specific variables such as\n\
16852 pending breakpoint behavior"),
16853                   &breakpoint_set_cmdlist, "set breakpoint ",
16854                   0/*allow-unknown*/, &setlist);
16855   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16856 Breakpoint specific settings\n\
16857 Configure various breakpoint-specific variables such as\n\
16858 pending breakpoint behavior"),
16859                   &breakpoint_show_cmdlist, "show breakpoint ",
16860                   0/*allow-unknown*/, &showlist);
16861
16862   add_setshow_auto_boolean_cmd ("pending", no_class,
16863                                 &pending_break_support, _("\
16864 Set debugger's behavior regarding pending breakpoints."), _("\
16865 Show debugger's behavior regarding pending breakpoints."), _("\
16866 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16867 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16868 an error.  If auto, an unrecognized breakpoint location results in a\n\
16869 user-query to see if a pending breakpoint should be created."),
16870                                 NULL,
16871                                 show_pending_break_support,
16872                                 &breakpoint_set_cmdlist,
16873                                 &breakpoint_show_cmdlist);
16874
16875   pending_break_support = AUTO_BOOLEAN_AUTO;
16876
16877   add_setshow_boolean_cmd ("auto-hw", no_class,
16878                            &automatic_hardware_breakpoints, _("\
16879 Set automatic usage of hardware breakpoints."), _("\
16880 Show automatic usage of hardware breakpoints."), _("\
16881 If set, the debugger will automatically use hardware breakpoints for\n\
16882 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16883 a warning will be emitted for such breakpoints."),
16884                            NULL,
16885                            show_automatic_hardware_breakpoints,
16886                            &breakpoint_set_cmdlist,
16887                            &breakpoint_show_cmdlist);
16888
16889   add_setshow_auto_boolean_cmd ("always-inserted", class_support,
16890                                 &always_inserted_mode, _("\
16891 Set mode for inserting breakpoints."), _("\
16892 Show mode for inserting breakpoints."), _("\
16893 When this mode is off, breakpoints are inserted in inferior when it is\n\
16894 resumed, and removed when execution stops.  When this mode is on,\n\
16895 breakpoints are inserted immediately and removed only when the user\n\
16896 deletes the breakpoint.  When this mode is auto (which is the default),\n\
16897 the behaviour depends on the non-stop setting (see help set non-stop).\n\
16898 In this case, if gdb is controlling the inferior in non-stop mode, gdb\n\
16899 behaves as if always-inserted mode is on; if gdb is controlling the\n\
16900 inferior in all-stop mode, gdb behaves as if always-inserted mode is off."),
16901                                 NULL,
16902                                 &show_always_inserted_mode,
16903                                 &breakpoint_set_cmdlist,
16904                                 &breakpoint_show_cmdlist);
16905
16906   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16907                         condition_evaluation_enums,
16908                         &condition_evaluation_mode_1, _("\
16909 Set mode of breakpoint condition evaluation."), _("\
16910 Show mode of breakpoint condition evaluation."), _("\
16911 When this is set to \"host\", breakpoint conditions will be\n\
16912 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16913 breakpoint conditions will be downloaded to the target (if the target\n\
16914 supports such feature) and conditions will be evaluated on the target's side.\n\
16915 If this is set to \"auto\" (default), this will be automatically set to\n\
16916 \"target\" if it supports condition evaluation, otherwise it will\n\
16917 be set to \"gdb\""),
16918                            &set_condition_evaluation_mode,
16919                            &show_condition_evaluation_mode,
16920                            &breakpoint_set_cmdlist,
16921                            &breakpoint_show_cmdlist);
16922
16923   add_com ("break-range", class_breakpoint, break_range_command, _("\
16924 Set a breakpoint for an address range.\n\
16925 break-range START-LOCATION, END-LOCATION\n\
16926 where START-LOCATION and END-LOCATION can be one of the following:\n\
16927   LINENUM, for that line in the current file,\n\
16928   FILE:LINENUM, for that line in that file,\n\
16929   +OFFSET, for that number of lines after the current line\n\
16930            or the start of the range\n\
16931   FUNCTION, for the first line in that function,\n\
16932   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16933   *ADDRESS, for the instruction at that address.\n\
16934 \n\
16935 The breakpoint will stop execution of the inferior whenever it executes\n\
16936 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16937 range (including START-LOCATION and END-LOCATION)."));
16938
16939   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16940 Set a dynamic printf at specified line or function.\n\
16941 dprintf location,format string,arg1,arg2,...\n\
16942 location may be a line number, function name, or \"*\" and an address.\n\
16943 If a line number is specified, break at start of code for that line.\n\
16944 If a function is specified, break at start of code for that function."));
16945   set_cmd_completer (c, location_completer);
16946
16947   add_setshow_enum_cmd ("dprintf-style", class_support,
16948                         dprintf_style_enums, &dprintf_style, _("\
16949 Set the style of usage for dynamic printf."), _("\
16950 Show the style of usage for dynamic printf."), _("\
16951 This setting chooses how GDB will do a dynamic printf.\n\
16952 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16953 console, as with the \"printf\" command.\n\
16954 If the value is \"call\", the print is done by calling a function in your\n\
16955 program; by default printf(), but you can choose a different function or\n\
16956 output stream by setting dprintf-function and dprintf-channel."),
16957                         update_dprintf_commands, NULL,
16958                         &setlist, &showlist);
16959
16960   dprintf_function = xstrdup ("printf");
16961   add_setshow_string_cmd ("dprintf-function", class_support,
16962                           &dprintf_function, _("\
16963 Set the function to use for dynamic printf"), _("\
16964 Show the function to use for dynamic printf"), NULL,
16965                           update_dprintf_commands, NULL,
16966                           &setlist, &showlist);
16967
16968   dprintf_channel = xstrdup ("");
16969   add_setshow_string_cmd ("dprintf-channel", class_support,
16970                           &dprintf_channel, _("\
16971 Set the channel to use for dynamic printf"), _("\
16972 Show the channel to use for dynamic printf"), NULL,
16973                           update_dprintf_commands, NULL,
16974                           &setlist, &showlist);
16975
16976   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16977                            &disconnected_dprintf, _("\
16978 Set whether dprintf continues after GDB disconnects."), _("\
16979 Show whether dprintf continues after GDB disconnects."), _("\
16980 Use this to let dprintf commands continue to hit and produce output\n\
16981 even if GDB disconnects or detaches from the target."),
16982                            NULL,
16983                            NULL,
16984                            &setlist, &showlist);
16985
16986   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16987 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16988 (target agent only) This is useful for formatted output in user-defined commands."));
16989
16990   automatic_hardware_breakpoints = 1;
16991
16992   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16993   observer_attach_thread_exit (remove_threaded_breakpoints);
16994 }