Fix non-stop regressions caused by "breakpoints always-inserted off" changes
[platform/upstream/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 "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "exceptions.h"
55 #include "memattr.h"
56 #include "ada-lang.h"
57 #include "top.h"
58 #include "valprint.h"
59 #include "jit.h"
60 #include "xml-syscall.h"
61 #include "parser-defs.h"
62 #include "gdb_regex.h"
63 #include "probe.h"
64 #include "cli/cli-utils.h"
65 #include "continuations.h"
66 #include "stack.h"
67 #include "skip.h"
68 #include "ax-gdb.h"
69 #include "dummy-frame.h"
70
71 #include "format.h"
72
73 /* readline include files */
74 #include "readline/readline.h"
75 #include "readline/history.h"
76
77 /* readline defines this.  */
78 #undef savestring
79
80 #include "mi/mi-common.h"
81 #include "extension.h"
82
83 /* Enums for exception-handling support.  */
84 enum exception_event_kind
85 {
86   EX_EVENT_THROW,
87   EX_EVENT_RETHROW,
88   EX_EVENT_CATCH
89 };
90
91 /* Prototypes for local functions.  */
92
93 static void enable_delete_command (char *, int);
94
95 static void enable_once_command (char *, int);
96
97 static void enable_count_command (char *, int);
98
99 static void disable_command (char *, int);
100
101 static void enable_command (char *, int);
102
103 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
104                                                       void *),
105                                     void *);
106
107 static void ignore_command (char *, int);
108
109 static int breakpoint_re_set_one (void *);
110
111 static void breakpoint_re_set_default (struct breakpoint *);
112
113 static void create_sals_from_address_default (char **,
114                                               struct linespec_result *,
115                                               enum bptype, char *,
116                                               char **);
117
118 static void create_breakpoints_sal_default (struct gdbarch *,
119                                             struct linespec_result *,
120                                             char *, char *, enum bptype,
121                                             enum bpdisp, int, int,
122                                             int,
123                                             const struct breakpoint_ops *,
124                                             int, int, int, unsigned);
125
126 static void decode_linespec_default (struct breakpoint *, char **,
127                                      struct symtabs_and_lines *);
128
129 static void clear_command (char *, int);
130
131 static void catch_command (char *, int);
132
133 static int can_use_hardware_watchpoint (struct value *);
134
135 static void break_command_1 (char *, int, int);
136
137 static void mention (struct breakpoint *);
138
139 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
140                                                                enum bptype,
141                                                                const struct breakpoint_ops *);
142 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
143                                                        const struct symtab_and_line *);
144
145 /* This function is used in gdbtk sources and thus can not be made
146    static.  */
147 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
148                                        struct symtab_and_line,
149                                        enum bptype,
150                                        const struct breakpoint_ops *);
151
152 static struct breakpoint *
153   momentary_breakpoint_from_master (struct breakpoint *orig,
154                                     enum bptype type,
155                                     const struct breakpoint_ops *ops,
156                                     int loc_enabled);
157
158 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
159
160 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
161                                             CORE_ADDR bpaddr,
162                                             enum bptype bptype);
163
164 static void describe_other_breakpoints (struct gdbarch *,
165                                         struct program_space *, CORE_ADDR,
166                                         struct obj_section *, int);
167
168 static int watchpoint_locations_match (struct bp_location *loc1,
169                                        struct bp_location *loc2);
170
171 static int breakpoint_location_address_match (struct bp_location *bl,
172                                               struct address_space *aspace,
173                                               CORE_ADDR addr);
174
175 static void breakpoints_info (char *, int);
176
177 static void watchpoints_info (char *, int);
178
179 static int breakpoint_1 (char *, int, 
180                          int (*) (const struct breakpoint *));
181
182 static int breakpoint_cond_eval (void *);
183
184 static void cleanup_executing_breakpoints (void *);
185
186 static void commands_command (char *, int);
187
188 static void condition_command (char *, int);
189
190 typedef enum
191   {
192     mark_inserted,
193     mark_uninserted
194   }
195 insertion_state_t;
196
197 static int remove_breakpoint (struct bp_location *, insertion_state_t);
198 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
199
200 static enum print_stop_action print_bp_stop_message (bpstat bs);
201
202 static int watchpoint_check (void *);
203
204 static void maintenance_info_breakpoints (char *, int);
205
206 static int hw_breakpoint_used_count (void);
207
208 static int hw_watchpoint_use_count (struct breakpoint *);
209
210 static int hw_watchpoint_used_count_others (struct breakpoint *except,
211                                             enum bptype type,
212                                             int *other_type_used);
213
214 static void hbreak_command (char *, int);
215
216 static void thbreak_command (char *, int);
217
218 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
219                                     int count);
220
221 static void stop_command (char *arg, int from_tty);
222
223 static void stopin_command (char *arg, int from_tty);
224
225 static void stopat_command (char *arg, int from_tty);
226
227 static void tcatch_command (char *arg, int from_tty);
228
229 static void detach_single_step_breakpoints (void);
230
231 static int find_single_step_breakpoint (struct address_space *aspace,
232                                         CORE_ADDR pc);
233
234 static void free_bp_location (struct bp_location *loc);
235 static void incref_bp_location (struct bp_location *loc);
236 static void decref_bp_location (struct bp_location **loc);
237
238 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
239
240 /* update_global_location_list's modes of operation wrt to whether to
241    insert locations now.  */
242 enum ugll_insert_mode
243 {
244   /* Don't insert any breakpoint locations into the inferior, only
245      remove already-inserted locations that no longer should be
246      inserted.  Functions that delete a breakpoint or breakpoints
247      should specify this mode, so that deleting a breakpoint doesn't
248      have the side effect of inserting the locations of other
249      breakpoints that are marked not-inserted, but should_be_inserted
250      returns true on them.
251
252      This behavior is useful is situations close to tear-down -- e.g.,
253      after an exec, while the target still has execution, but
254      breakpoint shadows of the previous executable image should *NOT*
255      be restored to the new image; or before detaching, where the
256      target still has execution and wants to delete breakpoints from
257      GDB's lists, and all breakpoints had already been removed from
258      the inferior.  */
259   UGLL_DONT_INSERT,
260
261   /* May insert breakpoints iff breakpoints_should_be_inserted_now
262      claims breakpoints should be inserted now.  */
263   UGLL_MAY_INSERT,
264
265   /* Insert locations now, irrespective of
266      breakpoints_should_be_inserted_now.  E.g., say all threads are
267      stopped right now, and the user did "continue".  We need to
268      insert breakpoints _before_ resuming the target, but
269      UGLL_MAY_INSERT wouldn't insert them, because
270      breakpoints_should_be_inserted_now returns false at that point,
271      as no thread is running yet.  */
272   UGLL_INSERT
273 };
274
275 static void update_global_location_list (enum ugll_insert_mode);
276
277 static void update_global_location_list_nothrow (enum ugll_insert_mode);
278
279 static int is_hardware_watchpoint (const struct breakpoint *bpt);
280
281 static void insert_breakpoint_locations (void);
282
283 static int syscall_catchpoint_p (struct breakpoint *b);
284
285 static void tracepoints_info (char *, int);
286
287 static void delete_trace_command (char *, int);
288
289 static void enable_trace_command (char *, int);
290
291 static void disable_trace_command (char *, int);
292
293 static void trace_pass_command (char *, int);
294
295 static void set_tracepoint_count (int num);
296
297 static int is_masked_watchpoint (const struct breakpoint *b);
298
299 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
300
301 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
302    otherwise.  */
303
304 static int strace_marker_p (struct breakpoint *b);
305
306 /* The abstract base class all breakpoint_ops structures inherit
307    from.  */
308 struct breakpoint_ops base_breakpoint_ops;
309
310 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
311    that are implemented on top of software or hardware breakpoints
312    (user breakpoints, internal and momentary breakpoints, etc.).  */
313 static struct breakpoint_ops bkpt_base_breakpoint_ops;
314
315 /* Internal breakpoints class type.  */
316 static struct breakpoint_ops internal_breakpoint_ops;
317
318 /* Momentary breakpoints class type.  */
319 static struct breakpoint_ops momentary_breakpoint_ops;
320
321 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
322 static struct breakpoint_ops longjmp_breakpoint_ops;
323
324 /* The breakpoint_ops structure to be used in regular user created
325    breakpoints.  */
326 struct breakpoint_ops bkpt_breakpoint_ops;
327
328 /* Breakpoints set on probes.  */
329 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
330
331 /* Dynamic printf class type.  */
332 struct breakpoint_ops dprintf_breakpoint_ops;
333
334 /* One (or perhaps two) breakpoints used for software single
335    stepping.  */
336
337 static void *single_step_breakpoints[2];
338 static struct gdbarch *single_step_gdbarch[2];
339
340 /* The style in which to perform a dynamic printf.  This is a user
341    option because different output options have different tradeoffs;
342    if GDB does the printing, there is better error handling if there
343    is a problem with any of the arguments, but using an inferior
344    function lets you have special-purpose printers and sending of
345    output to the same place as compiled-in print functions.  */
346
347 static const char dprintf_style_gdb[] = "gdb";
348 static const char dprintf_style_call[] = "call";
349 static const char dprintf_style_agent[] = "agent";
350 static const char *const dprintf_style_enums[] = {
351   dprintf_style_gdb,
352   dprintf_style_call,
353   dprintf_style_agent,
354   NULL
355 };
356 static const char *dprintf_style = dprintf_style_gdb;
357
358 /* The function to use for dynamic printf if the preferred style is to
359    call into the inferior.  The value is simply a string that is
360    copied into the command, so it can be anything that GDB can
361    evaluate to a callable address, not necessarily a function name.  */
362
363 static char *dprintf_function = "";
364
365 /* The channel to use for dynamic printf if the preferred style is to
366    call into the inferior; if a nonempty string, it will be passed to
367    the call as the first argument, with the format string as the
368    second.  As with the dprintf function, this can be anything that
369    GDB knows how to evaluate, so in addition to common choices like
370    "stderr", this could be an app-specific expression like
371    "mystreams[curlogger]".  */
372
373 static char *dprintf_channel = "";
374
375 /* True if dprintf commands should continue to operate even if GDB
376    has disconnected.  */
377 static int disconnected_dprintf = 1;
378
379 /* A reference-counted struct command_line.  This lets multiple
380    breakpoints share a single command list.  */
381 struct counted_command_line
382 {
383   /* The reference count.  */
384   int refc;
385
386   /* The command list.  */
387   struct command_line *commands;
388 };
389
390 struct command_line *
391 breakpoint_commands (struct breakpoint *b)
392 {
393   return b->commands ? b->commands->commands : NULL;
394 }
395
396 /* Flag indicating that a command has proceeded the inferior past the
397    current breakpoint.  */
398
399 static int breakpoint_proceeded;
400
401 const char *
402 bpdisp_text (enum bpdisp disp)
403 {
404   /* NOTE: the following values are a part of MI protocol and
405      represent values of 'disp' field returned when inferior stops at
406      a breakpoint.  */
407   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
408
409   return bpdisps[(int) disp];
410 }
411
412 /* Prototypes for exported functions.  */
413 /* If FALSE, gdb will not use hardware support for watchpoints, even
414    if such is available.  */
415 static int can_use_hw_watchpoints;
416
417 static void
418 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
419                              struct cmd_list_element *c,
420                              const char *value)
421 {
422   fprintf_filtered (file,
423                     _("Debugger's willingness to use "
424                       "watchpoint hardware is %s.\n"),
425                     value);
426 }
427
428 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
429    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
430    for unrecognized breakpoint locations.
431    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
432 static enum auto_boolean pending_break_support;
433 static void
434 show_pending_break_support (struct ui_file *file, int from_tty,
435                             struct cmd_list_element *c,
436                             const char *value)
437 {
438   fprintf_filtered (file,
439                     _("Debugger's behavior regarding "
440                       "pending breakpoints is %s.\n"),
441                     value);
442 }
443
444 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
445    set with "break" but falling in read-only memory.
446    If 0, gdb will warn about such breakpoints, but won't automatically
447    use hardware breakpoints.  */
448 static int automatic_hardware_breakpoints;
449 static void
450 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
451                                      struct cmd_list_element *c,
452                                      const char *value)
453 {
454   fprintf_filtered (file,
455                     _("Automatic usage of hardware breakpoints is %s.\n"),
456                     value);
457 }
458
459 /* If on, GDB keeps breakpoints inserted even if the inferior is
460    stopped, and immediately inserts any new breakpoints as soon as
461    they're created.  If off (default), GDB keeps breakpoints off of
462    the target as long as possible.  That is, it delays inserting
463    breakpoints until the next resume, and removes them again when the
464    target fully stops.  This is a bit safer in case GDB crashes while
465    processing user input.  */
466 static int always_inserted_mode = 0;
467
468 static void
469 show_always_inserted_mode (struct ui_file *file, int from_tty,
470                      struct cmd_list_element *c, const char *value)
471 {
472   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
473                     value);
474 }
475
476 /* See breakpoint.h.  */
477
478 int
479 breakpoints_should_be_inserted_now (void)
480 {
481   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
482     {
483       /* If breakpoints are global, they should be inserted even if no
484          thread under gdb's control is running, or even if there are
485          no threads under GDB's control yet.  */
486       return 1;
487     }
488   else if (target_has_execution)
489     {
490       if (always_inserted_mode)
491         {
492           /* The user wants breakpoints inserted even if all threads
493              are stopped.  */
494           return 1;
495         }
496
497       if (threads_are_executing ())
498         return 1;
499     }
500   return 0;
501 }
502
503 static const char condition_evaluation_both[] = "host or target";
504
505 /* Modes for breakpoint condition evaluation.  */
506 static const char condition_evaluation_auto[] = "auto";
507 static const char condition_evaluation_host[] = "host";
508 static const char condition_evaluation_target[] = "target";
509 static const char *const condition_evaluation_enums[] = {
510   condition_evaluation_auto,
511   condition_evaluation_host,
512   condition_evaluation_target,
513   NULL
514 };
515
516 /* Global that holds the current mode for breakpoint condition evaluation.  */
517 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
518
519 /* Global that we use to display information to the user (gets its value from
520    condition_evaluation_mode_1.  */
521 static const char *condition_evaluation_mode = condition_evaluation_auto;
522
523 /* Translate a condition evaluation mode MODE into either "host"
524    or "target".  This is used mostly to translate from "auto" to the
525    real setting that is being used.  It returns the translated
526    evaluation mode.  */
527
528 static const char *
529 translate_condition_evaluation_mode (const char *mode)
530 {
531   if (mode == condition_evaluation_auto)
532     {
533       if (target_supports_evaluation_of_breakpoint_conditions ())
534         return condition_evaluation_target;
535       else
536         return condition_evaluation_host;
537     }
538   else
539     return mode;
540 }
541
542 /* Discovers what condition_evaluation_auto translates to.  */
543
544 static const char *
545 breakpoint_condition_evaluation_mode (void)
546 {
547   return translate_condition_evaluation_mode (condition_evaluation_mode);
548 }
549
550 /* Return true if GDB should evaluate breakpoint conditions or false
551    otherwise.  */
552
553 static int
554 gdb_evaluates_breakpoint_condition_p (void)
555 {
556   const char *mode = breakpoint_condition_evaluation_mode ();
557
558   return (mode == condition_evaluation_host);
559 }
560
561 void _initialize_breakpoint (void);
562
563 /* Are we executing breakpoint commands?  */
564 static int executing_breakpoint_commands;
565
566 /* Are overlay event breakpoints enabled? */
567 static int overlay_events_enabled;
568
569 /* See description in breakpoint.h. */
570 int target_exact_watchpoints = 0;
571
572 /* Walk the following statement or block through all breakpoints.
573    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
574    current breakpoint.  */
575
576 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
577
578 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
579         for (B = breakpoint_chain;      \
580              B ? (TMP=B->next, 1): 0;   \
581              B = TMP)
582
583 /* Similar iterator for the low-level breakpoints.  SAFE variant is
584    not provided so update_global_location_list must not be called
585    while executing the block of ALL_BP_LOCATIONS.  */
586
587 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
588         for (BP_TMP = bp_location;                                      \
589              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
590              BP_TMP++)
591
592 /* Iterates through locations with address ADDRESS for the currently selected
593    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
594    to where the loop should start from.
595    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
596    appropriate location to start with.  */
597
598 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
599         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
600              BP_LOCP_TMP = BP_LOCP_START;                               \
601              BP_LOCP_START                                              \
602              && (BP_LOCP_TMP < bp_location + bp_location_count          \
603              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
604              BP_LOCP_TMP++)
605
606 /* Iterator for tracepoints only.  */
607
608 #define ALL_TRACEPOINTS(B)  \
609   for (B = breakpoint_chain; B; B = B->next)  \
610     if (is_tracepoint (B))
611
612 /* Chains of all breakpoints defined.  */
613
614 struct breakpoint *breakpoint_chain;
615
616 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
617
618 static struct bp_location **bp_location;
619
620 /* Number of elements of BP_LOCATION.  */
621
622 static unsigned bp_location_count;
623
624 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
625    ADDRESS for the current elements of BP_LOCATION which get a valid
626    result from bp_location_has_shadow.  You can use it for roughly
627    limiting the subrange of BP_LOCATION to scan for shadow bytes for
628    an address you need to read.  */
629
630 static CORE_ADDR bp_location_placed_address_before_address_max;
631
632 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
633    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
634    BP_LOCATION which get a valid result from bp_location_has_shadow.
635    You can use it for roughly limiting the subrange of BP_LOCATION to
636    scan for shadow bytes for an address you need to read.  */
637
638 static CORE_ADDR bp_location_shadow_len_after_address_max;
639
640 /* The locations that no longer correspond to any breakpoint, unlinked
641    from bp_location array, but for which a hit may still be reported
642    by a target.  */
643 VEC(bp_location_p) *moribund_locations = NULL;
644
645 /* Number of last breakpoint made.  */
646
647 static int breakpoint_count;
648
649 /* The value of `breakpoint_count' before the last command that
650    created breakpoints.  If the last (break-like) command created more
651    than one breakpoint, then the difference between BREAKPOINT_COUNT
652    and PREV_BREAKPOINT_COUNT is more than one.  */
653 static int prev_breakpoint_count;
654
655 /* Number of last tracepoint made.  */
656
657 static int tracepoint_count;
658
659 static struct cmd_list_element *breakpoint_set_cmdlist;
660 static struct cmd_list_element *breakpoint_show_cmdlist;
661 struct cmd_list_element *save_cmdlist;
662
663 /* Return whether a breakpoint is an active enabled breakpoint.  */
664 static int
665 breakpoint_enabled (struct breakpoint *b)
666 {
667   return (b->enable_state == bp_enabled);
668 }
669
670 /* Set breakpoint count to NUM.  */
671
672 static void
673 set_breakpoint_count (int num)
674 {
675   prev_breakpoint_count = breakpoint_count;
676   breakpoint_count = num;
677   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
678 }
679
680 /* Used by `start_rbreak_breakpoints' below, to record the current
681    breakpoint count before "rbreak" creates any breakpoint.  */
682 static int rbreak_start_breakpoint_count;
683
684 /* Called at the start an "rbreak" command to record the first
685    breakpoint made.  */
686
687 void
688 start_rbreak_breakpoints (void)
689 {
690   rbreak_start_breakpoint_count = breakpoint_count;
691 }
692
693 /* Called at the end of an "rbreak" command to record the last
694    breakpoint made.  */
695
696 void
697 end_rbreak_breakpoints (void)
698 {
699   prev_breakpoint_count = rbreak_start_breakpoint_count;
700 }
701
702 /* Used in run_command to zero the hit count when a new run starts.  */
703
704 void
705 clear_breakpoint_hit_counts (void)
706 {
707   struct breakpoint *b;
708
709   ALL_BREAKPOINTS (b)
710     b->hit_count = 0;
711 }
712
713 /* Allocate a new counted_command_line with reference count of 1.
714    The new structure owns COMMANDS.  */
715
716 static struct counted_command_line *
717 alloc_counted_command_line (struct command_line *commands)
718 {
719   struct counted_command_line *result
720     = xmalloc (sizeof (struct counted_command_line));
721
722   result->refc = 1;
723   result->commands = commands;
724   return result;
725 }
726
727 /* Increment reference count.  This does nothing if CMD is NULL.  */
728
729 static void
730 incref_counted_command_line (struct counted_command_line *cmd)
731 {
732   if (cmd)
733     ++cmd->refc;
734 }
735
736 /* Decrement reference count.  If the reference count reaches 0,
737    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
738    nothing if *CMDP is NULL.  */
739
740 static void
741 decref_counted_command_line (struct counted_command_line **cmdp)
742 {
743   if (*cmdp)
744     {
745       if (--(*cmdp)->refc == 0)
746         {
747           free_command_lines (&(*cmdp)->commands);
748           xfree (*cmdp);
749         }
750       *cmdp = NULL;
751     }
752 }
753
754 /* A cleanup function that calls decref_counted_command_line.  */
755
756 static void
757 do_cleanup_counted_command_line (void *arg)
758 {
759   decref_counted_command_line (arg);
760 }
761
762 /* Create a cleanup that calls decref_counted_command_line on the
763    argument.  */
764
765 static struct cleanup *
766 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
767 {
768   return make_cleanup (do_cleanup_counted_command_line, cmdp);
769 }
770
771 \f
772 /* Return the breakpoint with the specified number, or NULL
773    if the number does not refer to an existing breakpoint.  */
774
775 struct breakpoint *
776 get_breakpoint (int num)
777 {
778   struct breakpoint *b;
779
780   ALL_BREAKPOINTS (b)
781     if (b->number == num)
782       return b;
783   
784   return NULL;
785 }
786
787 \f
788
789 /* Mark locations as "conditions have changed" in case the target supports
790    evaluating conditions on its side.  */
791
792 static void
793 mark_breakpoint_modified (struct breakpoint *b)
794 {
795   struct bp_location *loc;
796
797   /* This is only meaningful if the target is
798      evaluating conditions and if the user has
799      opted for condition evaluation on the target's
800      side.  */
801   if (gdb_evaluates_breakpoint_condition_p ()
802       || !target_supports_evaluation_of_breakpoint_conditions ())
803     return;
804
805   if (!is_breakpoint (b))
806     return;
807
808   for (loc = b->loc; loc; loc = loc->next)
809     loc->condition_changed = condition_modified;
810 }
811
812 /* Mark location as "conditions have changed" in case the target supports
813    evaluating conditions on its side.  */
814
815 static void
816 mark_breakpoint_location_modified (struct bp_location *loc)
817 {
818   /* This is only meaningful if the target is
819      evaluating conditions and if the user has
820      opted for condition evaluation on the target's
821      side.  */
822   if (gdb_evaluates_breakpoint_condition_p ()
823       || !target_supports_evaluation_of_breakpoint_conditions ())
824
825     return;
826
827   if (!is_breakpoint (loc->owner))
828     return;
829
830   loc->condition_changed = condition_modified;
831 }
832
833 /* Sets the condition-evaluation mode using the static global
834    condition_evaluation_mode.  */
835
836 static void
837 set_condition_evaluation_mode (char *args, int from_tty,
838                                struct cmd_list_element *c)
839 {
840   const char *old_mode, *new_mode;
841
842   if ((condition_evaluation_mode_1 == condition_evaluation_target)
843       && !target_supports_evaluation_of_breakpoint_conditions ())
844     {
845       condition_evaluation_mode_1 = condition_evaluation_mode;
846       warning (_("Target does not support breakpoint condition evaluation.\n"
847                  "Using host evaluation mode instead."));
848       return;
849     }
850
851   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
852   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
853
854   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
855      settings was "auto".  */
856   condition_evaluation_mode = condition_evaluation_mode_1;
857
858   /* Only update the mode if the user picked a different one.  */
859   if (new_mode != old_mode)
860     {
861       struct bp_location *loc, **loc_tmp;
862       /* If the user switched to a different evaluation mode, we
863          need to synch the changes with the target as follows:
864
865          "host" -> "target": Send all (valid) conditions to the target.
866          "target" -> "host": Remove all the conditions from the target.
867       */
868
869       if (new_mode == condition_evaluation_target)
870         {
871           /* Mark everything modified and synch conditions with the
872              target.  */
873           ALL_BP_LOCATIONS (loc, loc_tmp)
874             mark_breakpoint_location_modified (loc);
875         }
876       else
877         {
878           /* Manually mark non-duplicate locations to synch conditions
879              with the target.  We do this to remove all the conditions the
880              target knows about.  */
881           ALL_BP_LOCATIONS (loc, loc_tmp)
882             if (is_breakpoint (loc->owner) && loc->inserted)
883               loc->needs_update = 1;
884         }
885
886       /* Do the update.  */
887       update_global_location_list (UGLL_MAY_INSERT);
888     }
889
890   return;
891 }
892
893 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
894    what "auto" is translating to.  */
895
896 static void
897 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
898                                 struct cmd_list_element *c, const char *value)
899 {
900   if (condition_evaluation_mode == condition_evaluation_auto)
901     fprintf_filtered (file,
902                       _("Breakpoint condition evaluation "
903                         "mode is %s (currently %s).\n"),
904                       value,
905                       breakpoint_condition_evaluation_mode ());
906   else
907     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
908                       value);
909 }
910
911 /* A comparison function for bp_location AP and BP that is used by
912    bsearch.  This comparison function only cares about addresses, unlike
913    the more general bp_location_compare function.  */
914
915 static int
916 bp_location_compare_addrs (const void *ap, const void *bp)
917 {
918   struct bp_location *a = *(void **) ap;
919   struct bp_location *b = *(void **) bp;
920
921   if (a->address == b->address)
922     return 0;
923   else
924     return ((a->address > b->address) - (a->address < b->address));
925 }
926
927 /* Helper function to skip all bp_locations with addresses
928    less than ADDRESS.  It returns the first bp_location that
929    is greater than or equal to ADDRESS.  If none is found, just
930    return NULL.  */
931
932 static struct bp_location **
933 get_first_locp_gte_addr (CORE_ADDR address)
934 {
935   struct bp_location dummy_loc;
936   struct bp_location *dummy_locp = &dummy_loc;
937   struct bp_location **locp_found = NULL;
938
939   /* Initialize the dummy location's address field.  */
940   memset (&dummy_loc, 0, sizeof (struct bp_location));
941   dummy_loc.address = address;
942
943   /* Find a close match to the first location at ADDRESS.  */
944   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
945                         sizeof (struct bp_location **),
946                         bp_location_compare_addrs);
947
948   /* Nothing was found, nothing left to do.  */
949   if (locp_found == NULL)
950     return NULL;
951
952   /* We may have found a location that is at ADDRESS but is not the first in the
953      location's list.  Go backwards (if possible) and locate the first one.  */
954   while ((locp_found - 1) >= bp_location
955          && (*(locp_found - 1))->address == address)
956     locp_found--;
957
958   return locp_found;
959 }
960
961 void
962 set_breakpoint_condition (struct breakpoint *b, char *exp,
963                           int from_tty)
964 {
965   xfree (b->cond_string);
966   b->cond_string = NULL;
967
968   if (is_watchpoint (b))
969     {
970       struct watchpoint *w = (struct watchpoint *) b;
971
972       xfree (w->cond_exp);
973       w->cond_exp = NULL;
974     }
975   else
976     {
977       struct bp_location *loc;
978
979       for (loc = b->loc; loc; loc = loc->next)
980         {
981           xfree (loc->cond);
982           loc->cond = NULL;
983
984           /* No need to free the condition agent expression
985              bytecode (if we have one).  We will handle this
986              when we go through update_global_location_list.  */
987         }
988     }
989
990   if (*exp == 0)
991     {
992       if (from_tty)
993         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
994     }
995   else
996     {
997       const char *arg = exp;
998
999       /* I don't know if it matters whether this is the string the user
1000          typed in or the decompiled expression.  */
1001       b->cond_string = xstrdup (arg);
1002       b->condition_not_parsed = 0;
1003
1004       if (is_watchpoint (b))
1005         {
1006           struct watchpoint *w = (struct watchpoint *) b;
1007
1008           innermost_block = NULL;
1009           arg = exp;
1010           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1011           if (*arg)
1012             error (_("Junk at end of expression"));
1013           w->cond_exp_valid_block = innermost_block;
1014         }
1015       else
1016         {
1017           struct bp_location *loc;
1018
1019           for (loc = b->loc; loc; loc = loc->next)
1020             {
1021               arg = exp;
1022               loc->cond =
1023                 parse_exp_1 (&arg, loc->address,
1024                              block_for_pc (loc->address), 0);
1025               if (*arg)
1026                 error (_("Junk at end of expression"));
1027             }
1028         }
1029     }
1030   mark_breakpoint_modified (b);
1031
1032   observer_notify_breakpoint_modified (b);
1033 }
1034
1035 /* Completion for the "condition" command.  */
1036
1037 static VEC (char_ptr) *
1038 condition_completer (struct cmd_list_element *cmd,
1039                      const char *text, const char *word)
1040 {
1041   const char *space;
1042
1043   text = skip_spaces_const (text);
1044   space = skip_to_space_const (text);
1045   if (*space == '\0')
1046     {
1047       int len;
1048       struct breakpoint *b;
1049       VEC (char_ptr) *result = NULL;
1050
1051       if (text[0] == '$')
1052         {
1053           /* We don't support completion of history indices.  */
1054           if (isdigit (text[1]))
1055             return NULL;
1056           return complete_internalvar (&text[1]);
1057         }
1058
1059       /* We're completing the breakpoint number.  */
1060       len = strlen (text);
1061
1062       ALL_BREAKPOINTS (b)
1063         {
1064           char number[50];
1065
1066           xsnprintf (number, sizeof (number), "%d", b->number);
1067
1068           if (strncmp (number, text, len) == 0)
1069             VEC_safe_push (char_ptr, result, xstrdup (number));
1070         }
1071
1072       return result;
1073     }
1074
1075   /* We're completing the expression part.  */
1076   text = skip_spaces_const (space);
1077   return expression_completer (cmd, text, word);
1078 }
1079
1080 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1081
1082 static void
1083 condition_command (char *arg, int from_tty)
1084 {
1085   struct breakpoint *b;
1086   char *p;
1087   int bnum;
1088
1089   if (arg == 0)
1090     error_no_arg (_("breakpoint number"));
1091
1092   p = arg;
1093   bnum = get_number (&p);
1094   if (bnum == 0)
1095     error (_("Bad breakpoint argument: '%s'"), arg);
1096
1097   ALL_BREAKPOINTS (b)
1098     if (b->number == bnum)
1099       {
1100         /* Check if this breakpoint has a "stop" method implemented in an
1101            extension language.  This method and conditions entered into GDB
1102            from the CLI are mutually exclusive.  */
1103         const struct extension_language_defn *extlang
1104           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1105
1106         if (extlang != NULL)
1107           {
1108             error (_("Only one stop condition allowed.  There is currently"
1109                      " a %s stop condition defined for this breakpoint."),
1110                    ext_lang_capitalized_name (extlang));
1111           }
1112         set_breakpoint_condition (b, p, from_tty);
1113
1114         if (is_breakpoint (b))
1115           update_global_location_list (UGLL_MAY_INSERT);
1116
1117         return;
1118       }
1119
1120   error (_("No breakpoint number %d."), bnum);
1121 }
1122
1123 /* Check that COMMAND do not contain commands that are suitable
1124    only for tracepoints and not suitable for ordinary breakpoints.
1125    Throw if any such commands is found.  */
1126
1127 static void
1128 check_no_tracepoint_commands (struct command_line *commands)
1129 {
1130   struct command_line *c;
1131
1132   for (c = commands; c; c = c->next)
1133     {
1134       int i;
1135
1136       if (c->control_type == while_stepping_control)
1137         error (_("The 'while-stepping' command can "
1138                  "only be used for tracepoints"));
1139
1140       for (i = 0; i < c->body_count; ++i)
1141         check_no_tracepoint_commands ((c->body_list)[i]);
1142
1143       /* Not that command parsing removes leading whitespace and comment
1144          lines and also empty lines.  So, we only need to check for
1145          command directly.  */
1146       if (strstr (c->line, "collect ") == c->line)
1147         error (_("The 'collect' command can only be used for tracepoints"));
1148
1149       if (strstr (c->line, "teval ") == c->line)
1150         error (_("The 'teval' command can only be used for tracepoints"));
1151     }
1152 }
1153
1154 /* Encapsulate tests for different types of tracepoints.  */
1155
1156 static int
1157 is_tracepoint_type (enum bptype type)
1158 {
1159   return (type == bp_tracepoint
1160           || type == bp_fast_tracepoint
1161           || type == bp_static_tracepoint);
1162 }
1163
1164 int
1165 is_tracepoint (const struct breakpoint *b)
1166 {
1167   return is_tracepoint_type (b->type);
1168 }
1169
1170 /* A helper function that validates that COMMANDS are valid for a
1171    breakpoint.  This function will throw an exception if a problem is
1172    found.  */
1173
1174 static void
1175 validate_commands_for_breakpoint (struct breakpoint *b,
1176                                   struct command_line *commands)
1177 {
1178   if (is_tracepoint (b))
1179     {
1180       struct tracepoint *t = (struct tracepoint *) b;
1181       struct command_line *c;
1182       struct command_line *while_stepping = 0;
1183
1184       /* Reset the while-stepping step count.  The previous commands
1185          might have included a while-stepping action, while the new
1186          ones might not.  */
1187       t->step_count = 0;
1188
1189       /* We need to verify that each top-level element of commands is
1190          valid for tracepoints, that there's at most one
1191          while-stepping element, and that the while-stepping's body
1192          has valid tracing commands excluding nested while-stepping.
1193          We also need to validate the tracepoint action line in the
1194          context of the tracepoint --- validate_actionline actually
1195          has side effects, like setting the tracepoint's
1196          while-stepping STEP_COUNT, in addition to checking if the
1197          collect/teval actions parse and make sense in the
1198          tracepoint's context.  */
1199       for (c = commands; c; c = c->next)
1200         {
1201           if (c->control_type == while_stepping_control)
1202             {
1203               if (b->type == bp_fast_tracepoint)
1204                 error (_("The 'while-stepping' command "
1205                          "cannot be used for fast tracepoint"));
1206               else if (b->type == bp_static_tracepoint)
1207                 error (_("The 'while-stepping' command "
1208                          "cannot be used for static tracepoint"));
1209
1210               if (while_stepping)
1211                 error (_("The 'while-stepping' command "
1212                          "can be used only once"));
1213               else
1214                 while_stepping = c;
1215             }
1216
1217           validate_actionline (c->line, b);
1218         }
1219       if (while_stepping)
1220         {
1221           struct command_line *c2;
1222
1223           gdb_assert (while_stepping->body_count == 1);
1224           c2 = while_stepping->body_list[0];
1225           for (; c2; c2 = c2->next)
1226             {
1227               if (c2->control_type == while_stepping_control)
1228                 error (_("The 'while-stepping' command cannot be nested"));
1229             }
1230         }
1231     }
1232   else
1233     {
1234       check_no_tracepoint_commands (commands);
1235     }
1236 }
1237
1238 /* Return a vector of all the static tracepoints set at ADDR.  The
1239    caller is responsible for releasing the vector.  */
1240
1241 VEC(breakpoint_p) *
1242 static_tracepoints_here (CORE_ADDR addr)
1243 {
1244   struct breakpoint *b;
1245   VEC(breakpoint_p) *found = 0;
1246   struct bp_location *loc;
1247
1248   ALL_BREAKPOINTS (b)
1249     if (b->type == bp_static_tracepoint)
1250       {
1251         for (loc = b->loc; loc; loc = loc->next)
1252           if (loc->address == addr)
1253             VEC_safe_push(breakpoint_p, found, b);
1254       }
1255
1256   return found;
1257 }
1258
1259 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1260    validate that only allowed commands are included.  */
1261
1262 void
1263 breakpoint_set_commands (struct breakpoint *b, 
1264                          struct command_line *commands)
1265 {
1266   validate_commands_for_breakpoint (b, commands);
1267
1268   decref_counted_command_line (&b->commands);
1269   b->commands = alloc_counted_command_line (commands);
1270   observer_notify_breakpoint_modified (b);
1271 }
1272
1273 /* Set the internal `silent' flag on the breakpoint.  Note that this
1274    is not the same as the "silent" that may appear in the breakpoint's
1275    commands.  */
1276
1277 void
1278 breakpoint_set_silent (struct breakpoint *b, int silent)
1279 {
1280   int old_silent = b->silent;
1281
1282   b->silent = silent;
1283   if (old_silent != silent)
1284     observer_notify_breakpoint_modified (b);
1285 }
1286
1287 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1288    breakpoint work for any thread.  */
1289
1290 void
1291 breakpoint_set_thread (struct breakpoint *b, int thread)
1292 {
1293   int old_thread = b->thread;
1294
1295   b->thread = thread;
1296   if (old_thread != thread)
1297     observer_notify_breakpoint_modified (b);
1298 }
1299
1300 /* Set the task for this breakpoint.  If TASK is 0, make the
1301    breakpoint work for any task.  */
1302
1303 void
1304 breakpoint_set_task (struct breakpoint *b, int task)
1305 {
1306   int old_task = b->task;
1307
1308   b->task = task;
1309   if (old_task != task)
1310     observer_notify_breakpoint_modified (b);
1311 }
1312
1313 void
1314 check_tracepoint_command (char *line, void *closure)
1315 {
1316   struct breakpoint *b = closure;
1317
1318   validate_actionline (line, b);
1319 }
1320
1321 /* A structure used to pass information through
1322    map_breakpoint_numbers.  */
1323
1324 struct commands_info
1325 {
1326   /* True if the command was typed at a tty.  */
1327   int from_tty;
1328
1329   /* The breakpoint range spec.  */
1330   char *arg;
1331
1332   /* Non-NULL if the body of the commands are being read from this
1333      already-parsed command.  */
1334   struct command_line *control;
1335
1336   /* The command lines read from the user, or NULL if they have not
1337      yet been read.  */
1338   struct counted_command_line *cmd;
1339 };
1340
1341 /* A callback for map_breakpoint_numbers that sets the commands for
1342    commands_command.  */
1343
1344 static void
1345 do_map_commands_command (struct breakpoint *b, void *data)
1346 {
1347   struct commands_info *info = data;
1348
1349   if (info->cmd == NULL)
1350     {
1351       struct command_line *l;
1352
1353       if (info->control != NULL)
1354         l = copy_command_lines (info->control->body_list[0]);
1355       else
1356         {
1357           struct cleanup *old_chain;
1358           char *str;
1359
1360           str = xstrprintf (_("Type commands for breakpoint(s) "
1361                               "%s, one per line."),
1362                             info->arg);
1363
1364           old_chain = make_cleanup (xfree, str);
1365
1366           l = read_command_lines (str,
1367                                   info->from_tty, 1,
1368                                   (is_tracepoint (b)
1369                                    ? check_tracepoint_command : 0),
1370                                   b);
1371
1372           do_cleanups (old_chain);
1373         }
1374
1375       info->cmd = alloc_counted_command_line (l);
1376     }
1377
1378   /* If a breakpoint was on the list more than once, we don't need to
1379      do anything.  */
1380   if (b->commands != info->cmd)
1381     {
1382       validate_commands_for_breakpoint (b, info->cmd->commands);
1383       incref_counted_command_line (info->cmd);
1384       decref_counted_command_line (&b->commands);
1385       b->commands = info->cmd;
1386       observer_notify_breakpoint_modified (b);
1387     }
1388 }
1389
1390 static void
1391 commands_command_1 (char *arg, int from_tty, 
1392                     struct command_line *control)
1393 {
1394   struct cleanup *cleanups;
1395   struct commands_info info;
1396
1397   info.from_tty = from_tty;
1398   info.control = control;
1399   info.cmd = NULL;
1400   /* If we read command lines from the user, then `info' will hold an
1401      extra reference to the commands that we must clean up.  */
1402   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1403
1404   if (arg == NULL || !*arg)
1405     {
1406       if (breakpoint_count - prev_breakpoint_count > 1)
1407         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1408                           breakpoint_count);
1409       else if (breakpoint_count > 0)
1410         arg = xstrprintf ("%d", breakpoint_count);
1411       else
1412         {
1413           /* So that we don't try to free the incoming non-NULL
1414              argument in the cleanup below.  Mapping breakpoint
1415              numbers will fail in this case.  */
1416           arg = NULL;
1417         }
1418     }
1419   else
1420     /* The command loop has some static state, so we need to preserve
1421        our argument.  */
1422     arg = xstrdup (arg);
1423
1424   if (arg != NULL)
1425     make_cleanup (xfree, arg);
1426
1427   info.arg = arg;
1428
1429   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1430
1431   if (info.cmd == NULL)
1432     error (_("No breakpoints specified."));
1433
1434   do_cleanups (cleanups);
1435 }
1436
1437 static void
1438 commands_command (char *arg, int from_tty)
1439 {
1440   commands_command_1 (arg, from_tty, NULL);
1441 }
1442
1443 /* Like commands_command, but instead of reading the commands from
1444    input stream, takes them from an already parsed command structure.
1445
1446    This is used by cli-script.c to DTRT with breakpoint commands
1447    that are part of if and while bodies.  */
1448 enum command_control_type
1449 commands_from_control_command (char *arg, struct command_line *cmd)
1450 {
1451   commands_command_1 (arg, 0, cmd);
1452   return simple_control;
1453 }
1454
1455 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1456
1457 static int
1458 bp_location_has_shadow (struct bp_location *bl)
1459 {
1460   if (bl->loc_type != bp_loc_software_breakpoint)
1461     return 0;
1462   if (!bl->inserted)
1463     return 0;
1464   if (bl->target_info.shadow_len == 0)
1465     /* BL isn't valid, or doesn't shadow memory.  */
1466     return 0;
1467   return 1;
1468 }
1469
1470 /* Update BUF, which is LEN bytes read from the target address
1471    MEMADDR, by replacing a memory breakpoint with its shadowed
1472    contents.
1473
1474    If READBUF is not NULL, this buffer must not overlap with the of
1475    the breakpoint location's shadow_contents buffer.  Otherwise, a
1476    failed assertion internal error will be raised.  */
1477
1478 static void
1479 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1480                             const gdb_byte *writebuf_org,
1481                             ULONGEST memaddr, LONGEST len,
1482                             struct bp_target_info *target_info,
1483                             struct gdbarch *gdbarch)
1484 {
1485   /* Now do full processing of the found relevant range of elements.  */
1486   CORE_ADDR bp_addr = 0;
1487   int bp_size = 0;
1488   int bptoffset = 0;
1489
1490   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1491                                  current_program_space->aspace, 0))
1492     {
1493       /* The breakpoint is inserted in a different address space.  */
1494       return;
1495     }
1496
1497   /* Addresses and length of the part of the breakpoint that
1498      we need to copy.  */
1499   bp_addr = target_info->placed_address;
1500   bp_size = target_info->shadow_len;
1501
1502   if (bp_addr + bp_size <= memaddr)
1503     {
1504       /* The breakpoint is entirely before the chunk of memory we are
1505          reading.  */
1506       return;
1507     }
1508
1509   if (bp_addr >= memaddr + len)
1510     {
1511       /* The breakpoint is entirely after the chunk of memory we are
1512          reading.  */
1513       return;
1514     }
1515
1516   /* Offset within shadow_contents.  */
1517   if (bp_addr < memaddr)
1518     {
1519       /* Only copy the second part of the breakpoint.  */
1520       bp_size -= memaddr - bp_addr;
1521       bptoffset = memaddr - bp_addr;
1522       bp_addr = memaddr;
1523     }
1524
1525   if (bp_addr + bp_size > memaddr + len)
1526     {
1527       /* Only copy the first part of the breakpoint.  */
1528       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1529     }
1530
1531   if (readbuf != NULL)
1532     {
1533       /* Verify that the readbuf buffer does not overlap with the
1534          shadow_contents buffer.  */
1535       gdb_assert (target_info->shadow_contents >= readbuf + len
1536                   || readbuf >= (target_info->shadow_contents
1537                                  + target_info->shadow_len));
1538
1539       /* Update the read buffer with this inserted breakpoint's
1540          shadow.  */
1541       memcpy (readbuf + bp_addr - memaddr,
1542               target_info->shadow_contents + bptoffset, bp_size);
1543     }
1544   else
1545     {
1546       const unsigned char *bp;
1547       CORE_ADDR placed_address = target_info->placed_address;
1548       int placed_size = target_info->placed_size;
1549
1550       /* Update the shadow with what we want to write to memory.  */
1551       memcpy (target_info->shadow_contents + bptoffset,
1552               writebuf_org + bp_addr - memaddr, bp_size);
1553
1554       /* Determine appropriate breakpoint contents and size for this
1555          address.  */
1556       bp = gdbarch_breakpoint_from_pc (gdbarch, &placed_address, &placed_size);
1557
1558       /* Update the final write buffer with this inserted
1559          breakpoint's INSN.  */
1560       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1561     }
1562 }
1563
1564 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1565    by replacing any memory breakpoints with their shadowed contents.
1566
1567    If READBUF is not NULL, this buffer must not overlap with any of
1568    the breakpoint location's shadow_contents buffers.  Otherwise,
1569    a failed assertion internal error will be raised.
1570
1571    The range of shadowed area by each bp_location is:
1572      bl->address - bp_location_placed_address_before_address_max
1573      up to bl->address + bp_location_shadow_len_after_address_max
1574    The range we were requested to resolve shadows for is:
1575      memaddr ... memaddr + len
1576    Thus the safe cutoff boundaries for performance optimization are
1577      memaddr + len <= (bl->address
1578                        - bp_location_placed_address_before_address_max)
1579    and:
1580      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1581
1582 void
1583 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1584                         const gdb_byte *writebuf_org,
1585                         ULONGEST memaddr, LONGEST len)
1586 {
1587   /* Left boundary, right boundary and median element of our binary
1588      search.  */
1589   unsigned bc_l, bc_r, bc;
1590   size_t i;
1591
1592   /* Find BC_L which is a leftmost element which may affect BUF
1593      content.  It is safe to report lower value but a failure to
1594      report higher one.  */
1595
1596   bc_l = 0;
1597   bc_r = bp_location_count;
1598   while (bc_l + 1 < bc_r)
1599     {
1600       struct bp_location *bl;
1601
1602       bc = (bc_l + bc_r) / 2;
1603       bl = bp_location[bc];
1604
1605       /* Check first BL->ADDRESS will not overflow due to the added
1606          constant.  Then advance the left boundary only if we are sure
1607          the BC element can in no way affect the BUF content (MEMADDR
1608          to MEMADDR + LEN range).
1609
1610          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1611          offset so that we cannot miss a breakpoint with its shadow
1612          range tail still reaching MEMADDR.  */
1613
1614       if ((bl->address + bp_location_shadow_len_after_address_max
1615            >= bl->address)
1616           && (bl->address + bp_location_shadow_len_after_address_max
1617               <= memaddr))
1618         bc_l = bc;
1619       else
1620         bc_r = bc;
1621     }
1622
1623   /* Due to the binary search above, we need to make sure we pick the
1624      first location that's at BC_L's address.  E.g., if there are
1625      multiple locations at the same address, BC_L may end up pointing
1626      at a duplicate location, and miss the "master"/"inserted"
1627      location.  Say, given locations L1, L2 and L3 at addresses A and
1628      B:
1629
1630       L1@A, L2@A, L3@B, ...
1631
1632      BC_L could end up pointing at location L2, while the "master"
1633      location could be L1.  Since the `loc->inserted' flag is only set
1634      on "master" locations, we'd forget to restore the shadow of L1
1635      and L2.  */
1636   while (bc_l > 0
1637          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1638     bc_l--;
1639
1640   /* Now do full processing of the found relevant range of elements.  */
1641
1642   for (bc = bc_l; bc < bp_location_count; bc++)
1643   {
1644     struct bp_location *bl = bp_location[bc];
1645     CORE_ADDR bp_addr = 0;
1646     int bp_size = 0;
1647     int bptoffset = 0;
1648
1649     /* bp_location array has BL->OWNER always non-NULL.  */
1650     if (bl->owner->type == bp_none)
1651       warning (_("reading through apparently deleted breakpoint #%d?"),
1652                bl->owner->number);
1653
1654     /* Performance optimization: any further element can no longer affect BUF
1655        content.  */
1656
1657     if (bl->address >= bp_location_placed_address_before_address_max
1658         && memaddr + len <= (bl->address
1659                              - bp_location_placed_address_before_address_max))
1660       break;
1661
1662     if (!bp_location_has_shadow (bl))
1663       continue;
1664
1665     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1666                                 memaddr, len, &bl->target_info, bl->gdbarch);
1667   }
1668
1669   /* Now process single-step breakpoints.  These are not found in the
1670      bp_location array.  */
1671   for (i = 0; i < 2; i++)
1672     {
1673       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
1674
1675       if (bp_tgt != NULL)
1676         {
1677           struct gdbarch *gdbarch = single_step_gdbarch[i];
1678
1679           one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1680                                       memaddr, len, bp_tgt, gdbarch);
1681         }
1682     }
1683 }
1684
1685 \f
1686
1687 /* Return true if BPT is either a software breakpoint or a hardware
1688    breakpoint.  */
1689
1690 int
1691 is_breakpoint (const struct breakpoint *bpt)
1692 {
1693   return (bpt->type == bp_breakpoint
1694           || bpt->type == bp_hardware_breakpoint
1695           || bpt->type == bp_dprintf);
1696 }
1697
1698 /* Return true if BPT is of any hardware watchpoint kind.  */
1699
1700 static int
1701 is_hardware_watchpoint (const struct breakpoint *bpt)
1702 {
1703   return (bpt->type == bp_hardware_watchpoint
1704           || bpt->type == bp_read_watchpoint
1705           || bpt->type == bp_access_watchpoint);
1706 }
1707
1708 /* Return true if BPT is of any watchpoint kind, hardware or
1709    software.  */
1710
1711 int
1712 is_watchpoint (const struct breakpoint *bpt)
1713 {
1714   return (is_hardware_watchpoint (bpt)
1715           || bpt->type == bp_watchpoint);
1716 }
1717
1718 /* Returns true if the current thread and its running state are safe
1719    to evaluate or update watchpoint B.  Watchpoints on local
1720    expressions need to be evaluated in the context of the thread that
1721    was current when the watchpoint was created, and, that thread needs
1722    to be stopped to be able to select the correct frame context.
1723    Watchpoints on global expressions can be evaluated on any thread,
1724    and in any state.  It is presently left to the target allowing
1725    memory accesses when threads are running.  */
1726
1727 static int
1728 watchpoint_in_thread_scope (struct watchpoint *b)
1729 {
1730   return (b->base.pspace == current_program_space
1731           && (ptid_equal (b->watchpoint_thread, null_ptid)
1732               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1733                   && !is_executing (inferior_ptid))));
1734 }
1735
1736 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1737    associated bp_watchpoint_scope breakpoint.  */
1738
1739 static void
1740 watchpoint_del_at_next_stop (struct watchpoint *w)
1741 {
1742   struct breakpoint *b = &w->base;
1743
1744   if (b->related_breakpoint != b)
1745     {
1746       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1747       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1748       b->related_breakpoint->disposition = disp_del_at_next_stop;
1749       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1750       b->related_breakpoint = b;
1751     }
1752   b->disposition = disp_del_at_next_stop;
1753 }
1754
1755 /* Extract a bitfield value from value VAL using the bit parameters contained in
1756    watchpoint W.  */
1757
1758 static struct value *
1759 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1760 {
1761   struct value *bit_val;
1762
1763   if (val == NULL)
1764     return NULL;
1765
1766   bit_val = allocate_value (value_type (val));
1767
1768   unpack_value_bitfield (bit_val,
1769                          w->val_bitpos,
1770                          w->val_bitsize,
1771                          value_contents_for_printing (val),
1772                          value_offset (val),
1773                          val);
1774
1775   return bit_val;
1776 }
1777
1778 /* Assuming that B is a watchpoint:
1779    - Reparse watchpoint expression, if REPARSE is non-zero
1780    - Evaluate expression and store the result in B->val
1781    - Evaluate the condition if there is one, and store the result
1782      in b->loc->cond.
1783    - Update the list of values that must be watched in B->loc.
1784
1785    If the watchpoint disposition is disp_del_at_next_stop, then do
1786    nothing.  If this is local watchpoint that is out of scope, delete
1787    it.
1788
1789    Even with `set breakpoint always-inserted on' the watchpoints are
1790    removed + inserted on each stop here.  Normal breakpoints must
1791    never be removed because they might be missed by a running thread
1792    when debugging in non-stop mode.  On the other hand, hardware
1793    watchpoints (is_hardware_watchpoint; processed here) are specific
1794    to each LWP since they are stored in each LWP's hardware debug
1795    registers.  Therefore, such LWP must be stopped first in order to
1796    be able to modify its hardware watchpoints.
1797
1798    Hardware watchpoints must be reset exactly once after being
1799    presented to the user.  It cannot be done sooner, because it would
1800    reset the data used to present the watchpoint hit to the user.  And
1801    it must not be done later because it could display the same single
1802    watchpoint hit during multiple GDB stops.  Note that the latter is
1803    relevant only to the hardware watchpoint types bp_read_watchpoint
1804    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1805    not user-visible - its hit is suppressed if the memory content has
1806    not changed.
1807
1808    The following constraints influence the location where we can reset
1809    hardware watchpoints:
1810
1811    * target_stopped_by_watchpoint and target_stopped_data_address are
1812      called several times when GDB stops.
1813
1814    [linux] 
1815    * Multiple hardware watchpoints can be hit at the same time,
1816      causing GDB to stop.  GDB only presents one hardware watchpoint
1817      hit at a time as the reason for stopping, and all the other hits
1818      are presented later, one after the other, each time the user
1819      requests the execution to be resumed.  Execution is not resumed
1820      for the threads still having pending hit event stored in
1821      LWP_INFO->STATUS.  While the watchpoint is already removed from
1822      the inferior on the first stop the thread hit event is kept being
1823      reported from its cached value by linux_nat_stopped_data_address
1824      until the real thread resume happens after the watchpoint gets
1825      presented and thus its LWP_INFO->STATUS gets reset.
1826
1827    Therefore the hardware watchpoint hit can get safely reset on the
1828    watchpoint removal from inferior.  */
1829
1830 static void
1831 update_watchpoint (struct watchpoint *b, int reparse)
1832 {
1833   int within_current_scope;
1834   struct frame_id saved_frame_id;
1835   int frame_saved;
1836
1837   /* If this is a local watchpoint, we only want to check if the
1838      watchpoint frame is in scope if the current thread is the thread
1839      that was used to create the watchpoint.  */
1840   if (!watchpoint_in_thread_scope (b))
1841     return;
1842
1843   if (b->base.disposition == disp_del_at_next_stop)
1844     return;
1845  
1846   frame_saved = 0;
1847
1848   /* Determine if the watchpoint is within scope.  */
1849   if (b->exp_valid_block == NULL)
1850     within_current_scope = 1;
1851   else
1852     {
1853       struct frame_info *fi = get_current_frame ();
1854       struct gdbarch *frame_arch = get_frame_arch (fi);
1855       CORE_ADDR frame_pc = get_frame_pc (fi);
1856
1857       /* If we're in a function epilogue, unwinding may not work
1858          properly, so do not attempt to recreate locations at this
1859          point.  See similar comments in watchpoint_check.  */
1860       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1861         return;
1862
1863       /* Save the current frame's ID so we can restore it after
1864          evaluating the watchpoint expression on its own frame.  */
1865       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1866          took a frame parameter, so that we didn't have to change the
1867          selected frame.  */
1868       frame_saved = 1;
1869       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1870
1871       fi = frame_find_by_id (b->watchpoint_frame);
1872       within_current_scope = (fi != NULL);
1873       if (within_current_scope)
1874         select_frame (fi);
1875     }
1876
1877   /* We don't free locations.  They are stored in the bp_location array
1878      and update_global_location_list will eventually delete them and
1879      remove breakpoints if needed.  */
1880   b->base.loc = NULL;
1881
1882   if (within_current_scope && reparse)
1883     {
1884       const char *s;
1885
1886       if (b->exp)
1887         {
1888           xfree (b->exp);
1889           b->exp = NULL;
1890         }
1891       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1892       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1893       /* If the meaning of expression itself changed, the old value is
1894          no longer relevant.  We don't want to report a watchpoint hit
1895          to the user when the old value and the new value may actually
1896          be completely different objects.  */
1897       value_free (b->val);
1898       b->val = NULL;
1899       b->val_valid = 0;
1900
1901       /* Note that unlike with breakpoints, the watchpoint's condition
1902          expression is stored in the breakpoint object, not in the
1903          locations (re)created below.  */
1904       if (b->base.cond_string != NULL)
1905         {
1906           if (b->cond_exp != NULL)
1907             {
1908               xfree (b->cond_exp);
1909               b->cond_exp = NULL;
1910             }
1911
1912           s = b->base.cond_string;
1913           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1914         }
1915     }
1916
1917   /* If we failed to parse the expression, for example because
1918      it refers to a global variable in a not-yet-loaded shared library,
1919      don't try to insert watchpoint.  We don't automatically delete
1920      such watchpoint, though, since failure to parse expression
1921      is different from out-of-scope watchpoint.  */
1922   if (!target_has_execution)
1923     {
1924       /* Without execution, memory can't change.  No use to try and
1925          set watchpoint locations.  The watchpoint will be reset when
1926          the target gains execution, through breakpoint_re_set.  */
1927       if (!can_use_hw_watchpoints)
1928         {
1929           if (b->base.ops->works_in_software_mode (&b->base))
1930             b->base.type = bp_watchpoint;
1931           else
1932             error (_("Can't set read/access watchpoint when "
1933                      "hardware watchpoints are disabled."));
1934         }
1935     }
1936   else if (within_current_scope && b->exp)
1937     {
1938       int pc = 0;
1939       struct value *val_chain, *v, *result, *next;
1940       struct program_space *frame_pspace;
1941
1942       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1943
1944       /* Avoid setting b->val if it's already set.  The meaning of
1945          b->val is 'the last value' user saw, and we should update
1946          it only if we reported that last value to user.  As it
1947          happens, the code that reports it updates b->val directly.
1948          We don't keep track of the memory value for masked
1949          watchpoints.  */
1950       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1951         {
1952           if (b->val_bitsize != 0)
1953             {
1954               v = extract_bitfield_from_watchpoint_value (b, v);
1955               if (v != NULL)
1956                 release_value (v);
1957             }
1958           b->val = v;
1959           b->val_valid = 1;
1960         }
1961
1962       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1963
1964       /* Look at each value on the value chain.  */
1965       for (v = val_chain; v; v = value_next (v))
1966         {
1967           /* If it's a memory location, and GDB actually needed
1968              its contents to evaluate the expression, then we
1969              must watch it.  If the first value returned is
1970              still lazy, that means an error occurred reading it;
1971              watch it anyway in case it becomes readable.  */
1972           if (VALUE_LVAL (v) == lval_memory
1973               && (v == val_chain || ! value_lazy (v)))
1974             {
1975               struct type *vtype = check_typedef (value_type (v));
1976
1977               /* We only watch structs and arrays if user asked
1978                  for it explicitly, never if they just happen to
1979                  appear in the middle of some value chain.  */
1980               if (v == result
1981                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1982                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1983                 {
1984                   CORE_ADDR addr;
1985                   int type;
1986                   struct bp_location *loc, **tmp;
1987                   int bitpos = 0, bitsize = 0;
1988
1989                   if (value_bitsize (v) != 0)
1990                     {
1991                       /* Extract the bit parameters out from the bitfield
1992                          sub-expression.  */
1993                       bitpos = value_bitpos (v);
1994                       bitsize = value_bitsize (v);
1995                     }
1996                   else if (v == result && b->val_bitsize != 0)
1997                     {
1998                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1999                         lvalue whose bit parameters are saved in the fields
2000                         VAL_BITPOS and VAL_BITSIZE.  */
2001                       bitpos = b->val_bitpos;
2002                       bitsize = b->val_bitsize;
2003                     }
2004
2005                   addr = value_address (v);
2006                   if (bitsize != 0)
2007                     {
2008                       /* Skip the bytes that don't contain the bitfield.  */
2009                       addr += bitpos / 8;
2010                     }
2011
2012                   type = hw_write;
2013                   if (b->base.type == bp_read_watchpoint)
2014                     type = hw_read;
2015                   else if (b->base.type == bp_access_watchpoint)
2016                     type = hw_access;
2017
2018                   loc = allocate_bp_location (&b->base);
2019                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2020                     ;
2021                   *tmp = loc;
2022                   loc->gdbarch = get_type_arch (value_type (v));
2023
2024                   loc->pspace = frame_pspace;
2025                   loc->address = addr;
2026
2027                   if (bitsize != 0)
2028                     {
2029                       /* Just cover the bytes that make up the bitfield.  */
2030                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2031                     }
2032                   else
2033                     loc->length = TYPE_LENGTH (value_type (v));
2034
2035                   loc->watchpoint_type = type;
2036                 }
2037             }
2038         }
2039
2040       /* Change the type of breakpoint between hardware assisted or
2041          an ordinary watchpoint depending on the hardware support
2042          and free hardware slots.  REPARSE is set when the inferior
2043          is started.  */
2044       if (reparse)
2045         {
2046           int reg_cnt;
2047           enum bp_loc_type loc_type;
2048           struct bp_location *bl;
2049
2050           reg_cnt = can_use_hardware_watchpoint (val_chain);
2051
2052           if (reg_cnt)
2053             {
2054               int i, target_resources_ok, other_type_used;
2055               enum bptype type;
2056
2057               /* Use an exact watchpoint when there's only one memory region to be
2058                  watched, and only one debug register is needed to watch it.  */
2059               b->exact = target_exact_watchpoints && reg_cnt == 1;
2060
2061               /* We need to determine how many resources are already
2062                  used for all other hardware watchpoints plus this one
2063                  to see if we still have enough resources to also fit
2064                  this watchpoint in as well.  */
2065
2066               /* If this is a software watchpoint, we try to turn it
2067                  to a hardware one -- count resources as if B was of
2068                  hardware watchpoint type.  */
2069               type = b->base.type;
2070               if (type == bp_watchpoint)
2071                 type = bp_hardware_watchpoint;
2072
2073               /* This watchpoint may or may not have been placed on
2074                  the list yet at this point (it won't be in the list
2075                  if we're trying to create it for the first time,
2076                  through watch_command), so always account for it
2077                  manually.  */
2078
2079               /* Count resources used by all watchpoints except B.  */
2080               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2081
2082               /* Add in the resources needed for B.  */
2083               i += hw_watchpoint_use_count (&b->base);
2084
2085               target_resources_ok
2086                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2087               if (target_resources_ok <= 0)
2088                 {
2089                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2090
2091                   if (target_resources_ok == 0 && !sw_mode)
2092                     error (_("Target does not support this type of "
2093                              "hardware watchpoint."));
2094                   else if (target_resources_ok < 0 && !sw_mode)
2095                     error (_("There are not enough available hardware "
2096                              "resources for this watchpoint."));
2097
2098                   /* Downgrade to software watchpoint.  */
2099                   b->base.type = bp_watchpoint;
2100                 }
2101               else
2102                 {
2103                   /* If this was a software watchpoint, we've just
2104                      found we have enough resources to turn it to a
2105                      hardware watchpoint.  Otherwise, this is a
2106                      nop.  */
2107                   b->base.type = type;
2108                 }
2109             }
2110           else if (!b->base.ops->works_in_software_mode (&b->base))
2111             {
2112               if (!can_use_hw_watchpoints)
2113                 error (_("Can't set read/access watchpoint when "
2114                          "hardware watchpoints are disabled."));
2115               else
2116                 error (_("Expression cannot be implemented with "
2117                          "read/access watchpoint."));
2118             }
2119           else
2120             b->base.type = bp_watchpoint;
2121
2122           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2123                       : bp_loc_hardware_watchpoint);
2124           for (bl = b->base.loc; bl; bl = bl->next)
2125             bl->loc_type = loc_type;
2126         }
2127
2128       for (v = val_chain; v; v = next)
2129         {
2130           next = value_next (v);
2131           if (v != b->val)
2132             value_free (v);
2133         }
2134
2135       /* If a software watchpoint is not watching any memory, then the
2136          above left it without any location set up.  But,
2137          bpstat_stop_status requires a location to be able to report
2138          stops, so make sure there's at least a dummy one.  */
2139       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2140         {
2141           struct breakpoint *base = &b->base;
2142           base->loc = allocate_bp_location (base);
2143           base->loc->pspace = frame_pspace;
2144           base->loc->address = -1;
2145           base->loc->length = -1;
2146           base->loc->watchpoint_type = -1;
2147         }
2148     }
2149   else if (!within_current_scope)
2150     {
2151       printf_filtered (_("\
2152 Watchpoint %d deleted because the program has left the block\n\
2153 in which its expression is valid.\n"),
2154                        b->base.number);
2155       watchpoint_del_at_next_stop (b);
2156     }
2157
2158   /* Restore the selected frame.  */
2159   if (frame_saved)
2160     select_frame (frame_find_by_id (saved_frame_id));
2161 }
2162
2163
2164 /* Returns 1 iff breakpoint location should be
2165    inserted in the inferior.  We don't differentiate the type of BL's owner
2166    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2167    breakpoint_ops is not defined, because in insert_bp_location,
2168    tracepoint's insert_location will not be called.  */
2169 static int
2170 should_be_inserted (struct bp_location *bl)
2171 {
2172   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2173     return 0;
2174
2175   if (bl->owner->disposition == disp_del_at_next_stop)
2176     return 0;
2177
2178   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2179     return 0;
2180
2181   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2182     return 0;
2183
2184   /* This is set for example, when we're attached to the parent of a
2185      vfork, and have detached from the child.  The child is running
2186      free, and we expect it to do an exec or exit, at which point the
2187      OS makes the parent schedulable again (and the target reports
2188      that the vfork is done).  Until the child is done with the shared
2189      memory region, do not insert breakpoints in the parent, otherwise
2190      the child could still trip on the parent's breakpoints.  Since
2191      the parent is blocked anyway, it won't miss any breakpoint.  */
2192   if (bl->pspace->breakpoints_not_allowed)
2193     return 0;
2194
2195   /* Don't insert a breakpoint if we're trying to step past its
2196      location.  */
2197   if ((bl->loc_type == bp_loc_software_breakpoint
2198        || bl->loc_type == bp_loc_hardware_breakpoint)
2199       && stepping_past_instruction_at (bl->pspace->aspace,
2200                                        bl->address))
2201     {
2202       if (debug_infrun)
2203         {
2204           fprintf_unfiltered (gdb_stdlog,
2205                               "infrun: skipping breakpoint: "
2206                               "stepping past insn at: %s\n",
2207                               paddress (bl->gdbarch, bl->address));
2208         }
2209       return 0;
2210     }
2211
2212   return 1;
2213 }
2214
2215 /* Same as should_be_inserted but does the check assuming
2216    that the location is not duplicated.  */
2217
2218 static int
2219 unduplicated_should_be_inserted (struct bp_location *bl)
2220 {
2221   int result;
2222   const int save_duplicate = bl->duplicate;
2223
2224   bl->duplicate = 0;
2225   result = should_be_inserted (bl);
2226   bl->duplicate = save_duplicate;
2227   return result;
2228 }
2229
2230 /* Parses a conditional described by an expression COND into an
2231    agent expression bytecode suitable for evaluation
2232    by the bytecode interpreter.  Return NULL if there was
2233    any error during parsing.  */
2234
2235 static struct agent_expr *
2236 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2237 {
2238   struct agent_expr *aexpr = NULL;
2239   volatile struct gdb_exception ex;
2240
2241   if (!cond)
2242     return NULL;
2243
2244   /* We don't want to stop processing, so catch any errors
2245      that may show up.  */
2246   TRY_CATCH (ex, RETURN_MASK_ERROR)
2247     {
2248       aexpr = gen_eval_for_expr (scope, cond);
2249     }
2250
2251   if (ex.reason < 0)
2252     {
2253       /* If we got here, it means the condition could not be parsed to a valid
2254          bytecode expression and thus can't be evaluated on the target's side.
2255          It's no use iterating through the conditions.  */
2256       return NULL;
2257     }
2258
2259   /* We have a valid agent expression.  */
2260   return aexpr;
2261 }
2262
2263 /* Based on location BL, create a list of breakpoint conditions to be
2264    passed on to the target.  If we have duplicated locations with different
2265    conditions, we will add such conditions to the list.  The idea is that the
2266    target will evaluate the list of conditions and will only notify GDB when
2267    one of them is true.  */
2268
2269 static void
2270 build_target_condition_list (struct bp_location *bl)
2271 {
2272   struct bp_location **locp = NULL, **loc2p;
2273   int null_condition_or_parse_error = 0;
2274   int modified = bl->needs_update;
2275   struct bp_location *loc;
2276
2277   /* Release conditions left over from a previous insert.  */
2278   VEC_free (agent_expr_p, bl->target_info.conditions);
2279
2280   /* This is only meaningful if the target is
2281      evaluating conditions and if the user has
2282      opted for condition evaluation on the target's
2283      side.  */
2284   if (gdb_evaluates_breakpoint_condition_p ()
2285       || !target_supports_evaluation_of_breakpoint_conditions ())
2286     return;
2287
2288   /* Do a first pass to check for locations with no assigned
2289      conditions or conditions that fail to parse to a valid agent expression
2290      bytecode.  If any of these happen, then it's no use to send conditions
2291      to the target since this location will always trigger and generate a
2292      response back to GDB.  */
2293   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2294     {
2295       loc = (*loc2p);
2296       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2297         {
2298           if (modified)
2299             {
2300               struct agent_expr *aexpr;
2301
2302               /* Re-parse the conditions since something changed.  In that
2303                  case we already freed the condition bytecodes (see
2304                  force_breakpoint_reinsertion).  We just
2305                  need to parse the condition to bytecodes again.  */
2306               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2307               loc->cond_bytecode = aexpr;
2308
2309               /* Check if we managed to parse the conditional expression
2310                  correctly.  If not, we will not send this condition
2311                  to the target.  */
2312               if (aexpr)
2313                 continue;
2314             }
2315
2316           /* If we have a NULL bytecode expression, it means something
2317              went wrong or we have a null condition expression.  */
2318           if (!loc->cond_bytecode)
2319             {
2320               null_condition_or_parse_error = 1;
2321               break;
2322             }
2323         }
2324     }
2325
2326   /* If any of these happened, it means we will have to evaluate the conditions
2327      for the location's address on gdb's side.  It is no use keeping bytecodes
2328      for all the other duplicate locations, thus we free all of them here.
2329
2330      This is so we have a finer control over which locations' conditions are
2331      being evaluated by GDB or the remote stub.  */
2332   if (null_condition_or_parse_error)
2333     {
2334       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2335         {
2336           loc = (*loc2p);
2337           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2338             {
2339               /* Only go as far as the first NULL bytecode is
2340                  located.  */
2341               if (!loc->cond_bytecode)
2342                 return;
2343
2344               free_agent_expr (loc->cond_bytecode);
2345               loc->cond_bytecode = NULL;
2346             }
2347         }
2348     }
2349
2350   /* No NULL conditions or failed bytecode generation.  Build a condition list
2351      for this location's address.  */
2352   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2353     {
2354       loc = (*loc2p);
2355       if (loc->cond
2356           && is_breakpoint (loc->owner)
2357           && loc->pspace->num == bl->pspace->num
2358           && loc->owner->enable_state == bp_enabled
2359           && loc->enabled)
2360         /* Add the condition to the vector.  This will be used later to send the
2361            conditions to the target.  */
2362         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2363                        loc->cond_bytecode);
2364     }
2365
2366   return;
2367 }
2368
2369 /* Parses a command described by string CMD into an agent expression
2370    bytecode suitable for evaluation by the bytecode interpreter.
2371    Return NULL if there was any error during parsing.  */
2372
2373 static struct agent_expr *
2374 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2375 {
2376   struct cleanup *old_cleanups = 0;
2377   struct expression *expr, **argvec;
2378   struct agent_expr *aexpr = NULL;
2379   volatile struct gdb_exception ex;
2380   const char *cmdrest;
2381   const char *format_start, *format_end;
2382   struct format_piece *fpieces;
2383   int nargs;
2384   struct gdbarch *gdbarch = get_current_arch ();
2385
2386   if (!cmd)
2387     return NULL;
2388
2389   cmdrest = cmd;
2390
2391   if (*cmdrest == ',')
2392     ++cmdrest;
2393   cmdrest = skip_spaces_const (cmdrest);
2394
2395   if (*cmdrest++ != '"')
2396     error (_("No format string following the location"));
2397
2398   format_start = cmdrest;
2399
2400   fpieces = parse_format_string (&cmdrest);
2401
2402   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2403
2404   format_end = cmdrest;
2405
2406   if (*cmdrest++ != '"')
2407     error (_("Bad format string, non-terminated '\"'."));
2408   
2409   cmdrest = skip_spaces_const (cmdrest);
2410
2411   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2412     error (_("Invalid argument syntax"));
2413
2414   if (*cmdrest == ',')
2415     cmdrest++;
2416   cmdrest = skip_spaces_const (cmdrest);
2417
2418   /* For each argument, make an expression.  */
2419
2420   argvec = (struct expression **) alloca (strlen (cmd)
2421                                          * sizeof (struct expression *));
2422
2423   nargs = 0;
2424   while (*cmdrest != '\0')
2425     {
2426       const char *cmd1;
2427
2428       cmd1 = cmdrest;
2429       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2430       argvec[nargs++] = expr;
2431       cmdrest = cmd1;
2432       if (*cmdrest == ',')
2433         ++cmdrest;
2434     }
2435
2436   /* We don't want to stop processing, so catch any errors
2437      that may show up.  */
2438   TRY_CATCH (ex, RETURN_MASK_ERROR)
2439     {
2440       aexpr = gen_printf (scope, gdbarch, 0, 0,
2441                           format_start, format_end - format_start,
2442                           fpieces, nargs, argvec);
2443     }
2444
2445   do_cleanups (old_cleanups);
2446
2447   if (ex.reason < 0)
2448     {
2449       /* If we got here, it means the command could not be parsed to a valid
2450          bytecode expression and thus can't be evaluated on the target's side.
2451          It's no use iterating through the other commands.  */
2452       return NULL;
2453     }
2454
2455   /* We have a valid agent expression, return it.  */
2456   return aexpr;
2457 }
2458
2459 /* Based on location BL, create a list of breakpoint commands to be
2460    passed on to the target.  If we have duplicated locations with
2461    different commands, we will add any such to the list.  */
2462
2463 static void
2464 build_target_command_list (struct bp_location *bl)
2465 {
2466   struct bp_location **locp = NULL, **loc2p;
2467   int null_command_or_parse_error = 0;
2468   int modified = bl->needs_update;
2469   struct bp_location *loc;
2470
2471   /* Release commands left over from a previous insert.  */
2472   VEC_free (agent_expr_p, bl->target_info.tcommands);
2473
2474   if (!target_can_run_breakpoint_commands ())
2475     return;
2476
2477   /* For now, limit to agent-style dprintf breakpoints.  */
2478   if (dprintf_style != dprintf_style_agent)
2479     return;
2480
2481   /* For now, if we have any duplicate location that isn't a dprintf,
2482      don't install the target-side commands, as that would make the
2483      breakpoint not be reported to the core, and we'd lose
2484      control.  */
2485   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2486     {
2487       loc = (*loc2p);
2488       if (is_breakpoint (loc->owner)
2489           && loc->pspace->num == bl->pspace->num
2490           && loc->owner->type != bp_dprintf)
2491         return;
2492     }
2493
2494   /* Do a first pass to check for locations with no assigned
2495      conditions or conditions that fail to parse to a valid agent expression
2496      bytecode.  If any of these happen, then it's no use to send conditions
2497      to the target since this location will always trigger and generate a
2498      response back to GDB.  */
2499   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2500     {
2501       loc = (*loc2p);
2502       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2503         {
2504           if (modified)
2505             {
2506               struct agent_expr *aexpr;
2507
2508               /* Re-parse the commands since something changed.  In that
2509                  case we already freed the command bytecodes (see
2510                  force_breakpoint_reinsertion).  We just
2511                  need to parse the command to bytecodes again.  */
2512               aexpr = parse_cmd_to_aexpr (bl->address,
2513                                           loc->owner->extra_string);
2514               loc->cmd_bytecode = aexpr;
2515
2516               if (!aexpr)
2517                 continue;
2518             }
2519
2520           /* If we have a NULL bytecode expression, it means something
2521              went wrong or we have a null command expression.  */
2522           if (!loc->cmd_bytecode)
2523             {
2524               null_command_or_parse_error = 1;
2525               break;
2526             }
2527         }
2528     }
2529
2530   /* If anything failed, then we're not doing target-side commands,
2531      and so clean up.  */
2532   if (null_command_or_parse_error)
2533     {
2534       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2535         {
2536           loc = (*loc2p);
2537           if (is_breakpoint (loc->owner)
2538               && loc->pspace->num == bl->pspace->num)
2539             {
2540               /* Only go as far as the first NULL bytecode is
2541                  located.  */
2542               if (loc->cmd_bytecode == NULL)
2543                 return;
2544
2545               free_agent_expr (loc->cmd_bytecode);
2546               loc->cmd_bytecode = NULL;
2547             }
2548         }
2549     }
2550
2551   /* No NULL commands or failed bytecode generation.  Build a command list
2552      for this location's address.  */
2553   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2554     {
2555       loc = (*loc2p);
2556       if (loc->owner->extra_string
2557           && is_breakpoint (loc->owner)
2558           && loc->pspace->num == bl->pspace->num
2559           && loc->owner->enable_state == bp_enabled
2560           && loc->enabled)
2561         /* Add the command to the vector.  This will be used later
2562            to send the commands to the target.  */
2563         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2564                        loc->cmd_bytecode);
2565     }
2566
2567   bl->target_info.persist = 0;
2568   /* Maybe flag this location as persistent.  */
2569   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2570     bl->target_info.persist = 1;
2571 }
2572
2573 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2574    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2575    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2576    Returns 0 for success, 1 if the bp_location type is not supported or
2577    -1 for failure.
2578
2579    NOTE drow/2003-09-09: This routine could be broken down to an
2580    object-style method for each breakpoint or catchpoint type.  */
2581 static int
2582 insert_bp_location (struct bp_location *bl,
2583                     struct ui_file *tmp_error_stream,
2584                     int *disabled_breaks,
2585                     int *hw_breakpoint_error,
2586                     int *hw_bp_error_explained_already)
2587 {
2588   enum errors bp_err = GDB_NO_ERROR;
2589   const char *bp_err_message = NULL;
2590   volatile struct gdb_exception e;
2591
2592   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2593     return 0;
2594
2595   /* Note we don't initialize bl->target_info, as that wipes out
2596      the breakpoint location's shadow_contents if the breakpoint
2597      is still inserted at that location.  This in turn breaks
2598      target_read_memory which depends on these buffers when
2599      a memory read is requested at the breakpoint location:
2600      Once the target_info has been wiped, we fail to see that
2601      we have a breakpoint inserted at that address and thus
2602      read the breakpoint instead of returning the data saved in
2603      the breakpoint location's shadow contents.  */
2604   bl->target_info.placed_address = bl->address;
2605   bl->target_info.placed_address_space = bl->pspace->aspace;
2606   bl->target_info.length = bl->length;
2607
2608   /* When working with target-side conditions, we must pass all the conditions
2609      for the same breakpoint address down to the target since GDB will not
2610      insert those locations.  With a list of breakpoint conditions, the target
2611      can decide when to stop and notify GDB.  */
2612
2613   if (is_breakpoint (bl->owner))
2614     {
2615       build_target_condition_list (bl);
2616       build_target_command_list (bl);
2617       /* Reset the modification marker.  */
2618       bl->needs_update = 0;
2619     }
2620
2621   if (bl->loc_type == bp_loc_software_breakpoint
2622       || bl->loc_type == bp_loc_hardware_breakpoint)
2623     {
2624       if (bl->owner->type != bp_hardware_breakpoint)
2625         {
2626           /* If the explicitly specified breakpoint type
2627              is not hardware breakpoint, check the memory map to see
2628              if the breakpoint address is in read only memory or not.
2629
2630              Two important cases are:
2631              - location type is not hardware breakpoint, memory
2632              is readonly.  We change the type of the location to
2633              hardware breakpoint.
2634              - location type is hardware breakpoint, memory is
2635              read-write.  This means we've previously made the
2636              location hardware one, but then the memory map changed,
2637              so we undo.
2638              
2639              When breakpoints are removed, remove_breakpoints will use
2640              location types we've just set here, the only possible
2641              problem is that memory map has changed during running
2642              program, but it's not going to work anyway with current
2643              gdb.  */
2644           struct mem_region *mr 
2645             = lookup_mem_region (bl->target_info.placed_address);
2646           
2647           if (mr)
2648             {
2649               if (automatic_hardware_breakpoints)
2650                 {
2651                   enum bp_loc_type new_type;
2652                   
2653                   if (mr->attrib.mode != MEM_RW)
2654                     new_type = bp_loc_hardware_breakpoint;
2655                   else 
2656                     new_type = bp_loc_software_breakpoint;
2657                   
2658                   if (new_type != bl->loc_type)
2659                     {
2660                       static int said = 0;
2661
2662                       bl->loc_type = new_type;
2663                       if (!said)
2664                         {
2665                           fprintf_filtered (gdb_stdout,
2666                                             _("Note: automatically using "
2667                                               "hardware breakpoints for "
2668                                               "read-only addresses.\n"));
2669                           said = 1;
2670                         }
2671                     }
2672                 }
2673               else if (bl->loc_type == bp_loc_software_breakpoint
2674                        && mr->attrib.mode != MEM_RW)
2675                 {
2676                   fprintf_unfiltered (tmp_error_stream,
2677                                       _("Cannot insert breakpoint %d.\n"
2678                                         "Cannot set software breakpoint "
2679                                         "at read-only address %s\n"),
2680                                       bl->owner->number,
2681                                       paddress (bl->gdbarch, bl->address));
2682                   return 1;
2683                 }
2684             }
2685         }
2686         
2687       /* First check to see if we have to handle an overlay.  */
2688       if (overlay_debugging == ovly_off
2689           || bl->section == NULL
2690           || !(section_is_overlay (bl->section)))
2691         {
2692           /* No overlay handling: just set the breakpoint.  */
2693           TRY_CATCH (e, RETURN_MASK_ALL)
2694             {
2695               int val;
2696
2697               val = bl->owner->ops->insert_location (bl);
2698               if (val)
2699                 bp_err = GENERIC_ERROR;
2700             }
2701           if (e.reason < 0)
2702             {
2703               bp_err = e.error;
2704               bp_err_message = e.message;
2705             }
2706         }
2707       else
2708         {
2709           /* This breakpoint is in an overlay section.
2710              Shall we set a breakpoint at the LMA?  */
2711           if (!overlay_events_enabled)
2712             {
2713               /* Yes -- overlay event support is not active, 
2714                  so we must try to set a breakpoint at the LMA.
2715                  This will not work for a hardware breakpoint.  */
2716               if (bl->loc_type == bp_loc_hardware_breakpoint)
2717                 warning (_("hardware breakpoint %d not supported in overlay!"),
2718                          bl->owner->number);
2719               else
2720                 {
2721                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2722                                                              bl->section);
2723                   /* Set a software (trap) breakpoint at the LMA.  */
2724                   bl->overlay_target_info = bl->target_info;
2725                   bl->overlay_target_info.placed_address = addr;
2726
2727                   /* No overlay handling: just set the breakpoint.  */
2728                   TRY_CATCH (e, RETURN_MASK_ALL)
2729                     {
2730                       int val;
2731
2732                       val = target_insert_breakpoint (bl->gdbarch,
2733                                                       &bl->overlay_target_info);
2734                       if (val)
2735                         bp_err = GENERIC_ERROR;
2736                     }
2737                   if (e.reason < 0)
2738                     {
2739                       bp_err = e.error;
2740                       bp_err_message = e.message;
2741                     }
2742
2743                   if (bp_err != GDB_NO_ERROR)
2744                     fprintf_unfiltered (tmp_error_stream,
2745                                         "Overlay breakpoint %d "
2746                                         "failed: in ROM?\n",
2747                                         bl->owner->number);
2748                 }
2749             }
2750           /* Shall we set a breakpoint at the VMA? */
2751           if (section_is_mapped (bl->section))
2752             {
2753               /* Yes.  This overlay section is mapped into memory.  */
2754               TRY_CATCH (e, RETURN_MASK_ALL)
2755                 {
2756                   int val;
2757
2758                   val = bl->owner->ops->insert_location (bl);
2759                   if (val)
2760                     bp_err = GENERIC_ERROR;
2761                 }
2762               if (e.reason < 0)
2763                 {
2764                   bp_err = e.error;
2765                   bp_err_message = e.message;
2766                 }
2767             }
2768           else
2769             {
2770               /* No.  This breakpoint will not be inserted.  
2771                  No error, but do not mark the bp as 'inserted'.  */
2772               return 0;
2773             }
2774         }
2775
2776       if (bp_err != GDB_NO_ERROR)
2777         {
2778           /* Can't set the breakpoint.  */
2779
2780           /* In some cases, we might not be able to insert a
2781              breakpoint in a shared library that has already been
2782              removed, but we have not yet processed the shlib unload
2783              event.  Unfortunately, some targets that implement
2784              breakpoint insertion themselves can't tell why the
2785              breakpoint insertion failed (e.g., the remote target
2786              doesn't define error codes), so we must treat generic
2787              errors as memory errors.  */
2788           if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2789               && bl->loc_type == bp_loc_software_breakpoint
2790               && (solib_name_from_address (bl->pspace, bl->address)
2791                   || shared_objfile_contains_address_p (bl->pspace,
2792                                                         bl->address)))
2793             {
2794               /* See also: disable_breakpoints_in_shlibs.  */
2795               bl->shlib_disabled = 1;
2796               observer_notify_breakpoint_modified (bl->owner);
2797               if (!*disabled_breaks)
2798                 {
2799                   fprintf_unfiltered (tmp_error_stream, 
2800                                       "Cannot insert breakpoint %d.\n", 
2801                                       bl->owner->number);
2802                   fprintf_unfiltered (tmp_error_stream, 
2803                                       "Temporarily disabling shared "
2804                                       "library breakpoints:\n");
2805                 }
2806               *disabled_breaks = 1;
2807               fprintf_unfiltered (tmp_error_stream,
2808                                   "breakpoint #%d\n", bl->owner->number);
2809               return 0;
2810             }
2811           else
2812             {
2813               if (bl->loc_type == bp_loc_hardware_breakpoint)
2814                 {
2815                   *hw_breakpoint_error = 1;
2816                   *hw_bp_error_explained_already = bp_err_message != NULL;
2817                   fprintf_unfiltered (tmp_error_stream,
2818                                       "Cannot insert hardware breakpoint %d%s",
2819                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2820                   if (bp_err_message != NULL)
2821                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2822                 }
2823               else
2824                 {
2825                   if (bp_err_message == NULL)
2826                     {
2827                       char *message
2828                         = memory_error_message (TARGET_XFER_E_IO,
2829                                                 bl->gdbarch, bl->address);
2830                       struct cleanup *old_chain = make_cleanup (xfree, message);
2831
2832                       fprintf_unfiltered (tmp_error_stream,
2833                                           "Cannot insert breakpoint %d.\n"
2834                                           "%s\n",
2835                                           bl->owner->number, message);
2836                       do_cleanups (old_chain);
2837                     }
2838                   else
2839                     {
2840                       fprintf_unfiltered (tmp_error_stream,
2841                                           "Cannot insert breakpoint %d: %s\n",
2842                                           bl->owner->number,
2843                                           bp_err_message);
2844                     }
2845                 }
2846               return 1;
2847
2848             }
2849         }
2850       else
2851         bl->inserted = 1;
2852
2853       return 0;
2854     }
2855
2856   else if (bl->loc_type == bp_loc_hardware_watchpoint
2857            /* NOTE drow/2003-09-08: This state only exists for removing
2858               watchpoints.  It's not clear that it's necessary...  */
2859            && bl->owner->disposition != disp_del_at_next_stop)
2860     {
2861       int val;
2862
2863       gdb_assert (bl->owner->ops != NULL
2864                   && bl->owner->ops->insert_location != NULL);
2865
2866       val = bl->owner->ops->insert_location (bl);
2867
2868       /* If trying to set a read-watchpoint, and it turns out it's not
2869          supported, try emulating one with an access watchpoint.  */
2870       if (val == 1 && bl->watchpoint_type == hw_read)
2871         {
2872           struct bp_location *loc, **loc_temp;
2873
2874           /* But don't try to insert it, if there's already another
2875              hw_access location that would be considered a duplicate
2876              of this one.  */
2877           ALL_BP_LOCATIONS (loc, loc_temp)
2878             if (loc != bl
2879                 && loc->watchpoint_type == hw_access
2880                 && watchpoint_locations_match (bl, loc))
2881               {
2882                 bl->duplicate = 1;
2883                 bl->inserted = 1;
2884                 bl->target_info = loc->target_info;
2885                 bl->watchpoint_type = hw_access;
2886                 val = 0;
2887                 break;
2888               }
2889
2890           if (val == 1)
2891             {
2892               bl->watchpoint_type = hw_access;
2893               val = bl->owner->ops->insert_location (bl);
2894
2895               if (val)
2896                 /* Back to the original value.  */
2897                 bl->watchpoint_type = hw_read;
2898             }
2899         }
2900
2901       bl->inserted = (val == 0);
2902     }
2903
2904   else if (bl->owner->type == bp_catchpoint)
2905     {
2906       int val;
2907
2908       gdb_assert (bl->owner->ops != NULL
2909                   && bl->owner->ops->insert_location != NULL);
2910
2911       val = bl->owner->ops->insert_location (bl);
2912       if (val)
2913         {
2914           bl->owner->enable_state = bp_disabled;
2915
2916           if (val == 1)
2917             warning (_("\
2918 Error inserting catchpoint %d: Your system does not support this type\n\
2919 of catchpoint."), bl->owner->number);
2920           else
2921             warning (_("Error inserting catchpoint %d."), bl->owner->number);
2922         }
2923
2924       bl->inserted = (val == 0);
2925
2926       /* We've already printed an error message if there was a problem
2927          inserting this catchpoint, and we've disabled the catchpoint,
2928          so just return success.  */
2929       return 0;
2930     }
2931
2932   return 0;
2933 }
2934
2935 /* This function is called when program space PSPACE is about to be
2936    deleted.  It takes care of updating breakpoints to not reference
2937    PSPACE anymore.  */
2938
2939 void
2940 breakpoint_program_space_exit (struct program_space *pspace)
2941 {
2942   struct breakpoint *b, *b_temp;
2943   struct bp_location *loc, **loc_temp;
2944
2945   /* Remove any breakpoint that was set through this program space.  */
2946   ALL_BREAKPOINTS_SAFE (b, b_temp)
2947     {
2948       if (b->pspace == pspace)
2949         delete_breakpoint (b);
2950     }
2951
2952   /* Breakpoints set through other program spaces could have locations
2953      bound to PSPACE as well.  Remove those.  */
2954   ALL_BP_LOCATIONS (loc, loc_temp)
2955     {
2956       struct bp_location *tmp;
2957
2958       if (loc->pspace == pspace)
2959         {
2960           /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2961           if (loc->owner->loc == loc)
2962             loc->owner->loc = loc->next;
2963           else
2964             for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2965               if (tmp->next == loc)
2966                 {
2967                   tmp->next = loc->next;
2968                   break;
2969                 }
2970         }
2971     }
2972
2973   /* Now update the global location list to permanently delete the
2974      removed locations above.  */
2975   update_global_location_list (UGLL_DONT_INSERT);
2976 }
2977
2978 /* Make sure all breakpoints are inserted in inferior.
2979    Throws exception on any error.
2980    A breakpoint that is already inserted won't be inserted
2981    again, so calling this function twice is safe.  */
2982 void
2983 insert_breakpoints (void)
2984 {
2985   struct breakpoint *bpt;
2986
2987   ALL_BREAKPOINTS (bpt)
2988     if (is_hardware_watchpoint (bpt))
2989       {
2990         struct watchpoint *w = (struct watchpoint *) bpt;
2991
2992         update_watchpoint (w, 0 /* don't reparse.  */);
2993       }
2994
2995   /* Updating watchpoints creates new locations, so update the global
2996      location list.  Explicitly tell ugll to insert locations and
2997      ignore breakpoints_always_inserted_mode.  */
2998   update_global_location_list (UGLL_INSERT);
2999 }
3000
3001 /* Invoke CALLBACK for each of bp_location.  */
3002
3003 void
3004 iterate_over_bp_locations (walk_bp_location_callback callback)
3005 {
3006   struct bp_location *loc, **loc_tmp;
3007
3008   ALL_BP_LOCATIONS (loc, loc_tmp)
3009     {
3010       callback (loc, NULL);
3011     }
3012 }
3013
3014 /* This is used when we need to synch breakpoint conditions between GDB and the
3015    target.  It is the case with deleting and disabling of breakpoints when using
3016    always-inserted mode.  */
3017
3018 static void
3019 update_inserted_breakpoint_locations (void)
3020 {
3021   struct bp_location *bl, **blp_tmp;
3022   int error_flag = 0;
3023   int val = 0;
3024   int disabled_breaks = 0;
3025   int hw_breakpoint_error = 0;
3026   int hw_bp_details_reported = 0;
3027
3028   struct ui_file *tmp_error_stream = mem_fileopen ();
3029   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3030
3031   /* Explicitly mark the warning -- this will only be printed if
3032      there was an error.  */
3033   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3034
3035   save_current_space_and_thread ();
3036
3037   ALL_BP_LOCATIONS (bl, blp_tmp)
3038     {
3039       /* We only want to update software breakpoints and hardware
3040          breakpoints.  */
3041       if (!is_breakpoint (bl->owner))
3042         continue;
3043
3044       /* We only want to update locations that are already inserted
3045          and need updating.  This is to avoid unwanted insertion during
3046          deletion of breakpoints.  */
3047       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3048         continue;
3049
3050       switch_to_program_space_and_thread (bl->pspace);
3051
3052       /* For targets that support global breakpoints, there's no need
3053          to select an inferior to insert breakpoint to.  In fact, even
3054          if we aren't attached to any process yet, we should still
3055          insert breakpoints.  */
3056       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3057           && ptid_equal (inferior_ptid, null_ptid))
3058         continue;
3059
3060       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3061                                     &hw_breakpoint_error, &hw_bp_details_reported);
3062       if (val)
3063         error_flag = val;
3064     }
3065
3066   if (error_flag)
3067     {
3068       target_terminal_ours_for_output ();
3069       error_stream (tmp_error_stream);
3070     }
3071
3072   do_cleanups (cleanups);
3073 }
3074
3075 /* Used when starting or continuing the program.  */
3076
3077 static void
3078 insert_breakpoint_locations (void)
3079 {
3080   struct breakpoint *bpt;
3081   struct bp_location *bl, **blp_tmp;
3082   int error_flag = 0;
3083   int val = 0;
3084   int disabled_breaks = 0;
3085   int hw_breakpoint_error = 0;
3086   int hw_bp_error_explained_already = 0;
3087
3088   struct ui_file *tmp_error_stream = mem_fileopen ();
3089   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3090   
3091   /* Explicitly mark the warning -- this will only be printed if
3092      there was an error.  */
3093   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3094
3095   save_current_space_and_thread ();
3096
3097   ALL_BP_LOCATIONS (bl, blp_tmp)
3098     {
3099       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3100         continue;
3101
3102       /* There is no point inserting thread-specific breakpoints if
3103          the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3104          has BL->OWNER always non-NULL.  */
3105       if (bl->owner->thread != -1
3106           && !valid_thread_id (bl->owner->thread))
3107         continue;
3108
3109       switch_to_program_space_and_thread (bl->pspace);
3110
3111       /* For targets that support global breakpoints, there's no need
3112          to select an inferior to insert breakpoint to.  In fact, even
3113          if we aren't attached to any process yet, we should still
3114          insert breakpoints.  */
3115       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3116           && ptid_equal (inferior_ptid, null_ptid))
3117         continue;
3118
3119       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3120                                     &hw_breakpoint_error, &hw_bp_error_explained_already);
3121       if (val)
3122         error_flag = val;
3123     }
3124
3125   /* If we failed to insert all locations of a watchpoint, remove
3126      them, as half-inserted watchpoint is of limited use.  */
3127   ALL_BREAKPOINTS (bpt)  
3128     {
3129       int some_failed = 0;
3130       struct bp_location *loc;
3131
3132       if (!is_hardware_watchpoint (bpt))
3133         continue;
3134
3135       if (!breakpoint_enabled (bpt))
3136         continue;
3137
3138       if (bpt->disposition == disp_del_at_next_stop)
3139         continue;
3140       
3141       for (loc = bpt->loc; loc; loc = loc->next)
3142         if (!loc->inserted && should_be_inserted (loc))
3143           {
3144             some_failed = 1;
3145             break;
3146           }
3147       if (some_failed)
3148         {
3149           for (loc = bpt->loc; loc; loc = loc->next)
3150             if (loc->inserted)
3151               remove_breakpoint (loc, mark_uninserted);
3152
3153           hw_breakpoint_error = 1;
3154           fprintf_unfiltered (tmp_error_stream,
3155                               "Could not insert hardware watchpoint %d.\n", 
3156                               bpt->number);
3157           error_flag = -1;
3158         }
3159     }
3160
3161   if (error_flag)
3162     {
3163       /* If a hardware breakpoint or watchpoint was inserted, add a
3164          message about possibly exhausted resources.  */
3165       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3166         {
3167           fprintf_unfiltered (tmp_error_stream, 
3168                               "Could not insert hardware breakpoints:\n\
3169 You may have requested too many hardware breakpoints/watchpoints.\n");
3170         }
3171       target_terminal_ours_for_output ();
3172       error_stream (tmp_error_stream);
3173     }
3174
3175   do_cleanups (cleanups);
3176 }
3177
3178 /* Used when the program stops.
3179    Returns zero if successful, or non-zero if there was a problem
3180    removing a breakpoint location.  */
3181
3182 int
3183 remove_breakpoints (void)
3184 {
3185   struct bp_location *bl, **blp_tmp;
3186   int val = 0;
3187
3188   ALL_BP_LOCATIONS (bl, blp_tmp)
3189   {
3190     if (bl->inserted && !is_tracepoint (bl->owner))
3191       val |= remove_breakpoint (bl, mark_uninserted);
3192   }
3193   return val;
3194 }
3195
3196 /* When a thread exits, remove breakpoints that are related to
3197    that thread.  */
3198
3199 static void
3200 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3201 {
3202   struct breakpoint *b, *b_tmp;
3203
3204   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3205     {
3206       if (b->thread == tp->num && user_breakpoint_p (b))
3207         {
3208           b->disposition = disp_del_at_next_stop;
3209
3210           printf_filtered (_("\
3211 Thread-specific breakpoint %d deleted - thread %d no longer in the thread list.\n"),
3212                           b->number, tp->num);
3213
3214           /* Hide it from the user.  */
3215           b->number = 0;
3216        }
3217     }
3218 }
3219
3220 /* Remove breakpoints of process PID.  */
3221
3222 int
3223 remove_breakpoints_pid (int pid)
3224 {
3225   struct bp_location *bl, **blp_tmp;
3226   int val;
3227   struct inferior *inf = find_inferior_pid (pid);
3228
3229   ALL_BP_LOCATIONS (bl, blp_tmp)
3230   {
3231     if (bl->pspace != inf->pspace)
3232       continue;
3233
3234     if (bl->owner->type == bp_dprintf)
3235       continue;
3236
3237     if (bl->inserted)
3238       {
3239         val = remove_breakpoint (bl, mark_uninserted);
3240         if (val != 0)
3241           return val;
3242       }
3243   }
3244   return 0;
3245 }
3246
3247 int
3248 reattach_breakpoints (int pid)
3249 {
3250   struct cleanup *old_chain;
3251   struct bp_location *bl, **blp_tmp;
3252   int val;
3253   struct ui_file *tmp_error_stream;
3254   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3255   struct inferior *inf;
3256   struct thread_info *tp;
3257
3258   tp = any_live_thread_of_process (pid);
3259   if (tp == NULL)
3260     return 1;
3261
3262   inf = find_inferior_pid (pid);
3263   old_chain = save_inferior_ptid ();
3264
3265   inferior_ptid = tp->ptid;
3266
3267   tmp_error_stream = mem_fileopen ();
3268   make_cleanup_ui_file_delete (tmp_error_stream);
3269
3270   ALL_BP_LOCATIONS (bl, blp_tmp)
3271   {
3272     if (bl->pspace != inf->pspace)
3273       continue;
3274
3275     if (bl->inserted)
3276       {
3277         bl->inserted = 0;
3278         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3279         if (val != 0)
3280           {
3281             do_cleanups (old_chain);
3282             return val;
3283           }
3284       }
3285   }
3286   do_cleanups (old_chain);
3287   return 0;
3288 }
3289
3290 static int internal_breakpoint_number = -1;
3291
3292 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3293    If INTERNAL is non-zero, the breakpoint number will be populated
3294    from internal_breakpoint_number and that variable decremented.
3295    Otherwise the breakpoint number will be populated from
3296    breakpoint_count and that value incremented.  Internal breakpoints
3297    do not set the internal var bpnum.  */
3298 static void
3299 set_breakpoint_number (int internal, struct breakpoint *b)
3300 {
3301   if (internal)
3302     b->number = internal_breakpoint_number--;
3303   else
3304     {
3305       set_breakpoint_count (breakpoint_count + 1);
3306       b->number = breakpoint_count;
3307     }
3308 }
3309
3310 static struct breakpoint *
3311 create_internal_breakpoint (struct gdbarch *gdbarch,
3312                             CORE_ADDR address, enum bptype type,
3313                             const struct breakpoint_ops *ops)
3314 {
3315   struct symtab_and_line sal;
3316   struct breakpoint *b;
3317
3318   init_sal (&sal);              /* Initialize to zeroes.  */
3319
3320   sal.pc = address;
3321   sal.section = find_pc_overlay (sal.pc);
3322   sal.pspace = current_program_space;
3323
3324   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3325   b->number = internal_breakpoint_number--;
3326   b->disposition = disp_donttouch;
3327
3328   return b;
3329 }
3330
3331 static const char *const longjmp_names[] =
3332   {
3333     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3334   };
3335 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3336
3337 /* Per-objfile data private to breakpoint.c.  */
3338 struct breakpoint_objfile_data
3339 {
3340   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3341   struct bound_minimal_symbol overlay_msym;
3342
3343   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3344   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3345
3346   /* True if we have looked for longjmp probes.  */
3347   int longjmp_searched;
3348
3349   /* SystemTap probe points for longjmp (if any).  */
3350   VEC (probe_p) *longjmp_probes;
3351
3352   /* Minimal symbol for "std::terminate()" (if any).  */
3353   struct bound_minimal_symbol terminate_msym;
3354
3355   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3356   struct bound_minimal_symbol exception_msym;
3357
3358   /* True if we have looked for exception probes.  */
3359   int exception_searched;
3360
3361   /* SystemTap probe points for unwinding (if any).  */
3362   VEC (probe_p) *exception_probes;
3363 };
3364
3365 static const struct objfile_data *breakpoint_objfile_key;
3366
3367 /* Minimal symbol not found sentinel.  */
3368 static struct minimal_symbol msym_not_found;
3369
3370 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3371
3372 static int
3373 msym_not_found_p (const struct minimal_symbol *msym)
3374 {
3375   return msym == &msym_not_found;
3376 }
3377
3378 /* Return per-objfile data needed by breakpoint.c.
3379    Allocate the data if necessary.  */
3380
3381 static struct breakpoint_objfile_data *
3382 get_breakpoint_objfile_data (struct objfile *objfile)
3383 {
3384   struct breakpoint_objfile_data *bp_objfile_data;
3385
3386   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3387   if (bp_objfile_data == NULL)
3388     {
3389       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3390                                        sizeof (*bp_objfile_data));
3391
3392       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3393       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3394     }
3395   return bp_objfile_data;
3396 }
3397
3398 static void
3399 free_breakpoint_probes (struct objfile *obj, void *data)
3400 {
3401   struct breakpoint_objfile_data *bp_objfile_data = data;
3402
3403   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3404   VEC_free (probe_p, bp_objfile_data->exception_probes);
3405 }
3406
3407 static void
3408 create_overlay_event_breakpoint (void)
3409 {
3410   struct objfile *objfile;
3411   const char *const func_name = "_ovly_debug_event";
3412
3413   ALL_OBJFILES (objfile)
3414     {
3415       struct breakpoint *b;
3416       struct breakpoint_objfile_data *bp_objfile_data;
3417       CORE_ADDR addr;
3418
3419       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3420
3421       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3422         continue;
3423
3424       if (bp_objfile_data->overlay_msym.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               /* Avoid future lookups in this objfile.  */
3432               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3433               continue;
3434             }
3435           bp_objfile_data->overlay_msym = m;
3436         }
3437
3438       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3439       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3440                                       bp_overlay_event,
3441                                       &internal_breakpoint_ops);
3442       b->addr_string = xstrdup (func_name);
3443
3444       if (overlay_debugging == ovly_auto)
3445         {
3446           b->enable_state = bp_enabled;
3447           overlay_events_enabled = 1;
3448         }
3449       else
3450        {
3451          b->enable_state = bp_disabled;
3452          overlay_events_enabled = 0;
3453        }
3454     }
3455   update_global_location_list (UGLL_MAY_INSERT);
3456 }
3457
3458 static void
3459 create_longjmp_master_breakpoint (void)
3460 {
3461   struct program_space *pspace;
3462   struct cleanup *old_chain;
3463
3464   old_chain = save_current_program_space ();
3465
3466   ALL_PSPACES (pspace)
3467   {
3468     struct objfile *objfile;
3469
3470     set_current_program_space (pspace);
3471
3472     ALL_OBJFILES (objfile)
3473     {
3474       int i;
3475       struct gdbarch *gdbarch;
3476       struct breakpoint_objfile_data *bp_objfile_data;
3477
3478       gdbarch = get_objfile_arch (objfile);
3479
3480       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3481
3482       if (!bp_objfile_data->longjmp_searched)
3483         {
3484           VEC (probe_p) *ret;
3485
3486           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3487           if (ret != NULL)
3488             {
3489               /* We are only interested in checking one element.  */
3490               struct probe *p = VEC_index (probe_p, ret, 0);
3491
3492               if (!can_evaluate_probe_arguments (p))
3493                 {
3494                   /* We cannot use the probe interface here, because it does
3495                      not know how to evaluate arguments.  */
3496                   VEC_free (probe_p, ret);
3497                   ret = NULL;
3498                 }
3499             }
3500           bp_objfile_data->longjmp_probes = ret;
3501           bp_objfile_data->longjmp_searched = 1;
3502         }
3503
3504       if (bp_objfile_data->longjmp_probes != NULL)
3505         {
3506           int i;
3507           struct probe *probe;
3508           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3509
3510           for (i = 0;
3511                VEC_iterate (probe_p,
3512                             bp_objfile_data->longjmp_probes,
3513                             i, probe);
3514                ++i)
3515             {
3516               struct breakpoint *b;
3517
3518               b = create_internal_breakpoint (gdbarch,
3519                                               get_probe_address (probe,
3520                                                                  objfile),
3521                                               bp_longjmp_master,
3522                                               &internal_breakpoint_ops);
3523               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3524               b->enable_state = bp_disabled;
3525             }
3526
3527           continue;
3528         }
3529
3530       if (!gdbarch_get_longjmp_target_p (gdbarch))
3531         continue;
3532
3533       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3534         {
3535           struct breakpoint *b;
3536           const char *func_name;
3537           CORE_ADDR addr;
3538
3539           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3540             continue;
3541
3542           func_name = longjmp_names[i];
3543           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3544             {
3545               struct bound_minimal_symbol m;
3546
3547               m = lookup_minimal_symbol_text (func_name, objfile);
3548               if (m.minsym == NULL)
3549                 {
3550                   /* Prevent future lookups in this objfile.  */
3551                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3552                   continue;
3553                 }
3554               bp_objfile_data->longjmp_msym[i] = m;
3555             }
3556
3557           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3558           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3559                                           &internal_breakpoint_ops);
3560           b->addr_string = xstrdup (func_name);
3561           b->enable_state = bp_disabled;
3562         }
3563     }
3564   }
3565   update_global_location_list (UGLL_MAY_INSERT);
3566
3567   do_cleanups (old_chain);
3568 }
3569
3570 /* Create a master std::terminate breakpoint.  */
3571 static void
3572 create_std_terminate_master_breakpoint (void)
3573 {
3574   struct program_space *pspace;
3575   struct cleanup *old_chain;
3576   const char *const func_name = "std::terminate()";
3577
3578   old_chain = save_current_program_space ();
3579
3580   ALL_PSPACES (pspace)
3581   {
3582     struct objfile *objfile;
3583     CORE_ADDR addr;
3584
3585     set_current_program_space (pspace);
3586
3587     ALL_OBJFILES (objfile)
3588     {
3589       struct breakpoint *b;
3590       struct breakpoint_objfile_data *bp_objfile_data;
3591
3592       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3593
3594       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3595         continue;
3596
3597       if (bp_objfile_data->terminate_msym.minsym == NULL)
3598         {
3599           struct bound_minimal_symbol m;
3600
3601           m = lookup_minimal_symbol (func_name, NULL, objfile);
3602           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3603                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3604             {
3605               /* Prevent future lookups in this objfile.  */
3606               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3607               continue;
3608             }
3609           bp_objfile_data->terminate_msym = m;
3610         }
3611
3612       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3613       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3614                                       bp_std_terminate_master,
3615                                       &internal_breakpoint_ops);
3616       b->addr_string = xstrdup (func_name);
3617       b->enable_state = bp_disabled;
3618     }
3619   }
3620
3621   update_global_location_list (UGLL_MAY_INSERT);
3622
3623   do_cleanups (old_chain);
3624 }
3625
3626 /* Install a master breakpoint on the unwinder's debug hook.  */
3627
3628 static void
3629 create_exception_master_breakpoint (void)
3630 {
3631   struct objfile *objfile;
3632   const char *const func_name = "_Unwind_DebugHook";
3633
3634   ALL_OBJFILES (objfile)
3635     {
3636       struct breakpoint *b;
3637       struct gdbarch *gdbarch;
3638       struct breakpoint_objfile_data *bp_objfile_data;
3639       CORE_ADDR addr;
3640
3641       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3642
3643       /* We prefer the SystemTap probe point if it exists.  */
3644       if (!bp_objfile_data->exception_searched)
3645         {
3646           VEC (probe_p) *ret;
3647
3648           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3649
3650           if (ret != NULL)
3651             {
3652               /* We are only interested in checking one element.  */
3653               struct probe *p = VEC_index (probe_p, ret, 0);
3654
3655               if (!can_evaluate_probe_arguments (p))
3656                 {
3657                   /* We cannot use the probe interface here, because it does
3658                      not know how to evaluate arguments.  */
3659                   VEC_free (probe_p, ret);
3660                   ret = NULL;
3661                 }
3662             }
3663           bp_objfile_data->exception_probes = ret;
3664           bp_objfile_data->exception_searched = 1;
3665         }
3666
3667       if (bp_objfile_data->exception_probes != NULL)
3668         {
3669           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3670           int i;
3671           struct probe *probe;
3672
3673           for (i = 0;
3674                VEC_iterate (probe_p,
3675                             bp_objfile_data->exception_probes,
3676                             i, probe);
3677                ++i)
3678             {
3679               struct breakpoint *b;
3680
3681               b = create_internal_breakpoint (gdbarch,
3682                                               get_probe_address (probe,
3683                                                                  objfile),
3684                                               bp_exception_master,
3685                                               &internal_breakpoint_ops);
3686               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3687               b->enable_state = bp_disabled;
3688             }
3689
3690           continue;
3691         }
3692
3693       /* Otherwise, try the hook function.  */
3694
3695       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3696         continue;
3697
3698       gdbarch = get_objfile_arch (objfile);
3699
3700       if (bp_objfile_data->exception_msym.minsym == NULL)
3701         {
3702           struct bound_minimal_symbol debug_hook;
3703
3704           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3705           if (debug_hook.minsym == NULL)
3706             {
3707               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3708               continue;
3709             }
3710
3711           bp_objfile_data->exception_msym = debug_hook;
3712         }
3713
3714       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3715       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3716                                                  &current_target);
3717       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3718                                       &internal_breakpoint_ops);
3719       b->addr_string = xstrdup (func_name);
3720       b->enable_state = bp_disabled;
3721     }
3722
3723   update_global_location_list (UGLL_MAY_INSERT);
3724 }
3725
3726 void
3727 update_breakpoints_after_exec (void)
3728 {
3729   struct breakpoint *b, *b_tmp;
3730   struct bp_location *bploc, **bplocp_tmp;
3731
3732   /* We're about to delete breakpoints from GDB's lists.  If the
3733      INSERTED flag is true, GDB will try to lift the breakpoints by
3734      writing the breakpoints' "shadow contents" back into memory.  The
3735      "shadow contents" are NOT valid after an exec, so GDB should not
3736      do that.  Instead, the target is responsible from marking
3737      breakpoints out as soon as it detects an exec.  We don't do that
3738      here instead, because there may be other attempts to delete
3739      breakpoints after detecting an exec and before reaching here.  */
3740   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3741     if (bploc->pspace == current_program_space)
3742       gdb_assert (!bploc->inserted);
3743
3744   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3745   {
3746     if (b->pspace != current_program_space)
3747       continue;
3748
3749     /* Solib breakpoints must be explicitly reset after an exec().  */
3750     if (b->type == bp_shlib_event)
3751       {
3752         delete_breakpoint (b);
3753         continue;
3754       }
3755
3756     /* JIT breakpoints must be explicitly reset after an exec().  */
3757     if (b->type == bp_jit_event)
3758       {
3759         delete_breakpoint (b);
3760         continue;
3761       }
3762
3763     /* Thread event breakpoints must be set anew after an exec(),
3764        as must overlay event and longjmp master breakpoints.  */
3765     if (b->type == bp_thread_event || b->type == bp_overlay_event
3766         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3767         || b->type == bp_exception_master)
3768       {
3769         delete_breakpoint (b);
3770         continue;
3771       }
3772
3773     /* Step-resume breakpoints are meaningless after an exec().  */
3774     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3775       {
3776         delete_breakpoint (b);
3777         continue;
3778       }
3779
3780     /* Longjmp and longjmp-resume breakpoints are also meaningless
3781        after an exec.  */
3782     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3783         || b->type == bp_longjmp_call_dummy
3784         || b->type == bp_exception || b->type == bp_exception_resume)
3785       {
3786         delete_breakpoint (b);
3787         continue;
3788       }
3789
3790     if (b->type == bp_catchpoint)
3791       {
3792         /* For now, none of the bp_catchpoint breakpoints need to
3793            do anything at this point.  In the future, if some of
3794            the catchpoints need to something, we will need to add
3795            a new method, and call this method from here.  */
3796         continue;
3797       }
3798
3799     /* bp_finish is a special case.  The only way we ought to be able
3800        to see one of these when an exec() has happened, is if the user
3801        caught a vfork, and then said "finish".  Ordinarily a finish just
3802        carries them to the call-site of the current callee, by setting
3803        a temporary bp there and resuming.  But in this case, the finish
3804        will carry them entirely through the vfork & exec.
3805
3806        We don't want to allow a bp_finish to remain inserted now.  But
3807        we can't safely delete it, 'cause finish_command has a handle to
3808        the bp on a bpstat, and will later want to delete it.  There's a
3809        chance (and I've seen it happen) that if we delete the bp_finish
3810        here, that its storage will get reused by the time finish_command
3811        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3812        We really must allow finish_command to delete a bp_finish.
3813
3814        In the absence of a general solution for the "how do we know
3815        it's safe to delete something others may have handles to?"
3816        problem, what we'll do here is just uninsert the bp_finish, and
3817        let finish_command delete it.
3818
3819        (We know the bp_finish is "doomed" in the sense that it's
3820        momentary, and will be deleted as soon as finish_command sees
3821        the inferior stopped.  So it doesn't matter that the bp's
3822        address is probably bogus in the new a.out, unlike e.g., the
3823        solib breakpoints.)  */
3824
3825     if (b->type == bp_finish)
3826       {
3827         continue;
3828       }
3829
3830     /* Without a symbolic address, we have little hope of the
3831        pre-exec() address meaning the same thing in the post-exec()
3832        a.out.  */
3833     if (b->addr_string == NULL)
3834       {
3835         delete_breakpoint (b);
3836         continue;
3837       }
3838   }
3839 }
3840
3841 int
3842 detach_breakpoints (ptid_t ptid)
3843 {
3844   struct bp_location *bl, **blp_tmp;
3845   int val = 0;
3846   struct cleanup *old_chain = save_inferior_ptid ();
3847   struct inferior *inf = current_inferior ();
3848
3849   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3850     error (_("Cannot detach breakpoints of inferior_ptid"));
3851
3852   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3853   inferior_ptid = ptid;
3854   ALL_BP_LOCATIONS (bl, blp_tmp)
3855   {
3856     if (bl->pspace != inf->pspace)
3857       continue;
3858
3859     /* This function must physically remove breakpoints locations
3860        from the specified ptid, without modifying the breakpoint
3861        package's state.  Locations of type bp_loc_other are only
3862        maintained at GDB side.  So, there is no need to remove
3863        these bp_loc_other locations.  Moreover, removing these
3864        would modify the breakpoint package's state.  */
3865     if (bl->loc_type == bp_loc_other)
3866       continue;
3867
3868     if (bl->inserted)
3869       val |= remove_breakpoint_1 (bl, mark_inserted);
3870   }
3871
3872   /* Detach single-step breakpoints as well.  */
3873   detach_single_step_breakpoints ();
3874
3875   do_cleanups (old_chain);
3876   return val;
3877 }
3878
3879 /* Remove the breakpoint location BL from the current address space.
3880    Note that this is used to detach breakpoints from a child fork.
3881    When we get here, the child isn't in the inferior list, and neither
3882    do we have objects to represent its address space --- we should
3883    *not* look at bl->pspace->aspace here.  */
3884
3885 static int
3886 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3887 {
3888   int val;
3889
3890   /* BL is never in moribund_locations by our callers.  */
3891   gdb_assert (bl->owner != NULL);
3892
3893   if (bl->owner->enable_state == bp_permanent)
3894     /* Permanent breakpoints cannot be inserted or removed.  */
3895     return 0;
3896
3897   /* The type of none suggests that owner is actually deleted.
3898      This should not ever happen.  */
3899   gdb_assert (bl->owner->type != bp_none);
3900
3901   if (bl->loc_type == bp_loc_software_breakpoint
3902       || bl->loc_type == bp_loc_hardware_breakpoint)
3903     {
3904       /* "Normal" instruction breakpoint: either the standard
3905          trap-instruction bp (bp_breakpoint), or a
3906          bp_hardware_breakpoint.  */
3907
3908       /* First check to see if we have to handle an overlay.  */
3909       if (overlay_debugging == ovly_off
3910           || bl->section == NULL
3911           || !(section_is_overlay (bl->section)))
3912         {
3913           /* No overlay handling: just remove the breakpoint.  */
3914
3915           /* If we're trying to uninsert a memory breakpoint that we
3916              know is set in a dynamic object that is marked
3917              shlib_disabled, then either the dynamic object was
3918              removed with "remove-symbol-file" or with
3919              "nosharedlibrary".  In the former case, we don't know
3920              whether another dynamic object might have loaded over the
3921              breakpoint's address -- the user might well let us know
3922              about it next with add-symbol-file (the whole point of
3923              add-symbol-file is letting the user manually maintain a
3924              list of dynamically loaded objects).  If we have the
3925              breakpoint's shadow memory, that is, this is a software
3926              breakpoint managed by GDB, check whether the breakpoint
3927              is still inserted in memory, to avoid overwriting wrong
3928              code with stale saved shadow contents.  Note that HW
3929              breakpoints don't have shadow memory, as they're
3930              implemented using a mechanism that is not dependent on
3931              being able to modify the target's memory, and as such
3932              they should always be removed.  */
3933           if (bl->shlib_disabled
3934               && bl->target_info.shadow_len != 0
3935               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3936             val = 0;
3937           else
3938             val = bl->owner->ops->remove_location (bl);
3939         }
3940       else
3941         {
3942           /* This breakpoint is in an overlay section.
3943              Did we set a breakpoint at the LMA?  */
3944           if (!overlay_events_enabled)
3945               {
3946                 /* Yes -- overlay event support is not active, so we
3947                    should have set a breakpoint at the LMA.  Remove it.  
3948                 */
3949                 /* Ignore any failures: if the LMA is in ROM, we will
3950                    have already warned when we failed to insert it.  */
3951                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3952                   target_remove_hw_breakpoint (bl->gdbarch,
3953                                                &bl->overlay_target_info);
3954                 else
3955                   target_remove_breakpoint (bl->gdbarch,
3956                                             &bl->overlay_target_info);
3957               }
3958           /* Did we set a breakpoint at the VMA? 
3959              If so, we will have marked the breakpoint 'inserted'.  */
3960           if (bl->inserted)
3961             {
3962               /* Yes -- remove it.  Previously we did not bother to
3963                  remove the breakpoint if the section had been
3964                  unmapped, but let's not rely on that being safe.  We
3965                  don't know what the overlay manager might do.  */
3966
3967               /* However, we should remove *software* breakpoints only
3968                  if the section is still mapped, or else we overwrite
3969                  wrong code with the saved shadow contents.  */
3970               if (bl->loc_type == bp_loc_hardware_breakpoint
3971                   || section_is_mapped (bl->section))
3972                 val = bl->owner->ops->remove_location (bl);
3973               else
3974                 val = 0;
3975             }
3976           else
3977             {
3978               /* No -- not inserted, so no need to remove.  No error.  */
3979               val = 0;
3980             }
3981         }
3982
3983       /* In some cases, we might not be able to remove a breakpoint in
3984          a shared library that has already been removed, but we have
3985          not yet processed the shlib unload event.  Similarly for an
3986          unloaded add-symbol-file object - the user might not yet have
3987          had the chance to remove-symbol-file it.  shlib_disabled will
3988          be set if the library/object has already been removed, but
3989          the breakpoint hasn't been uninserted yet, e.g., after
3990          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3991          always-inserted mode.  */
3992       if (val
3993           && (bl->loc_type == bp_loc_software_breakpoint
3994               && (bl->shlib_disabled
3995                   || solib_name_from_address (bl->pspace, bl->address)
3996                   || shared_objfile_contains_address_p (bl->pspace,
3997                                                         bl->address))))
3998         val = 0;
3999
4000       if (val)
4001         return val;
4002       bl->inserted = (is == mark_inserted);
4003     }
4004   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4005     {
4006       gdb_assert (bl->owner->ops != NULL
4007                   && bl->owner->ops->remove_location != NULL);
4008
4009       bl->inserted = (is == mark_inserted);
4010       bl->owner->ops->remove_location (bl);
4011
4012       /* Failure to remove any of the hardware watchpoints comes here.  */
4013       if ((is == mark_uninserted) && (bl->inserted))
4014         warning (_("Could not remove hardware watchpoint %d."),
4015                  bl->owner->number);
4016     }
4017   else if (bl->owner->type == bp_catchpoint
4018            && breakpoint_enabled (bl->owner)
4019            && !bl->duplicate)
4020     {
4021       gdb_assert (bl->owner->ops != NULL
4022                   && bl->owner->ops->remove_location != NULL);
4023
4024       val = bl->owner->ops->remove_location (bl);
4025       if (val)
4026         return val;
4027
4028       bl->inserted = (is == mark_inserted);
4029     }
4030
4031   return 0;
4032 }
4033
4034 static int
4035 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
4036 {
4037   int ret;
4038   struct cleanup *old_chain;
4039
4040   /* BL is never in moribund_locations by our callers.  */
4041   gdb_assert (bl->owner != NULL);
4042
4043   if (bl->owner->enable_state == bp_permanent)
4044     /* Permanent breakpoints cannot be inserted or removed.  */
4045     return 0;
4046
4047   /* The type of none suggests that owner is actually deleted.
4048      This should not ever happen.  */
4049   gdb_assert (bl->owner->type != bp_none);
4050
4051   old_chain = save_current_space_and_thread ();
4052
4053   switch_to_program_space_and_thread (bl->pspace);
4054
4055   ret = remove_breakpoint_1 (bl, is);
4056
4057   do_cleanups (old_chain);
4058   return ret;
4059 }
4060
4061 /* Clear the "inserted" flag in all breakpoints.  */
4062
4063 void
4064 mark_breakpoints_out (void)
4065 {
4066   struct bp_location *bl, **blp_tmp;
4067
4068   ALL_BP_LOCATIONS (bl, blp_tmp)
4069     if (bl->pspace == current_program_space)
4070       bl->inserted = 0;
4071 }
4072
4073 /* Clear the "inserted" flag in all breakpoints and delete any
4074    breakpoints which should go away between runs of the program.
4075
4076    Plus other such housekeeping that has to be done for breakpoints
4077    between runs.
4078
4079    Note: this function gets called at the end of a run (by
4080    generic_mourn_inferior) and when a run begins (by
4081    init_wait_for_inferior).  */
4082
4083
4084
4085 void
4086 breakpoint_init_inferior (enum inf_context context)
4087 {
4088   struct breakpoint *b, *b_tmp;
4089   struct bp_location *bl, **blp_tmp;
4090   int ix;
4091   struct program_space *pspace = current_program_space;
4092
4093   /* If breakpoint locations are shared across processes, then there's
4094      nothing to do.  */
4095   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4096     return;
4097
4098   ALL_BP_LOCATIONS (bl, blp_tmp)
4099   {
4100     /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4101     if (bl->pspace == pspace
4102         && bl->owner->enable_state != bp_permanent)
4103       bl->inserted = 0;
4104   }
4105
4106   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4107   {
4108     if (b->loc && b->loc->pspace != pspace)
4109       continue;
4110
4111     switch (b->type)
4112       {
4113       case bp_call_dummy:
4114       case bp_longjmp_call_dummy:
4115
4116         /* If the call dummy breakpoint is at the entry point it will
4117            cause problems when the inferior is rerun, so we better get
4118            rid of it.  */
4119
4120       case bp_watchpoint_scope:
4121
4122         /* Also get rid of scope breakpoints.  */
4123
4124       case bp_shlib_event:
4125
4126         /* Also remove solib event breakpoints.  Their addresses may
4127            have changed since the last time we ran the program.
4128            Actually we may now be debugging against different target;
4129            and so the solib backend that installed this breakpoint may
4130            not be used in by the target.  E.g.,
4131
4132            (gdb) file prog-linux
4133            (gdb) run               # native linux target
4134            ...
4135            (gdb) kill
4136            (gdb) file prog-win.exe
4137            (gdb) tar rem :9999     # remote Windows gdbserver.
4138         */
4139
4140       case bp_step_resume:
4141
4142         /* Also remove step-resume breakpoints.  */
4143
4144         delete_breakpoint (b);
4145         break;
4146
4147       case bp_watchpoint:
4148       case bp_hardware_watchpoint:
4149       case bp_read_watchpoint:
4150       case bp_access_watchpoint:
4151         {
4152           struct watchpoint *w = (struct watchpoint *) b;
4153
4154           /* Likewise for watchpoints on local expressions.  */
4155           if (w->exp_valid_block != NULL)
4156             delete_breakpoint (b);
4157           else if (context == inf_starting)
4158             {
4159               /* Reset val field to force reread of starting value in
4160                  insert_breakpoints.  */
4161               if (w->val)
4162                 value_free (w->val);
4163               w->val = NULL;
4164               w->val_valid = 0;
4165           }
4166         }
4167         break;
4168       default:
4169         break;
4170       }
4171   }
4172
4173   /* Get rid of the moribund locations.  */
4174   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4175     decref_bp_location (&bl);
4176   VEC_free (bp_location_p, moribund_locations);
4177 }
4178
4179 /* These functions concern about actual breakpoints inserted in the
4180    target --- to e.g. check if we need to do decr_pc adjustment or if
4181    we need to hop over the bkpt --- so we check for address space
4182    match, not program space.  */
4183
4184 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4185    exists at PC.  It returns ordinary_breakpoint_here if it's an
4186    ordinary breakpoint, or permanent_breakpoint_here if it's a
4187    permanent breakpoint.
4188    - When continuing from a location with an ordinary breakpoint, we
4189      actually single step once before calling insert_breakpoints.
4190    - When continuing from a location with a permanent breakpoint, we
4191      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4192      the target, to advance the PC past the breakpoint.  */
4193
4194 enum breakpoint_here
4195 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4196 {
4197   struct bp_location *bl, **blp_tmp;
4198   int any_breakpoint_here = 0;
4199
4200   ALL_BP_LOCATIONS (bl, blp_tmp)
4201     {
4202       if (bl->loc_type != bp_loc_software_breakpoint
4203           && bl->loc_type != bp_loc_hardware_breakpoint)
4204         continue;
4205
4206       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4207       if ((breakpoint_enabled (bl->owner)
4208            || bl->owner->enable_state == bp_permanent)
4209           && breakpoint_location_address_match (bl, aspace, pc))
4210         {
4211           if (overlay_debugging 
4212               && section_is_overlay (bl->section)
4213               && !section_is_mapped (bl->section))
4214             continue;           /* unmapped overlay -- can't be a match */
4215           else if (bl->owner->enable_state == bp_permanent)
4216             return permanent_breakpoint_here;
4217           else
4218             any_breakpoint_here = 1;
4219         }
4220     }
4221
4222   return any_breakpoint_here ? ordinary_breakpoint_here : 0;
4223 }
4224
4225 /* Return true if there's a moribund breakpoint at PC.  */
4226
4227 int
4228 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4229 {
4230   struct bp_location *loc;
4231   int ix;
4232
4233   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4234     if (breakpoint_location_address_match (loc, aspace, pc))
4235       return 1;
4236
4237   return 0;
4238 }
4239
4240 /* Returns non-zero if there's a breakpoint inserted at PC, which is
4241    inserted using regular breakpoint_chain / bp_location array
4242    mechanism.  This does not check for single-step breakpoints, which
4243    are inserted and removed using direct target manipulation.  */
4244
4245 int
4246 regular_breakpoint_inserted_here_p (struct address_space *aspace, 
4247                                     CORE_ADDR pc)
4248 {
4249   struct bp_location *bl, **blp_tmp;
4250
4251   ALL_BP_LOCATIONS (bl, blp_tmp)
4252     {
4253       if (bl->loc_type != bp_loc_software_breakpoint
4254           && bl->loc_type != bp_loc_hardware_breakpoint)
4255         continue;
4256
4257       if (bl->inserted
4258           && breakpoint_location_address_match (bl, aspace, pc))
4259         {
4260           if (overlay_debugging 
4261               && section_is_overlay (bl->section)
4262               && !section_is_mapped (bl->section))
4263             continue;           /* unmapped overlay -- can't be a match */
4264           else
4265             return 1;
4266         }
4267     }
4268   return 0;
4269 }
4270
4271 /* Returns non-zero iff there's either regular breakpoint
4272    or a single step breakpoint inserted at PC.  */
4273
4274 int
4275 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4276 {
4277   if (regular_breakpoint_inserted_here_p (aspace, pc))
4278     return 1;
4279
4280   if (single_step_breakpoint_inserted_here_p (aspace, pc))
4281     return 1;
4282
4283   return 0;
4284 }
4285
4286 /* Ignoring deprecated raw breakpoints, return non-zero iff there is a
4287    software breakpoint inserted at PC.  */
4288
4289 static struct bp_location *
4290 find_non_raw_software_breakpoint_inserted_here (struct address_space *aspace,
4291                                                 CORE_ADDR pc)
4292 {
4293   struct bp_location *bl, **blp_tmp;
4294
4295   ALL_BP_LOCATIONS (bl, blp_tmp)
4296     {
4297       if (bl->loc_type != bp_loc_software_breakpoint)
4298         continue;
4299
4300       if (bl->inserted
4301           && breakpoint_address_match (bl->pspace->aspace, bl->address,
4302                                        aspace, pc))
4303         {
4304           if (overlay_debugging 
4305               && section_is_overlay (bl->section)
4306               && !section_is_mapped (bl->section))
4307             continue;           /* unmapped overlay -- can't be a match */
4308           else
4309             return bl;
4310         }
4311     }
4312
4313   return NULL;
4314 }
4315
4316 /* This function returns non-zero iff there is a software breakpoint
4317    inserted at PC.  */
4318
4319 int
4320 software_breakpoint_inserted_here_p (struct address_space *aspace,
4321                                      CORE_ADDR pc)
4322 {
4323   if (find_non_raw_software_breakpoint_inserted_here (aspace, pc) != NULL)
4324     return 1;
4325
4326   /* Also check for software single-step breakpoints.  */
4327   if (single_step_breakpoint_inserted_here_p (aspace, pc))
4328     return 1;
4329
4330   return 0;
4331 }
4332
4333 int
4334 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4335                                        CORE_ADDR addr, ULONGEST len)
4336 {
4337   struct breakpoint *bpt;
4338
4339   ALL_BREAKPOINTS (bpt)
4340     {
4341       struct bp_location *loc;
4342
4343       if (bpt->type != bp_hardware_watchpoint
4344           && bpt->type != bp_access_watchpoint)
4345         continue;
4346
4347       if (!breakpoint_enabled (bpt))
4348         continue;
4349
4350       for (loc = bpt->loc; loc; loc = loc->next)
4351         if (loc->pspace->aspace == aspace && loc->inserted)
4352           {
4353             CORE_ADDR l, h;
4354
4355             /* Check for intersection.  */
4356             l = max (loc->address, addr);
4357             h = min (loc->address + loc->length, addr + len);
4358             if (l < h)
4359               return 1;
4360           }
4361     }
4362   return 0;
4363 }
4364
4365 /* breakpoint_thread_match (PC, PTID) returns true if the breakpoint at
4366    PC is valid for process/thread PTID.  */
4367
4368 int
4369 breakpoint_thread_match (struct address_space *aspace, CORE_ADDR pc,
4370                          ptid_t ptid)
4371 {
4372   struct bp_location *bl, **blp_tmp;
4373   /* The thread and task IDs associated to PTID, computed lazily.  */
4374   int thread = -1;
4375   int task = 0;
4376   
4377   ALL_BP_LOCATIONS (bl, blp_tmp)
4378     {
4379       if (bl->loc_type != bp_loc_software_breakpoint
4380           && bl->loc_type != bp_loc_hardware_breakpoint)
4381         continue;
4382
4383       /* ALL_BP_LOCATIONS bp_location has bl->OWNER always non-NULL.  */
4384       if (!breakpoint_enabled (bl->owner)
4385           && bl->owner->enable_state != bp_permanent)
4386         continue;
4387
4388       if (!breakpoint_location_address_match (bl, aspace, pc))
4389         continue;
4390
4391       if (bl->owner->thread != -1)
4392         {
4393           /* This is a thread-specific breakpoint.  Check that ptid
4394              matches that thread.  If thread hasn't been computed yet,
4395              it is now time to do so.  */
4396           if (thread == -1)
4397             thread = pid_to_thread_id (ptid);
4398           if (bl->owner->thread != thread)
4399             continue;
4400         }
4401
4402       if (bl->owner->task != 0)
4403         {
4404           /* This is a task-specific breakpoint.  Check that ptid
4405              matches that task.  If task hasn't been computed yet,
4406              it is now time to do so.  */
4407           if (task == 0)
4408             task = ada_get_task_number (ptid);
4409           if (bl->owner->task != task)
4410             continue;
4411         }
4412
4413       if (overlay_debugging 
4414           && section_is_overlay (bl->section)
4415           && !section_is_mapped (bl->section))
4416         continue;           /* unmapped overlay -- can't be a match */
4417
4418       return 1;
4419     }
4420
4421   return 0;
4422 }
4423 \f
4424
4425 /* bpstat stuff.  External routines' interfaces are documented
4426    in breakpoint.h.  */
4427
4428 int
4429 is_catchpoint (struct breakpoint *ep)
4430 {
4431   return (ep->type == bp_catchpoint);
4432 }
4433
4434 /* Frees any storage that is part of a bpstat.  Does not walk the
4435    'next' chain.  */
4436
4437 static void
4438 bpstat_free (bpstat bs)
4439 {
4440   if (bs->old_val != NULL)
4441     value_free (bs->old_val);
4442   decref_counted_command_line (&bs->commands);
4443   decref_bp_location (&bs->bp_location_at);
4444   xfree (bs);
4445 }
4446
4447 /* Clear a bpstat so that it says we are not at any breakpoint.
4448    Also free any storage that is part of a bpstat.  */
4449
4450 void
4451 bpstat_clear (bpstat *bsp)
4452 {
4453   bpstat p;
4454   bpstat q;
4455
4456   if (bsp == 0)
4457     return;
4458   p = *bsp;
4459   while (p != NULL)
4460     {
4461       q = p->next;
4462       bpstat_free (p);
4463       p = q;
4464     }
4465   *bsp = NULL;
4466 }
4467
4468 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4469    is part of the bpstat is copied as well.  */
4470
4471 bpstat
4472 bpstat_copy (bpstat bs)
4473 {
4474   bpstat p = NULL;
4475   bpstat tmp;
4476   bpstat retval = NULL;
4477
4478   if (bs == NULL)
4479     return bs;
4480
4481   for (; bs != NULL; bs = bs->next)
4482     {
4483       tmp = (bpstat) xmalloc (sizeof (*tmp));
4484       memcpy (tmp, bs, sizeof (*tmp));
4485       incref_counted_command_line (tmp->commands);
4486       incref_bp_location (tmp->bp_location_at);
4487       if (bs->old_val != NULL)
4488         {
4489           tmp->old_val = value_copy (bs->old_val);
4490           release_value (tmp->old_val);
4491         }
4492
4493       if (p == NULL)
4494         /* This is the first thing in the chain.  */
4495         retval = tmp;
4496       else
4497         p->next = tmp;
4498       p = tmp;
4499     }
4500   p->next = NULL;
4501   return retval;
4502 }
4503
4504 /* Find the bpstat associated with this breakpoint.  */
4505
4506 bpstat
4507 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4508 {
4509   if (bsp == NULL)
4510     return NULL;
4511
4512   for (; bsp != NULL; bsp = bsp->next)
4513     {
4514       if (bsp->breakpoint_at == breakpoint)
4515         return bsp;
4516     }
4517   return NULL;
4518 }
4519
4520 /* See breakpoint.h.  */
4521
4522 int
4523 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4524 {
4525   for (; bsp != NULL; bsp = bsp->next)
4526     {
4527       if (bsp->breakpoint_at == NULL)
4528         {
4529           /* A moribund location can never explain a signal other than
4530              GDB_SIGNAL_TRAP.  */
4531           if (sig == GDB_SIGNAL_TRAP)
4532             return 1;
4533         }
4534       else
4535         {
4536           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4537                                                         sig))
4538             return 1;
4539         }
4540     }
4541
4542   return 0;
4543 }
4544
4545 /* Put in *NUM the breakpoint number of the first breakpoint we are
4546    stopped at.  *BSP upon return is a bpstat which points to the
4547    remaining breakpoints stopped at (but which is not guaranteed to be
4548    good for anything but further calls to bpstat_num).
4549
4550    Return 0 if passed a bpstat which does not indicate any breakpoints.
4551    Return -1 if stopped at a breakpoint that has been deleted since
4552    we set it.
4553    Return 1 otherwise.  */
4554
4555 int
4556 bpstat_num (bpstat *bsp, int *num)
4557 {
4558   struct breakpoint *b;
4559
4560   if ((*bsp) == NULL)
4561     return 0;                   /* No more breakpoint values */
4562
4563   /* We assume we'll never have several bpstats that correspond to a
4564      single breakpoint -- otherwise, this function might return the
4565      same number more than once and this will look ugly.  */
4566   b = (*bsp)->breakpoint_at;
4567   *bsp = (*bsp)->next;
4568   if (b == NULL)
4569     return -1;                  /* breakpoint that's been deleted since */
4570
4571   *num = b->number;             /* We have its number */
4572   return 1;
4573 }
4574
4575 /* See breakpoint.h.  */
4576
4577 void
4578 bpstat_clear_actions (void)
4579 {
4580   struct thread_info *tp;
4581   bpstat bs;
4582
4583   if (ptid_equal (inferior_ptid, null_ptid))
4584     return;
4585
4586   tp = find_thread_ptid (inferior_ptid);
4587   if (tp == NULL)
4588     return;
4589
4590   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4591     {
4592       decref_counted_command_line (&bs->commands);
4593
4594       if (bs->old_val != NULL)
4595         {
4596           value_free (bs->old_val);
4597           bs->old_val = NULL;
4598         }
4599     }
4600 }
4601
4602 /* Called when a command is about to proceed the inferior.  */
4603
4604 static void
4605 breakpoint_about_to_proceed (void)
4606 {
4607   if (!ptid_equal (inferior_ptid, null_ptid))
4608     {
4609       struct thread_info *tp = inferior_thread ();
4610
4611       /* Allow inferior function calls in breakpoint commands to not
4612          interrupt the command list.  When the call finishes
4613          successfully, the inferior will be standing at the same
4614          breakpoint as if nothing happened.  */
4615       if (tp->control.in_infcall)
4616         return;
4617     }
4618
4619   breakpoint_proceeded = 1;
4620 }
4621
4622 /* Stub for cleaning up our state if we error-out of a breakpoint
4623    command.  */
4624 static void
4625 cleanup_executing_breakpoints (void *ignore)
4626 {
4627   executing_breakpoint_commands = 0;
4628 }
4629
4630 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4631    or its equivalent.  */
4632
4633 static int
4634 command_line_is_silent (struct command_line *cmd)
4635 {
4636   return cmd && (strcmp ("silent", cmd->line) == 0
4637                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4638 }
4639
4640 /* Execute all the commands associated with all the breakpoints at
4641    this location.  Any of these commands could cause the process to
4642    proceed beyond this point, etc.  We look out for such changes by
4643    checking the global "breakpoint_proceeded" after each command.
4644
4645    Returns true if a breakpoint command resumed the inferior.  In that
4646    case, it is the caller's responsibility to recall it again with the
4647    bpstat of the current thread.  */
4648
4649 static int
4650 bpstat_do_actions_1 (bpstat *bsp)
4651 {
4652   bpstat bs;
4653   struct cleanup *old_chain;
4654   int again = 0;
4655
4656   /* Avoid endless recursion if a `source' command is contained
4657      in bs->commands.  */
4658   if (executing_breakpoint_commands)
4659     return 0;
4660
4661   executing_breakpoint_commands = 1;
4662   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4663
4664   prevent_dont_repeat ();
4665
4666   /* This pointer will iterate over the list of bpstat's.  */
4667   bs = *bsp;
4668
4669   breakpoint_proceeded = 0;
4670   for (; bs != NULL; bs = bs->next)
4671     {
4672       struct counted_command_line *ccmd;
4673       struct command_line *cmd;
4674       struct cleanup *this_cmd_tree_chain;
4675
4676       /* Take ownership of the BSP's command tree, if it has one.
4677
4678          The command tree could legitimately contain commands like
4679          'step' and 'next', which call clear_proceed_status, which
4680          frees stop_bpstat's command tree.  To make sure this doesn't
4681          free the tree we're executing out from under us, we need to
4682          take ownership of the tree ourselves.  Since a given bpstat's
4683          commands are only executed once, we don't need to copy it; we
4684          can clear the pointer in the bpstat, and make sure we free
4685          the tree when we're done.  */
4686       ccmd = bs->commands;
4687       bs->commands = NULL;
4688       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4689       cmd = ccmd ? ccmd->commands : NULL;
4690       if (command_line_is_silent (cmd))
4691         {
4692           /* The action has been already done by bpstat_stop_status.  */
4693           cmd = cmd->next;
4694         }
4695
4696       while (cmd != NULL)
4697         {
4698           execute_control_command (cmd);
4699
4700           if (breakpoint_proceeded)
4701             break;
4702           else
4703             cmd = cmd->next;
4704         }
4705
4706       /* We can free this command tree now.  */
4707       do_cleanups (this_cmd_tree_chain);
4708
4709       if (breakpoint_proceeded)
4710         {
4711           if (target_can_async_p ())
4712             /* If we are in async mode, then the target might be still
4713                running, not stopped at any breakpoint, so nothing for
4714                us to do here -- just return to the event loop.  */
4715             ;
4716           else
4717             /* In sync mode, when execute_control_command returns
4718                we're already standing on the next breakpoint.
4719                Breakpoint commands for that stop were not run, since
4720                execute_command does not run breakpoint commands --
4721                only command_line_handler does, but that one is not
4722                involved in execution of breakpoint commands.  So, we
4723                can now execute breakpoint commands.  It should be
4724                noted that making execute_command do bpstat actions is
4725                not an option -- in this case we'll have recursive
4726                invocation of bpstat for each breakpoint with a
4727                command, and can easily blow up GDB stack.  Instead, we
4728                return true, which will trigger the caller to recall us
4729                with the new stop_bpstat.  */
4730             again = 1;
4731           break;
4732         }
4733     }
4734   do_cleanups (old_chain);
4735   return again;
4736 }
4737
4738 void
4739 bpstat_do_actions (void)
4740 {
4741   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4742
4743   /* Do any commands attached to breakpoint we are stopped at.  */
4744   while (!ptid_equal (inferior_ptid, null_ptid)
4745          && target_has_execution
4746          && !is_exited (inferior_ptid)
4747          && !is_executing (inferior_ptid))
4748     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4749        and only return when it is stopped at the next breakpoint, we
4750        keep doing breakpoint actions until it returns false to
4751        indicate the inferior was not resumed.  */
4752     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4753       break;
4754
4755   discard_cleanups (cleanup_if_error);
4756 }
4757
4758 /* Print out the (old or new) value associated with a watchpoint.  */
4759
4760 static void
4761 watchpoint_value_print (struct value *val, struct ui_file *stream)
4762 {
4763   if (val == NULL)
4764     fprintf_unfiltered (stream, _("<unreadable>"));
4765   else
4766     {
4767       struct value_print_options opts;
4768       get_user_print_options (&opts);
4769       value_print (val, stream, &opts);
4770     }
4771 }
4772
4773 /* Generic routine for printing messages indicating why we
4774    stopped.  The behavior of this function depends on the value
4775    'print_it' in the bpstat structure.  Under some circumstances we
4776    may decide not to print anything here and delegate the task to
4777    normal_stop().  */
4778
4779 static enum print_stop_action
4780 print_bp_stop_message (bpstat bs)
4781 {
4782   switch (bs->print_it)
4783     {
4784     case print_it_noop:
4785       /* Nothing should be printed for this bpstat entry.  */
4786       return PRINT_UNKNOWN;
4787       break;
4788
4789     case print_it_done:
4790       /* We still want to print the frame, but we already printed the
4791          relevant messages.  */
4792       return PRINT_SRC_AND_LOC;
4793       break;
4794
4795     case print_it_normal:
4796       {
4797         struct breakpoint *b = bs->breakpoint_at;
4798
4799         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4800            which has since been deleted.  */
4801         if (b == NULL)
4802           return PRINT_UNKNOWN;
4803
4804         /* Normal case.  Call the breakpoint's print_it method.  */
4805         return b->ops->print_it (bs);
4806       }
4807       break;
4808
4809     default:
4810       internal_error (__FILE__, __LINE__,
4811                       _("print_bp_stop_message: unrecognized enum value"));
4812       break;
4813     }
4814 }
4815
4816 /* A helper function that prints a shared library stopped event.  */
4817
4818 static void
4819 print_solib_event (int is_catchpoint)
4820 {
4821   int any_deleted
4822     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4823   int any_added
4824     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4825
4826   if (!is_catchpoint)
4827     {
4828       if (any_added || any_deleted)
4829         ui_out_text (current_uiout,
4830                      _("Stopped due to shared library event:\n"));
4831       else
4832         ui_out_text (current_uiout,
4833                      _("Stopped due to shared library event (no "
4834                        "libraries added or removed)\n"));
4835     }
4836
4837   if (ui_out_is_mi_like_p (current_uiout))
4838     ui_out_field_string (current_uiout, "reason",
4839                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4840
4841   if (any_deleted)
4842     {
4843       struct cleanup *cleanup;
4844       char *name;
4845       int ix;
4846
4847       ui_out_text (current_uiout, _("  Inferior unloaded "));
4848       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4849                                                     "removed");
4850       for (ix = 0;
4851            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4852                         ix, name);
4853            ++ix)
4854         {
4855           if (ix > 0)
4856             ui_out_text (current_uiout, "    ");
4857           ui_out_field_string (current_uiout, "library", name);
4858           ui_out_text (current_uiout, "\n");
4859         }
4860
4861       do_cleanups (cleanup);
4862     }
4863
4864   if (any_added)
4865     {
4866       struct so_list *iter;
4867       int ix;
4868       struct cleanup *cleanup;
4869
4870       ui_out_text (current_uiout, _("  Inferior loaded "));
4871       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4872                                                     "added");
4873       for (ix = 0;
4874            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4875                         ix, iter);
4876            ++ix)
4877         {
4878           if (ix > 0)
4879             ui_out_text (current_uiout, "    ");
4880           ui_out_field_string (current_uiout, "library", iter->so_name);
4881           ui_out_text (current_uiout, "\n");
4882         }
4883
4884       do_cleanups (cleanup);
4885     }
4886 }
4887
4888 /* Print a message indicating what happened.  This is called from
4889    normal_stop().  The input to this routine is the head of the bpstat
4890    list - a list of the eventpoints that caused this stop.  KIND is
4891    the target_waitkind for the stopping event.  This
4892    routine calls the generic print routine for printing a message
4893    about reasons for stopping.  This will print (for example) the
4894    "Breakpoint n," part of the output.  The return value of this
4895    routine is one of:
4896
4897    PRINT_UNKNOWN: Means we printed nothing.
4898    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4899    code to print the location.  An example is 
4900    "Breakpoint 1, " which should be followed by
4901    the location.
4902    PRINT_SRC_ONLY: Means we printed something, but there is no need
4903    to also print the location part of the message.
4904    An example is the catch/throw messages, which
4905    don't require a location appended to the end.
4906    PRINT_NOTHING: We have done some printing and we don't need any 
4907    further info to be printed.  */
4908
4909 enum print_stop_action
4910 bpstat_print (bpstat bs, int kind)
4911 {
4912   int val;
4913
4914   /* Maybe another breakpoint in the chain caused us to stop.
4915      (Currently all watchpoints go on the bpstat whether hit or not.
4916      That probably could (should) be changed, provided care is taken
4917      with respect to bpstat_explains_signal).  */
4918   for (; bs; bs = bs->next)
4919     {
4920       val = print_bp_stop_message (bs);
4921       if (val == PRINT_SRC_ONLY 
4922           || val == PRINT_SRC_AND_LOC 
4923           || val == PRINT_NOTHING)
4924         return val;
4925     }
4926
4927   /* If we had hit a shared library event breakpoint,
4928      print_bp_stop_message would print out this message.  If we hit an
4929      OS-level shared library event, do the same thing.  */
4930   if (kind == TARGET_WAITKIND_LOADED)
4931     {
4932       print_solib_event (0);
4933       return PRINT_NOTHING;
4934     }
4935
4936   /* We reached the end of the chain, or we got a null BS to start
4937      with and nothing was printed.  */
4938   return PRINT_UNKNOWN;
4939 }
4940
4941 /* Evaluate the expression EXP and return 1 if value is zero.
4942    This returns the inverse of the condition because it is called
4943    from catch_errors which returns 0 if an exception happened, and if an
4944    exception happens we want execution to stop.
4945    The argument is a "struct expression *" that has been cast to a
4946    "void *" to make it pass through catch_errors.  */
4947
4948 static int
4949 breakpoint_cond_eval (void *exp)
4950 {
4951   struct value *mark = value_mark ();
4952   int i = !value_true (evaluate_expression ((struct expression *) exp));
4953
4954   value_free_to_mark (mark);
4955   return i;
4956 }
4957
4958 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4959
4960 static bpstat
4961 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4962 {
4963   bpstat bs;
4964
4965   bs = (bpstat) xmalloc (sizeof (*bs));
4966   bs->next = NULL;
4967   **bs_link_pointer = bs;
4968   *bs_link_pointer = &bs->next;
4969   bs->breakpoint_at = bl->owner;
4970   bs->bp_location_at = bl;
4971   incref_bp_location (bl);
4972   /* If the condition is false, etc., don't do the commands.  */
4973   bs->commands = NULL;
4974   bs->old_val = NULL;
4975   bs->print_it = print_it_normal;
4976   return bs;
4977 }
4978 \f
4979 /* The target has stopped with waitstatus WS.  Check if any hardware
4980    watchpoints have triggered, according to the target.  */
4981
4982 int
4983 watchpoints_triggered (struct target_waitstatus *ws)
4984 {
4985   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4986   CORE_ADDR addr;
4987   struct breakpoint *b;
4988
4989   if (!stopped_by_watchpoint)
4990     {
4991       /* We were not stopped by a watchpoint.  Mark all watchpoints
4992          as not triggered.  */
4993       ALL_BREAKPOINTS (b)
4994         if (is_hardware_watchpoint (b))
4995           {
4996             struct watchpoint *w = (struct watchpoint *) b;
4997
4998             w->watchpoint_triggered = watch_triggered_no;
4999           }
5000
5001       return 0;
5002     }
5003
5004   if (!target_stopped_data_address (&current_target, &addr))
5005     {
5006       /* We were stopped by a watchpoint, but we don't know where.
5007          Mark all watchpoints as unknown.  */
5008       ALL_BREAKPOINTS (b)
5009         if (is_hardware_watchpoint (b))
5010           {
5011             struct watchpoint *w = (struct watchpoint *) b;
5012
5013             w->watchpoint_triggered = watch_triggered_unknown;
5014           }
5015
5016       return 1;
5017     }
5018
5019   /* The target could report the data address.  Mark watchpoints
5020      affected by this data address as triggered, and all others as not
5021      triggered.  */
5022
5023   ALL_BREAKPOINTS (b)
5024     if (is_hardware_watchpoint (b))
5025       {
5026         struct watchpoint *w = (struct watchpoint *) b;
5027         struct bp_location *loc;
5028
5029         w->watchpoint_triggered = watch_triggered_no;
5030         for (loc = b->loc; loc; loc = loc->next)
5031           {
5032             if (is_masked_watchpoint (b))
5033               {
5034                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
5035                 CORE_ADDR start = loc->address & w->hw_wp_mask;
5036
5037                 if (newaddr == start)
5038                   {
5039                     w->watchpoint_triggered = watch_triggered_yes;
5040                     break;
5041                   }
5042               }
5043             /* Exact match not required.  Within range is sufficient.  */
5044             else if (target_watchpoint_addr_within_range (&current_target,
5045                                                          addr, loc->address,
5046                                                          loc->length))
5047               {
5048                 w->watchpoint_triggered = watch_triggered_yes;
5049                 break;
5050               }
5051           }
5052       }
5053
5054   return 1;
5055 }
5056
5057 /* Possible return values for watchpoint_check (this can't be an enum
5058    because of check_errors).  */
5059 /* The watchpoint has been deleted.  */
5060 #define WP_DELETED 1
5061 /* The value has changed.  */
5062 #define WP_VALUE_CHANGED 2
5063 /* The value has not changed.  */
5064 #define WP_VALUE_NOT_CHANGED 3
5065 /* Ignore this watchpoint, no matter if the value changed or not.  */
5066 #define WP_IGNORE 4
5067
5068 #define BP_TEMPFLAG 1
5069 #define BP_HARDWAREFLAG 2
5070
5071 /* Evaluate watchpoint condition expression and check if its value
5072    changed.
5073
5074    P should be a pointer to struct bpstat, but is defined as a void *
5075    in order for this function to be usable with catch_errors.  */
5076
5077 static int
5078 watchpoint_check (void *p)
5079 {
5080   bpstat bs = (bpstat) p;
5081   struct watchpoint *b;
5082   struct frame_info *fr;
5083   int within_current_scope;
5084
5085   /* BS is built from an existing struct breakpoint.  */
5086   gdb_assert (bs->breakpoint_at != NULL);
5087   b = (struct watchpoint *) bs->breakpoint_at;
5088
5089   /* If this is a local watchpoint, we only want to check if the
5090      watchpoint frame is in scope if the current thread is the thread
5091      that was used to create the watchpoint.  */
5092   if (!watchpoint_in_thread_scope (b))
5093     return WP_IGNORE;
5094
5095   if (b->exp_valid_block == NULL)
5096     within_current_scope = 1;
5097   else
5098     {
5099       struct frame_info *frame = get_current_frame ();
5100       struct gdbarch *frame_arch = get_frame_arch (frame);
5101       CORE_ADDR frame_pc = get_frame_pc (frame);
5102
5103       /* in_function_epilogue_p() returns a non-zero value if we're
5104          still in the function but the stack frame has already been
5105          invalidated.  Since we can't rely on the values of local
5106          variables after the stack has been destroyed, we are treating
5107          the watchpoint in that state as `not changed' without further
5108          checking.  Don't mark watchpoints as changed if the current
5109          frame is in an epilogue - even if they are in some other
5110          frame, our view of the stack is likely to be wrong and
5111          frame_find_by_id could error out.  */
5112       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
5113         return WP_IGNORE;
5114
5115       fr = frame_find_by_id (b->watchpoint_frame);
5116       within_current_scope = (fr != NULL);
5117
5118       /* If we've gotten confused in the unwinder, we might have
5119          returned a frame that can't describe this variable.  */
5120       if (within_current_scope)
5121         {
5122           struct symbol *function;
5123
5124           function = get_frame_function (fr);
5125           if (function == NULL
5126               || !contained_in (b->exp_valid_block,
5127                                 SYMBOL_BLOCK_VALUE (function)))
5128             within_current_scope = 0;
5129         }
5130
5131       if (within_current_scope)
5132         /* If we end up stopping, the current frame will get selected
5133            in normal_stop.  So this call to select_frame won't affect
5134            the user.  */
5135         select_frame (fr);
5136     }
5137
5138   if (within_current_scope)
5139     {
5140       /* We use value_{,free_to_}mark because it could be a *long*
5141          time before we return to the command level and call
5142          free_all_values.  We can't call free_all_values because we
5143          might be in the middle of evaluating a function call.  */
5144
5145       int pc = 0;
5146       struct value *mark;
5147       struct value *new_val;
5148
5149       if (is_masked_watchpoint (&b->base))
5150         /* Since we don't know the exact trigger address (from
5151            stopped_data_address), just tell the user we've triggered
5152            a mask watchpoint.  */
5153         return WP_VALUE_CHANGED;
5154
5155       mark = value_mark ();
5156       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5157
5158       if (b->val_bitsize != 0)
5159         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5160
5161       /* We use value_equal_contents instead of value_equal because
5162          the latter coerces an array to a pointer, thus comparing just
5163          the address of the array instead of its contents.  This is
5164          not what we want.  */
5165       if ((b->val != NULL) != (new_val != NULL)
5166           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5167         {
5168           if (new_val != NULL)
5169             {
5170               release_value (new_val);
5171               value_free_to_mark (mark);
5172             }
5173           bs->old_val = b->val;
5174           b->val = new_val;
5175           b->val_valid = 1;
5176           return WP_VALUE_CHANGED;
5177         }
5178       else
5179         {
5180           /* Nothing changed.  */
5181           value_free_to_mark (mark);
5182           return WP_VALUE_NOT_CHANGED;
5183         }
5184     }
5185   else
5186     {
5187       struct ui_out *uiout = current_uiout;
5188
5189       /* This seems like the only logical thing to do because
5190          if we temporarily ignored the watchpoint, then when
5191          we reenter the block in which it is valid it contains
5192          garbage (in the case of a function, it may have two
5193          garbage values, one before and one after the prologue).
5194          So we can't even detect the first assignment to it and
5195          watch after that (since the garbage may or may not equal
5196          the first value assigned).  */
5197       /* We print all the stop information in
5198          breakpoint_ops->print_it, but in this case, by the time we
5199          call breakpoint_ops->print_it this bp will be deleted
5200          already.  So we have no choice but print the information
5201          here.  */
5202       if (ui_out_is_mi_like_p (uiout))
5203         ui_out_field_string
5204           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5205       ui_out_text (uiout, "\nWatchpoint ");
5206       ui_out_field_int (uiout, "wpnum", b->base.number);
5207       ui_out_text (uiout,
5208                    " deleted because the program has left the block in\n\
5209 which its expression is valid.\n");     
5210
5211       /* Make sure the watchpoint's commands aren't executed.  */
5212       decref_counted_command_line (&b->base.commands);
5213       watchpoint_del_at_next_stop (b);
5214
5215       return WP_DELETED;
5216     }
5217 }
5218
5219 /* Return true if it looks like target has stopped due to hitting
5220    breakpoint location BL.  This function does not check if we should
5221    stop, only if BL explains the stop.  */
5222
5223 static int
5224 bpstat_check_location (const struct bp_location *bl,
5225                        struct address_space *aspace, CORE_ADDR bp_addr,
5226                        const struct target_waitstatus *ws)
5227 {
5228   struct breakpoint *b = bl->owner;
5229
5230   /* BL is from an existing breakpoint.  */
5231   gdb_assert (b != NULL);
5232
5233   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5234 }
5235
5236 /* Determine if the watched values have actually changed, and we
5237    should stop.  If not, set BS->stop to 0.  */
5238
5239 static void
5240 bpstat_check_watchpoint (bpstat bs)
5241 {
5242   const struct bp_location *bl;
5243   struct watchpoint *b;
5244
5245   /* BS is built for existing struct breakpoint.  */
5246   bl = bs->bp_location_at;
5247   gdb_assert (bl != NULL);
5248   b = (struct watchpoint *) bs->breakpoint_at;
5249   gdb_assert (b != NULL);
5250
5251     {
5252       int must_check_value = 0;
5253       
5254       if (b->base.type == bp_watchpoint)
5255         /* For a software watchpoint, we must always check the
5256            watched value.  */
5257         must_check_value = 1;
5258       else if (b->watchpoint_triggered == watch_triggered_yes)
5259         /* We have a hardware watchpoint (read, write, or access)
5260            and the target earlier reported an address watched by
5261            this watchpoint.  */
5262         must_check_value = 1;
5263       else if (b->watchpoint_triggered == watch_triggered_unknown
5264                && b->base.type == bp_hardware_watchpoint)
5265         /* We were stopped by a hardware watchpoint, but the target could
5266            not report the data address.  We must check the watchpoint's
5267            value.  Access and read watchpoints are out of luck; without
5268            a data address, we can't figure it out.  */
5269         must_check_value = 1;
5270
5271       if (must_check_value)
5272         {
5273           char *message
5274             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5275                           b->base.number);
5276           struct cleanup *cleanups = make_cleanup (xfree, message);
5277           int e = catch_errors (watchpoint_check, bs, message,
5278                                 RETURN_MASK_ALL);
5279           do_cleanups (cleanups);
5280           switch (e)
5281             {
5282             case WP_DELETED:
5283               /* We've already printed what needs to be printed.  */
5284               bs->print_it = print_it_done;
5285               /* Stop.  */
5286               break;
5287             case WP_IGNORE:
5288               bs->print_it = print_it_noop;
5289               bs->stop = 0;
5290               break;
5291             case WP_VALUE_CHANGED:
5292               if (b->base.type == bp_read_watchpoint)
5293                 {
5294                   /* There are two cases to consider here:
5295
5296                      1. We're watching the triggered memory for reads.
5297                      In that case, trust the target, and always report
5298                      the watchpoint hit to the user.  Even though
5299                      reads don't cause value changes, the value may
5300                      have changed since the last time it was read, and
5301                      since we're not trapping writes, we will not see
5302                      those, and as such we should ignore our notion of
5303                      old value.
5304
5305                      2. We're watching the triggered memory for both
5306                      reads and writes.  There are two ways this may
5307                      happen:
5308
5309                      2.1. This is a target that can't break on data
5310                      reads only, but can break on accesses (reads or
5311                      writes), such as e.g., x86.  We detect this case
5312                      at the time we try to insert read watchpoints.
5313
5314                      2.2. Otherwise, the target supports read
5315                      watchpoints, but, the user set an access or write
5316                      watchpoint watching the same memory as this read
5317                      watchpoint.
5318
5319                      If we're watching memory writes as well as reads,
5320                      ignore watchpoint hits when we find that the
5321                      value hasn't changed, as reads don't cause
5322                      changes.  This still gives false positives when
5323                      the program writes the same value to memory as
5324                      what there was already in memory (we will confuse
5325                      it for a read), but it's much better than
5326                      nothing.  */
5327
5328                   int other_write_watchpoint = 0;
5329
5330                   if (bl->watchpoint_type == hw_read)
5331                     {
5332                       struct breakpoint *other_b;
5333
5334                       ALL_BREAKPOINTS (other_b)
5335                         if (other_b->type == bp_hardware_watchpoint
5336                             || other_b->type == bp_access_watchpoint)
5337                           {
5338                             struct watchpoint *other_w =
5339                               (struct watchpoint *) other_b;
5340
5341                             if (other_w->watchpoint_triggered
5342                                 == watch_triggered_yes)
5343                               {
5344                                 other_write_watchpoint = 1;
5345                                 break;
5346                               }
5347                           }
5348                     }
5349
5350                   if (other_write_watchpoint
5351                       || bl->watchpoint_type == hw_access)
5352                     {
5353                       /* We're watching the same memory for writes,
5354                          and the value changed since the last time we
5355                          updated it, so this trap must be for a write.
5356                          Ignore it.  */
5357                       bs->print_it = print_it_noop;
5358                       bs->stop = 0;
5359                     }
5360                 }
5361               break;
5362             case WP_VALUE_NOT_CHANGED:
5363               if (b->base.type == bp_hardware_watchpoint
5364                   || b->base.type == bp_watchpoint)
5365                 {
5366                   /* Don't stop: write watchpoints shouldn't fire if
5367                      the value hasn't changed.  */
5368                   bs->print_it = print_it_noop;
5369                   bs->stop = 0;
5370                 }
5371               /* Stop.  */
5372               break;
5373             default:
5374               /* Can't happen.  */
5375             case 0:
5376               /* Error from catch_errors.  */
5377               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5378               watchpoint_del_at_next_stop (b);
5379               /* We've already printed what needs to be printed.  */
5380               bs->print_it = print_it_done;
5381               break;
5382             }
5383         }
5384       else      /* must_check_value == 0 */
5385         {
5386           /* This is a case where some watchpoint(s) triggered, but
5387              not at the address of this watchpoint, or else no
5388              watchpoint triggered after all.  So don't print
5389              anything for this watchpoint.  */
5390           bs->print_it = print_it_noop;
5391           bs->stop = 0;
5392         }
5393     }
5394 }
5395
5396 /* For breakpoints that are currently marked as telling gdb to stop,
5397    check conditions (condition proper, frame, thread and ignore count)
5398    of breakpoint referred to by BS.  If we should not stop for this
5399    breakpoint, set BS->stop to 0.  */
5400
5401 static void
5402 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5403 {
5404   const struct bp_location *bl;
5405   struct breakpoint *b;
5406   int value_is_zero = 0;
5407   struct expression *cond;
5408
5409   gdb_assert (bs->stop);
5410
5411   /* BS is built for existing struct breakpoint.  */
5412   bl = bs->bp_location_at;
5413   gdb_assert (bl != NULL);
5414   b = bs->breakpoint_at;
5415   gdb_assert (b != NULL);
5416
5417   /* Even if the target evaluated the condition on its end and notified GDB, we
5418      need to do so again since GDB does not know if we stopped due to a
5419      breakpoint or a single step breakpoint.  */
5420
5421   if (frame_id_p (b->frame_id)
5422       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5423     {
5424       bs->stop = 0;
5425       return;
5426     }
5427
5428   /* If this is a thread/task-specific breakpoint, don't waste cpu
5429      evaluating the condition if this isn't the specified
5430      thread/task.  */
5431   if ((b->thread != -1 && b->thread != pid_to_thread_id (ptid))
5432       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5433
5434     {
5435       bs->stop = 0;
5436       return;
5437     }
5438
5439   /* Evaluate extension language breakpoints that have a "stop" method
5440      implemented.  */
5441   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5442
5443   if (is_watchpoint (b))
5444     {
5445       struct watchpoint *w = (struct watchpoint *) b;
5446
5447       cond = w->cond_exp;
5448     }
5449   else
5450     cond = bl->cond;
5451
5452   if (cond && b->disposition != disp_del_at_next_stop)
5453     {
5454       int within_current_scope = 1;
5455       struct watchpoint * w;
5456
5457       /* We use value_mark and value_free_to_mark because it could
5458          be a long time before we return to the command level and
5459          call free_all_values.  We can't call free_all_values
5460          because we might be in the middle of evaluating a
5461          function call.  */
5462       struct value *mark = value_mark ();
5463
5464       if (is_watchpoint (b))
5465         w = (struct watchpoint *) b;
5466       else
5467         w = NULL;
5468
5469       /* Need to select the frame, with all that implies so that
5470          the conditions will have the right context.  Because we
5471          use the frame, we will not see an inlined function's
5472          variables when we arrive at a breakpoint at the start
5473          of the inlined function; the current frame will be the
5474          call site.  */
5475       if (w == NULL || w->cond_exp_valid_block == NULL)
5476         select_frame (get_current_frame ());
5477       else
5478         {
5479           struct frame_info *frame;
5480
5481           /* For local watchpoint expressions, which particular
5482              instance of a local is being watched matters, so we
5483              keep track of the frame to evaluate the expression
5484              in.  To evaluate the condition however, it doesn't
5485              really matter which instantiation of the function
5486              where the condition makes sense triggers the
5487              watchpoint.  This allows an expression like "watch
5488              global if q > 10" set in `func', catch writes to
5489              global on all threads that call `func', or catch
5490              writes on all recursive calls of `func' by a single
5491              thread.  We simply always evaluate the condition in
5492              the innermost frame that's executing where it makes
5493              sense to evaluate the condition.  It seems
5494              intuitive.  */
5495           frame = block_innermost_frame (w->cond_exp_valid_block);
5496           if (frame != NULL)
5497             select_frame (frame);
5498           else
5499             within_current_scope = 0;
5500         }
5501       if (within_current_scope)
5502         value_is_zero
5503           = catch_errors (breakpoint_cond_eval, cond,
5504                           "Error in testing breakpoint condition:\n",
5505                           RETURN_MASK_ALL);
5506       else
5507         {
5508           warning (_("Watchpoint condition cannot be tested "
5509                      "in the current scope"));
5510           /* If we failed to set the right context for this
5511              watchpoint, unconditionally report it.  */
5512           value_is_zero = 0;
5513         }
5514       /* FIXME-someday, should give breakpoint #.  */
5515       value_free_to_mark (mark);
5516     }
5517
5518   if (cond && value_is_zero)
5519     {
5520       bs->stop = 0;
5521     }
5522   else if (b->ignore_count > 0)
5523     {
5524       b->ignore_count--;
5525       bs->stop = 0;
5526       /* Increase the hit count even though we don't stop.  */
5527       ++(b->hit_count);
5528       observer_notify_breakpoint_modified (b);
5529     }   
5530 }
5531
5532
5533 /* Get a bpstat associated with having just stopped at address
5534    BP_ADDR in thread PTID.
5535
5536    Determine whether we stopped at a breakpoint, etc, or whether we
5537    don't understand this stop.  Result is a chain of bpstat's such
5538    that:
5539
5540    if we don't understand the stop, the result is a null pointer.
5541
5542    if we understand why we stopped, the result is not null.
5543
5544    Each element of the chain refers to a particular breakpoint or
5545    watchpoint at which we have stopped.  (We may have stopped for
5546    several reasons concurrently.)
5547
5548    Each element of the chain has valid next, breakpoint_at,
5549    commands, FIXME??? fields.  */
5550
5551 bpstat
5552 bpstat_stop_status (struct address_space *aspace,
5553                     CORE_ADDR bp_addr, ptid_t ptid,
5554                     const struct target_waitstatus *ws)
5555 {
5556   struct breakpoint *b = NULL;
5557   struct bp_location *bl;
5558   struct bp_location *loc;
5559   /* First item of allocated bpstat's.  */
5560   bpstat bs_head = NULL, *bs_link = &bs_head;
5561   /* Pointer to the last thing in the chain currently.  */
5562   bpstat bs;
5563   int ix;
5564   int need_remove_insert;
5565   int removed_any;
5566
5567   /* First, build the bpstat chain with locations that explain a
5568      target stop, while being careful to not set the target running,
5569      as that may invalidate locations (in particular watchpoint
5570      locations are recreated).  Resuming will happen here with
5571      breakpoint conditions or watchpoint expressions that include
5572      inferior function calls.  */
5573
5574   ALL_BREAKPOINTS (b)
5575     {
5576       if (!breakpoint_enabled (b) && b->enable_state != bp_permanent)
5577         continue;
5578
5579       for (bl = b->loc; bl != NULL; bl = bl->next)
5580         {
5581           /* For hardware watchpoints, we look only at the first
5582              location.  The watchpoint_check function will work on the
5583              entire expression, not the individual locations.  For
5584              read watchpoints, the watchpoints_triggered function has
5585              checked all locations already.  */
5586           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5587             break;
5588
5589           if (!bl->enabled || bl->shlib_disabled)
5590             continue;
5591
5592           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5593             continue;
5594
5595           /* Come here if it's a watchpoint, or if the break address
5596              matches.  */
5597
5598           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5599                                                    explain stop.  */
5600
5601           /* Assume we stop.  Should we find a watchpoint that is not
5602              actually triggered, or if the condition of the breakpoint
5603              evaluates as false, we'll reset 'stop' to 0.  */
5604           bs->stop = 1;
5605           bs->print = 1;
5606
5607           /* If this is a scope breakpoint, mark the associated
5608              watchpoint as triggered so that we will handle the
5609              out-of-scope event.  We'll get to the watchpoint next
5610              iteration.  */
5611           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5612             {
5613               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5614
5615               w->watchpoint_triggered = watch_triggered_yes;
5616             }
5617         }
5618     }
5619
5620   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5621     {
5622       if (breakpoint_location_address_match (loc, aspace, bp_addr))
5623         {
5624           bs = bpstat_alloc (loc, &bs_link);
5625           /* For hits of moribund locations, we should just proceed.  */
5626           bs->stop = 0;
5627           bs->print = 0;
5628           bs->print_it = print_it_noop;
5629         }
5630     }
5631
5632   /* A bit of special processing for shlib breakpoints.  We need to
5633      process solib loading here, so that the lists of loaded and
5634      unloaded libraries are correct before we handle "catch load" and
5635      "catch unload".  */
5636   for (bs = bs_head; bs != NULL; bs = bs->next)
5637     {
5638       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5639         {
5640           handle_solib_event ();
5641           break;
5642         }
5643     }
5644
5645   /* Now go through the locations that caused the target to stop, and
5646      check whether we're interested in reporting this stop to higher
5647      layers, or whether we should resume the target transparently.  */
5648
5649   removed_any = 0;
5650
5651   for (bs = bs_head; bs != NULL; bs = bs->next)
5652     {
5653       if (!bs->stop)
5654         continue;
5655
5656       b = bs->breakpoint_at;
5657       b->ops->check_status (bs);
5658       if (bs->stop)
5659         {
5660           bpstat_check_breakpoint_conditions (bs, ptid);
5661
5662           if (bs->stop)
5663             {
5664               ++(b->hit_count);
5665               observer_notify_breakpoint_modified (b);
5666
5667               /* We will stop here.  */
5668               if (b->disposition == disp_disable)
5669                 {
5670                   --(b->enable_count);
5671                   if (b->enable_count <= 0
5672                       && b->enable_state != bp_permanent)
5673                     b->enable_state = bp_disabled;
5674                   removed_any = 1;
5675                 }
5676               if (b->silent)
5677                 bs->print = 0;
5678               bs->commands = b->commands;
5679               incref_counted_command_line (bs->commands);
5680               if (command_line_is_silent (bs->commands
5681                                           ? bs->commands->commands : NULL))
5682                 bs->print = 0;
5683
5684               b->ops->after_condition_true (bs);
5685             }
5686
5687         }
5688
5689       /* Print nothing for this entry if we don't stop or don't
5690          print.  */
5691       if (!bs->stop || !bs->print)
5692         bs->print_it = print_it_noop;
5693     }
5694
5695   /* If we aren't stopping, the value of some hardware watchpoint may
5696      not have changed, but the intermediate memory locations we are
5697      watching may have.  Don't bother if we're stopping; this will get
5698      done later.  */
5699   need_remove_insert = 0;
5700   if (! bpstat_causes_stop (bs_head))
5701     for (bs = bs_head; bs != NULL; bs = bs->next)
5702       if (!bs->stop
5703           && bs->breakpoint_at
5704           && is_hardware_watchpoint (bs->breakpoint_at))
5705         {
5706           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5707
5708           update_watchpoint (w, 0 /* don't reparse.  */);
5709           need_remove_insert = 1;
5710         }
5711
5712   if (need_remove_insert)
5713     update_global_location_list (UGLL_MAY_INSERT);
5714   else if (removed_any)
5715     update_global_location_list (UGLL_DONT_INSERT);
5716
5717   return bs_head;
5718 }
5719
5720 static void
5721 handle_jit_event (void)
5722 {
5723   struct frame_info *frame;
5724   struct gdbarch *gdbarch;
5725
5726   /* Switch terminal for any messages produced by
5727      breakpoint_re_set.  */
5728   target_terminal_ours_for_output ();
5729
5730   frame = get_current_frame ();
5731   gdbarch = get_frame_arch (frame);
5732
5733   jit_event_handler (gdbarch);
5734
5735   target_terminal_inferior ();
5736 }
5737
5738 /* Prepare WHAT final decision for infrun.  */
5739
5740 /* Decide what infrun needs to do with this bpstat.  */
5741
5742 struct bpstat_what
5743 bpstat_what (bpstat bs_head)
5744 {
5745   struct bpstat_what retval;
5746   int jit_event = 0;
5747   bpstat bs;
5748
5749   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5750   retval.call_dummy = STOP_NONE;
5751   retval.is_longjmp = 0;
5752
5753   for (bs = bs_head; bs != NULL; bs = bs->next)
5754     {
5755       /* Extract this BS's action.  After processing each BS, we check
5756          if its action overrides all we've seem so far.  */
5757       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5758       enum bptype bptype;
5759
5760       if (bs->breakpoint_at == NULL)
5761         {
5762           /* I suspect this can happen if it was a momentary
5763              breakpoint which has since been deleted.  */
5764           bptype = bp_none;
5765         }
5766       else
5767         bptype = bs->breakpoint_at->type;
5768
5769       switch (bptype)
5770         {
5771         case bp_none:
5772           break;
5773         case bp_breakpoint:
5774         case bp_hardware_breakpoint:
5775         case bp_until:
5776         case bp_finish:
5777         case bp_shlib_event:
5778           if (bs->stop)
5779             {
5780               if (bs->print)
5781                 this_action = BPSTAT_WHAT_STOP_NOISY;
5782               else
5783                 this_action = BPSTAT_WHAT_STOP_SILENT;
5784             }
5785           else
5786             this_action = BPSTAT_WHAT_SINGLE;
5787           break;
5788         case bp_watchpoint:
5789         case bp_hardware_watchpoint:
5790         case bp_read_watchpoint:
5791         case bp_access_watchpoint:
5792           if (bs->stop)
5793             {
5794               if (bs->print)
5795                 this_action = BPSTAT_WHAT_STOP_NOISY;
5796               else
5797                 this_action = BPSTAT_WHAT_STOP_SILENT;
5798             }
5799           else
5800             {
5801               /* There was a watchpoint, but we're not stopping.
5802                  This requires no further action.  */
5803             }
5804           break;
5805         case bp_longjmp:
5806         case bp_longjmp_call_dummy:
5807         case bp_exception:
5808           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5809           retval.is_longjmp = bptype != bp_exception;
5810           break;
5811         case bp_longjmp_resume:
5812         case bp_exception_resume:
5813           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5814           retval.is_longjmp = bptype == bp_longjmp_resume;
5815           break;
5816         case bp_step_resume:
5817           if (bs->stop)
5818             this_action = BPSTAT_WHAT_STEP_RESUME;
5819           else
5820             {
5821               /* It is for the wrong frame.  */
5822               this_action = BPSTAT_WHAT_SINGLE;
5823             }
5824           break;
5825         case bp_hp_step_resume:
5826           if (bs->stop)
5827             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5828           else
5829             {
5830               /* It is for the wrong frame.  */
5831               this_action = BPSTAT_WHAT_SINGLE;
5832             }
5833           break;
5834         case bp_watchpoint_scope:
5835         case bp_thread_event:
5836         case bp_overlay_event:
5837         case bp_longjmp_master:
5838         case bp_std_terminate_master:
5839         case bp_exception_master:
5840           this_action = BPSTAT_WHAT_SINGLE;
5841           break;
5842         case bp_catchpoint:
5843           if (bs->stop)
5844             {
5845               if (bs->print)
5846                 this_action = BPSTAT_WHAT_STOP_NOISY;
5847               else
5848                 this_action = BPSTAT_WHAT_STOP_SILENT;
5849             }
5850           else
5851             {
5852               /* There was a catchpoint, but we're not stopping.
5853                  This requires no further action.  */
5854             }
5855           break;
5856         case bp_jit_event:
5857           jit_event = 1;
5858           this_action = BPSTAT_WHAT_SINGLE;
5859           break;
5860         case bp_call_dummy:
5861           /* Make sure the action is stop (silent or noisy),
5862              so infrun.c pops the dummy frame.  */
5863           retval.call_dummy = STOP_STACK_DUMMY;
5864           this_action = BPSTAT_WHAT_STOP_SILENT;
5865           break;
5866         case bp_std_terminate:
5867           /* Make sure the action is stop (silent or noisy),
5868              so infrun.c pops the dummy frame.  */
5869           retval.call_dummy = STOP_STD_TERMINATE;
5870           this_action = BPSTAT_WHAT_STOP_SILENT;
5871           break;
5872         case bp_tracepoint:
5873         case bp_fast_tracepoint:
5874         case bp_static_tracepoint:
5875           /* Tracepoint hits should not be reported back to GDB, and
5876              if one got through somehow, it should have been filtered
5877              out already.  */
5878           internal_error (__FILE__, __LINE__,
5879                           _("bpstat_what: tracepoint encountered"));
5880           break;
5881         case bp_gnu_ifunc_resolver:
5882           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5883           this_action = BPSTAT_WHAT_SINGLE;
5884           break;
5885         case bp_gnu_ifunc_resolver_return:
5886           /* The breakpoint will be removed, execution will restart from the
5887              PC of the former breakpoint.  */
5888           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5889           break;
5890
5891         case bp_dprintf:
5892           if (bs->stop)
5893             this_action = BPSTAT_WHAT_STOP_SILENT;
5894           else
5895             this_action = BPSTAT_WHAT_SINGLE;
5896           break;
5897
5898         default:
5899           internal_error (__FILE__, __LINE__,
5900                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5901         }
5902
5903       retval.main_action = max (retval.main_action, this_action);
5904     }
5905
5906   /* These operations may affect the bs->breakpoint_at state so they are
5907      delayed after MAIN_ACTION is decided above.  */
5908
5909   if (jit_event)
5910     {
5911       if (debug_infrun)
5912         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5913
5914       handle_jit_event ();
5915     }
5916
5917   for (bs = bs_head; bs != NULL; bs = bs->next)
5918     {
5919       struct breakpoint *b = bs->breakpoint_at;
5920
5921       if (b == NULL)
5922         continue;
5923       switch (b->type)
5924         {
5925         case bp_gnu_ifunc_resolver:
5926           gnu_ifunc_resolver_stop (b);
5927           break;
5928         case bp_gnu_ifunc_resolver_return:
5929           gnu_ifunc_resolver_return_stop (b);
5930           break;
5931         }
5932     }
5933
5934   return retval;
5935 }
5936
5937 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5938    without hardware support).  This isn't related to a specific bpstat,
5939    just to things like whether watchpoints are set.  */
5940
5941 int
5942 bpstat_should_step (void)
5943 {
5944   struct breakpoint *b;
5945
5946   ALL_BREAKPOINTS (b)
5947     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5948       return 1;
5949   return 0;
5950 }
5951
5952 int
5953 bpstat_causes_stop (bpstat bs)
5954 {
5955   for (; bs != NULL; bs = bs->next)
5956     if (bs->stop)
5957       return 1;
5958
5959   return 0;
5960 }
5961
5962 \f
5963
5964 /* Compute a string of spaces suitable to indent the next line
5965    so it starts at the position corresponding to the table column
5966    named COL_NAME in the currently active table of UIOUT.  */
5967
5968 static char *
5969 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5970 {
5971   static char wrap_indent[80];
5972   int i, total_width, width, align;
5973   char *text;
5974
5975   total_width = 0;
5976   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5977     {
5978       if (strcmp (text, col_name) == 0)
5979         {
5980           gdb_assert (total_width < sizeof wrap_indent);
5981           memset (wrap_indent, ' ', total_width);
5982           wrap_indent[total_width] = 0;
5983
5984           return wrap_indent;
5985         }
5986
5987       total_width += width + 1;
5988     }
5989
5990   return NULL;
5991 }
5992
5993 /* Determine if the locations of this breakpoint will have their conditions
5994    evaluated by the target, host or a mix of both.  Returns the following:
5995
5996     "host": Host evals condition.
5997     "host or target": Host or Target evals condition.
5998     "target": Target evals condition.
5999 */
6000
6001 static const char *
6002 bp_condition_evaluator (struct breakpoint *b)
6003 {
6004   struct bp_location *bl;
6005   char host_evals = 0;
6006   char target_evals = 0;
6007
6008   if (!b)
6009     return NULL;
6010
6011   if (!is_breakpoint (b))
6012     return NULL;
6013
6014   if (gdb_evaluates_breakpoint_condition_p ()
6015       || !target_supports_evaluation_of_breakpoint_conditions ())
6016     return condition_evaluation_host;
6017
6018   for (bl = b->loc; bl; bl = bl->next)
6019     {
6020       if (bl->cond_bytecode)
6021         target_evals++;
6022       else
6023         host_evals++;
6024     }
6025
6026   if (host_evals && target_evals)
6027     return condition_evaluation_both;
6028   else if (target_evals)
6029     return condition_evaluation_target;
6030   else
6031     return condition_evaluation_host;
6032 }
6033
6034 /* Determine the breakpoint location's condition evaluator.  This is
6035    similar to bp_condition_evaluator, but for locations.  */
6036
6037 static const char *
6038 bp_location_condition_evaluator (struct bp_location *bl)
6039 {
6040   if (bl && !is_breakpoint (bl->owner))
6041     return NULL;
6042
6043   if (gdb_evaluates_breakpoint_condition_p ()
6044       || !target_supports_evaluation_of_breakpoint_conditions ())
6045     return condition_evaluation_host;
6046
6047   if (bl && bl->cond_bytecode)
6048     return condition_evaluation_target;
6049   else
6050     return condition_evaluation_host;
6051 }
6052
6053 /* Print the LOC location out of the list of B->LOC locations.  */
6054
6055 static void
6056 print_breakpoint_location (struct breakpoint *b,
6057                            struct bp_location *loc)
6058 {
6059   struct ui_out *uiout = current_uiout;
6060   struct cleanup *old_chain = save_current_program_space ();
6061
6062   if (loc != NULL && loc->shlib_disabled)
6063     loc = NULL;
6064
6065   if (loc != NULL)
6066     set_current_program_space (loc->pspace);
6067
6068   if (b->display_canonical)
6069     ui_out_field_string (uiout, "what", b->addr_string);
6070   else if (loc && loc->symtab)
6071     {
6072       struct symbol *sym 
6073         = find_pc_sect_function (loc->address, loc->section);
6074       if (sym)
6075         {
6076           ui_out_text (uiout, "in ");
6077           ui_out_field_string (uiout, "func",
6078                                SYMBOL_PRINT_NAME (sym));
6079           ui_out_text (uiout, " ");
6080           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
6081           ui_out_text (uiout, "at ");
6082         }
6083       ui_out_field_string (uiout, "file",
6084                            symtab_to_filename_for_display (loc->symtab));
6085       ui_out_text (uiout, ":");
6086
6087       if (ui_out_is_mi_like_p (uiout))
6088         ui_out_field_string (uiout, "fullname",
6089                              symtab_to_fullname (loc->symtab));
6090       
6091       ui_out_field_int (uiout, "line", loc->line_number);
6092     }
6093   else if (loc)
6094     {
6095       struct ui_file *stb = mem_fileopen ();
6096       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
6097
6098       print_address_symbolic (loc->gdbarch, loc->address, stb,
6099                               demangle, "");
6100       ui_out_field_stream (uiout, "at", stb);
6101
6102       do_cleanups (stb_chain);
6103     }
6104   else
6105     ui_out_field_string (uiout, "pending", b->addr_string);
6106
6107   if (loc && is_breakpoint (b)
6108       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6109       && bp_condition_evaluator (b) == condition_evaluation_both)
6110     {
6111       ui_out_text (uiout, " (");
6112       ui_out_field_string (uiout, "evaluated-by",
6113                            bp_location_condition_evaluator (loc));
6114       ui_out_text (uiout, ")");
6115     }
6116
6117   do_cleanups (old_chain);
6118 }
6119
6120 static const char *
6121 bptype_string (enum bptype type)
6122 {
6123   struct ep_type_description
6124     {
6125       enum bptype type;
6126       char *description;
6127     };
6128   static struct ep_type_description bptypes[] =
6129   {
6130     {bp_none, "?deleted?"},
6131     {bp_breakpoint, "breakpoint"},
6132     {bp_hardware_breakpoint, "hw breakpoint"},
6133     {bp_until, "until"},
6134     {bp_finish, "finish"},
6135     {bp_watchpoint, "watchpoint"},
6136     {bp_hardware_watchpoint, "hw watchpoint"},
6137     {bp_read_watchpoint, "read watchpoint"},
6138     {bp_access_watchpoint, "acc watchpoint"},
6139     {bp_longjmp, "longjmp"},
6140     {bp_longjmp_resume, "longjmp resume"},
6141     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6142     {bp_exception, "exception"},
6143     {bp_exception_resume, "exception resume"},
6144     {bp_step_resume, "step resume"},
6145     {bp_hp_step_resume, "high-priority step resume"},
6146     {bp_watchpoint_scope, "watchpoint scope"},
6147     {bp_call_dummy, "call dummy"},
6148     {bp_std_terminate, "std::terminate"},
6149     {bp_shlib_event, "shlib events"},
6150     {bp_thread_event, "thread events"},
6151     {bp_overlay_event, "overlay events"},
6152     {bp_longjmp_master, "longjmp master"},
6153     {bp_std_terminate_master, "std::terminate master"},
6154     {bp_exception_master, "exception master"},
6155     {bp_catchpoint, "catchpoint"},
6156     {bp_tracepoint, "tracepoint"},
6157     {bp_fast_tracepoint, "fast tracepoint"},
6158     {bp_static_tracepoint, "static tracepoint"},
6159     {bp_dprintf, "dprintf"},
6160     {bp_jit_event, "jit events"},
6161     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6162     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6163   };
6164
6165   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6166       || ((int) type != bptypes[(int) type].type))
6167     internal_error (__FILE__, __LINE__,
6168                     _("bptypes table does not describe type #%d."),
6169                     (int) type);
6170
6171   return bptypes[(int) type].description;
6172 }
6173
6174 /* For MI, output a field named 'thread-groups' with a list as the value.
6175    For CLI, prefix the list with the string 'inf'. */
6176
6177 static void
6178 output_thread_groups (struct ui_out *uiout,
6179                       const char *field_name,
6180                       VEC(int) *inf_num,
6181                       int mi_only)
6182 {
6183   struct cleanup *back_to;
6184   int is_mi = ui_out_is_mi_like_p (uiout);
6185   int inf;
6186   int i;
6187
6188   /* For backward compatibility, don't display inferiors in CLI unless
6189      there are several.  Always display them for MI. */
6190   if (!is_mi && mi_only)
6191     return;
6192
6193   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6194
6195   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6196     {
6197       if (is_mi)
6198         {
6199           char mi_group[10];
6200
6201           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6202           ui_out_field_string (uiout, NULL, mi_group);
6203         }
6204       else
6205         {
6206           if (i == 0)
6207             ui_out_text (uiout, " inf ");
6208           else
6209             ui_out_text (uiout, ", ");
6210         
6211           ui_out_text (uiout, plongest (inf));
6212         }
6213     }
6214
6215   do_cleanups (back_to);
6216 }
6217
6218 /* Print B to gdb_stdout.  */
6219
6220 static void
6221 print_one_breakpoint_location (struct breakpoint *b,
6222                                struct bp_location *loc,
6223                                int loc_number,
6224                                struct bp_location **last_loc,
6225                                int allflag)
6226 {
6227   struct command_line *l;
6228   static char bpenables[] = "nynny";
6229
6230   struct ui_out *uiout = current_uiout;
6231   int header_of_multiple = 0;
6232   int part_of_multiple = (loc != NULL);
6233   struct value_print_options opts;
6234
6235   get_user_print_options (&opts);
6236
6237   gdb_assert (!loc || loc_number != 0);
6238   /* See comment in print_one_breakpoint concerning treatment of
6239      breakpoints with single disabled location.  */
6240   if (loc == NULL 
6241       && (b->loc != NULL 
6242           && (b->loc->next != NULL || !b->loc->enabled)))
6243     header_of_multiple = 1;
6244   if (loc == NULL)
6245     loc = b->loc;
6246
6247   annotate_record ();
6248
6249   /* 1 */
6250   annotate_field (0);
6251   if (part_of_multiple)
6252     {
6253       char *formatted;
6254       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6255       ui_out_field_string (uiout, "number", formatted);
6256       xfree (formatted);
6257     }
6258   else
6259     {
6260       ui_out_field_int (uiout, "number", b->number);
6261     }
6262
6263   /* 2 */
6264   annotate_field (1);
6265   if (part_of_multiple)
6266     ui_out_field_skip (uiout, "type");
6267   else
6268     ui_out_field_string (uiout, "type", bptype_string (b->type));
6269
6270   /* 3 */
6271   annotate_field (2);
6272   if (part_of_multiple)
6273     ui_out_field_skip (uiout, "disp");
6274   else
6275     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6276
6277
6278   /* 4 */
6279   annotate_field (3);
6280   if (part_of_multiple)
6281     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6282   else
6283     ui_out_field_fmt (uiout, "enabled", "%c", 
6284                       bpenables[(int) b->enable_state]);
6285   ui_out_spaces (uiout, 2);
6286
6287   
6288   /* 5 and 6 */
6289   if (b->ops != NULL && b->ops->print_one != NULL)
6290     {
6291       /* Although the print_one can possibly print all locations,
6292          calling it here is not likely to get any nice result.  So,
6293          make sure there's just one location.  */
6294       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6295       b->ops->print_one (b, last_loc);
6296     }
6297   else
6298     switch (b->type)
6299       {
6300       case bp_none:
6301         internal_error (__FILE__, __LINE__,
6302                         _("print_one_breakpoint: bp_none encountered\n"));
6303         break;
6304
6305       case bp_watchpoint:
6306       case bp_hardware_watchpoint:
6307       case bp_read_watchpoint:
6308       case bp_access_watchpoint:
6309         {
6310           struct watchpoint *w = (struct watchpoint *) b;
6311
6312           /* Field 4, the address, is omitted (which makes the columns
6313              not line up too nicely with the headers, but the effect
6314              is relatively readable).  */
6315           if (opts.addressprint)
6316             ui_out_field_skip (uiout, "addr");
6317           annotate_field (5);
6318           ui_out_field_string (uiout, "what", w->exp_string);
6319         }
6320         break;
6321
6322       case bp_breakpoint:
6323       case bp_hardware_breakpoint:
6324       case bp_until:
6325       case bp_finish:
6326       case bp_longjmp:
6327       case bp_longjmp_resume:
6328       case bp_longjmp_call_dummy:
6329       case bp_exception:
6330       case bp_exception_resume:
6331       case bp_step_resume:
6332       case bp_hp_step_resume:
6333       case bp_watchpoint_scope:
6334       case bp_call_dummy:
6335       case bp_std_terminate:
6336       case bp_shlib_event:
6337       case bp_thread_event:
6338       case bp_overlay_event:
6339       case bp_longjmp_master:
6340       case bp_std_terminate_master:
6341       case bp_exception_master:
6342       case bp_tracepoint:
6343       case bp_fast_tracepoint:
6344       case bp_static_tracepoint:
6345       case bp_dprintf:
6346       case bp_jit_event:
6347       case bp_gnu_ifunc_resolver:
6348       case bp_gnu_ifunc_resolver_return:
6349         if (opts.addressprint)
6350           {
6351             annotate_field (4);
6352             if (header_of_multiple)
6353               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6354             else if (b->loc == NULL || loc->shlib_disabled)
6355               ui_out_field_string (uiout, "addr", "<PENDING>");
6356             else
6357               ui_out_field_core_addr (uiout, "addr",
6358                                       loc->gdbarch, loc->address);
6359           }
6360         annotate_field (5);
6361         if (!header_of_multiple)
6362           print_breakpoint_location (b, loc);
6363         if (b->loc)
6364           *last_loc = b->loc;
6365         break;
6366       }
6367
6368
6369   if (loc != NULL && !header_of_multiple)
6370     {
6371       struct inferior *inf;
6372       VEC(int) *inf_num = NULL;
6373       int mi_only = 1;
6374
6375       ALL_INFERIORS (inf)
6376         {
6377           if (inf->pspace == loc->pspace)
6378             VEC_safe_push (int, inf_num, inf->num);
6379         }
6380
6381         /* For backward compatibility, don't display inferiors in CLI unless
6382            there are several.  Always display for MI. */
6383         if (allflag
6384             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6385                 && (number_of_program_spaces () > 1
6386                     || number_of_inferiors () > 1)
6387                 /* LOC is for existing B, it cannot be in
6388                    moribund_locations and thus having NULL OWNER.  */
6389                 && loc->owner->type != bp_catchpoint))
6390         mi_only = 0;
6391       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6392       VEC_free (int, inf_num);
6393     }
6394
6395   if (!part_of_multiple)
6396     {
6397       if (b->thread != -1)
6398         {
6399           /* FIXME: This seems to be redundant and lost here; see the
6400              "stop only in" line a little further down.  */
6401           ui_out_text (uiout, " thread ");
6402           ui_out_field_int (uiout, "thread", b->thread);
6403         }
6404       else if (b->task != 0)
6405         {
6406           ui_out_text (uiout, " task ");
6407           ui_out_field_int (uiout, "task", b->task);
6408         }
6409     }
6410
6411   ui_out_text (uiout, "\n");
6412
6413   if (!part_of_multiple)
6414     b->ops->print_one_detail (b, uiout);
6415
6416   if (part_of_multiple && frame_id_p (b->frame_id))
6417     {
6418       annotate_field (6);
6419       ui_out_text (uiout, "\tstop only in stack frame at ");
6420       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6421          the frame ID.  */
6422       ui_out_field_core_addr (uiout, "frame",
6423                               b->gdbarch, b->frame_id.stack_addr);
6424       ui_out_text (uiout, "\n");
6425     }
6426   
6427   if (!part_of_multiple && b->cond_string)
6428     {
6429       annotate_field (7);
6430       if (is_tracepoint (b))
6431         ui_out_text (uiout, "\ttrace only if ");
6432       else
6433         ui_out_text (uiout, "\tstop only if ");
6434       ui_out_field_string (uiout, "cond", b->cond_string);
6435
6436       /* Print whether the target is doing the breakpoint's condition
6437          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6438       if (is_breakpoint (b)
6439           && breakpoint_condition_evaluation_mode ()
6440           == condition_evaluation_target)
6441         {
6442           ui_out_text (uiout, " (");
6443           ui_out_field_string (uiout, "evaluated-by",
6444                                bp_condition_evaluator (b));
6445           ui_out_text (uiout, " evals)");
6446         }
6447       ui_out_text (uiout, "\n");
6448     }
6449
6450   if (!part_of_multiple && b->thread != -1)
6451     {
6452       /* FIXME should make an annotation for this.  */
6453       ui_out_text (uiout, "\tstop only in thread ");
6454       ui_out_field_int (uiout, "thread", b->thread);
6455       ui_out_text (uiout, "\n");
6456     }
6457   
6458   if (!part_of_multiple)
6459     {
6460       if (b->hit_count)
6461         {
6462           /* FIXME should make an annotation for this.  */
6463           if (is_catchpoint (b))
6464             ui_out_text (uiout, "\tcatchpoint");
6465           else if (is_tracepoint (b))
6466             ui_out_text (uiout, "\ttracepoint");
6467           else
6468             ui_out_text (uiout, "\tbreakpoint");
6469           ui_out_text (uiout, " already hit ");
6470           ui_out_field_int (uiout, "times", b->hit_count);
6471           if (b->hit_count == 1)
6472             ui_out_text (uiout, " time\n");
6473           else
6474             ui_out_text (uiout, " times\n");
6475         }
6476       else
6477         {
6478           /* Output the count also if it is zero, but only if this is mi.  */
6479           if (ui_out_is_mi_like_p (uiout))
6480             ui_out_field_int (uiout, "times", b->hit_count);
6481         }
6482     }
6483
6484   if (!part_of_multiple && b->ignore_count)
6485     {
6486       annotate_field (8);
6487       ui_out_text (uiout, "\tignore next ");
6488       ui_out_field_int (uiout, "ignore", b->ignore_count);
6489       ui_out_text (uiout, " hits\n");
6490     }
6491
6492   /* Note that an enable count of 1 corresponds to "enable once"
6493      behavior, which is reported by the combination of enablement and
6494      disposition, so we don't need to mention it here.  */
6495   if (!part_of_multiple && b->enable_count > 1)
6496     {
6497       annotate_field (8);
6498       ui_out_text (uiout, "\tdisable after ");
6499       /* Tweak the wording to clarify that ignore and enable counts
6500          are distinct, and have additive effect.  */
6501       if (b->ignore_count)
6502         ui_out_text (uiout, "additional ");
6503       else
6504         ui_out_text (uiout, "next ");
6505       ui_out_field_int (uiout, "enable", b->enable_count);
6506       ui_out_text (uiout, " hits\n");
6507     }
6508
6509   if (!part_of_multiple && is_tracepoint (b))
6510     {
6511       struct tracepoint *tp = (struct tracepoint *) b;
6512
6513       if (tp->traceframe_usage)
6514         {
6515           ui_out_text (uiout, "\ttrace buffer usage ");
6516           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6517           ui_out_text (uiout, " bytes\n");
6518         }
6519     }
6520
6521   l = b->commands ? b->commands->commands : NULL;
6522   if (!part_of_multiple && l)
6523     {
6524       struct cleanup *script_chain;
6525
6526       annotate_field (9);
6527       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6528       print_command_lines (uiout, l, 4);
6529       do_cleanups (script_chain);
6530     }
6531
6532   if (is_tracepoint (b))
6533     {
6534       struct tracepoint *t = (struct tracepoint *) b;
6535
6536       if (!part_of_multiple && t->pass_count)
6537         {
6538           annotate_field (10);
6539           ui_out_text (uiout, "\tpass count ");
6540           ui_out_field_int (uiout, "pass", t->pass_count);
6541           ui_out_text (uiout, " \n");
6542         }
6543
6544       /* Don't display it when tracepoint or tracepoint location is
6545          pending.   */
6546       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6547         {
6548           annotate_field (11);
6549
6550           if (ui_out_is_mi_like_p (uiout))
6551             ui_out_field_string (uiout, "installed",
6552                                  loc->inserted ? "y" : "n");
6553           else
6554             {
6555               if (loc->inserted)
6556                 ui_out_text (uiout, "\t");
6557               else
6558                 ui_out_text (uiout, "\tnot ");
6559               ui_out_text (uiout, "installed on target\n");
6560             }
6561         }
6562     }
6563
6564   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6565     {
6566       if (is_watchpoint (b))
6567         {
6568           struct watchpoint *w = (struct watchpoint *) b;
6569
6570           ui_out_field_string (uiout, "original-location", w->exp_string);
6571         }
6572       else if (b->addr_string)
6573         ui_out_field_string (uiout, "original-location", b->addr_string);
6574     }
6575 }
6576
6577 static void
6578 print_one_breakpoint (struct breakpoint *b,
6579                       struct bp_location **last_loc, 
6580                       int allflag)
6581 {
6582   struct cleanup *bkpt_chain;
6583   struct ui_out *uiout = current_uiout;
6584
6585   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6586
6587   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6588   do_cleanups (bkpt_chain);
6589
6590   /* If this breakpoint has custom print function,
6591      it's already printed.  Otherwise, print individual
6592      locations, if any.  */
6593   if (b->ops == NULL || b->ops->print_one == NULL)
6594     {
6595       /* If breakpoint has a single location that is disabled, we
6596          print it as if it had several locations, since otherwise it's
6597          hard to represent "breakpoint enabled, location disabled"
6598          situation.
6599
6600          Note that while hardware watchpoints have several locations
6601          internally, that's not a property exposed to user.  */
6602       if (b->loc 
6603           && !is_hardware_watchpoint (b)
6604           && (b->loc->next || !b->loc->enabled))
6605         {
6606           struct bp_location *loc;
6607           int n = 1;
6608
6609           for (loc = b->loc; loc; loc = loc->next, ++n)
6610             {
6611               struct cleanup *inner2 =
6612                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6613               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6614               do_cleanups (inner2);
6615             }
6616         }
6617     }
6618 }
6619
6620 static int
6621 breakpoint_address_bits (struct breakpoint *b)
6622 {
6623   int print_address_bits = 0;
6624   struct bp_location *loc;
6625
6626   for (loc = b->loc; loc; loc = loc->next)
6627     {
6628       int addr_bit;
6629
6630       /* Software watchpoints that aren't watching memory don't have
6631          an address to print.  */
6632       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6633         continue;
6634
6635       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6636       if (addr_bit > print_address_bits)
6637         print_address_bits = addr_bit;
6638     }
6639
6640   return print_address_bits;
6641 }
6642
6643 struct captured_breakpoint_query_args
6644   {
6645     int bnum;
6646   };
6647
6648 static int
6649 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6650 {
6651   struct captured_breakpoint_query_args *args = data;
6652   struct breakpoint *b;
6653   struct bp_location *dummy_loc = NULL;
6654
6655   ALL_BREAKPOINTS (b)
6656     {
6657       if (args->bnum == b->number)
6658         {
6659           print_one_breakpoint (b, &dummy_loc, 0);
6660           return GDB_RC_OK;
6661         }
6662     }
6663   return GDB_RC_NONE;
6664 }
6665
6666 enum gdb_rc
6667 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6668                       char **error_message)
6669 {
6670   struct captured_breakpoint_query_args args;
6671
6672   args.bnum = bnum;
6673   /* For the moment we don't trust print_one_breakpoint() to not throw
6674      an error.  */
6675   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6676                                  error_message, RETURN_MASK_ALL) < 0)
6677     return GDB_RC_FAIL;
6678   else
6679     return GDB_RC_OK;
6680 }
6681
6682 /* Return true if this breakpoint was set by the user, false if it is
6683    internal or momentary.  */
6684
6685 int
6686 user_breakpoint_p (struct breakpoint *b)
6687 {
6688   return b->number > 0;
6689 }
6690
6691 /* Print information on user settable breakpoint (watchpoint, etc)
6692    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6693    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6694    FILTER is non-NULL, call it on each breakpoint and only include the
6695    ones for which it returns non-zero.  Return the total number of
6696    breakpoints listed.  */
6697
6698 static int
6699 breakpoint_1 (char *args, int allflag, 
6700               int (*filter) (const struct breakpoint *))
6701 {
6702   struct breakpoint *b;
6703   struct bp_location *last_loc = NULL;
6704   int nr_printable_breakpoints;
6705   struct cleanup *bkpttbl_chain;
6706   struct value_print_options opts;
6707   int print_address_bits = 0;
6708   int print_type_col_width = 14;
6709   struct ui_out *uiout = current_uiout;
6710
6711   get_user_print_options (&opts);
6712
6713   /* Compute the number of rows in the table, as well as the size
6714      required for address fields.  */
6715   nr_printable_breakpoints = 0;
6716   ALL_BREAKPOINTS (b)
6717     {
6718       /* If we have a filter, only list the breakpoints it accepts.  */
6719       if (filter && !filter (b))
6720         continue;
6721
6722       /* If we have an "args" string, it is a list of breakpoints to 
6723          accept.  Skip the others.  */
6724       if (args != NULL && *args != '\0')
6725         {
6726           if (allflag && parse_and_eval_long (args) != b->number)
6727             continue;
6728           if (!allflag && !number_is_in_list (args, b->number))
6729             continue;
6730         }
6731
6732       if (allflag || user_breakpoint_p (b))
6733         {
6734           int addr_bit, type_len;
6735
6736           addr_bit = breakpoint_address_bits (b);
6737           if (addr_bit > print_address_bits)
6738             print_address_bits = addr_bit;
6739
6740           type_len = strlen (bptype_string (b->type));
6741           if (type_len > print_type_col_width)
6742             print_type_col_width = type_len;
6743
6744           nr_printable_breakpoints++;
6745         }
6746     }
6747
6748   if (opts.addressprint)
6749     bkpttbl_chain 
6750       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6751                                              nr_printable_breakpoints,
6752                                              "BreakpointTable");
6753   else
6754     bkpttbl_chain 
6755       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6756                                              nr_printable_breakpoints,
6757                                              "BreakpointTable");
6758
6759   if (nr_printable_breakpoints > 0)
6760     annotate_breakpoints_headers ();
6761   if (nr_printable_breakpoints > 0)
6762     annotate_field (0);
6763   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6764   if (nr_printable_breakpoints > 0)
6765     annotate_field (1);
6766   ui_out_table_header (uiout, print_type_col_width, ui_left,
6767                        "type", "Type");                         /* 2 */
6768   if (nr_printable_breakpoints > 0)
6769     annotate_field (2);
6770   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6771   if (nr_printable_breakpoints > 0)
6772     annotate_field (3);
6773   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6774   if (opts.addressprint)
6775     {
6776       if (nr_printable_breakpoints > 0)
6777         annotate_field (4);
6778       if (print_address_bits <= 32)
6779         ui_out_table_header (uiout, 10, ui_left, 
6780                              "addr", "Address");                /* 5 */
6781       else
6782         ui_out_table_header (uiout, 18, ui_left, 
6783                              "addr", "Address");                /* 5 */
6784     }
6785   if (nr_printable_breakpoints > 0)
6786     annotate_field (5);
6787   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6788   ui_out_table_body (uiout);
6789   if (nr_printable_breakpoints > 0)
6790     annotate_breakpoints_table ();
6791
6792   ALL_BREAKPOINTS (b)
6793     {
6794       QUIT;
6795       /* If we have a filter, only list the breakpoints it accepts.  */
6796       if (filter && !filter (b))
6797         continue;
6798
6799       /* If we have an "args" string, it is a list of breakpoints to 
6800          accept.  Skip the others.  */
6801
6802       if (args != NULL && *args != '\0')
6803         {
6804           if (allflag)  /* maintenance info breakpoint */
6805             {
6806               if (parse_and_eval_long (args) != b->number)
6807                 continue;
6808             }
6809           else          /* all others */
6810             {
6811               if (!number_is_in_list (args, b->number))
6812                 continue;
6813             }
6814         }
6815       /* We only print out user settable breakpoints unless the
6816          allflag is set.  */
6817       if (allflag || user_breakpoint_p (b))
6818         print_one_breakpoint (b, &last_loc, allflag);
6819     }
6820
6821   do_cleanups (bkpttbl_chain);
6822
6823   if (nr_printable_breakpoints == 0)
6824     {
6825       /* If there's a filter, let the caller decide how to report
6826          empty list.  */
6827       if (!filter)
6828         {
6829           if (args == NULL || *args == '\0')
6830             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6831           else
6832             ui_out_message (uiout, 0, 
6833                             "No breakpoint or watchpoint matching '%s'.\n",
6834                             args);
6835         }
6836     }
6837   else
6838     {
6839       if (last_loc && !server_command)
6840         set_next_address (last_loc->gdbarch, last_loc->address);
6841     }
6842
6843   /* FIXME?  Should this be moved up so that it is only called when
6844      there have been breakpoints? */
6845   annotate_breakpoints_table_end ();
6846
6847   return nr_printable_breakpoints;
6848 }
6849
6850 /* Display the value of default-collect in a way that is generally
6851    compatible with the breakpoint list.  */
6852
6853 static void
6854 default_collect_info (void)
6855 {
6856   struct ui_out *uiout = current_uiout;
6857
6858   /* If it has no value (which is frequently the case), say nothing; a
6859      message like "No default-collect." gets in user's face when it's
6860      not wanted.  */
6861   if (!*default_collect)
6862     return;
6863
6864   /* The following phrase lines up nicely with per-tracepoint collect
6865      actions.  */
6866   ui_out_text (uiout, "default collect ");
6867   ui_out_field_string (uiout, "default-collect", default_collect);
6868   ui_out_text (uiout, " \n");
6869 }
6870   
6871 static void
6872 breakpoints_info (char *args, int from_tty)
6873 {
6874   breakpoint_1 (args, 0, NULL);
6875
6876   default_collect_info ();
6877 }
6878
6879 static void
6880 watchpoints_info (char *args, int from_tty)
6881 {
6882   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6883   struct ui_out *uiout = current_uiout;
6884
6885   if (num_printed == 0)
6886     {
6887       if (args == NULL || *args == '\0')
6888         ui_out_message (uiout, 0, "No watchpoints.\n");
6889       else
6890         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6891     }
6892 }
6893
6894 static void
6895 maintenance_info_breakpoints (char *args, int from_tty)
6896 {
6897   breakpoint_1 (args, 1, NULL);
6898
6899   default_collect_info ();
6900 }
6901
6902 static int
6903 breakpoint_has_pc (struct breakpoint *b,
6904                    struct program_space *pspace,
6905                    CORE_ADDR pc, struct obj_section *section)
6906 {
6907   struct bp_location *bl = b->loc;
6908
6909   for (; bl; bl = bl->next)
6910     {
6911       if (bl->pspace == pspace
6912           && bl->address == pc
6913           && (!overlay_debugging || bl->section == section))
6914         return 1;         
6915     }
6916   return 0;
6917 }
6918
6919 /* Print a message describing any user-breakpoints set at PC.  This
6920    concerns with logical breakpoints, so we match program spaces, not
6921    address spaces.  */
6922
6923 static void
6924 describe_other_breakpoints (struct gdbarch *gdbarch,
6925                             struct program_space *pspace, CORE_ADDR pc,
6926                             struct obj_section *section, int thread)
6927 {
6928   int others = 0;
6929   struct breakpoint *b;
6930
6931   ALL_BREAKPOINTS (b)
6932     others += (user_breakpoint_p (b)
6933                && breakpoint_has_pc (b, pspace, pc, section));
6934   if (others > 0)
6935     {
6936       if (others == 1)
6937         printf_filtered (_("Note: breakpoint "));
6938       else /* if (others == ???) */
6939         printf_filtered (_("Note: breakpoints "));
6940       ALL_BREAKPOINTS (b)
6941         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6942           {
6943             others--;
6944             printf_filtered ("%d", b->number);
6945             if (b->thread == -1 && thread != -1)
6946               printf_filtered (" (all threads)");
6947             else if (b->thread != -1)
6948               printf_filtered (" (thread %d)", b->thread);
6949             printf_filtered ("%s%s ",
6950                              ((b->enable_state == bp_disabled
6951                                || b->enable_state == bp_call_disabled)
6952                               ? " (disabled)"
6953                               : b->enable_state == bp_permanent 
6954                               ? " (permanent)"
6955                               : ""),
6956                              (others > 1) ? "," 
6957                              : ((others == 1) ? " and" : ""));
6958           }
6959       printf_filtered (_("also set at pc "));
6960       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6961       printf_filtered (".\n");
6962     }
6963 }
6964 \f
6965
6966 /* Return true iff it is meaningful to use the address member of
6967    BPT.  For some breakpoint types, the address member is irrelevant
6968    and it makes no sense to attempt to compare it to other addresses
6969    (or use it for any other purpose either).
6970
6971    More specifically, each of the following breakpoint types will
6972    always have a zero valued address and we don't want to mark
6973    breakpoints of any of these types to be a duplicate of an actual
6974    breakpoint at address zero:
6975
6976       bp_watchpoint
6977       bp_catchpoint
6978
6979 */
6980
6981 static int
6982 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6983 {
6984   enum bptype type = bpt->type;
6985
6986   return (type != bp_watchpoint && type != bp_catchpoint);
6987 }
6988
6989 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6990    true if LOC1 and LOC2 represent the same watchpoint location.  */
6991
6992 static int
6993 watchpoint_locations_match (struct bp_location *loc1, 
6994                             struct bp_location *loc2)
6995 {
6996   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6997   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6998
6999   /* Both of them must exist.  */
7000   gdb_assert (w1 != NULL);
7001   gdb_assert (w2 != NULL);
7002
7003   /* If the target can evaluate the condition expression in hardware,
7004      then we we need to insert both watchpoints even if they are at
7005      the same place.  Otherwise the watchpoint will only trigger when
7006      the condition of whichever watchpoint was inserted evaluates to
7007      true, not giving a chance for GDB to check the condition of the
7008      other watchpoint.  */
7009   if ((w1->cond_exp
7010        && target_can_accel_watchpoint_condition (loc1->address, 
7011                                                  loc1->length,
7012                                                  loc1->watchpoint_type,
7013                                                  w1->cond_exp))
7014       || (w2->cond_exp
7015           && target_can_accel_watchpoint_condition (loc2->address, 
7016                                                     loc2->length,
7017                                                     loc2->watchpoint_type,
7018                                                     w2->cond_exp)))
7019     return 0;
7020
7021   /* Note that this checks the owner's type, not the location's.  In
7022      case the target does not support read watchpoints, but does
7023      support access watchpoints, we'll have bp_read_watchpoint
7024      watchpoints with hw_access locations.  Those should be considered
7025      duplicates of hw_read locations.  The hw_read locations will
7026      become hw_access locations later.  */
7027   return (loc1->owner->type == loc2->owner->type
7028           && loc1->pspace->aspace == loc2->pspace->aspace
7029           && loc1->address == loc2->address
7030           && loc1->length == loc2->length);
7031 }
7032
7033 /* See breakpoint.h.  */
7034
7035 int
7036 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7037                           struct address_space *aspace2, CORE_ADDR addr2)
7038 {
7039   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7040            || aspace1 == aspace2)
7041           && addr1 == addr2);
7042 }
7043
7044 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7045    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7046    matches ASPACE2.  On targets that have global breakpoints, the address
7047    space doesn't really matter.  */
7048
7049 static int
7050 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7051                                 int len1, struct address_space *aspace2,
7052                                 CORE_ADDR addr2)
7053 {
7054   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7055            || aspace1 == aspace2)
7056           && addr2 >= addr1 && addr2 < addr1 + len1);
7057 }
7058
7059 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7060    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7061    matches the breakpoint's address space.  On targets that have global
7062    breakpoints, the address space doesn't really matter.  */
7063
7064 static int
7065 breakpoint_location_address_match (struct bp_location *bl,
7066                                    struct address_space *aspace,
7067                                    CORE_ADDR addr)
7068 {
7069   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7070                                     aspace, addr)
7071           || (bl->length
7072               && breakpoint_address_match_range (bl->pspace->aspace,
7073                                                  bl->address, bl->length,
7074                                                  aspace, addr)));
7075 }
7076
7077 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7078    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7079    true, otherwise returns false.  */
7080
7081 static int
7082 tracepoint_locations_match (struct bp_location *loc1,
7083                             struct bp_location *loc2)
7084 {
7085   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7086     /* Since tracepoint locations are never duplicated with others', tracepoint
7087        locations at the same address of different tracepoints are regarded as
7088        different locations.  */
7089     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7090   else
7091     return 0;
7092 }
7093
7094 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7095    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7096    represent the same location.  */
7097
7098 static int
7099 breakpoint_locations_match (struct bp_location *loc1, 
7100                             struct bp_location *loc2)
7101 {
7102   int hw_point1, hw_point2;
7103
7104   /* Both of them must not be in moribund_locations.  */
7105   gdb_assert (loc1->owner != NULL);
7106   gdb_assert (loc2->owner != NULL);
7107
7108   hw_point1 = is_hardware_watchpoint (loc1->owner);
7109   hw_point2 = is_hardware_watchpoint (loc2->owner);
7110
7111   if (hw_point1 != hw_point2)
7112     return 0;
7113   else if (hw_point1)
7114     return watchpoint_locations_match (loc1, loc2);
7115   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7116     return tracepoint_locations_match (loc1, loc2);
7117   else
7118     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7119     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7120                                      loc2->pspace->aspace, loc2->address)
7121             && loc1->length == loc2->length);
7122 }
7123
7124 static void
7125 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7126                                int bnum, int have_bnum)
7127 {
7128   /* The longest string possibly returned by hex_string_custom
7129      is 50 chars.  These must be at least that big for safety.  */
7130   char astr1[64];
7131   char astr2[64];
7132
7133   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7134   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7135   if (have_bnum)
7136     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7137              bnum, astr1, astr2);
7138   else
7139     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7140 }
7141
7142 /* Adjust a breakpoint's address to account for architectural
7143    constraints on breakpoint placement.  Return the adjusted address.
7144    Note: Very few targets require this kind of adjustment.  For most
7145    targets, this function is simply the identity function.  */
7146
7147 static CORE_ADDR
7148 adjust_breakpoint_address (struct gdbarch *gdbarch,
7149                            CORE_ADDR bpaddr, enum bptype bptype)
7150 {
7151   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7152     {
7153       /* Very few targets need any kind of breakpoint adjustment.  */
7154       return bpaddr;
7155     }
7156   else if (bptype == bp_watchpoint
7157            || bptype == bp_hardware_watchpoint
7158            || bptype == bp_read_watchpoint
7159            || bptype == bp_access_watchpoint
7160            || bptype == bp_catchpoint)
7161     {
7162       /* Watchpoints and the various bp_catch_* eventpoints should not
7163          have their addresses modified.  */
7164       return bpaddr;
7165     }
7166   else
7167     {
7168       CORE_ADDR adjusted_bpaddr;
7169
7170       /* Some targets have architectural constraints on the placement
7171          of breakpoint instructions.  Obtain the adjusted address.  */
7172       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7173
7174       /* An adjusted breakpoint address can significantly alter
7175          a user's expectations.  Print a warning if an adjustment
7176          is required.  */
7177       if (adjusted_bpaddr != bpaddr)
7178         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7179
7180       return adjusted_bpaddr;
7181     }
7182 }
7183
7184 void
7185 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7186                   struct breakpoint *owner)
7187 {
7188   memset (loc, 0, sizeof (*loc));
7189
7190   gdb_assert (ops != NULL);
7191
7192   loc->ops = ops;
7193   loc->owner = owner;
7194   loc->cond = NULL;
7195   loc->cond_bytecode = NULL;
7196   loc->shlib_disabled = 0;
7197   loc->enabled = 1;
7198
7199   switch (owner->type)
7200     {
7201     case bp_breakpoint:
7202     case bp_until:
7203     case bp_finish:
7204     case bp_longjmp:
7205     case bp_longjmp_resume:
7206     case bp_longjmp_call_dummy:
7207     case bp_exception:
7208     case bp_exception_resume:
7209     case bp_step_resume:
7210     case bp_hp_step_resume:
7211     case bp_watchpoint_scope:
7212     case bp_call_dummy:
7213     case bp_std_terminate:
7214     case bp_shlib_event:
7215     case bp_thread_event:
7216     case bp_overlay_event:
7217     case bp_jit_event:
7218     case bp_longjmp_master:
7219     case bp_std_terminate_master:
7220     case bp_exception_master:
7221     case bp_gnu_ifunc_resolver:
7222     case bp_gnu_ifunc_resolver_return:
7223     case bp_dprintf:
7224       loc->loc_type = bp_loc_software_breakpoint;
7225       mark_breakpoint_location_modified (loc);
7226       break;
7227     case bp_hardware_breakpoint:
7228       loc->loc_type = bp_loc_hardware_breakpoint;
7229       mark_breakpoint_location_modified (loc);
7230       break;
7231     case bp_hardware_watchpoint:
7232     case bp_read_watchpoint:
7233     case bp_access_watchpoint:
7234       loc->loc_type = bp_loc_hardware_watchpoint;
7235       break;
7236     case bp_watchpoint:
7237     case bp_catchpoint:
7238     case bp_tracepoint:
7239     case bp_fast_tracepoint:
7240     case bp_static_tracepoint:
7241       loc->loc_type = bp_loc_other;
7242       break;
7243     default:
7244       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7245     }
7246
7247   loc->refc = 1;
7248 }
7249
7250 /* Allocate a struct bp_location.  */
7251
7252 static struct bp_location *
7253 allocate_bp_location (struct breakpoint *bpt)
7254 {
7255   return bpt->ops->allocate_location (bpt);
7256 }
7257
7258 static void
7259 free_bp_location (struct bp_location *loc)
7260 {
7261   loc->ops->dtor (loc);
7262   xfree (loc);
7263 }
7264
7265 /* Increment reference count.  */
7266
7267 static void
7268 incref_bp_location (struct bp_location *bl)
7269 {
7270   ++bl->refc;
7271 }
7272
7273 /* Decrement reference count.  If the reference count reaches 0,
7274    destroy the bp_location.  Sets *BLP to NULL.  */
7275
7276 static void
7277 decref_bp_location (struct bp_location **blp)
7278 {
7279   gdb_assert ((*blp)->refc > 0);
7280
7281   if (--(*blp)->refc == 0)
7282     free_bp_location (*blp);
7283   *blp = NULL;
7284 }
7285
7286 /* Add breakpoint B at the end of the global breakpoint chain.  */
7287
7288 static void
7289 add_to_breakpoint_chain (struct breakpoint *b)
7290 {
7291   struct breakpoint *b1;
7292
7293   /* Add this breakpoint to the end of the chain so that a list of
7294      breakpoints will come out in order of increasing numbers.  */
7295
7296   b1 = breakpoint_chain;
7297   if (b1 == 0)
7298     breakpoint_chain = b;
7299   else
7300     {
7301       while (b1->next)
7302         b1 = b1->next;
7303       b1->next = b;
7304     }
7305 }
7306
7307 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7308
7309 static void
7310 init_raw_breakpoint_without_location (struct breakpoint *b,
7311                                       struct gdbarch *gdbarch,
7312                                       enum bptype bptype,
7313                                       const struct breakpoint_ops *ops)
7314 {
7315   memset (b, 0, sizeof (*b));
7316
7317   gdb_assert (ops != NULL);
7318
7319   b->ops = ops;
7320   b->type = bptype;
7321   b->gdbarch = gdbarch;
7322   b->language = current_language->la_language;
7323   b->input_radix = input_radix;
7324   b->thread = -1;
7325   b->enable_state = bp_enabled;
7326   b->next = 0;
7327   b->silent = 0;
7328   b->ignore_count = 0;
7329   b->commands = NULL;
7330   b->frame_id = null_frame_id;
7331   b->condition_not_parsed = 0;
7332   b->py_bp_object = NULL;
7333   b->related_breakpoint = b;
7334 }
7335
7336 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7337    that has type BPTYPE and has no locations as yet.  */
7338
7339 static struct breakpoint *
7340 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7341                                      enum bptype bptype,
7342                                      const struct breakpoint_ops *ops)
7343 {
7344   struct breakpoint *b = XNEW (struct breakpoint);
7345
7346   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7347   add_to_breakpoint_chain (b);
7348   return b;
7349 }
7350
7351 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7352    resolutions should be made as the user specified the location explicitly
7353    enough.  */
7354
7355 static void
7356 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7357 {
7358   gdb_assert (loc->owner != NULL);
7359
7360   if (loc->owner->type == bp_breakpoint
7361       || loc->owner->type == bp_hardware_breakpoint
7362       || is_tracepoint (loc->owner))
7363     {
7364       int is_gnu_ifunc;
7365       const char *function_name;
7366       CORE_ADDR func_addr;
7367
7368       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7369                                           &func_addr, NULL, &is_gnu_ifunc);
7370
7371       if (is_gnu_ifunc && !explicit_loc)
7372         {
7373           struct breakpoint *b = loc->owner;
7374
7375           gdb_assert (loc->pspace == current_program_space);
7376           if (gnu_ifunc_resolve_name (function_name,
7377                                       &loc->requested_address))
7378             {
7379               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7380               loc->address = adjust_breakpoint_address (loc->gdbarch,
7381                                                         loc->requested_address,
7382                                                         b->type);
7383             }
7384           else if (b->type == bp_breakpoint && b->loc == loc
7385                    && loc->next == NULL && b->related_breakpoint == b)
7386             {
7387               /* Create only the whole new breakpoint of this type but do not
7388                  mess more complicated breakpoints with multiple locations.  */
7389               b->type = bp_gnu_ifunc_resolver;
7390               /* Remember the resolver's address for use by the return
7391                  breakpoint.  */
7392               loc->related_address = func_addr;
7393             }
7394         }
7395
7396       if (function_name)
7397         loc->function_name = xstrdup (function_name);
7398     }
7399 }
7400
7401 /* Attempt to determine architecture of location identified by SAL.  */
7402 struct gdbarch *
7403 get_sal_arch (struct symtab_and_line sal)
7404 {
7405   if (sal.section)
7406     return get_objfile_arch (sal.section->objfile);
7407   if (sal.symtab)
7408     return get_objfile_arch (sal.symtab->objfile);
7409
7410   return NULL;
7411 }
7412
7413 /* Low level routine for partially initializing a breakpoint of type
7414    BPTYPE.  The newly created breakpoint's address, section, source
7415    file name, and line number are provided by SAL.
7416
7417    It is expected that the caller will complete the initialization of
7418    the newly created breakpoint struct as well as output any status
7419    information regarding the creation of a new breakpoint.  */
7420
7421 static void
7422 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7423                      struct symtab_and_line sal, enum bptype bptype,
7424                      const struct breakpoint_ops *ops)
7425 {
7426   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7427
7428   add_location_to_breakpoint (b, &sal);
7429
7430   if (bptype != bp_catchpoint)
7431     gdb_assert (sal.pspace != NULL);
7432
7433   /* Store the program space that was used to set the breakpoint,
7434      except for ordinary breakpoints, which are independent of the
7435      program space.  */
7436   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7437     b->pspace = sal.pspace;
7438 }
7439
7440 /* set_raw_breakpoint is a low level routine for allocating and
7441    partially initializing a breakpoint of type BPTYPE.  The newly
7442    created breakpoint's address, section, source file name, and line
7443    number are provided by SAL.  The newly created and partially
7444    initialized breakpoint is added to the breakpoint chain and
7445    is also returned as the value of this function.
7446
7447    It is expected that the caller will complete the initialization of
7448    the newly created breakpoint struct as well as output any status
7449    information regarding the creation of a new breakpoint.  In
7450    particular, set_raw_breakpoint does NOT set the breakpoint
7451    number!  Care should be taken to not allow an error to occur
7452    prior to completing the initialization of the breakpoint.  If this
7453    should happen, a bogus breakpoint will be left on the chain.  */
7454
7455 struct breakpoint *
7456 set_raw_breakpoint (struct gdbarch *gdbarch,
7457                     struct symtab_and_line sal, enum bptype bptype,
7458                     const struct breakpoint_ops *ops)
7459 {
7460   struct breakpoint *b = XNEW (struct breakpoint);
7461
7462   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7463   add_to_breakpoint_chain (b);
7464   return b;
7465 }
7466
7467
7468 /* Note that the breakpoint object B describes a permanent breakpoint
7469    instruction, hard-wired into the inferior's code.  */
7470 void
7471 make_breakpoint_permanent (struct breakpoint *b)
7472 {
7473   struct bp_location *bl;
7474
7475   b->enable_state = bp_permanent;
7476
7477   /* By definition, permanent breakpoints are already present in the
7478      code.  Mark all locations as inserted.  For now,
7479      make_breakpoint_permanent is called in just one place, so it's
7480      hard to say if it's reasonable to have permanent breakpoint with
7481      multiple locations or not, but it's easy to implement.  */
7482   for (bl = b->loc; bl; bl = bl->next)
7483     bl->inserted = 1;
7484 }
7485
7486 /* Call this routine when stepping and nexting to enable a breakpoint
7487    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7488    initiated the operation.  */
7489
7490 void
7491 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7492 {
7493   struct breakpoint *b, *b_tmp;
7494   int thread = tp->num;
7495
7496   /* To avoid having to rescan all objfile symbols at every step,
7497      we maintain a list of continually-inserted but always disabled
7498      longjmp "master" breakpoints.  Here, we simply create momentary
7499      clones of those and enable them for the requested thread.  */
7500   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7501     if (b->pspace == current_program_space
7502         && (b->type == bp_longjmp_master
7503             || b->type == bp_exception_master))
7504       {
7505         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7506         struct breakpoint *clone;
7507
7508         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7509            after their removal.  */
7510         clone = momentary_breakpoint_from_master (b, type,
7511                                                   &longjmp_breakpoint_ops, 1);
7512         clone->thread = thread;
7513       }
7514
7515   tp->initiating_frame = frame;
7516 }
7517
7518 /* Delete all longjmp breakpoints from THREAD.  */
7519 void
7520 delete_longjmp_breakpoint (int thread)
7521 {
7522   struct breakpoint *b, *b_tmp;
7523
7524   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7525     if (b->type == bp_longjmp || b->type == bp_exception)
7526       {
7527         if (b->thread == thread)
7528           delete_breakpoint (b);
7529       }
7530 }
7531
7532 void
7533 delete_longjmp_breakpoint_at_next_stop (int thread)
7534 {
7535   struct breakpoint *b, *b_tmp;
7536
7537   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7538     if (b->type == bp_longjmp || b->type == bp_exception)
7539       {
7540         if (b->thread == thread)
7541           b->disposition = disp_del_at_next_stop;
7542       }
7543 }
7544
7545 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7546    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7547    pointer to any of them.  Return NULL if this system cannot place longjmp
7548    breakpoints.  */
7549
7550 struct breakpoint *
7551 set_longjmp_breakpoint_for_call_dummy (void)
7552 {
7553   struct breakpoint *b, *retval = NULL;
7554
7555   ALL_BREAKPOINTS (b)
7556     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7557       {
7558         struct breakpoint *new_b;
7559
7560         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7561                                                   &momentary_breakpoint_ops,
7562                                                   1);
7563         new_b->thread = pid_to_thread_id (inferior_ptid);
7564
7565         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7566
7567         gdb_assert (new_b->related_breakpoint == new_b);
7568         if (retval == NULL)
7569           retval = new_b;
7570         new_b->related_breakpoint = retval;
7571         while (retval->related_breakpoint != new_b->related_breakpoint)
7572           retval = retval->related_breakpoint;
7573         retval->related_breakpoint = new_b;
7574       }
7575
7576   return retval;
7577 }
7578
7579 /* Verify all existing dummy frames and their associated breakpoints for
7580    TP.  Remove those which can no longer be found in the current frame
7581    stack.
7582
7583    You should call this function only at places where it is safe to currently
7584    unwind the whole stack.  Failed stack unwind would discard live dummy
7585    frames.  */
7586
7587 void
7588 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7589 {
7590   struct breakpoint *b, *b_tmp;
7591
7592   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7593     if (b->type == bp_longjmp_call_dummy && b->thread == tp->num)
7594       {
7595         struct breakpoint *dummy_b = b->related_breakpoint;
7596
7597         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7598           dummy_b = dummy_b->related_breakpoint;
7599         if (dummy_b->type != bp_call_dummy
7600             || frame_find_by_id (dummy_b->frame_id) != NULL)
7601           continue;
7602         
7603         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7604
7605         while (b->related_breakpoint != b)
7606           {
7607             if (b_tmp == b->related_breakpoint)
7608               b_tmp = b->related_breakpoint->next;
7609             delete_breakpoint (b->related_breakpoint);
7610           }
7611         delete_breakpoint (b);
7612       }
7613 }
7614
7615 void
7616 enable_overlay_breakpoints (void)
7617 {
7618   struct breakpoint *b;
7619
7620   ALL_BREAKPOINTS (b)
7621     if (b->type == bp_overlay_event)
7622     {
7623       b->enable_state = bp_enabled;
7624       update_global_location_list (UGLL_MAY_INSERT);
7625       overlay_events_enabled = 1;
7626     }
7627 }
7628
7629 void
7630 disable_overlay_breakpoints (void)
7631 {
7632   struct breakpoint *b;
7633
7634   ALL_BREAKPOINTS (b)
7635     if (b->type == bp_overlay_event)
7636     {
7637       b->enable_state = bp_disabled;
7638       update_global_location_list (UGLL_DONT_INSERT);
7639       overlay_events_enabled = 0;
7640     }
7641 }
7642
7643 /* Set an active std::terminate breakpoint for each std::terminate
7644    master breakpoint.  */
7645 void
7646 set_std_terminate_breakpoint (void)
7647 {
7648   struct breakpoint *b, *b_tmp;
7649
7650   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7651     if (b->pspace == current_program_space
7652         && b->type == bp_std_terminate_master)
7653       {
7654         momentary_breakpoint_from_master (b, bp_std_terminate,
7655                                           &momentary_breakpoint_ops, 1);
7656       }
7657 }
7658
7659 /* Delete all the std::terminate breakpoints.  */
7660 void
7661 delete_std_terminate_breakpoint (void)
7662 {
7663   struct breakpoint *b, *b_tmp;
7664
7665   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7666     if (b->type == bp_std_terminate)
7667       delete_breakpoint (b);
7668 }
7669
7670 struct breakpoint *
7671 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7672 {
7673   struct breakpoint *b;
7674
7675   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7676                                   &internal_breakpoint_ops);
7677
7678   b->enable_state = bp_enabled;
7679   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7680   b->addr_string
7681     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7682
7683   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7684
7685   return b;
7686 }
7687
7688 void
7689 remove_thread_event_breakpoints (void)
7690 {
7691   struct breakpoint *b, *b_tmp;
7692
7693   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7694     if (b->type == bp_thread_event
7695         && b->loc->pspace == current_program_space)
7696       delete_breakpoint (b);
7697 }
7698
7699 struct lang_and_radix
7700   {
7701     enum language lang;
7702     int radix;
7703   };
7704
7705 /* Create a breakpoint for JIT code registration and unregistration.  */
7706
7707 struct breakpoint *
7708 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7709 {
7710   struct breakpoint *b;
7711
7712   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7713                                   &internal_breakpoint_ops);
7714   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7715   return b;
7716 }
7717
7718 /* Remove JIT code registration and unregistration breakpoint(s).  */
7719
7720 void
7721 remove_jit_event_breakpoints (void)
7722 {
7723   struct breakpoint *b, *b_tmp;
7724
7725   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7726     if (b->type == bp_jit_event
7727         && b->loc->pspace == current_program_space)
7728       delete_breakpoint (b);
7729 }
7730
7731 void
7732 remove_solib_event_breakpoints (void)
7733 {
7734   struct breakpoint *b, *b_tmp;
7735
7736   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7737     if (b->type == bp_shlib_event
7738         && b->loc->pspace == current_program_space)
7739       delete_breakpoint (b);
7740 }
7741
7742 /* See breakpoint.h.  */
7743
7744 void
7745 remove_solib_event_breakpoints_at_next_stop (void)
7746 {
7747   struct breakpoint *b, *b_tmp;
7748
7749   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7750     if (b->type == bp_shlib_event
7751         && b->loc->pspace == current_program_space)
7752       b->disposition = disp_del_at_next_stop;
7753 }
7754
7755 /* Helper for create_solib_event_breakpoint /
7756    create_and_insert_solib_event_breakpoint.  Allows specifying which
7757    INSERT_MODE to pass through to update_global_location_list.  */
7758
7759 static struct breakpoint *
7760 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7761                                  enum ugll_insert_mode insert_mode)
7762 {
7763   struct breakpoint *b;
7764
7765   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7766                                   &internal_breakpoint_ops);
7767   update_global_location_list_nothrow (insert_mode);
7768   return b;
7769 }
7770
7771 struct breakpoint *
7772 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7773 {
7774   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7775 }
7776
7777 /* See breakpoint.h.  */
7778
7779 struct breakpoint *
7780 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7781 {
7782   struct breakpoint *b;
7783
7784   /* Explicitly tell update_global_location_list to insert
7785      locations.  */
7786   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7787   if (!b->loc->inserted)
7788     {
7789       delete_breakpoint (b);
7790       return NULL;
7791     }
7792   return b;
7793 }
7794
7795 /* Disable any breakpoints that are on code in shared libraries.  Only
7796    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7797
7798 void
7799 disable_breakpoints_in_shlibs (void)
7800 {
7801   struct bp_location *loc, **locp_tmp;
7802
7803   ALL_BP_LOCATIONS (loc, locp_tmp)
7804   {
7805     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7806     struct breakpoint *b = loc->owner;
7807
7808     /* We apply the check to all breakpoints, including disabled for
7809        those with loc->duplicate set.  This is so that when breakpoint
7810        becomes enabled, or the duplicate is removed, gdb will try to
7811        insert all breakpoints.  If we don't set shlib_disabled here,
7812        we'll try to insert those breakpoints and fail.  */
7813     if (((b->type == bp_breakpoint)
7814          || (b->type == bp_jit_event)
7815          || (b->type == bp_hardware_breakpoint)
7816          || (is_tracepoint (b)))
7817         && loc->pspace == current_program_space
7818         && !loc->shlib_disabled
7819         && solib_name_from_address (loc->pspace, loc->address)
7820         )
7821       {
7822         loc->shlib_disabled = 1;
7823       }
7824   }
7825 }
7826
7827 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7828    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7829    disabled ones can just stay disabled.  */
7830
7831 static void
7832 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7833 {
7834   struct bp_location *loc, **locp_tmp;
7835   int disabled_shlib_breaks = 0;
7836
7837   /* SunOS a.out shared libraries are always mapped, so do not
7838      disable breakpoints; they will only be reported as unloaded
7839      through clear_solib when GDB discards its shared library
7840      list.  See clear_solib for more information.  */
7841   if (exec_bfd != NULL
7842       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7843     return;
7844
7845   ALL_BP_LOCATIONS (loc, locp_tmp)
7846   {
7847     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7848     struct breakpoint *b = loc->owner;
7849
7850     if (solib->pspace == loc->pspace
7851         && !loc->shlib_disabled
7852         && (((b->type == bp_breakpoint
7853               || b->type == bp_jit_event
7854               || b->type == bp_hardware_breakpoint)
7855              && (loc->loc_type == bp_loc_hardware_breakpoint
7856                  || loc->loc_type == bp_loc_software_breakpoint))
7857             || is_tracepoint (b))
7858         && solib_contains_address_p (solib, loc->address))
7859       {
7860         loc->shlib_disabled = 1;
7861         /* At this point, we cannot rely on remove_breakpoint
7862            succeeding so we must mark the breakpoint as not inserted
7863            to prevent future errors occurring in remove_breakpoints.  */
7864         loc->inserted = 0;
7865
7866         /* This may cause duplicate notifications for the same breakpoint.  */
7867         observer_notify_breakpoint_modified (b);
7868
7869         if (!disabled_shlib_breaks)
7870           {
7871             target_terminal_ours_for_output ();
7872             warning (_("Temporarily disabling breakpoints "
7873                        "for unloaded shared library \"%s\""),
7874                      solib->so_name);
7875           }
7876         disabled_shlib_breaks = 1;
7877       }
7878   }
7879 }
7880
7881 /* Disable any breakpoints and tracepoints in OBJFILE upon
7882    notification of free_objfile.  Only apply to enabled breakpoints,
7883    disabled ones can just stay disabled.  */
7884
7885 static void
7886 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7887 {
7888   struct breakpoint *b;
7889
7890   if (objfile == NULL)
7891     return;
7892
7893   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7894      managed by the user with add-symbol-file/remove-symbol-file.
7895      Similarly to how breakpoints in shared libraries are handled in
7896      response to "nosharedlibrary", mark breakpoints in such modules
7897      shlib_disabled so they end up uninserted on the next global
7898      location list update.  Shared libraries not loaded by the user
7899      aren't handled here -- they're already handled in
7900      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7901      solib_unloaded observer.  We skip objfiles that are not
7902      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7903      main objfile).  */
7904   if ((objfile->flags & OBJF_SHARED) == 0
7905       || (objfile->flags & OBJF_USERLOADED) == 0)
7906     return;
7907
7908   ALL_BREAKPOINTS (b)
7909     {
7910       struct bp_location *loc;
7911       int bp_modified = 0;
7912
7913       if (!is_breakpoint (b) && !is_tracepoint (b))
7914         continue;
7915
7916       for (loc = b->loc; loc != NULL; loc = loc->next)
7917         {
7918           CORE_ADDR loc_addr = loc->address;
7919
7920           if (loc->loc_type != bp_loc_hardware_breakpoint
7921               && loc->loc_type != bp_loc_software_breakpoint)
7922             continue;
7923
7924           if (loc->shlib_disabled != 0)
7925             continue;
7926
7927           if (objfile->pspace != loc->pspace)
7928             continue;
7929
7930           if (loc->loc_type != bp_loc_hardware_breakpoint
7931               && loc->loc_type != bp_loc_software_breakpoint)
7932             continue;
7933
7934           if (is_addr_in_objfile (loc_addr, objfile))
7935             {
7936               loc->shlib_disabled = 1;
7937               /* At this point, we don't know whether the object was
7938                  unmapped from the inferior or not, so leave the
7939                  inserted flag alone.  We'll handle failure to
7940                  uninsert quietly, in case the object was indeed
7941                  unmapped.  */
7942
7943               mark_breakpoint_location_modified (loc);
7944
7945               bp_modified = 1;
7946             }
7947         }
7948
7949       if (bp_modified)
7950         observer_notify_breakpoint_modified (b);
7951     }
7952 }
7953
7954 /* FORK & VFORK catchpoints.  */
7955
7956 /* An instance of this type is used to represent a fork or vfork
7957    catchpoint.  It includes a "struct breakpoint" as a kind of base
7958    class; users downcast to "struct breakpoint *" when needed.  A
7959    breakpoint is really of this type iff its ops pointer points to
7960    CATCH_FORK_BREAKPOINT_OPS.  */
7961
7962 struct fork_catchpoint
7963 {
7964   /* The base class.  */
7965   struct breakpoint base;
7966
7967   /* Process id of a child process whose forking triggered this
7968      catchpoint.  This field is only valid immediately after this
7969      catchpoint has triggered.  */
7970   ptid_t forked_inferior_pid;
7971 };
7972
7973 /* Implement the "insert" breakpoint_ops method for fork
7974    catchpoints.  */
7975
7976 static int
7977 insert_catch_fork (struct bp_location *bl)
7978 {
7979   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7980 }
7981
7982 /* Implement the "remove" breakpoint_ops method for fork
7983    catchpoints.  */
7984
7985 static int
7986 remove_catch_fork (struct bp_location *bl)
7987 {
7988   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7989 }
7990
7991 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7992    catchpoints.  */
7993
7994 static int
7995 breakpoint_hit_catch_fork (const struct bp_location *bl,
7996                            struct address_space *aspace, CORE_ADDR bp_addr,
7997                            const struct target_waitstatus *ws)
7998 {
7999   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8000
8001   if (ws->kind != TARGET_WAITKIND_FORKED)
8002     return 0;
8003
8004   c->forked_inferior_pid = ws->value.related_pid;
8005   return 1;
8006 }
8007
8008 /* Implement the "print_it" breakpoint_ops method for fork
8009    catchpoints.  */
8010
8011 static enum print_stop_action
8012 print_it_catch_fork (bpstat bs)
8013 {
8014   struct ui_out *uiout = current_uiout;
8015   struct breakpoint *b = bs->breakpoint_at;
8016   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8017
8018   annotate_catchpoint (b->number);
8019   if (b->disposition == disp_del)
8020     ui_out_text (uiout, "\nTemporary catchpoint ");
8021   else
8022     ui_out_text (uiout, "\nCatchpoint ");
8023   if (ui_out_is_mi_like_p (uiout))
8024     {
8025       ui_out_field_string (uiout, "reason",
8026                            async_reason_lookup (EXEC_ASYNC_FORK));
8027       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8028     }
8029   ui_out_field_int (uiout, "bkptno", b->number);
8030   ui_out_text (uiout, " (forked process ");
8031   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8032   ui_out_text (uiout, "), ");
8033   return PRINT_SRC_AND_LOC;
8034 }
8035
8036 /* Implement the "print_one" breakpoint_ops method for fork
8037    catchpoints.  */
8038
8039 static void
8040 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8041 {
8042   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8043   struct value_print_options opts;
8044   struct ui_out *uiout = current_uiout;
8045
8046   get_user_print_options (&opts);
8047
8048   /* Field 4, the address, is omitted (which makes the columns not
8049      line up too nicely with the headers, but the effect is relatively
8050      readable).  */
8051   if (opts.addressprint)
8052     ui_out_field_skip (uiout, "addr");
8053   annotate_field (5);
8054   ui_out_text (uiout, "fork");
8055   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8056     {
8057       ui_out_text (uiout, ", process ");
8058       ui_out_field_int (uiout, "what",
8059                         ptid_get_pid (c->forked_inferior_pid));
8060       ui_out_spaces (uiout, 1);
8061     }
8062
8063   if (ui_out_is_mi_like_p (uiout))
8064     ui_out_field_string (uiout, "catch-type", "fork");
8065 }
8066
8067 /* Implement the "print_mention" breakpoint_ops method for fork
8068    catchpoints.  */
8069
8070 static void
8071 print_mention_catch_fork (struct breakpoint *b)
8072 {
8073   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8074 }
8075
8076 /* Implement the "print_recreate" breakpoint_ops method for fork
8077    catchpoints.  */
8078
8079 static void
8080 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8081 {
8082   fprintf_unfiltered (fp, "catch fork");
8083   print_recreate_thread (b, fp);
8084 }
8085
8086 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8087
8088 static struct breakpoint_ops catch_fork_breakpoint_ops;
8089
8090 /* Implement the "insert" breakpoint_ops method for vfork
8091    catchpoints.  */
8092
8093 static int
8094 insert_catch_vfork (struct bp_location *bl)
8095 {
8096   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8097 }
8098
8099 /* Implement the "remove" breakpoint_ops method for vfork
8100    catchpoints.  */
8101
8102 static int
8103 remove_catch_vfork (struct bp_location *bl)
8104 {
8105   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8106 }
8107
8108 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8109    catchpoints.  */
8110
8111 static int
8112 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8113                             struct address_space *aspace, CORE_ADDR bp_addr,
8114                             const struct target_waitstatus *ws)
8115 {
8116   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8117
8118   if (ws->kind != TARGET_WAITKIND_VFORKED)
8119     return 0;
8120
8121   c->forked_inferior_pid = ws->value.related_pid;
8122   return 1;
8123 }
8124
8125 /* Implement the "print_it" breakpoint_ops method for vfork
8126    catchpoints.  */
8127
8128 static enum print_stop_action
8129 print_it_catch_vfork (bpstat bs)
8130 {
8131   struct ui_out *uiout = current_uiout;
8132   struct breakpoint *b = bs->breakpoint_at;
8133   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8134
8135   annotate_catchpoint (b->number);
8136   if (b->disposition == disp_del)
8137     ui_out_text (uiout, "\nTemporary catchpoint ");
8138   else
8139     ui_out_text (uiout, "\nCatchpoint ");
8140   if (ui_out_is_mi_like_p (uiout))
8141     {
8142       ui_out_field_string (uiout, "reason",
8143                            async_reason_lookup (EXEC_ASYNC_VFORK));
8144       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8145     }
8146   ui_out_field_int (uiout, "bkptno", b->number);
8147   ui_out_text (uiout, " (vforked process ");
8148   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8149   ui_out_text (uiout, "), ");
8150   return PRINT_SRC_AND_LOC;
8151 }
8152
8153 /* Implement the "print_one" breakpoint_ops method for vfork
8154    catchpoints.  */
8155
8156 static void
8157 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8158 {
8159   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8160   struct value_print_options opts;
8161   struct ui_out *uiout = current_uiout;
8162
8163   get_user_print_options (&opts);
8164   /* Field 4, the address, is omitted (which makes the columns not
8165      line up too nicely with the headers, but the effect is relatively
8166      readable).  */
8167   if (opts.addressprint)
8168     ui_out_field_skip (uiout, "addr");
8169   annotate_field (5);
8170   ui_out_text (uiout, "vfork");
8171   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8172     {
8173       ui_out_text (uiout, ", process ");
8174       ui_out_field_int (uiout, "what",
8175                         ptid_get_pid (c->forked_inferior_pid));
8176       ui_out_spaces (uiout, 1);
8177     }
8178
8179   if (ui_out_is_mi_like_p (uiout))
8180     ui_out_field_string (uiout, "catch-type", "vfork");
8181 }
8182
8183 /* Implement the "print_mention" breakpoint_ops method for vfork
8184    catchpoints.  */
8185
8186 static void
8187 print_mention_catch_vfork (struct breakpoint *b)
8188 {
8189   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8190 }
8191
8192 /* Implement the "print_recreate" breakpoint_ops method for vfork
8193    catchpoints.  */
8194
8195 static void
8196 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8197 {
8198   fprintf_unfiltered (fp, "catch vfork");
8199   print_recreate_thread (b, fp);
8200 }
8201
8202 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8203
8204 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8205
8206 /* An instance of this type is used to represent an solib catchpoint.
8207    It includes a "struct breakpoint" as a kind of base class; users
8208    downcast to "struct breakpoint *" when needed.  A breakpoint is
8209    really of this type iff its ops pointer points to
8210    CATCH_SOLIB_BREAKPOINT_OPS.  */
8211
8212 struct solib_catchpoint
8213 {
8214   /* The base class.  */
8215   struct breakpoint base;
8216
8217   /* True for "catch load", false for "catch unload".  */
8218   unsigned char is_load;
8219
8220   /* Regular expression to match, if any.  COMPILED is only valid when
8221      REGEX is non-NULL.  */
8222   char *regex;
8223   regex_t compiled;
8224 };
8225
8226 static void
8227 dtor_catch_solib (struct breakpoint *b)
8228 {
8229   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8230
8231   if (self->regex)
8232     regfree (&self->compiled);
8233   xfree (self->regex);
8234
8235   base_breakpoint_ops.dtor (b);
8236 }
8237
8238 static int
8239 insert_catch_solib (struct bp_location *ignore)
8240 {
8241   return 0;
8242 }
8243
8244 static int
8245 remove_catch_solib (struct bp_location *ignore)
8246 {
8247   return 0;
8248 }
8249
8250 static int
8251 breakpoint_hit_catch_solib (const struct bp_location *bl,
8252                             struct address_space *aspace,
8253                             CORE_ADDR bp_addr,
8254                             const struct target_waitstatus *ws)
8255 {
8256   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8257   struct breakpoint *other;
8258
8259   if (ws->kind == TARGET_WAITKIND_LOADED)
8260     return 1;
8261
8262   ALL_BREAKPOINTS (other)
8263   {
8264     struct bp_location *other_bl;
8265
8266     if (other == bl->owner)
8267       continue;
8268
8269     if (other->type != bp_shlib_event)
8270       continue;
8271
8272     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8273       continue;
8274
8275     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8276       {
8277         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8278           return 1;
8279       }
8280   }
8281
8282   return 0;
8283 }
8284
8285 static void
8286 check_status_catch_solib (struct bpstats *bs)
8287 {
8288   struct solib_catchpoint *self
8289     = (struct solib_catchpoint *) bs->breakpoint_at;
8290   int ix;
8291
8292   if (self->is_load)
8293     {
8294       struct so_list *iter;
8295
8296       for (ix = 0;
8297            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8298                         ix, iter);
8299            ++ix)
8300         {
8301           if (!self->regex
8302               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8303             return;
8304         }
8305     }
8306   else
8307     {
8308       char *iter;
8309
8310       for (ix = 0;
8311            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8312                         ix, iter);
8313            ++ix)
8314         {
8315           if (!self->regex
8316               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8317             return;
8318         }
8319     }
8320
8321   bs->stop = 0;
8322   bs->print_it = print_it_noop;
8323 }
8324
8325 static enum print_stop_action
8326 print_it_catch_solib (bpstat bs)
8327 {
8328   struct breakpoint *b = bs->breakpoint_at;
8329   struct ui_out *uiout = current_uiout;
8330
8331   annotate_catchpoint (b->number);
8332   if (b->disposition == disp_del)
8333     ui_out_text (uiout, "\nTemporary catchpoint ");
8334   else
8335     ui_out_text (uiout, "\nCatchpoint ");
8336   ui_out_field_int (uiout, "bkptno", b->number);
8337   ui_out_text (uiout, "\n");
8338   if (ui_out_is_mi_like_p (uiout))
8339     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8340   print_solib_event (1);
8341   return PRINT_SRC_AND_LOC;
8342 }
8343
8344 static void
8345 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8346 {
8347   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8348   struct value_print_options opts;
8349   struct ui_out *uiout = current_uiout;
8350   char *msg;
8351
8352   get_user_print_options (&opts);
8353   /* Field 4, the address, is omitted (which makes the columns not
8354      line up too nicely with the headers, but the effect is relatively
8355      readable).  */
8356   if (opts.addressprint)
8357     {
8358       annotate_field (4);
8359       ui_out_field_skip (uiout, "addr");
8360     }
8361
8362   annotate_field (5);
8363   if (self->is_load)
8364     {
8365       if (self->regex)
8366         msg = xstrprintf (_("load of library matching %s"), self->regex);
8367       else
8368         msg = xstrdup (_("load of library"));
8369     }
8370   else
8371     {
8372       if (self->regex)
8373         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8374       else
8375         msg = xstrdup (_("unload of library"));
8376     }
8377   ui_out_field_string (uiout, "what", msg);
8378   xfree (msg);
8379
8380   if (ui_out_is_mi_like_p (uiout))
8381     ui_out_field_string (uiout, "catch-type",
8382                          self->is_load ? "load" : "unload");
8383 }
8384
8385 static void
8386 print_mention_catch_solib (struct breakpoint *b)
8387 {
8388   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8389
8390   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8391                    self->is_load ? "load" : "unload");
8392 }
8393
8394 static void
8395 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8396 {
8397   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8398
8399   fprintf_unfiltered (fp, "%s %s",
8400                       b->disposition == disp_del ? "tcatch" : "catch",
8401                       self->is_load ? "load" : "unload");
8402   if (self->regex)
8403     fprintf_unfiltered (fp, " %s", self->regex);
8404   fprintf_unfiltered (fp, "\n");
8405 }
8406
8407 static struct breakpoint_ops catch_solib_breakpoint_ops;
8408
8409 /* Shared helper function (MI and CLI) for creating and installing
8410    a shared object event catchpoint.  If IS_LOAD is non-zero then
8411    the events to be caught are load events, otherwise they are
8412    unload events.  If IS_TEMP is non-zero the catchpoint is a
8413    temporary one.  If ENABLED is non-zero the catchpoint is
8414    created in an enabled state.  */
8415
8416 void
8417 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8418 {
8419   struct solib_catchpoint *c;
8420   struct gdbarch *gdbarch = get_current_arch ();
8421   struct cleanup *cleanup;
8422
8423   if (!arg)
8424     arg = "";
8425   arg = skip_spaces (arg);
8426
8427   c = XCNEW (struct solib_catchpoint);
8428   cleanup = make_cleanup (xfree, c);
8429
8430   if (*arg != '\0')
8431     {
8432       int errcode;
8433
8434       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8435       if (errcode != 0)
8436         {
8437           char *err = get_regcomp_error (errcode, &c->compiled);
8438
8439           make_cleanup (xfree, err);
8440           error (_("Invalid regexp (%s): %s"), err, arg);
8441         }
8442       c->regex = xstrdup (arg);
8443     }
8444
8445   c->is_load = is_load;
8446   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8447                    &catch_solib_breakpoint_ops);
8448
8449   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8450
8451   discard_cleanups (cleanup);
8452   install_breakpoint (0, &c->base, 1);
8453 }
8454
8455 /* A helper function that does all the work for "catch load" and
8456    "catch unload".  */
8457
8458 static void
8459 catch_load_or_unload (char *arg, int from_tty, int is_load,
8460                       struct cmd_list_element *command)
8461 {
8462   int tempflag;
8463   const int enabled = 1;
8464
8465   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8466
8467   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8468 }
8469
8470 static void
8471 catch_load_command_1 (char *arg, int from_tty,
8472                       struct cmd_list_element *command)
8473 {
8474   catch_load_or_unload (arg, from_tty, 1, command);
8475 }
8476
8477 static void
8478 catch_unload_command_1 (char *arg, int from_tty,
8479                         struct cmd_list_element *command)
8480 {
8481   catch_load_or_unload (arg, from_tty, 0, command);
8482 }
8483
8484 /* An instance of this type is used to represent a syscall catchpoint.
8485    It includes a "struct breakpoint" as a kind of base class; users
8486    downcast to "struct breakpoint *" when needed.  A breakpoint is
8487    really of this type iff its ops pointer points to
8488    CATCH_SYSCALL_BREAKPOINT_OPS.  */
8489
8490 struct syscall_catchpoint
8491 {
8492   /* The base class.  */
8493   struct breakpoint base;
8494
8495   /* Syscall numbers used for the 'catch syscall' feature.  If no
8496      syscall has been specified for filtering, its value is NULL.
8497      Otherwise, it holds a list of all syscalls to be caught.  The
8498      list elements are allocated with xmalloc.  */
8499   VEC(int) *syscalls_to_be_caught;
8500 };
8501
8502 /* Implement the "dtor" breakpoint_ops method for syscall
8503    catchpoints.  */
8504
8505 static void
8506 dtor_catch_syscall (struct breakpoint *b)
8507 {
8508   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8509
8510   VEC_free (int, c->syscalls_to_be_caught);
8511
8512   base_breakpoint_ops.dtor (b);
8513 }
8514
8515 static const struct inferior_data *catch_syscall_inferior_data = NULL;
8516
8517 struct catch_syscall_inferior_data
8518 {
8519   /* We keep a count of the number of times the user has requested a
8520      particular syscall to be tracked, and pass this information to the
8521      target.  This lets capable targets implement filtering directly.  */
8522
8523   /* Number of times that "any" syscall is requested.  */
8524   int any_syscall_count;
8525
8526   /* Count of each system call.  */
8527   VEC(int) *syscalls_counts;
8528
8529   /* This counts all syscall catch requests, so we can readily determine
8530      if any catching is necessary.  */
8531   int total_syscalls_count;
8532 };
8533
8534 static struct catch_syscall_inferior_data*
8535 get_catch_syscall_inferior_data (struct inferior *inf)
8536 {
8537   struct catch_syscall_inferior_data *inf_data;
8538
8539   inf_data = inferior_data (inf, catch_syscall_inferior_data);
8540   if (inf_data == NULL)
8541     {
8542       inf_data = XCNEW (struct catch_syscall_inferior_data);
8543       set_inferior_data (inf, catch_syscall_inferior_data, inf_data);
8544     }
8545
8546   return inf_data;
8547 }
8548
8549 static void
8550 catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg)
8551 {
8552   xfree (arg);
8553 }
8554
8555
8556 /* Implement the "insert" breakpoint_ops method for syscall
8557    catchpoints.  */
8558
8559 static int
8560 insert_catch_syscall (struct bp_location *bl)
8561 {
8562   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8563   struct inferior *inf = current_inferior ();
8564   struct catch_syscall_inferior_data *inf_data
8565     = get_catch_syscall_inferior_data (inf);
8566
8567   ++inf_data->total_syscalls_count;
8568   if (!c->syscalls_to_be_caught)
8569     ++inf_data->any_syscall_count;
8570   else
8571     {
8572       int i, iter;
8573
8574       for (i = 0;
8575            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8576            i++)
8577         {
8578           int elem;
8579
8580           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8581             {
8582               int old_size = VEC_length (int, inf_data->syscalls_counts);
8583               uintptr_t vec_addr_offset
8584                 = old_size * ((uintptr_t) sizeof (int));
8585               uintptr_t vec_addr;
8586               VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1);
8587               vec_addr = ((uintptr_t) VEC_address (int,
8588                                                   inf_data->syscalls_counts)
8589                           + vec_addr_offset);
8590               memset ((void *) vec_addr, 0,
8591                       (iter + 1 - old_size) * sizeof (int));
8592             }
8593           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8594           VEC_replace (int, inf_data->syscalls_counts, iter, ++elem);
8595         }
8596     }
8597
8598   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8599                                         inf_data->total_syscalls_count != 0,
8600                                         inf_data->any_syscall_count,
8601                                         VEC_length (int,
8602                                                     inf_data->syscalls_counts),
8603                                         VEC_address (int,
8604                                                      inf_data->syscalls_counts));
8605 }
8606
8607 /* Implement the "remove" breakpoint_ops method for syscall
8608    catchpoints.  */
8609
8610 static int
8611 remove_catch_syscall (struct bp_location *bl)
8612 {
8613   struct syscall_catchpoint *c = (struct syscall_catchpoint *) bl->owner;
8614   struct inferior *inf = current_inferior ();
8615   struct catch_syscall_inferior_data *inf_data
8616     = get_catch_syscall_inferior_data (inf);
8617
8618   --inf_data->total_syscalls_count;
8619   if (!c->syscalls_to_be_caught)
8620     --inf_data->any_syscall_count;
8621   else
8622     {
8623       int i, iter;
8624
8625       for (i = 0;
8626            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8627            i++)
8628         {
8629           int elem;
8630           if (iter >= VEC_length (int, inf_data->syscalls_counts))
8631             /* Shouldn't happen.  */
8632             continue;
8633           elem = VEC_index (int, inf_data->syscalls_counts, iter);
8634           VEC_replace (int, inf_data->syscalls_counts, iter, --elem);
8635         }
8636     }
8637
8638   return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid),
8639                                         inf_data->total_syscalls_count != 0,
8640                                         inf_data->any_syscall_count,
8641                                         VEC_length (int,
8642                                                     inf_data->syscalls_counts),
8643                                         VEC_address (int,
8644                                                      inf_data->syscalls_counts));
8645 }
8646
8647 /* Implement the "breakpoint_hit" breakpoint_ops method for syscall
8648    catchpoints.  */
8649
8650 static int
8651 breakpoint_hit_catch_syscall (const struct bp_location *bl,
8652                               struct address_space *aspace, CORE_ADDR bp_addr,
8653                               const struct target_waitstatus *ws)
8654 {
8655   /* We must check if we are catching specific syscalls in this
8656      breakpoint.  If we are, then we must guarantee that the called
8657      syscall is the same syscall we are catching.  */
8658   int syscall_number = 0;
8659   const struct syscall_catchpoint *c
8660     = (const struct syscall_catchpoint *) bl->owner;
8661
8662   if (ws->kind != TARGET_WAITKIND_SYSCALL_ENTRY
8663       && ws->kind != TARGET_WAITKIND_SYSCALL_RETURN)
8664     return 0;
8665
8666   syscall_number = ws->value.syscall_number;
8667
8668   /* Now, checking if the syscall is the same.  */
8669   if (c->syscalls_to_be_caught)
8670     {
8671       int i, iter;
8672
8673       for (i = 0;
8674            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8675            i++)
8676         if (syscall_number == iter)
8677           return 1;
8678
8679       return 0;
8680     }
8681
8682   return 1;
8683 }
8684
8685 /* Implement the "print_it" breakpoint_ops method for syscall
8686    catchpoints.  */
8687
8688 static enum print_stop_action
8689 print_it_catch_syscall (bpstat bs)
8690 {
8691   struct ui_out *uiout = current_uiout;
8692   struct breakpoint *b = bs->breakpoint_at;
8693   /* These are needed because we want to know in which state a
8694      syscall is.  It can be in the TARGET_WAITKIND_SYSCALL_ENTRY
8695      or TARGET_WAITKIND_SYSCALL_RETURN, and depending on it we
8696      must print "called syscall" or "returned from syscall".  */
8697   ptid_t ptid;
8698   struct target_waitstatus last;
8699   struct syscall s;
8700
8701   get_last_target_status (&ptid, &last);
8702
8703   get_syscall_by_number (last.value.syscall_number, &s);
8704
8705   annotate_catchpoint (b->number);
8706
8707   if (b->disposition == disp_del)
8708     ui_out_text (uiout, "\nTemporary catchpoint ");
8709   else
8710     ui_out_text (uiout, "\nCatchpoint ");
8711   if (ui_out_is_mi_like_p (uiout))
8712     {
8713       ui_out_field_string (uiout, "reason",
8714                            async_reason_lookup (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY
8715                                                 ? EXEC_ASYNC_SYSCALL_ENTRY
8716                                                 : EXEC_ASYNC_SYSCALL_RETURN));
8717       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8718     }
8719   ui_out_field_int (uiout, "bkptno", b->number);
8720
8721   if (last.kind == TARGET_WAITKIND_SYSCALL_ENTRY)
8722     ui_out_text (uiout, " (call to syscall ");
8723   else
8724     ui_out_text (uiout, " (returned from syscall ");
8725
8726   if (s.name == NULL || ui_out_is_mi_like_p (uiout))
8727     ui_out_field_int (uiout, "syscall-number", last.value.syscall_number);
8728   if (s.name != NULL)
8729     ui_out_field_string (uiout, "syscall-name", s.name);
8730
8731   ui_out_text (uiout, "), ");
8732
8733   return PRINT_SRC_AND_LOC;
8734 }
8735
8736 /* Implement the "print_one" breakpoint_ops method for syscall
8737    catchpoints.  */
8738
8739 static void
8740 print_one_catch_syscall (struct breakpoint *b,
8741                          struct bp_location **last_loc)
8742 {
8743   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8744   struct value_print_options opts;
8745   struct ui_out *uiout = current_uiout;
8746
8747   get_user_print_options (&opts);
8748   /* Field 4, the address, is omitted (which makes the columns not
8749      line up too nicely with the headers, but the effect is relatively
8750      readable).  */
8751   if (opts.addressprint)
8752     ui_out_field_skip (uiout, "addr");
8753   annotate_field (5);
8754
8755   if (c->syscalls_to_be_caught
8756       && VEC_length (int, c->syscalls_to_be_caught) > 1)
8757     ui_out_text (uiout, "syscalls \"");
8758   else
8759     ui_out_text (uiout, "syscall \"");
8760
8761   if (c->syscalls_to_be_caught)
8762     {
8763       int i, iter;
8764       char *text = xstrprintf ("%s", "");
8765
8766       for (i = 0;
8767            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8768            i++)
8769         {
8770           char *x = text;
8771           struct syscall s;
8772           get_syscall_by_number (iter, &s);
8773
8774           if (s.name != NULL)
8775             text = xstrprintf ("%s%s, ", text, s.name);
8776           else
8777             text = xstrprintf ("%s%d, ", text, iter);
8778
8779           /* We have to xfree the last 'text' (now stored at 'x')
8780              because xstrprintf dynamically allocates new space for it
8781              on every call.  */
8782           xfree (x);
8783         }
8784       /* Remove the last comma.  */
8785       text[strlen (text) - 2] = '\0';
8786       ui_out_field_string (uiout, "what", text);
8787     }
8788   else
8789     ui_out_field_string (uiout, "what", "<any syscall>");
8790   ui_out_text (uiout, "\" ");
8791
8792   if (ui_out_is_mi_like_p (uiout))
8793     ui_out_field_string (uiout, "catch-type", "syscall");
8794 }
8795
8796 /* Implement the "print_mention" breakpoint_ops method for syscall
8797    catchpoints.  */
8798
8799 static void
8800 print_mention_catch_syscall (struct breakpoint *b)
8801 {
8802   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8803
8804   if (c->syscalls_to_be_caught)
8805     {
8806       int i, iter;
8807
8808       if (VEC_length (int, c->syscalls_to_be_caught) > 1)
8809         printf_filtered (_("Catchpoint %d (syscalls"), b->number);
8810       else
8811         printf_filtered (_("Catchpoint %d (syscall"), b->number);
8812
8813       for (i = 0;
8814            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8815            i++)
8816         {
8817           struct syscall s;
8818           get_syscall_by_number (iter, &s);
8819
8820           if (s.name)
8821             printf_filtered (" '%s' [%d]", s.name, s.number);
8822           else
8823             printf_filtered (" %d", s.number);
8824         }
8825       printf_filtered (")");
8826     }
8827   else
8828     printf_filtered (_("Catchpoint %d (any syscall)"),
8829                      b->number);
8830 }
8831
8832 /* Implement the "print_recreate" breakpoint_ops method for syscall
8833    catchpoints.  */
8834
8835 static void
8836 print_recreate_catch_syscall (struct breakpoint *b, struct ui_file *fp)
8837 {
8838   struct syscall_catchpoint *c = (struct syscall_catchpoint *) b;
8839
8840   fprintf_unfiltered (fp, "catch syscall");
8841
8842   if (c->syscalls_to_be_caught)
8843     {
8844       int i, iter;
8845
8846       for (i = 0;
8847            VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
8848            i++)
8849         {
8850           struct syscall s;
8851
8852           get_syscall_by_number (iter, &s);
8853           if (s.name)
8854             fprintf_unfiltered (fp, " %s", s.name);
8855           else
8856             fprintf_unfiltered (fp, " %d", s.number);
8857         }
8858     }
8859   print_recreate_thread (b, fp);
8860 }
8861
8862 /* The breakpoint_ops structure to be used in syscall catchpoints.  */
8863
8864 static struct breakpoint_ops catch_syscall_breakpoint_ops;
8865
8866 /* Returns non-zero if 'b' is a syscall catchpoint.  */
8867
8868 static int
8869 syscall_catchpoint_p (struct breakpoint *b)
8870 {
8871   return (b->ops == &catch_syscall_breakpoint_ops);
8872 }
8873
8874 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8875    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8876    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8877    the breakpoint_ops structure associated to the catchpoint.  */
8878
8879 void
8880 init_catchpoint (struct breakpoint *b,
8881                  struct gdbarch *gdbarch, int tempflag,
8882                  char *cond_string,
8883                  const struct breakpoint_ops *ops)
8884 {
8885   struct symtab_and_line sal;
8886
8887   init_sal (&sal);
8888   sal.pspace = current_program_space;
8889
8890   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8891
8892   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8893   b->disposition = tempflag ? disp_del : disp_donttouch;
8894 }
8895
8896 void
8897 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8898 {
8899   add_to_breakpoint_chain (b);
8900   set_breakpoint_number (internal, b);
8901   if (is_tracepoint (b))
8902     set_tracepoint_count (breakpoint_count);
8903   if (!internal)
8904     mention (b);
8905   observer_notify_breakpoint_created (b);
8906
8907   if (update_gll)
8908     update_global_location_list (UGLL_MAY_INSERT);
8909 }
8910
8911 static void
8912 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8913                                     int tempflag, char *cond_string,
8914                                     const struct breakpoint_ops *ops)
8915 {
8916   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8917
8918   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8919
8920   c->forked_inferior_pid = null_ptid;
8921
8922   install_breakpoint (0, &c->base, 1);
8923 }
8924
8925 /* Exec catchpoints.  */
8926
8927 /* An instance of this type is used to represent an exec catchpoint.
8928    It includes a "struct breakpoint" as a kind of base class; users
8929    downcast to "struct breakpoint *" when needed.  A breakpoint is
8930    really of this type iff its ops pointer points to
8931    CATCH_EXEC_BREAKPOINT_OPS.  */
8932
8933 struct exec_catchpoint
8934 {
8935   /* The base class.  */
8936   struct breakpoint base;
8937
8938   /* Filename of a program whose exec triggered this catchpoint.
8939      This field is only valid immediately after this catchpoint has
8940      triggered.  */
8941   char *exec_pathname;
8942 };
8943
8944 /* Implement the "dtor" breakpoint_ops method for exec
8945    catchpoints.  */
8946
8947 static void
8948 dtor_catch_exec (struct breakpoint *b)
8949 {
8950   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8951
8952   xfree (c->exec_pathname);
8953
8954   base_breakpoint_ops.dtor (b);
8955 }
8956
8957 static int
8958 insert_catch_exec (struct bp_location *bl)
8959 {
8960   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8961 }
8962
8963 static int
8964 remove_catch_exec (struct bp_location *bl)
8965 {
8966   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8967 }
8968
8969 static int
8970 breakpoint_hit_catch_exec (const struct bp_location *bl,
8971                            struct address_space *aspace, CORE_ADDR bp_addr,
8972                            const struct target_waitstatus *ws)
8973 {
8974   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8975
8976   if (ws->kind != TARGET_WAITKIND_EXECD)
8977     return 0;
8978
8979   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8980   return 1;
8981 }
8982
8983 static enum print_stop_action
8984 print_it_catch_exec (bpstat bs)
8985 {
8986   struct ui_out *uiout = current_uiout;
8987   struct breakpoint *b = bs->breakpoint_at;
8988   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8989
8990   annotate_catchpoint (b->number);
8991   if (b->disposition == disp_del)
8992     ui_out_text (uiout, "\nTemporary catchpoint ");
8993   else
8994     ui_out_text (uiout, "\nCatchpoint ");
8995   if (ui_out_is_mi_like_p (uiout))
8996     {
8997       ui_out_field_string (uiout, "reason",
8998                            async_reason_lookup (EXEC_ASYNC_EXEC));
8999       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
9000     }
9001   ui_out_field_int (uiout, "bkptno", b->number);
9002   ui_out_text (uiout, " (exec'd ");
9003   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
9004   ui_out_text (uiout, "), ");
9005
9006   return PRINT_SRC_AND_LOC;
9007 }
9008
9009 static void
9010 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
9011 {
9012   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
9013   struct value_print_options opts;
9014   struct ui_out *uiout = current_uiout;
9015
9016   get_user_print_options (&opts);
9017
9018   /* Field 4, the address, is omitted (which makes the columns
9019      not line up too nicely with the headers, but the effect
9020      is relatively readable).  */
9021   if (opts.addressprint)
9022     ui_out_field_skip (uiout, "addr");
9023   annotate_field (5);
9024   ui_out_text (uiout, "exec");
9025   if (c->exec_pathname != NULL)
9026     {
9027       ui_out_text (uiout, ", program \"");
9028       ui_out_field_string (uiout, "what", c->exec_pathname);
9029       ui_out_text (uiout, "\" ");
9030     }
9031
9032   if (ui_out_is_mi_like_p (uiout))
9033     ui_out_field_string (uiout, "catch-type", "exec");
9034 }
9035
9036 static void
9037 print_mention_catch_exec (struct breakpoint *b)
9038 {
9039   printf_filtered (_("Catchpoint %d (exec)"), b->number);
9040 }
9041
9042 /* Implement the "print_recreate" breakpoint_ops method for exec
9043    catchpoints.  */
9044
9045 static void
9046 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
9047 {
9048   fprintf_unfiltered (fp, "catch exec");
9049   print_recreate_thread (b, fp);
9050 }
9051
9052 static struct breakpoint_ops catch_exec_breakpoint_ops;
9053
9054 static void
9055 create_syscall_event_catchpoint (int tempflag, VEC(int) *filter,
9056                                  const struct breakpoint_ops *ops)
9057 {
9058   struct syscall_catchpoint *c;
9059   struct gdbarch *gdbarch = get_current_arch ();
9060
9061   c = XNEW (struct syscall_catchpoint);
9062   init_catchpoint (&c->base, gdbarch, tempflag, NULL, ops);
9063   c->syscalls_to_be_caught = filter;
9064
9065   install_breakpoint (0, &c->base, 1);
9066 }
9067
9068 static int
9069 hw_breakpoint_used_count (void)
9070 {
9071   int i = 0;
9072   struct breakpoint *b;
9073   struct bp_location *bl;
9074
9075   ALL_BREAKPOINTS (b)
9076   {
9077     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
9078       for (bl = b->loc; bl; bl = bl->next)
9079         {
9080           /* Special types of hardware breakpoints may use more than
9081              one register.  */
9082           i += b->ops->resources_needed (bl);
9083         }
9084   }
9085
9086   return i;
9087 }
9088
9089 /* Returns the resources B would use if it were a hardware
9090    watchpoint.  */
9091
9092 static int
9093 hw_watchpoint_use_count (struct breakpoint *b)
9094 {
9095   int i = 0;
9096   struct bp_location *bl;
9097
9098   if (!breakpoint_enabled (b))
9099     return 0;
9100
9101   for (bl = b->loc; bl; bl = bl->next)
9102     {
9103       /* Special types of hardware watchpoints may use more than
9104          one register.  */
9105       i += b->ops->resources_needed (bl);
9106     }
9107
9108   return i;
9109 }
9110
9111 /* Returns the sum the used resources of all hardware watchpoints of
9112    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
9113    the sum of the used resources of all hardware watchpoints of other
9114    types _not_ TYPE.  */
9115
9116 static int
9117 hw_watchpoint_used_count_others (struct breakpoint *except,
9118                                  enum bptype type, int *other_type_used)
9119 {
9120   int i = 0;
9121   struct breakpoint *b;
9122
9123   *other_type_used = 0;
9124   ALL_BREAKPOINTS (b)
9125     {
9126       if (b == except)
9127         continue;
9128       if (!breakpoint_enabled (b))
9129         continue;
9130
9131       if (b->type == type)
9132         i += hw_watchpoint_use_count (b);
9133       else if (is_hardware_watchpoint (b))
9134         *other_type_used = 1;
9135     }
9136
9137   return i;
9138 }
9139
9140 void
9141 disable_watchpoints_before_interactive_call_start (void)
9142 {
9143   struct breakpoint *b;
9144
9145   ALL_BREAKPOINTS (b)
9146   {
9147     if (is_watchpoint (b) && breakpoint_enabled (b))
9148       {
9149         b->enable_state = bp_call_disabled;
9150         update_global_location_list (UGLL_DONT_INSERT);
9151       }
9152   }
9153 }
9154
9155 void
9156 enable_watchpoints_after_interactive_call_stop (void)
9157 {
9158   struct breakpoint *b;
9159
9160   ALL_BREAKPOINTS (b)
9161   {
9162     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
9163       {
9164         b->enable_state = bp_enabled;
9165         update_global_location_list (UGLL_MAY_INSERT);
9166       }
9167   }
9168 }
9169
9170 void
9171 disable_breakpoints_before_startup (void)
9172 {
9173   current_program_space->executing_startup = 1;
9174   update_global_location_list (UGLL_DONT_INSERT);
9175 }
9176
9177 void
9178 enable_breakpoints_after_startup (void)
9179 {
9180   current_program_space->executing_startup = 0;
9181   breakpoint_re_set ();
9182 }
9183
9184
9185 /* Set a breakpoint that will evaporate an end of command
9186    at address specified by SAL.
9187    Restrict it to frame FRAME if FRAME is nonzero.  */
9188
9189 struct breakpoint *
9190 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
9191                           struct frame_id frame_id, enum bptype type)
9192 {
9193   struct breakpoint *b;
9194
9195   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
9196      tail-called one.  */
9197   gdb_assert (!frame_id_artificial_p (frame_id));
9198
9199   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
9200   b->enable_state = bp_enabled;
9201   b->disposition = disp_donttouch;
9202   b->frame_id = frame_id;
9203
9204   /* If we're debugging a multi-threaded program, then we want
9205      momentary breakpoints to be active in only a single thread of
9206      control.  */
9207   if (in_thread_list (inferior_ptid))
9208     b->thread = pid_to_thread_id (inferior_ptid);
9209
9210   update_global_location_list_nothrow (UGLL_MAY_INSERT);
9211
9212   return b;
9213 }
9214
9215 /* Make a momentary breakpoint based on the master breakpoint ORIG.
9216    The new breakpoint will have type TYPE, use OPS as its
9217    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
9218
9219 static struct breakpoint *
9220 momentary_breakpoint_from_master (struct breakpoint *orig,
9221                                   enum bptype type,
9222                                   const struct breakpoint_ops *ops,
9223                                   int loc_enabled)
9224 {
9225   struct breakpoint *copy;
9226
9227   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
9228   copy->loc = allocate_bp_location (copy);
9229   set_breakpoint_location_function (copy->loc, 1);
9230
9231   copy->loc->gdbarch = orig->loc->gdbarch;
9232   copy->loc->requested_address = orig->loc->requested_address;
9233   copy->loc->address = orig->loc->address;
9234   copy->loc->section = orig->loc->section;
9235   copy->loc->pspace = orig->loc->pspace;
9236   copy->loc->probe = orig->loc->probe;
9237   copy->loc->line_number = orig->loc->line_number;
9238   copy->loc->symtab = orig->loc->symtab;
9239   copy->loc->enabled = loc_enabled;
9240   copy->frame_id = orig->frame_id;
9241   copy->thread = orig->thread;
9242   copy->pspace = orig->pspace;
9243
9244   copy->enable_state = bp_enabled;
9245   copy->disposition = disp_donttouch;
9246   copy->number = internal_breakpoint_number--;
9247
9248   update_global_location_list_nothrow (UGLL_DONT_INSERT);
9249   return copy;
9250 }
9251
9252 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
9253    ORIG is NULL.  */
9254
9255 struct breakpoint *
9256 clone_momentary_breakpoint (struct breakpoint *orig)
9257 {
9258   /* If there's nothing to clone, then return nothing.  */
9259   if (orig == NULL)
9260     return NULL;
9261
9262   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9263 }
9264
9265 struct breakpoint *
9266 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9267                                 enum bptype type)
9268 {
9269   struct symtab_and_line sal;
9270
9271   sal = find_pc_line (pc, 0);
9272   sal.pc = pc;
9273   sal.section = find_pc_overlay (pc);
9274   sal.explicit_pc = 1;
9275
9276   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9277 }
9278 \f
9279
9280 /* Tell the user we have just set a breakpoint B.  */
9281
9282 static void
9283 mention (struct breakpoint *b)
9284 {
9285   b->ops->print_mention (b);
9286   if (ui_out_is_mi_like_p (current_uiout))
9287     return;
9288   printf_filtered ("\n");
9289 }
9290 \f
9291
9292 static struct bp_location *
9293 add_location_to_breakpoint (struct breakpoint *b,
9294                             const struct symtab_and_line *sal)
9295 {
9296   struct bp_location *loc, **tmp;
9297   CORE_ADDR adjusted_address;
9298   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9299
9300   if (loc_gdbarch == NULL)
9301     loc_gdbarch = b->gdbarch;
9302
9303   /* Adjust the breakpoint's address prior to allocating a location.
9304      Once we call allocate_bp_location(), that mostly uninitialized
9305      location will be placed on the location chain.  Adjustment of the
9306      breakpoint may cause target_read_memory() to be called and we do
9307      not want its scan of the location chain to find a breakpoint and
9308      location that's only been partially initialized.  */
9309   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9310                                                 sal->pc, b->type);
9311
9312   /* Sort the locations by their ADDRESS.  */
9313   loc = allocate_bp_location (b);
9314   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9315        tmp = &((*tmp)->next))
9316     ;
9317   loc->next = *tmp;
9318   *tmp = loc;
9319
9320   loc->requested_address = sal->pc;
9321   loc->address = adjusted_address;
9322   loc->pspace = sal->pspace;
9323   loc->probe.probe = sal->probe;
9324   loc->probe.objfile = sal->objfile;
9325   gdb_assert (loc->pspace != NULL);
9326   loc->section = sal->section;
9327   loc->gdbarch = loc_gdbarch;
9328   loc->line_number = sal->line;
9329   loc->symtab = sal->symtab;
9330
9331   set_breakpoint_location_function (loc,
9332                                     sal->explicit_pc || sal->explicit_line);
9333   return loc;
9334 }
9335 \f
9336
9337 /* Return 1 if LOC is pointing to a permanent breakpoint, 
9338    return 0 otherwise.  */
9339
9340 static int
9341 bp_loc_is_permanent (struct bp_location *loc)
9342 {
9343   int len;
9344   CORE_ADDR addr;
9345   const gdb_byte *bpoint;
9346   gdb_byte *target_mem;
9347   struct cleanup *cleanup;
9348   int retval = 0;
9349
9350   gdb_assert (loc != NULL);
9351
9352   addr = loc->address;
9353   bpoint = gdbarch_breakpoint_from_pc (loc->gdbarch, &addr, &len);
9354
9355   /* Software breakpoints unsupported?  */
9356   if (bpoint == NULL)
9357     return 0;
9358
9359   target_mem = alloca (len);
9360
9361   /* Enable the automatic memory restoration from breakpoints while
9362      we read the memory.  Otherwise we could say about our temporary
9363      breakpoints they are permanent.  */
9364   cleanup = save_current_space_and_thread ();
9365
9366   switch_to_program_space_and_thread (loc->pspace);
9367   make_show_memory_breakpoints_cleanup (0);
9368
9369   if (target_read_memory (loc->address, target_mem, len) == 0
9370       && memcmp (target_mem, bpoint, len) == 0)
9371     retval = 1;
9372
9373   do_cleanups (cleanup);
9374
9375   return retval;
9376 }
9377
9378 /* Build a command list for the dprintf corresponding to the current
9379    settings of the dprintf style options.  */
9380
9381 static void
9382 update_dprintf_command_list (struct breakpoint *b)
9383 {
9384   char *dprintf_args = b->extra_string;
9385   char *printf_line = NULL;
9386
9387   if (!dprintf_args)
9388     return;
9389
9390   dprintf_args = skip_spaces (dprintf_args);
9391
9392   /* Allow a comma, as it may have terminated a location, but don't
9393      insist on it.  */
9394   if (*dprintf_args == ',')
9395     ++dprintf_args;
9396   dprintf_args = skip_spaces (dprintf_args);
9397
9398   if (*dprintf_args != '"')
9399     error (_("Bad format string, missing '\"'."));
9400
9401   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9402     printf_line = xstrprintf ("printf %s", dprintf_args);
9403   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9404     {
9405       if (!dprintf_function)
9406         error (_("No function supplied for dprintf call"));
9407
9408       if (dprintf_channel && strlen (dprintf_channel) > 0)
9409         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9410                                   dprintf_function,
9411                                   dprintf_channel,
9412                                   dprintf_args);
9413       else
9414         printf_line = xstrprintf ("call (void) %s (%s)",
9415                                   dprintf_function,
9416                                   dprintf_args);
9417     }
9418   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9419     {
9420       if (target_can_run_breakpoint_commands ())
9421         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9422       else
9423         {
9424           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9425           printf_line = xstrprintf ("printf %s", dprintf_args);
9426         }
9427     }
9428   else
9429     internal_error (__FILE__, __LINE__,
9430                     _("Invalid dprintf style."));
9431
9432   gdb_assert (printf_line != NULL);
9433   /* Manufacture a printf sequence.  */
9434   {
9435     struct command_line *printf_cmd_line
9436       = xmalloc (sizeof (struct command_line));
9437
9438     printf_cmd_line = xmalloc (sizeof (struct command_line));
9439     printf_cmd_line->control_type = simple_control;
9440     printf_cmd_line->body_count = 0;
9441     printf_cmd_line->body_list = NULL;
9442     printf_cmd_line->next = NULL;
9443     printf_cmd_line->line = printf_line;
9444
9445     breakpoint_set_commands (b, printf_cmd_line);
9446   }
9447 }
9448
9449 /* Update all dprintf commands, making their command lists reflect
9450    current style settings.  */
9451
9452 static void
9453 update_dprintf_commands (char *args, int from_tty,
9454                          struct cmd_list_element *c)
9455 {
9456   struct breakpoint *b;
9457
9458   ALL_BREAKPOINTS (b)
9459     {
9460       if (b->type == bp_dprintf)
9461         update_dprintf_command_list (b);
9462     }
9463 }
9464
9465 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9466    as textual description of the location, and COND_STRING
9467    as condition expression.  */
9468
9469 static void
9470 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9471                      struct symtabs_and_lines sals, char *addr_string,
9472                      char *filter, char *cond_string,
9473                      char *extra_string,
9474                      enum bptype type, enum bpdisp disposition,
9475                      int thread, int task, int ignore_count,
9476                      const struct breakpoint_ops *ops, int from_tty,
9477                      int enabled, int internal, unsigned flags,
9478                      int display_canonical)
9479 {
9480   int i;
9481
9482   if (type == bp_hardware_breakpoint)
9483     {
9484       int target_resources_ok;
9485
9486       i = hw_breakpoint_used_count ();
9487       target_resources_ok =
9488         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9489                                             i + 1, 0);
9490       if (target_resources_ok == 0)
9491         error (_("No hardware breakpoint support in the target."));
9492       else if (target_resources_ok < 0)
9493         error (_("Hardware breakpoints used exceeds limit."));
9494     }
9495
9496   gdb_assert (sals.nelts > 0);
9497
9498   for (i = 0; i < sals.nelts; ++i)
9499     {
9500       struct symtab_and_line sal = sals.sals[i];
9501       struct bp_location *loc;
9502
9503       if (from_tty)
9504         {
9505           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9506           if (!loc_gdbarch)
9507             loc_gdbarch = gdbarch;
9508
9509           describe_other_breakpoints (loc_gdbarch,
9510                                       sal.pspace, sal.pc, sal.section, thread);
9511         }
9512
9513       if (i == 0)
9514         {
9515           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9516           b->thread = thread;
9517           b->task = task;
9518
9519           b->cond_string = cond_string;
9520           b->extra_string = extra_string;
9521           b->ignore_count = ignore_count;
9522           b->enable_state = enabled ? bp_enabled : bp_disabled;
9523           b->disposition = disposition;
9524
9525           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9526             b->loc->inserted = 1;
9527
9528           if (type == bp_static_tracepoint)
9529             {
9530               struct tracepoint *t = (struct tracepoint *) b;
9531               struct static_tracepoint_marker marker;
9532
9533               if (strace_marker_p (b))
9534                 {
9535                   /* We already know the marker exists, otherwise, we
9536                      wouldn't see a sal for it.  */
9537                   char *p = &addr_string[3];
9538                   char *endp;
9539                   char *marker_str;
9540
9541                   p = skip_spaces (p);
9542
9543                   endp = skip_to_space (p);
9544
9545                   marker_str = savestring (p, endp - p);
9546                   t->static_trace_marker_id = marker_str;
9547
9548                   printf_filtered (_("Probed static tracepoint "
9549                                      "marker \"%s\"\n"),
9550                                    t->static_trace_marker_id);
9551                 }
9552               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9553                 {
9554                   t->static_trace_marker_id = xstrdup (marker.str_id);
9555                   release_static_tracepoint_marker (&marker);
9556
9557                   printf_filtered (_("Probed static tracepoint "
9558                                      "marker \"%s\"\n"),
9559                                    t->static_trace_marker_id);
9560                 }
9561               else
9562                 warning (_("Couldn't determine the static "
9563                            "tracepoint marker to probe"));
9564             }
9565
9566           loc = b->loc;
9567         }
9568       else
9569         {
9570           loc = add_location_to_breakpoint (b, &sal);
9571           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9572             loc->inserted = 1;
9573         }
9574
9575       if (bp_loc_is_permanent (loc))
9576         make_breakpoint_permanent (b);
9577
9578       if (b->cond_string)
9579         {
9580           const char *arg = b->cond_string;
9581
9582           loc->cond = parse_exp_1 (&arg, loc->address,
9583                                    block_for_pc (loc->address), 0);
9584           if (*arg)
9585               error (_("Garbage '%s' follows condition"), arg);
9586         }
9587
9588       /* Dynamic printf requires and uses additional arguments on the
9589          command line, otherwise it's an error.  */
9590       if (type == bp_dprintf)
9591         {
9592           if (b->extra_string)
9593             update_dprintf_command_list (b);
9594           else
9595             error (_("Format string required"));
9596         }
9597       else if (b->extra_string)
9598         error (_("Garbage '%s' at end of command"), b->extra_string);
9599     }
9600
9601   b->display_canonical = display_canonical;
9602   if (addr_string)
9603     b->addr_string = addr_string;
9604   else
9605     /* addr_string has to be used or breakpoint_re_set will delete
9606        me.  */
9607     b->addr_string
9608       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9609   b->filter = filter;
9610 }
9611
9612 static void
9613 create_breakpoint_sal (struct gdbarch *gdbarch,
9614                        struct symtabs_and_lines sals, char *addr_string,
9615                        char *filter, char *cond_string,
9616                        char *extra_string,
9617                        enum bptype type, enum bpdisp disposition,
9618                        int thread, int task, int ignore_count,
9619                        const struct breakpoint_ops *ops, int from_tty,
9620                        int enabled, int internal, unsigned flags,
9621                        int display_canonical)
9622 {
9623   struct breakpoint *b;
9624   struct cleanup *old_chain;
9625
9626   if (is_tracepoint_type (type))
9627     {
9628       struct tracepoint *t;
9629
9630       t = XCNEW (struct tracepoint);
9631       b = &t->base;
9632     }
9633   else
9634     b = XNEW (struct breakpoint);
9635
9636   old_chain = make_cleanup (xfree, b);
9637
9638   init_breakpoint_sal (b, gdbarch,
9639                        sals, addr_string,
9640                        filter, cond_string, extra_string,
9641                        type, disposition,
9642                        thread, task, ignore_count,
9643                        ops, from_tty,
9644                        enabled, internal, flags,
9645                        display_canonical);
9646   discard_cleanups (old_chain);
9647
9648   install_breakpoint (internal, b, 0);
9649 }
9650
9651 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9652    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9653    value.  COND_STRING, if not NULL, specified the condition to be
9654    used for all breakpoints.  Essentially the only case where
9655    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9656    function.  In that case, it's still not possible to specify
9657    separate conditions for different overloaded functions, so
9658    we take just a single condition string.
9659    
9660    NOTE: If the function succeeds, the caller is expected to cleanup
9661    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9662    array contents).  If the function fails (error() is called), the
9663    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9664    COND and SALS arrays and each of those arrays contents.  */
9665
9666 static void
9667 create_breakpoints_sal (struct gdbarch *gdbarch,
9668                         struct linespec_result *canonical,
9669                         char *cond_string, char *extra_string,
9670                         enum bptype type, enum bpdisp disposition,
9671                         int thread, int task, int ignore_count,
9672                         const struct breakpoint_ops *ops, int from_tty,
9673                         int enabled, int internal, unsigned flags)
9674 {
9675   int i;
9676   struct linespec_sals *lsal;
9677
9678   if (canonical->pre_expanded)
9679     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9680
9681   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9682     {
9683       /* Note that 'addr_string' can be NULL in the case of a plain
9684          'break', without arguments.  */
9685       char *addr_string = (canonical->addr_string
9686                            ? xstrdup (canonical->addr_string)
9687                            : NULL);
9688       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9689       struct cleanup *inner = make_cleanup (xfree, addr_string);
9690
9691       make_cleanup (xfree, filter_string);
9692       create_breakpoint_sal (gdbarch, lsal->sals,
9693                              addr_string,
9694                              filter_string,
9695                              cond_string, extra_string,
9696                              type, disposition,
9697                              thread, task, ignore_count, ops,
9698                              from_tty, enabled, internal, flags,
9699                              canonical->special_display);
9700       discard_cleanups (inner);
9701     }
9702 }
9703
9704 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9705    followed by conditionals.  On return, SALS contains an array of SAL
9706    addresses found.  ADDR_STRING contains a vector of (canonical)
9707    address strings.  ADDRESS points to the end of the SAL.
9708
9709    The array and the line spec strings are allocated on the heap, it is
9710    the caller's responsibility to free them.  */
9711
9712 static void
9713 parse_breakpoint_sals (char **address,
9714                        struct linespec_result *canonical)
9715 {
9716   /* If no arg given, or if first arg is 'if ', use the default
9717      breakpoint.  */
9718   if ((*address) == NULL
9719       || (strncmp ((*address), "if", 2) == 0 && isspace ((*address)[2])))
9720     {
9721       /* The last displayed codepoint, if it's valid, is our default breakpoint
9722          address.  */
9723       if (last_displayed_sal_is_valid ())
9724         {
9725           struct linespec_sals lsal;
9726           struct symtab_and_line sal;
9727           CORE_ADDR pc;
9728
9729           init_sal (&sal);              /* Initialize to zeroes.  */
9730           lsal.sals.sals = (struct symtab_and_line *)
9731             xmalloc (sizeof (struct symtab_and_line));
9732
9733           /* Set sal's pspace, pc, symtab, and line to the values
9734              corresponding to the last call to print_frame_info.
9735              Be sure to reinitialize LINE with NOTCURRENT == 0
9736              as the breakpoint line number is inappropriate otherwise.
9737              find_pc_line would adjust PC, re-set it back.  */
9738           get_last_displayed_sal (&sal);
9739           pc = sal.pc;
9740           sal = find_pc_line (pc, 0);
9741
9742           /* "break" without arguments is equivalent to "break *PC"
9743              where PC is the last displayed codepoint's address.  So
9744              make sure to set sal.explicit_pc to prevent GDB from
9745              trying to expand the list of sals to include all other
9746              instances with the same symtab and line.  */
9747           sal.pc = pc;
9748           sal.explicit_pc = 1;
9749
9750           lsal.sals.sals[0] = sal;
9751           lsal.sals.nelts = 1;
9752           lsal.canonical = NULL;
9753
9754           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9755         }
9756       else
9757         error (_("No default breakpoint address now."));
9758     }
9759   else
9760     {
9761       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9762
9763       /* Force almost all breakpoints to be in terms of the
9764          current_source_symtab (which is decode_line_1's default).
9765          This should produce the results we want almost all of the
9766          time while leaving default_breakpoint_* alone.
9767
9768          ObjC: However, don't match an Objective-C method name which
9769          may have a '+' or '-' succeeded by a '['.  */
9770       if (last_displayed_sal_is_valid ()
9771           && (!cursal.symtab
9772               || ((strchr ("+-", (*address)[0]) != NULL)
9773                   && ((*address)[1] != '['))))
9774         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9775                           get_last_displayed_symtab (),
9776                           get_last_displayed_line (),
9777                           canonical, NULL, NULL);
9778       else
9779         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9780                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9781     }
9782 }
9783
9784
9785 /* Convert each SAL into a real PC.  Verify that the PC can be
9786    inserted as a breakpoint.  If it can't throw an error.  */
9787
9788 static void
9789 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9790 {    
9791   int i;
9792
9793   for (i = 0; i < sals->nelts; i++)
9794     resolve_sal_pc (&sals->sals[i]);
9795 }
9796
9797 /* Fast tracepoints may have restrictions on valid locations.  For
9798    instance, a fast tracepoint using a jump instead of a trap will
9799    likely have to overwrite more bytes than a trap would, and so can
9800    only be placed where the instruction is longer than the jump, or a
9801    multi-instruction sequence does not have a jump into the middle of
9802    it, etc.  */
9803
9804 static void
9805 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9806                             struct symtabs_and_lines *sals)
9807 {
9808   int i, rslt;
9809   struct symtab_and_line *sal;
9810   char *msg;
9811   struct cleanup *old_chain;
9812
9813   for (i = 0; i < sals->nelts; i++)
9814     {
9815       struct gdbarch *sarch;
9816
9817       sal = &sals->sals[i];
9818
9819       sarch = get_sal_arch (*sal);
9820       /* We fall back to GDBARCH if there is no architecture
9821          associated with SAL.  */
9822       if (sarch == NULL)
9823         sarch = gdbarch;
9824       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9825                                                NULL, &msg);
9826       old_chain = make_cleanup (xfree, msg);
9827
9828       if (!rslt)
9829         error (_("May not have a fast tracepoint at 0x%s%s"),
9830                paddress (sarch, sal->pc), (msg ? msg : ""));
9831
9832       do_cleanups (old_chain);
9833     }
9834 }
9835
9836 /* Issue an invalid thread ID error.  */
9837
9838 static void ATTRIBUTE_NORETURN
9839 invalid_thread_id_error (int id)
9840 {
9841   error (_("Unknown thread %d."), id);
9842 }
9843
9844 /* Given TOK, a string specification of condition and thread, as
9845    accepted by the 'break' command, extract the condition
9846    string and thread number and set *COND_STRING and *THREAD.
9847    PC identifies the context at which the condition should be parsed.
9848    If no condition is found, *COND_STRING is set to NULL.
9849    If no thread is found, *THREAD is set to -1.  */
9850
9851 static void
9852 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9853                            char **cond_string, int *thread, int *task,
9854                            char **rest)
9855 {
9856   *cond_string = NULL;
9857   *thread = -1;
9858   *task = 0;
9859   *rest = NULL;
9860
9861   while (tok && *tok)
9862     {
9863       const char *end_tok;
9864       int toklen;
9865       const char *cond_start = NULL;
9866       const char *cond_end = NULL;
9867
9868       tok = skip_spaces_const (tok);
9869
9870       if ((*tok == '"' || *tok == ',') && rest)
9871         {
9872           *rest = savestring (tok, strlen (tok));
9873           return;
9874         }
9875
9876       end_tok = skip_to_space_const (tok);
9877
9878       toklen = end_tok - tok;
9879
9880       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9881         {
9882           struct expression *expr;
9883
9884           tok = cond_start = end_tok + 1;
9885           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9886           xfree (expr);
9887           cond_end = tok;
9888           *cond_string = savestring (cond_start, cond_end - cond_start);
9889         }
9890       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9891         {
9892           char *tmptok;
9893
9894           tok = end_tok + 1;
9895           *thread = strtol (tok, &tmptok, 0);
9896           if (tok == tmptok)
9897             error (_("Junk after thread keyword."));
9898           if (!valid_thread_id (*thread))
9899             invalid_thread_id_error (*thread);
9900           tok = tmptok;
9901         }
9902       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9903         {
9904           char *tmptok;
9905
9906           tok = end_tok + 1;
9907           *task = strtol (tok, &tmptok, 0);
9908           if (tok == tmptok)
9909             error (_("Junk after task keyword."));
9910           if (!valid_task_id (*task))
9911             error (_("Unknown task %d."), *task);
9912           tok = tmptok;
9913         }
9914       else if (rest)
9915         {
9916           *rest = savestring (tok, strlen (tok));
9917           return;
9918         }
9919       else
9920         error (_("Junk at end of arguments."));
9921     }
9922 }
9923
9924 /* Decode a static tracepoint marker spec.  */
9925
9926 static struct symtabs_and_lines
9927 decode_static_tracepoint_spec (char **arg_p)
9928 {
9929   VEC(static_tracepoint_marker_p) *markers = NULL;
9930   struct symtabs_and_lines sals;
9931   struct cleanup *old_chain;
9932   char *p = &(*arg_p)[3];
9933   char *endp;
9934   char *marker_str;
9935   int i;
9936
9937   p = skip_spaces (p);
9938
9939   endp = skip_to_space (p);
9940
9941   marker_str = savestring (p, endp - p);
9942   old_chain = make_cleanup (xfree, marker_str);
9943
9944   markers = target_static_tracepoint_markers_by_strid (marker_str);
9945   if (VEC_empty(static_tracepoint_marker_p, markers))
9946     error (_("No known static tracepoint marker named %s"), marker_str);
9947
9948   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9949   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9950
9951   for (i = 0; i < sals.nelts; i++)
9952     {
9953       struct static_tracepoint_marker *marker;
9954
9955       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9956
9957       init_sal (&sals.sals[i]);
9958
9959       sals.sals[i] = find_pc_line (marker->address, 0);
9960       sals.sals[i].pc = marker->address;
9961
9962       release_static_tracepoint_marker (marker);
9963     }
9964
9965   do_cleanups (old_chain);
9966
9967   *arg_p = endp;
9968   return sals;
9969 }
9970
9971 /* Set a breakpoint.  This function is shared between CLI and MI
9972    functions for setting a breakpoint.  This function has two major
9973    modes of operations, selected by the PARSE_ARG parameter.  If
9974    non-zero, the function will parse ARG, extracting location,
9975    condition, thread and extra string.  Otherwise, ARG is just the
9976    breakpoint's location, with condition, thread, and extra string
9977    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9978    If INTERNAL is non-zero, the breakpoint number will be allocated
9979    from the internal breakpoint count.  Returns true if any breakpoint
9980    was created; false otherwise.  */
9981
9982 int
9983 create_breakpoint (struct gdbarch *gdbarch,
9984                    char *arg, char *cond_string,
9985                    int thread, char *extra_string,
9986                    int parse_arg,
9987                    int tempflag, enum bptype type_wanted,
9988                    int ignore_count,
9989                    enum auto_boolean pending_break_support,
9990                    const struct breakpoint_ops *ops,
9991                    int from_tty, int enabled, int internal,
9992                    unsigned flags)
9993 {
9994   volatile struct gdb_exception e;
9995   char *copy_arg = NULL;
9996   char *addr_start = arg;
9997   struct linespec_result canonical;
9998   struct cleanup *old_chain;
9999   struct cleanup *bkpt_chain = NULL;
10000   int pending = 0;
10001   int task = 0;
10002   int prev_bkpt_count = breakpoint_count;
10003
10004   gdb_assert (ops != NULL);
10005
10006   init_linespec_result (&canonical);
10007
10008   TRY_CATCH (e, RETURN_MASK_ALL)
10009     {
10010       ops->create_sals_from_address (&arg, &canonical, type_wanted,
10011                                      addr_start, &copy_arg);
10012     }
10013
10014   /* If caller is interested in rc value from parse, set value.  */
10015   switch (e.reason)
10016     {
10017     case GDB_NO_ERROR:
10018       if (VEC_empty (linespec_sals, canonical.sals))
10019         return 0;
10020       break;
10021     case RETURN_ERROR:
10022       switch (e.error)
10023         {
10024         case NOT_FOUND_ERROR:
10025
10026           /* If pending breakpoint support is turned off, throw
10027              error.  */
10028
10029           if (pending_break_support == AUTO_BOOLEAN_FALSE)
10030             throw_exception (e);
10031
10032           exception_print (gdb_stderr, e);
10033
10034           /* If pending breakpoint support is auto query and the user
10035              selects no, then simply return the error code.  */
10036           if (pending_break_support == AUTO_BOOLEAN_AUTO
10037               && !nquery (_("Make %s pending on future shared library load? "),
10038                           bptype_string (type_wanted)))
10039             return 0;
10040
10041           /* At this point, either the user was queried about setting
10042              a pending breakpoint and selected yes, or pending
10043              breakpoint behavior is on and thus a pending breakpoint
10044              is defaulted on behalf of the user.  */
10045           {
10046             struct linespec_sals lsal;
10047
10048             copy_arg = xstrdup (addr_start);
10049             lsal.canonical = xstrdup (copy_arg);
10050             lsal.sals.nelts = 1;
10051             lsal.sals.sals = XNEW (struct symtab_and_line);
10052             init_sal (&lsal.sals.sals[0]);
10053             pending = 1;
10054             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
10055           }
10056           break;
10057         default:
10058           throw_exception (e);
10059         }
10060       break;
10061     default:
10062       throw_exception (e);
10063     }
10064
10065   /* Create a chain of things that always need to be cleaned up.  */
10066   old_chain = make_cleanup_destroy_linespec_result (&canonical);
10067
10068   /* ----------------------------- SNIP -----------------------------
10069      Anything added to the cleanup chain beyond this point is assumed
10070      to be part of a breakpoint.  If the breakpoint create succeeds
10071      then the memory is not reclaimed.  */
10072   bkpt_chain = make_cleanup (null_cleanup, 0);
10073
10074   /* Resolve all line numbers to PC's and verify that the addresses
10075      are ok for the target.  */
10076   if (!pending)
10077     {
10078       int ix;
10079       struct linespec_sals *iter;
10080
10081       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10082         breakpoint_sals_to_pc (&iter->sals);
10083     }
10084
10085   /* Fast tracepoints may have additional restrictions on location.  */
10086   if (!pending && type_wanted == bp_fast_tracepoint)
10087     {
10088       int ix;
10089       struct linespec_sals *iter;
10090
10091       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
10092         check_fast_tracepoint_sals (gdbarch, &iter->sals);
10093     }
10094
10095   /* Verify that condition can be parsed, before setting any
10096      breakpoints.  Allocate a separate condition expression for each
10097      breakpoint.  */
10098   if (!pending)
10099     {
10100       if (parse_arg)
10101         {
10102           char *rest;
10103           struct linespec_sals *lsal;
10104
10105           lsal = VEC_index (linespec_sals, canonical.sals, 0);
10106
10107           /* Here we only parse 'arg' to separate condition
10108              from thread number, so parsing in context of first
10109              sal is OK.  When setting the breakpoint we'll
10110              re-parse it in context of each sal.  */
10111
10112           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
10113                                      &thread, &task, &rest);
10114           if (cond_string)
10115             make_cleanup (xfree, cond_string);
10116           if (rest)
10117             make_cleanup (xfree, rest);
10118           if (rest)
10119             extra_string = rest;
10120         }
10121       else
10122         {
10123           if (*arg != '\0')
10124             error (_("Garbage '%s' at end of location"), arg);
10125
10126           /* Create a private copy of condition string.  */
10127           if (cond_string)
10128             {
10129               cond_string = xstrdup (cond_string);
10130               make_cleanup (xfree, cond_string);
10131             }
10132           /* Create a private copy of any extra string.  */
10133           if (extra_string)
10134             {
10135               extra_string = xstrdup (extra_string);
10136               make_cleanup (xfree, extra_string);
10137             }
10138         }
10139
10140       ops->create_breakpoints_sal (gdbarch, &canonical,
10141                                    cond_string, extra_string, type_wanted,
10142                                    tempflag ? disp_del : disp_donttouch,
10143                                    thread, task, ignore_count, ops,
10144                                    from_tty, enabled, internal, flags);
10145     }
10146   else
10147     {
10148       struct breakpoint *b;
10149
10150       make_cleanup (xfree, copy_arg);
10151
10152       if (is_tracepoint_type (type_wanted))
10153         {
10154           struct tracepoint *t;
10155
10156           t = XCNEW (struct tracepoint);
10157           b = &t->base;
10158         }
10159       else
10160         b = XNEW (struct breakpoint);
10161
10162       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
10163
10164       b->addr_string = copy_arg;
10165       if (parse_arg)
10166         b->cond_string = NULL;
10167       else
10168         {
10169           /* Create a private copy of condition string.  */
10170           if (cond_string)
10171             {
10172               cond_string = xstrdup (cond_string);
10173               make_cleanup (xfree, cond_string);
10174             }
10175           b->cond_string = cond_string;
10176         }
10177       b->extra_string = NULL;
10178       b->ignore_count = ignore_count;
10179       b->disposition = tempflag ? disp_del : disp_donttouch;
10180       b->condition_not_parsed = 1;
10181       b->enable_state = enabled ? bp_enabled : bp_disabled;
10182       if ((type_wanted != bp_breakpoint
10183            && type_wanted != bp_hardware_breakpoint) || thread != -1)
10184         b->pspace = current_program_space;
10185
10186       install_breakpoint (internal, b, 0);
10187     }
10188   
10189   if (VEC_length (linespec_sals, canonical.sals) > 1)
10190     {
10191       warning (_("Multiple breakpoints were set.\nUse the "
10192                  "\"delete\" command to delete unwanted breakpoints."));
10193       prev_breakpoint_count = prev_bkpt_count;
10194     }
10195
10196   /* That's it.  Discard the cleanups for data inserted into the
10197      breakpoint.  */
10198   discard_cleanups (bkpt_chain);
10199   /* But cleanup everything else.  */
10200   do_cleanups (old_chain);
10201
10202   /* error call may happen here - have BKPT_CHAIN already discarded.  */
10203   update_global_location_list (UGLL_MAY_INSERT);
10204
10205   return 1;
10206 }
10207
10208 /* Set a breakpoint.
10209    ARG is a string describing breakpoint address,
10210    condition, and thread.
10211    FLAG specifies if a breakpoint is hardware on,
10212    and if breakpoint is temporary, using BP_HARDWARE_FLAG
10213    and BP_TEMPFLAG.  */
10214
10215 static void
10216 break_command_1 (char *arg, int flag, int from_tty)
10217 {
10218   int tempflag = flag & BP_TEMPFLAG;
10219   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10220                              ? bp_hardware_breakpoint
10221                              : bp_breakpoint);
10222   struct breakpoint_ops *ops;
10223   const char *arg_cp = arg;
10224
10225   /* Matching breakpoints on probes.  */
10226   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
10227     ops = &bkpt_probe_breakpoint_ops;
10228   else
10229     ops = &bkpt_breakpoint_ops;
10230
10231   create_breakpoint (get_current_arch (),
10232                      arg,
10233                      NULL, 0, NULL, 1 /* parse arg */,
10234                      tempflag, type_wanted,
10235                      0 /* Ignore count */,
10236                      pending_break_support,
10237                      ops,
10238                      from_tty,
10239                      1 /* enabled */,
10240                      0 /* internal */,
10241                      0);
10242 }
10243
10244 /* Helper function for break_command_1 and disassemble_command.  */
10245
10246 void
10247 resolve_sal_pc (struct symtab_and_line *sal)
10248 {
10249   CORE_ADDR pc;
10250
10251   if (sal->pc == 0 && sal->symtab != NULL)
10252     {
10253       if (!find_line_pc (sal->symtab, sal->line, &pc))
10254         error (_("No line %d in file \"%s\"."),
10255                sal->line, symtab_to_filename_for_display (sal->symtab));
10256       sal->pc = pc;
10257
10258       /* If this SAL corresponds to a breakpoint inserted using a line
10259          number, then skip the function prologue if necessary.  */
10260       if (sal->explicit_line)
10261         skip_prologue_sal (sal);
10262     }
10263
10264   if (sal->section == 0 && sal->symtab != NULL)
10265     {
10266       const struct blockvector *bv;
10267       const struct block *b;
10268       struct symbol *sym;
10269
10270       bv = blockvector_for_pc_sect (sal->pc, 0, &b, sal->symtab);
10271       if (bv != NULL)
10272         {
10273           sym = block_linkage_function (b);
10274           if (sym != NULL)
10275             {
10276               fixup_symbol_section (sym, sal->symtab->objfile);
10277               sal->section = SYMBOL_OBJ_SECTION (sal->symtab->objfile, sym);
10278             }
10279           else
10280             {
10281               /* It really is worthwhile to have the section, so we'll
10282                  just have to look harder. This case can be executed
10283                  if we have line numbers but no functions (as can
10284                  happen in assembly source).  */
10285
10286               struct bound_minimal_symbol msym;
10287               struct cleanup *old_chain = save_current_space_and_thread ();
10288
10289               switch_to_program_space_and_thread (sal->pspace);
10290
10291               msym = lookup_minimal_symbol_by_pc (sal->pc);
10292               if (msym.minsym)
10293                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10294
10295               do_cleanups (old_chain);
10296             }
10297         }
10298     }
10299 }
10300
10301 void
10302 break_command (char *arg, int from_tty)
10303 {
10304   break_command_1 (arg, 0, from_tty);
10305 }
10306
10307 void
10308 tbreak_command (char *arg, int from_tty)
10309 {
10310   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10311 }
10312
10313 static void
10314 hbreak_command (char *arg, int from_tty)
10315 {
10316   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10317 }
10318
10319 static void
10320 thbreak_command (char *arg, int from_tty)
10321 {
10322   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10323 }
10324
10325 static void
10326 stop_command (char *arg, int from_tty)
10327 {
10328   printf_filtered (_("Specify the type of breakpoint to set.\n\
10329 Usage: stop in <function | address>\n\
10330        stop at <line>\n"));
10331 }
10332
10333 static void
10334 stopin_command (char *arg, int from_tty)
10335 {
10336   int badInput = 0;
10337
10338   if (arg == (char *) NULL)
10339     badInput = 1;
10340   else if (*arg != '*')
10341     {
10342       char *argptr = arg;
10343       int hasColon = 0;
10344
10345       /* Look for a ':'.  If this is a line number specification, then
10346          say it is bad, otherwise, it should be an address or
10347          function/method name.  */
10348       while (*argptr && !hasColon)
10349         {
10350           hasColon = (*argptr == ':');
10351           argptr++;
10352         }
10353
10354       if (hasColon)
10355         badInput = (*argptr != ':');    /* Not a class::method */
10356       else
10357         badInput = isdigit (*arg);      /* a simple line number */
10358     }
10359
10360   if (badInput)
10361     printf_filtered (_("Usage: stop in <function | address>\n"));
10362   else
10363     break_command_1 (arg, 0, from_tty);
10364 }
10365
10366 static void
10367 stopat_command (char *arg, int from_tty)
10368 {
10369   int badInput = 0;
10370
10371   if (arg == (char *) NULL || *arg == '*')      /* no line number */
10372     badInput = 1;
10373   else
10374     {
10375       char *argptr = arg;
10376       int hasColon = 0;
10377
10378       /* Look for a ':'.  If there is a '::' then get out, otherwise
10379          it is probably a line number.  */
10380       while (*argptr && !hasColon)
10381         {
10382           hasColon = (*argptr == ':');
10383           argptr++;
10384         }
10385
10386       if (hasColon)
10387         badInput = (*argptr == ':');    /* we have class::method */
10388       else
10389         badInput = !isdigit (*arg);     /* not a line number */
10390     }
10391
10392   if (badInput)
10393     printf_filtered (_("Usage: stop at <line>\n"));
10394   else
10395     break_command_1 (arg, 0, from_tty);
10396 }
10397
10398 /* The dynamic printf command is mostly like a regular breakpoint, but
10399    with a prewired command list consisting of a single output command,
10400    built from extra arguments supplied on the dprintf command
10401    line.  */
10402
10403 static void
10404 dprintf_command (char *arg, int from_tty)
10405 {
10406   create_breakpoint (get_current_arch (),
10407                      arg,
10408                      NULL, 0, NULL, 1 /* parse arg */,
10409                      0, bp_dprintf,
10410                      0 /* Ignore count */,
10411                      pending_break_support,
10412                      &dprintf_breakpoint_ops,
10413                      from_tty,
10414                      1 /* enabled */,
10415                      0 /* internal */,
10416                      0);
10417 }
10418
10419 static void
10420 agent_printf_command (char *arg, int from_tty)
10421 {
10422   error (_("May only run agent-printf on the target"));
10423 }
10424
10425 /* Implement the "breakpoint_hit" breakpoint_ops method for
10426    ranged breakpoints.  */
10427
10428 static int
10429 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10430                                   struct address_space *aspace,
10431                                   CORE_ADDR bp_addr,
10432                                   const struct target_waitstatus *ws)
10433 {
10434   if (ws->kind != TARGET_WAITKIND_STOPPED
10435       || ws->value.sig != GDB_SIGNAL_TRAP)
10436     return 0;
10437
10438   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10439                                          bl->length, aspace, bp_addr);
10440 }
10441
10442 /* Implement the "resources_needed" breakpoint_ops method for
10443    ranged breakpoints.  */
10444
10445 static int
10446 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10447 {
10448   return target_ranged_break_num_registers ();
10449 }
10450
10451 /* Implement the "print_it" breakpoint_ops method for
10452    ranged breakpoints.  */
10453
10454 static enum print_stop_action
10455 print_it_ranged_breakpoint (bpstat bs)
10456 {
10457   struct breakpoint *b = bs->breakpoint_at;
10458   struct bp_location *bl = b->loc;
10459   struct ui_out *uiout = current_uiout;
10460
10461   gdb_assert (b->type == bp_hardware_breakpoint);
10462
10463   /* Ranged breakpoints have only one location.  */
10464   gdb_assert (bl && bl->next == NULL);
10465
10466   annotate_breakpoint (b->number);
10467   if (b->disposition == disp_del)
10468     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10469   else
10470     ui_out_text (uiout, "\nRanged breakpoint ");
10471   if (ui_out_is_mi_like_p (uiout))
10472     {
10473       ui_out_field_string (uiout, "reason",
10474                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10475       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10476     }
10477   ui_out_field_int (uiout, "bkptno", b->number);
10478   ui_out_text (uiout, ", ");
10479
10480   return PRINT_SRC_AND_LOC;
10481 }
10482
10483 /* Implement the "print_one" breakpoint_ops method for
10484    ranged breakpoints.  */
10485
10486 static void
10487 print_one_ranged_breakpoint (struct breakpoint *b,
10488                              struct bp_location **last_loc)
10489 {
10490   struct bp_location *bl = b->loc;
10491   struct value_print_options opts;
10492   struct ui_out *uiout = current_uiout;
10493
10494   /* Ranged breakpoints have only one location.  */
10495   gdb_assert (bl && bl->next == NULL);
10496
10497   get_user_print_options (&opts);
10498
10499   if (opts.addressprint)
10500     /* We don't print the address range here, it will be printed later
10501        by print_one_detail_ranged_breakpoint.  */
10502     ui_out_field_skip (uiout, "addr");
10503   annotate_field (5);
10504   print_breakpoint_location (b, bl);
10505   *last_loc = bl;
10506 }
10507
10508 /* Implement the "print_one_detail" breakpoint_ops method for
10509    ranged breakpoints.  */
10510
10511 static void
10512 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10513                                     struct ui_out *uiout)
10514 {
10515   CORE_ADDR address_start, address_end;
10516   struct bp_location *bl = b->loc;
10517   struct ui_file *stb = mem_fileopen ();
10518   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10519
10520   gdb_assert (bl);
10521
10522   address_start = bl->address;
10523   address_end = address_start + bl->length - 1;
10524
10525   ui_out_text (uiout, "\taddress range: ");
10526   fprintf_unfiltered (stb, "[%s, %s]",
10527                       print_core_address (bl->gdbarch, address_start),
10528                       print_core_address (bl->gdbarch, address_end));
10529   ui_out_field_stream (uiout, "addr", stb);
10530   ui_out_text (uiout, "\n");
10531
10532   do_cleanups (cleanup);
10533 }
10534
10535 /* Implement the "print_mention" breakpoint_ops method for
10536    ranged breakpoints.  */
10537
10538 static void
10539 print_mention_ranged_breakpoint (struct breakpoint *b)
10540 {
10541   struct bp_location *bl = b->loc;
10542   struct ui_out *uiout = current_uiout;
10543
10544   gdb_assert (bl);
10545   gdb_assert (b->type == bp_hardware_breakpoint);
10546
10547   if (ui_out_is_mi_like_p (uiout))
10548     return;
10549
10550   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10551                    b->number, paddress (bl->gdbarch, bl->address),
10552                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10553 }
10554
10555 /* Implement the "print_recreate" breakpoint_ops method for
10556    ranged breakpoints.  */
10557
10558 static void
10559 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10560 {
10561   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10562                       b->addr_string_range_end);
10563   print_recreate_thread (b, fp);
10564 }
10565
10566 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10567
10568 static struct breakpoint_ops ranged_breakpoint_ops;
10569
10570 /* Find the address where the end of the breakpoint range should be
10571    placed, given the SAL of the end of the range.  This is so that if
10572    the user provides a line number, the end of the range is set to the
10573    last instruction of the given line.  */
10574
10575 static CORE_ADDR
10576 find_breakpoint_range_end (struct symtab_and_line sal)
10577 {
10578   CORE_ADDR end;
10579
10580   /* If the user provided a PC value, use it.  Otherwise,
10581      find the address of the end of the given location.  */
10582   if (sal.explicit_pc)
10583     end = sal.pc;
10584   else
10585     {
10586       int ret;
10587       CORE_ADDR start;
10588
10589       ret = find_line_pc_range (sal, &start, &end);
10590       if (!ret)
10591         error (_("Could not find location of the end of the range."));
10592
10593       /* find_line_pc_range returns the start of the next line.  */
10594       end--;
10595     }
10596
10597   return end;
10598 }
10599
10600 /* Implement the "break-range" CLI command.  */
10601
10602 static void
10603 break_range_command (char *arg, int from_tty)
10604 {
10605   char *arg_start, *addr_string_start, *addr_string_end;
10606   struct linespec_result canonical_start, canonical_end;
10607   int bp_count, can_use_bp, length;
10608   CORE_ADDR end;
10609   struct breakpoint *b;
10610   struct symtab_and_line sal_start, sal_end;
10611   struct cleanup *cleanup_bkpt;
10612   struct linespec_sals *lsal_start, *lsal_end;
10613
10614   /* We don't support software ranged breakpoints.  */
10615   if (target_ranged_break_num_registers () < 0)
10616     error (_("This target does not support hardware ranged breakpoints."));
10617
10618   bp_count = hw_breakpoint_used_count ();
10619   bp_count += target_ranged_break_num_registers ();
10620   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10621                                                    bp_count, 0);
10622   if (can_use_bp < 0)
10623     error (_("Hardware breakpoints used exceeds limit."));
10624
10625   arg = skip_spaces (arg);
10626   if (arg == NULL || arg[0] == '\0')
10627     error(_("No address range specified."));
10628
10629   init_linespec_result (&canonical_start);
10630
10631   arg_start = arg;
10632   parse_breakpoint_sals (&arg, &canonical_start);
10633
10634   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10635
10636   if (arg[0] != ',')
10637     error (_("Too few arguments."));
10638   else if (VEC_empty (linespec_sals, canonical_start.sals))
10639     error (_("Could not find location of the beginning of the range."));
10640
10641   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10642
10643   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10644       || lsal_start->sals.nelts != 1)
10645     error (_("Cannot create a ranged breakpoint with multiple locations."));
10646
10647   sal_start = lsal_start->sals.sals[0];
10648   addr_string_start = savestring (arg_start, arg - arg_start);
10649   make_cleanup (xfree, addr_string_start);
10650
10651   arg++;        /* Skip the comma.  */
10652   arg = skip_spaces (arg);
10653
10654   /* Parse the end location.  */
10655
10656   init_linespec_result (&canonical_end);
10657   arg_start = arg;
10658
10659   /* We call decode_line_full directly here instead of using
10660      parse_breakpoint_sals because we need to specify the start location's
10661      symtab and line as the default symtab and line for the end of the
10662      range.  This makes it possible to have ranges like "foo.c:27, +14",
10663      where +14 means 14 lines from the start location.  */
10664   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10665                     sal_start.symtab, sal_start.line,
10666                     &canonical_end, NULL, NULL);
10667
10668   make_cleanup_destroy_linespec_result (&canonical_end);
10669
10670   if (VEC_empty (linespec_sals, canonical_end.sals))
10671     error (_("Could not find location of the end of the range."));
10672
10673   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10674   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10675       || lsal_end->sals.nelts != 1)
10676     error (_("Cannot create a ranged breakpoint with multiple locations."));
10677
10678   sal_end = lsal_end->sals.sals[0];
10679   addr_string_end = savestring (arg_start, arg - arg_start);
10680   make_cleanup (xfree, addr_string_end);
10681
10682   end = find_breakpoint_range_end (sal_end);
10683   if (sal_start.pc > end)
10684     error (_("Invalid address range, end precedes start."));
10685
10686   length = end - sal_start.pc + 1;
10687   if (length < 0)
10688     /* Length overflowed.  */
10689     error (_("Address range too large."));
10690   else if (length == 1)
10691     {
10692       /* This range is simple enough to be handled by
10693          the `hbreak' command.  */
10694       hbreak_command (addr_string_start, 1);
10695
10696       do_cleanups (cleanup_bkpt);
10697
10698       return;
10699     }
10700
10701   /* Now set up the breakpoint.  */
10702   b = set_raw_breakpoint (get_current_arch (), sal_start,
10703                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10704   set_breakpoint_count (breakpoint_count + 1);
10705   b->number = breakpoint_count;
10706   b->disposition = disp_donttouch;
10707   b->addr_string = xstrdup (addr_string_start);
10708   b->addr_string_range_end = xstrdup (addr_string_end);
10709   b->loc->length = length;
10710
10711   do_cleanups (cleanup_bkpt);
10712
10713   mention (b);
10714   observer_notify_breakpoint_created (b);
10715   update_global_location_list (UGLL_MAY_INSERT);
10716 }
10717
10718 /*  Return non-zero if EXP is verified as constant.  Returned zero
10719     means EXP is variable.  Also the constant detection may fail for
10720     some constant expressions and in such case still falsely return
10721     zero.  */
10722
10723 static int
10724 watchpoint_exp_is_const (const struct expression *exp)
10725 {
10726   int i = exp->nelts;
10727
10728   while (i > 0)
10729     {
10730       int oplenp, argsp;
10731
10732       /* We are only interested in the descriptor of each element.  */
10733       operator_length (exp, i, &oplenp, &argsp);
10734       i -= oplenp;
10735
10736       switch (exp->elts[i].opcode)
10737         {
10738         case BINOP_ADD:
10739         case BINOP_SUB:
10740         case BINOP_MUL:
10741         case BINOP_DIV:
10742         case BINOP_REM:
10743         case BINOP_MOD:
10744         case BINOP_LSH:
10745         case BINOP_RSH:
10746         case BINOP_LOGICAL_AND:
10747         case BINOP_LOGICAL_OR:
10748         case BINOP_BITWISE_AND:
10749         case BINOP_BITWISE_IOR:
10750         case BINOP_BITWISE_XOR:
10751         case BINOP_EQUAL:
10752         case BINOP_NOTEQUAL:
10753         case BINOP_LESS:
10754         case BINOP_GTR:
10755         case BINOP_LEQ:
10756         case BINOP_GEQ:
10757         case BINOP_REPEAT:
10758         case BINOP_COMMA:
10759         case BINOP_EXP:
10760         case BINOP_MIN:
10761         case BINOP_MAX:
10762         case BINOP_INTDIV:
10763         case BINOP_CONCAT:
10764         case TERNOP_COND:
10765         case TERNOP_SLICE:
10766
10767         case OP_LONG:
10768         case OP_DOUBLE:
10769         case OP_DECFLOAT:
10770         case OP_LAST:
10771         case OP_COMPLEX:
10772         case OP_STRING:
10773         case OP_ARRAY:
10774         case OP_TYPE:
10775         case OP_TYPEOF:
10776         case OP_DECLTYPE:
10777         case OP_TYPEID:
10778         case OP_NAME:
10779         case OP_OBJC_NSSTRING:
10780
10781         case UNOP_NEG:
10782         case UNOP_LOGICAL_NOT:
10783         case UNOP_COMPLEMENT:
10784         case UNOP_ADDR:
10785         case UNOP_HIGH:
10786         case UNOP_CAST:
10787
10788         case UNOP_CAST_TYPE:
10789         case UNOP_REINTERPRET_CAST:
10790         case UNOP_DYNAMIC_CAST:
10791           /* Unary, binary and ternary operators: We have to check
10792              their operands.  If they are constant, then so is the
10793              result of that operation.  For instance, if A and B are
10794              determined to be constants, then so is "A + B".
10795
10796              UNOP_IND is one exception to the rule above, because the
10797              value of *ADDR is not necessarily a constant, even when
10798              ADDR is.  */
10799           break;
10800
10801         case OP_VAR_VALUE:
10802           /* Check whether the associated symbol is a constant.
10803
10804              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10805              possible that a buggy compiler could mark a variable as
10806              constant even when it is not, and TYPE_CONST would return
10807              true in this case, while SYMBOL_CLASS wouldn't.
10808
10809              We also have to check for function symbols because they
10810              are always constant.  */
10811           {
10812             struct symbol *s = exp->elts[i + 2].symbol;
10813
10814             if (SYMBOL_CLASS (s) != LOC_BLOCK
10815                 && SYMBOL_CLASS (s) != LOC_CONST
10816                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10817               return 0;
10818             break;
10819           }
10820
10821         /* The default action is to return 0 because we are using
10822            the optimistic approach here: If we don't know something,
10823            then it is not a constant.  */
10824         default:
10825           return 0;
10826         }
10827     }
10828
10829   return 1;
10830 }
10831
10832 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10833
10834 static void
10835 dtor_watchpoint (struct breakpoint *self)
10836 {
10837   struct watchpoint *w = (struct watchpoint *) self;
10838
10839   xfree (w->cond_exp);
10840   xfree (w->exp);
10841   xfree (w->exp_string);
10842   xfree (w->exp_string_reparse);
10843   value_free (w->val);
10844
10845   base_breakpoint_ops.dtor (self);
10846 }
10847
10848 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10849
10850 static void
10851 re_set_watchpoint (struct breakpoint *b)
10852 {
10853   struct watchpoint *w = (struct watchpoint *) b;
10854
10855   /* Watchpoint can be either on expression using entirely global
10856      variables, or it can be on local variables.
10857
10858      Watchpoints of the first kind are never auto-deleted, and even
10859      persist across program restarts.  Since they can use variables
10860      from shared libraries, we need to reparse expression as libraries
10861      are loaded and unloaded.
10862
10863      Watchpoints on local variables can also change meaning as result
10864      of solib event.  For example, if a watchpoint uses both a local
10865      and a global variables in expression, it's a local watchpoint,
10866      but unloading of a shared library will make the expression
10867      invalid.  This is not a very common use case, but we still
10868      re-evaluate expression, to avoid surprises to the user.
10869
10870      Note that for local watchpoints, we re-evaluate it only if
10871      watchpoints frame id is still valid.  If it's not, it means the
10872      watchpoint is out of scope and will be deleted soon.  In fact,
10873      I'm not sure we'll ever be called in this case.
10874
10875      If a local watchpoint's frame id is still valid, then
10876      w->exp_valid_block is likewise valid, and we can safely use it.
10877
10878      Don't do anything about disabled watchpoints, since they will be
10879      reevaluated again when enabled.  */
10880   update_watchpoint (w, 1 /* reparse */);
10881 }
10882
10883 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10884
10885 static int
10886 insert_watchpoint (struct bp_location *bl)
10887 {
10888   struct watchpoint *w = (struct watchpoint *) bl->owner;
10889   int length = w->exact ? 1 : bl->length;
10890
10891   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10892                                    w->cond_exp);
10893 }
10894
10895 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10896
10897 static int
10898 remove_watchpoint (struct bp_location *bl)
10899 {
10900   struct watchpoint *w = (struct watchpoint *) bl->owner;
10901   int length = w->exact ? 1 : bl->length;
10902
10903   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10904                                    w->cond_exp);
10905 }
10906
10907 static int
10908 breakpoint_hit_watchpoint (const struct bp_location *bl,
10909                            struct address_space *aspace, CORE_ADDR bp_addr,
10910                            const struct target_waitstatus *ws)
10911 {
10912   struct breakpoint *b = bl->owner;
10913   struct watchpoint *w = (struct watchpoint *) b;
10914
10915   /* Continuable hardware watchpoints are treated as non-existent if the
10916      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10917      some data address).  Otherwise gdb won't stop on a break instruction
10918      in the code (not from a breakpoint) when a hardware watchpoint has
10919      been defined.  Also skip watchpoints which we know did not trigger
10920      (did not match the data address).  */
10921   if (is_hardware_watchpoint (b)
10922       && w->watchpoint_triggered == watch_triggered_no)
10923     return 0;
10924
10925   return 1;
10926 }
10927
10928 static void
10929 check_status_watchpoint (bpstat bs)
10930 {
10931   gdb_assert (is_watchpoint (bs->breakpoint_at));
10932
10933   bpstat_check_watchpoint (bs);
10934 }
10935
10936 /* Implement the "resources_needed" breakpoint_ops method for
10937    hardware watchpoints.  */
10938
10939 static int
10940 resources_needed_watchpoint (const struct bp_location *bl)
10941 {
10942   struct watchpoint *w = (struct watchpoint *) bl->owner;
10943   int length = w->exact? 1 : bl->length;
10944
10945   return target_region_ok_for_hw_watchpoint (bl->address, length);
10946 }
10947
10948 /* Implement the "works_in_software_mode" breakpoint_ops method for
10949    hardware watchpoints.  */
10950
10951 static int
10952 works_in_software_mode_watchpoint (const struct breakpoint *b)
10953 {
10954   /* Read and access watchpoints only work with hardware support.  */
10955   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10956 }
10957
10958 static enum print_stop_action
10959 print_it_watchpoint (bpstat bs)
10960 {
10961   struct cleanup *old_chain;
10962   struct breakpoint *b;
10963   struct ui_file *stb;
10964   enum print_stop_action result;
10965   struct watchpoint *w;
10966   struct ui_out *uiout = current_uiout;
10967
10968   gdb_assert (bs->bp_location_at != NULL);
10969
10970   b = bs->breakpoint_at;
10971   w = (struct watchpoint *) b;
10972
10973   stb = mem_fileopen ();
10974   old_chain = make_cleanup_ui_file_delete (stb);
10975
10976   switch (b->type)
10977     {
10978     case bp_watchpoint:
10979     case bp_hardware_watchpoint:
10980       annotate_watchpoint (b->number);
10981       if (ui_out_is_mi_like_p (uiout))
10982         ui_out_field_string
10983           (uiout, "reason",
10984            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10985       mention (b);
10986       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10987       ui_out_text (uiout, "\nOld value = ");
10988       watchpoint_value_print (bs->old_val, stb);
10989       ui_out_field_stream (uiout, "old", stb);
10990       ui_out_text (uiout, "\nNew value = ");
10991       watchpoint_value_print (w->val, stb);
10992       ui_out_field_stream (uiout, "new", stb);
10993       ui_out_text (uiout, "\n");
10994       /* More than one watchpoint may have been triggered.  */
10995       result = PRINT_UNKNOWN;
10996       break;
10997
10998     case bp_read_watchpoint:
10999       if (ui_out_is_mi_like_p (uiout))
11000         ui_out_field_string
11001           (uiout, "reason",
11002            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11003       mention (b);
11004       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11005       ui_out_text (uiout, "\nValue = ");
11006       watchpoint_value_print (w->val, stb);
11007       ui_out_field_stream (uiout, "value", stb);
11008       ui_out_text (uiout, "\n");
11009       result = PRINT_UNKNOWN;
11010       break;
11011
11012     case bp_access_watchpoint:
11013       if (bs->old_val != NULL)
11014         {
11015           annotate_watchpoint (b->number);
11016           if (ui_out_is_mi_like_p (uiout))
11017             ui_out_field_string
11018               (uiout, "reason",
11019                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11020           mention (b);
11021           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11022           ui_out_text (uiout, "\nOld value = ");
11023           watchpoint_value_print (bs->old_val, stb);
11024           ui_out_field_stream (uiout, "old", stb);
11025           ui_out_text (uiout, "\nNew value = ");
11026         }
11027       else
11028         {
11029           mention (b);
11030           if (ui_out_is_mi_like_p (uiout))
11031             ui_out_field_string
11032               (uiout, "reason",
11033                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11034           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
11035           ui_out_text (uiout, "\nValue = ");
11036         }
11037       watchpoint_value_print (w->val, stb);
11038       ui_out_field_stream (uiout, "new", stb);
11039       ui_out_text (uiout, "\n");
11040       result = PRINT_UNKNOWN;
11041       break;
11042     default:
11043       result = PRINT_UNKNOWN;
11044     }
11045
11046   do_cleanups (old_chain);
11047   return result;
11048 }
11049
11050 /* Implement the "print_mention" breakpoint_ops method for hardware
11051    watchpoints.  */
11052
11053 static void
11054 print_mention_watchpoint (struct breakpoint *b)
11055 {
11056   struct cleanup *ui_out_chain;
11057   struct watchpoint *w = (struct watchpoint *) b;
11058   struct ui_out *uiout = current_uiout;
11059
11060   switch (b->type)
11061     {
11062     case bp_watchpoint:
11063       ui_out_text (uiout, "Watchpoint ");
11064       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11065       break;
11066     case bp_hardware_watchpoint:
11067       ui_out_text (uiout, "Hardware watchpoint ");
11068       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11069       break;
11070     case bp_read_watchpoint:
11071       ui_out_text (uiout, "Hardware read watchpoint ");
11072       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11073       break;
11074     case bp_access_watchpoint:
11075       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
11076       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11077       break;
11078     default:
11079       internal_error (__FILE__, __LINE__,
11080                       _("Invalid hardware watchpoint type."));
11081     }
11082
11083   ui_out_field_int (uiout, "number", b->number);
11084   ui_out_text (uiout, ": ");
11085   ui_out_field_string (uiout, "exp", w->exp_string);
11086   do_cleanups (ui_out_chain);
11087 }
11088
11089 /* Implement the "print_recreate" breakpoint_ops method for
11090    watchpoints.  */
11091
11092 static void
11093 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
11094 {
11095   struct watchpoint *w = (struct watchpoint *) b;
11096
11097   switch (b->type)
11098     {
11099     case bp_watchpoint:
11100     case bp_hardware_watchpoint:
11101       fprintf_unfiltered (fp, "watch");
11102       break;
11103     case bp_read_watchpoint:
11104       fprintf_unfiltered (fp, "rwatch");
11105       break;
11106     case bp_access_watchpoint:
11107       fprintf_unfiltered (fp, "awatch");
11108       break;
11109     default:
11110       internal_error (__FILE__, __LINE__,
11111                       _("Invalid watchpoint type."));
11112     }
11113
11114   fprintf_unfiltered (fp, " %s", w->exp_string);
11115   print_recreate_thread (b, fp);
11116 }
11117
11118 /* Implement the "explains_signal" breakpoint_ops method for
11119    watchpoints.  */
11120
11121 static int
11122 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
11123 {
11124   /* A software watchpoint cannot cause a signal other than
11125      GDB_SIGNAL_TRAP.  */
11126   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
11127     return 0;
11128
11129   return 1;
11130 }
11131
11132 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
11133
11134 static struct breakpoint_ops watchpoint_breakpoint_ops;
11135
11136 /* Implement the "insert" breakpoint_ops method for
11137    masked hardware watchpoints.  */
11138
11139 static int
11140 insert_masked_watchpoint (struct bp_location *bl)
11141 {
11142   struct watchpoint *w = (struct watchpoint *) bl->owner;
11143
11144   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
11145                                         bl->watchpoint_type);
11146 }
11147
11148 /* Implement the "remove" breakpoint_ops method for
11149    masked hardware watchpoints.  */
11150
11151 static int
11152 remove_masked_watchpoint (struct bp_location *bl)
11153 {
11154   struct watchpoint *w = (struct watchpoint *) bl->owner;
11155
11156   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
11157                                         bl->watchpoint_type);
11158 }
11159
11160 /* Implement the "resources_needed" breakpoint_ops method for
11161    masked hardware watchpoints.  */
11162
11163 static int
11164 resources_needed_masked_watchpoint (const struct bp_location *bl)
11165 {
11166   struct watchpoint *w = (struct watchpoint *) bl->owner;
11167
11168   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
11169 }
11170
11171 /* Implement the "works_in_software_mode" breakpoint_ops method for
11172    masked hardware watchpoints.  */
11173
11174 static int
11175 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
11176 {
11177   return 0;
11178 }
11179
11180 /* Implement the "print_it" breakpoint_ops method for
11181    masked hardware watchpoints.  */
11182
11183 static enum print_stop_action
11184 print_it_masked_watchpoint (bpstat bs)
11185 {
11186   struct breakpoint *b = bs->breakpoint_at;
11187   struct ui_out *uiout = current_uiout;
11188
11189   /* Masked watchpoints have only one location.  */
11190   gdb_assert (b->loc && b->loc->next == NULL);
11191
11192   switch (b->type)
11193     {
11194     case bp_hardware_watchpoint:
11195       annotate_watchpoint (b->number);
11196       if (ui_out_is_mi_like_p (uiout))
11197         ui_out_field_string
11198           (uiout, "reason",
11199            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11200       break;
11201
11202     case bp_read_watchpoint:
11203       if (ui_out_is_mi_like_p (uiout))
11204         ui_out_field_string
11205           (uiout, "reason",
11206            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11207       break;
11208
11209     case bp_access_watchpoint:
11210       if (ui_out_is_mi_like_p (uiout))
11211         ui_out_field_string
11212           (uiout, "reason",
11213            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11214       break;
11215     default:
11216       internal_error (__FILE__, __LINE__,
11217                       _("Invalid hardware watchpoint type."));
11218     }
11219
11220   mention (b);
11221   ui_out_text (uiout, _("\n\
11222 Check the underlying instruction at PC for the memory\n\
11223 address and value which triggered this watchpoint.\n"));
11224   ui_out_text (uiout, "\n");
11225
11226   /* More than one watchpoint may have been triggered.  */
11227   return PRINT_UNKNOWN;
11228 }
11229
11230 /* Implement the "print_one_detail" breakpoint_ops method for
11231    masked hardware watchpoints.  */
11232
11233 static void
11234 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11235                                     struct ui_out *uiout)
11236 {
11237   struct watchpoint *w = (struct watchpoint *) b;
11238
11239   /* Masked watchpoints have only one location.  */
11240   gdb_assert (b->loc && b->loc->next == NULL);
11241
11242   ui_out_text (uiout, "\tmask ");
11243   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11244   ui_out_text (uiout, "\n");
11245 }
11246
11247 /* Implement the "print_mention" breakpoint_ops method for
11248    masked hardware watchpoints.  */
11249
11250 static void
11251 print_mention_masked_watchpoint (struct breakpoint *b)
11252 {
11253   struct watchpoint *w = (struct watchpoint *) b;
11254   struct ui_out *uiout = current_uiout;
11255   struct cleanup *ui_out_chain;
11256
11257   switch (b->type)
11258     {
11259     case bp_hardware_watchpoint:
11260       ui_out_text (uiout, "Masked hardware watchpoint ");
11261       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11262       break;
11263     case bp_read_watchpoint:
11264       ui_out_text (uiout, "Masked hardware read watchpoint ");
11265       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11266       break;
11267     case bp_access_watchpoint:
11268       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11269       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11270       break;
11271     default:
11272       internal_error (__FILE__, __LINE__,
11273                       _("Invalid hardware watchpoint type."));
11274     }
11275
11276   ui_out_field_int (uiout, "number", b->number);
11277   ui_out_text (uiout, ": ");
11278   ui_out_field_string (uiout, "exp", w->exp_string);
11279   do_cleanups (ui_out_chain);
11280 }
11281
11282 /* Implement the "print_recreate" breakpoint_ops method for
11283    masked hardware watchpoints.  */
11284
11285 static void
11286 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11287 {
11288   struct watchpoint *w = (struct watchpoint *) b;
11289   char tmp[40];
11290
11291   switch (b->type)
11292     {
11293     case bp_hardware_watchpoint:
11294       fprintf_unfiltered (fp, "watch");
11295       break;
11296     case bp_read_watchpoint:
11297       fprintf_unfiltered (fp, "rwatch");
11298       break;
11299     case bp_access_watchpoint:
11300       fprintf_unfiltered (fp, "awatch");
11301       break;
11302     default:
11303       internal_error (__FILE__, __LINE__,
11304                       _("Invalid hardware watchpoint type."));
11305     }
11306
11307   sprintf_vma (tmp, w->hw_wp_mask);
11308   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11309   print_recreate_thread (b, fp);
11310 }
11311
11312 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11313
11314 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11315
11316 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11317
11318 static int
11319 is_masked_watchpoint (const struct breakpoint *b)
11320 {
11321   return b->ops == &masked_watchpoint_breakpoint_ops;
11322 }
11323
11324 /* accessflag:  hw_write:  watch write, 
11325                 hw_read:   watch read, 
11326                 hw_access: watch access (read or write) */
11327 static void
11328 watch_command_1 (const char *arg, int accessflag, int from_tty,
11329                  int just_location, int internal)
11330 {
11331   volatile struct gdb_exception e;
11332   struct breakpoint *b, *scope_breakpoint = NULL;
11333   struct expression *exp;
11334   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11335   struct value *val, *mark, *result;
11336   int saved_bitpos = 0, saved_bitsize = 0;
11337   struct frame_info *frame;
11338   const char *exp_start = NULL;
11339   const char *exp_end = NULL;
11340   const char *tok, *end_tok;
11341   int toklen = -1;
11342   const char *cond_start = NULL;
11343   const char *cond_end = NULL;
11344   enum bptype bp_type;
11345   int thread = -1;
11346   int pc = 0;
11347   /* Flag to indicate whether we are going to use masks for
11348      the hardware watchpoint.  */
11349   int use_mask = 0;
11350   CORE_ADDR mask = 0;
11351   struct watchpoint *w;
11352   char *expression;
11353   struct cleanup *back_to;
11354
11355   /* Make sure that we actually have parameters to parse.  */
11356   if (arg != NULL && arg[0] != '\0')
11357     {
11358       const char *value_start;
11359
11360       exp_end = arg + strlen (arg);
11361
11362       /* Look for "parameter value" pairs at the end
11363          of the arguments string.  */
11364       for (tok = exp_end - 1; tok > arg; tok--)
11365         {
11366           /* Skip whitespace at the end of the argument list.  */
11367           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11368             tok--;
11369
11370           /* Find the beginning of the last token.
11371              This is the value of the parameter.  */
11372           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11373             tok--;
11374           value_start = tok + 1;
11375
11376           /* Skip whitespace.  */
11377           while (tok > arg && (*tok == ' ' || *tok == '\t'))
11378             tok--;
11379
11380           end_tok = tok;
11381
11382           /* Find the beginning of the second to last token.
11383              This is the parameter itself.  */
11384           while (tok > arg && (*tok != ' ' && *tok != '\t'))
11385             tok--;
11386           tok++;
11387           toklen = end_tok - tok + 1;
11388
11389           if (toklen == 6 && !strncmp (tok, "thread", 6))
11390             {
11391               /* At this point we've found a "thread" token, which means
11392                  the user is trying to set a watchpoint that triggers
11393                  only in a specific thread.  */
11394               char *endp;
11395
11396               if (thread != -1)
11397                 error(_("You can specify only one thread."));
11398
11399               /* Extract the thread ID from the next token.  */
11400               thread = strtol (value_start, &endp, 0);
11401
11402               /* Check if the user provided a valid numeric value for the
11403                  thread ID.  */
11404               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11405                 error (_("Invalid thread ID specification %s."), value_start);
11406
11407               /* Check if the thread actually exists.  */
11408               if (!valid_thread_id (thread))
11409                 invalid_thread_id_error (thread);
11410             }
11411           else if (toklen == 4 && !strncmp (tok, "mask", 4))
11412             {
11413               /* We've found a "mask" token, which means the user wants to
11414                  create a hardware watchpoint that is going to have the mask
11415                  facility.  */
11416               struct value *mask_value, *mark;
11417
11418               if (use_mask)
11419                 error(_("You can specify only one mask."));
11420
11421               use_mask = just_location = 1;
11422
11423               mark = value_mark ();
11424               mask_value = parse_to_comma_and_eval (&value_start);
11425               mask = value_as_address (mask_value);
11426               value_free_to_mark (mark);
11427             }
11428           else
11429             /* We didn't recognize what we found.  We should stop here.  */
11430             break;
11431
11432           /* Truncate the string and get rid of the "parameter value" pair before
11433              the arguments string is parsed by the parse_exp_1 function.  */
11434           exp_end = tok;
11435         }
11436     }
11437   else
11438     exp_end = arg;
11439
11440   /* Parse the rest of the arguments.  From here on out, everything
11441      is in terms of a newly allocated string instead of the original
11442      ARG.  */
11443   innermost_block = NULL;
11444   expression = savestring (arg, exp_end - arg);
11445   back_to = make_cleanup (xfree, expression);
11446   exp_start = arg = expression;
11447   exp = parse_exp_1 (&arg, 0, 0, 0);
11448   exp_end = arg;
11449   /* Remove trailing whitespace from the expression before saving it.
11450      This makes the eventual display of the expression string a bit
11451      prettier.  */
11452   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11453     --exp_end;
11454
11455   /* Checking if the expression is not constant.  */
11456   if (watchpoint_exp_is_const (exp))
11457     {
11458       int len;
11459
11460       len = exp_end - exp_start;
11461       while (len > 0 && isspace (exp_start[len - 1]))
11462         len--;
11463       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11464     }
11465
11466   exp_valid_block = innermost_block;
11467   mark = value_mark ();
11468   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11469
11470   if (val != NULL && just_location)
11471     {
11472       saved_bitpos = value_bitpos (val);
11473       saved_bitsize = value_bitsize (val);
11474     }
11475
11476   if (just_location)
11477     {
11478       int ret;
11479
11480       exp_valid_block = NULL;
11481       val = value_addr (result);
11482       release_value (val);
11483       value_free_to_mark (mark);
11484
11485       if (use_mask)
11486         {
11487           ret = target_masked_watch_num_registers (value_as_address (val),
11488                                                    mask);
11489           if (ret == -1)
11490             error (_("This target does not support masked watchpoints."));
11491           else if (ret == -2)
11492             error (_("Invalid mask or memory region."));
11493         }
11494     }
11495   else if (val != NULL)
11496     release_value (val);
11497
11498   tok = skip_spaces_const (arg);
11499   end_tok = skip_to_space_const (tok);
11500
11501   toklen = end_tok - tok;
11502   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11503     {
11504       struct expression *cond;
11505
11506       innermost_block = NULL;
11507       tok = cond_start = end_tok + 1;
11508       cond = parse_exp_1 (&tok, 0, 0, 0);
11509
11510       /* The watchpoint expression may not be local, but the condition
11511          may still be.  E.g.: `watch global if local > 0'.  */
11512       cond_exp_valid_block = innermost_block;
11513
11514       xfree (cond);
11515       cond_end = tok;
11516     }
11517   if (*tok)
11518     error (_("Junk at end of command."));
11519
11520   frame = block_innermost_frame (exp_valid_block);
11521
11522   /* If the expression is "local", then set up a "watchpoint scope"
11523      breakpoint at the point where we've left the scope of the watchpoint
11524      expression.  Create the scope breakpoint before the watchpoint, so
11525      that we will encounter it first in bpstat_stop_status.  */
11526   if (exp_valid_block && frame)
11527     {
11528       if (frame_id_p (frame_unwind_caller_id (frame)))
11529         {
11530           scope_breakpoint
11531             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11532                                           frame_unwind_caller_pc (frame),
11533                                           bp_watchpoint_scope,
11534                                           &momentary_breakpoint_ops);
11535
11536           scope_breakpoint->enable_state = bp_enabled;
11537
11538           /* Automatically delete the breakpoint when it hits.  */
11539           scope_breakpoint->disposition = disp_del;
11540
11541           /* Only break in the proper frame (help with recursion).  */
11542           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11543
11544           /* Set the address at which we will stop.  */
11545           scope_breakpoint->loc->gdbarch
11546             = frame_unwind_caller_arch (frame);
11547           scope_breakpoint->loc->requested_address
11548             = frame_unwind_caller_pc (frame);
11549           scope_breakpoint->loc->address
11550             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11551                                          scope_breakpoint->loc->requested_address,
11552                                          scope_breakpoint->type);
11553         }
11554     }
11555
11556   /* Now set up the breakpoint.  We create all watchpoints as hardware
11557      watchpoints here even if hardware watchpoints are turned off, a call
11558      to update_watchpoint later in this function will cause the type to
11559      drop back to bp_watchpoint (software watchpoint) if required.  */
11560
11561   if (accessflag == hw_read)
11562     bp_type = bp_read_watchpoint;
11563   else if (accessflag == hw_access)
11564     bp_type = bp_access_watchpoint;
11565   else
11566     bp_type = bp_hardware_watchpoint;
11567
11568   w = XCNEW (struct watchpoint);
11569   b = &w->base;
11570   if (use_mask)
11571     init_raw_breakpoint_without_location (b, NULL, bp_type,
11572                                           &masked_watchpoint_breakpoint_ops);
11573   else
11574     init_raw_breakpoint_without_location (b, NULL, bp_type,
11575                                           &watchpoint_breakpoint_ops);
11576   b->thread = thread;
11577   b->disposition = disp_donttouch;
11578   b->pspace = current_program_space;
11579   w->exp = exp;
11580   w->exp_valid_block = exp_valid_block;
11581   w->cond_exp_valid_block = cond_exp_valid_block;
11582   if (just_location)
11583     {
11584       struct type *t = value_type (val);
11585       CORE_ADDR addr = value_as_address (val);
11586       char *name;
11587
11588       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11589       name = type_to_string (t);
11590
11591       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11592                                           core_addr_to_string (addr));
11593       xfree (name);
11594
11595       w->exp_string = xstrprintf ("-location %.*s",
11596                                   (int) (exp_end - exp_start), exp_start);
11597
11598       /* The above expression is in C.  */
11599       b->language = language_c;
11600     }
11601   else
11602     w->exp_string = savestring (exp_start, exp_end - exp_start);
11603
11604   if (use_mask)
11605     {
11606       w->hw_wp_mask = mask;
11607     }
11608   else
11609     {
11610       w->val = val;
11611       w->val_bitpos = saved_bitpos;
11612       w->val_bitsize = saved_bitsize;
11613       w->val_valid = 1;
11614     }
11615
11616   if (cond_start)
11617     b->cond_string = savestring (cond_start, cond_end - cond_start);
11618   else
11619     b->cond_string = 0;
11620
11621   if (frame)
11622     {
11623       w->watchpoint_frame = get_frame_id (frame);
11624       w->watchpoint_thread = inferior_ptid;
11625     }
11626   else
11627     {
11628       w->watchpoint_frame = null_frame_id;
11629       w->watchpoint_thread = null_ptid;
11630     }
11631
11632   if (scope_breakpoint != NULL)
11633     {
11634       /* The scope breakpoint is related to the watchpoint.  We will
11635          need to act on them together.  */
11636       b->related_breakpoint = scope_breakpoint;
11637       scope_breakpoint->related_breakpoint = b;
11638     }
11639
11640   if (!just_location)
11641     value_free_to_mark (mark);
11642
11643   TRY_CATCH (e, RETURN_MASK_ALL)
11644     {
11645       /* Finally update the new watchpoint.  This creates the locations
11646          that should be inserted.  */
11647       update_watchpoint (w, 1);
11648     }
11649   if (e.reason < 0)
11650     {
11651       delete_breakpoint (b);
11652       throw_exception (e);
11653     }
11654
11655   install_breakpoint (internal, b, 1);
11656   do_cleanups (back_to);
11657 }
11658
11659 /* Return count of debug registers needed to watch the given expression.
11660    If the watchpoint cannot be handled in hardware return zero.  */
11661
11662 static int
11663 can_use_hardware_watchpoint (struct value *v)
11664 {
11665   int found_memory_cnt = 0;
11666   struct value *head = v;
11667
11668   /* Did the user specifically forbid us to use hardware watchpoints? */
11669   if (!can_use_hw_watchpoints)
11670     return 0;
11671
11672   /* Make sure that the value of the expression depends only upon
11673      memory contents, and values computed from them within GDB.  If we
11674      find any register references or function calls, we can't use a
11675      hardware watchpoint.
11676
11677      The idea here is that evaluating an expression generates a series
11678      of values, one holding the value of every subexpression.  (The
11679      expression a*b+c has five subexpressions: a, b, a*b, c, and
11680      a*b+c.)  GDB's values hold almost enough information to establish
11681      the criteria given above --- they identify memory lvalues,
11682      register lvalues, computed values, etcetera.  So we can evaluate
11683      the expression, and then scan the chain of values that leaves
11684      behind to decide whether we can detect any possible change to the
11685      expression's final value using only hardware watchpoints.
11686
11687      However, I don't think that the values returned by inferior
11688      function calls are special in any way.  So this function may not
11689      notice that an expression involving an inferior function call
11690      can't be watched with hardware watchpoints.  FIXME.  */
11691   for (; v; v = value_next (v))
11692     {
11693       if (VALUE_LVAL (v) == lval_memory)
11694         {
11695           if (v != head && value_lazy (v))
11696             /* A lazy memory lvalue in the chain is one that GDB never
11697                needed to fetch; we either just used its address (e.g.,
11698                `a' in `a.b') or we never needed it at all (e.g., `a'
11699                in `a,b').  This doesn't apply to HEAD; if that is
11700                lazy then it was not readable, but watch it anyway.  */
11701             ;
11702           else
11703             {
11704               /* Ahh, memory we actually used!  Check if we can cover
11705                  it with hardware watchpoints.  */
11706               struct type *vtype = check_typedef (value_type (v));
11707
11708               /* We only watch structs and arrays if user asked for it
11709                  explicitly, never if they just happen to appear in a
11710                  middle of some value chain.  */
11711               if (v == head
11712                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11713                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11714                 {
11715                   CORE_ADDR vaddr = value_address (v);
11716                   int len;
11717                   int num_regs;
11718
11719                   len = (target_exact_watchpoints
11720                          && is_scalar_type_recursive (vtype))?
11721                     1 : TYPE_LENGTH (value_type (v));
11722
11723                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11724                   if (!num_regs)
11725                     return 0;
11726                   else
11727                     found_memory_cnt += num_regs;
11728                 }
11729             }
11730         }
11731       else if (VALUE_LVAL (v) != not_lval
11732                && deprecated_value_modifiable (v) == 0)
11733         return 0;       /* These are values from the history (e.g., $1).  */
11734       else if (VALUE_LVAL (v) == lval_register)
11735         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11736     }
11737
11738   /* The expression itself looks suitable for using a hardware
11739      watchpoint, but give the target machine a chance to reject it.  */
11740   return found_memory_cnt;
11741 }
11742
11743 void
11744 watch_command_wrapper (char *arg, int from_tty, int internal)
11745 {
11746   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11747 }
11748
11749 /* A helper function that looks for the "-location" argument and then
11750    calls watch_command_1.  */
11751
11752 static void
11753 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11754 {
11755   int just_location = 0;
11756
11757   if (arg
11758       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11759           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11760     {
11761       arg = skip_spaces (arg);
11762       just_location = 1;
11763     }
11764
11765   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11766 }
11767
11768 static void
11769 watch_command (char *arg, int from_tty)
11770 {
11771   watch_maybe_just_location (arg, hw_write, from_tty);
11772 }
11773
11774 void
11775 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11776 {
11777   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11778 }
11779
11780 static void
11781 rwatch_command (char *arg, int from_tty)
11782 {
11783   watch_maybe_just_location (arg, hw_read, from_tty);
11784 }
11785
11786 void
11787 awatch_command_wrapper (char *arg, int from_tty, int internal)
11788 {
11789   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11790 }
11791
11792 static void
11793 awatch_command (char *arg, int from_tty)
11794 {
11795   watch_maybe_just_location (arg, hw_access, from_tty);
11796 }
11797 \f
11798
11799 /* Helper routines for the until_command routine in infcmd.c.  Here
11800    because it uses the mechanisms of breakpoints.  */
11801
11802 struct until_break_command_continuation_args
11803 {
11804   struct breakpoint *breakpoint;
11805   struct breakpoint *breakpoint2;
11806   int thread_num;
11807 };
11808
11809 /* This function is called by fetch_inferior_event via the
11810    cmd_continuation pointer, to complete the until command.  It takes
11811    care of cleaning up the temporary breakpoints set up by the until
11812    command.  */
11813 static void
11814 until_break_command_continuation (void *arg, int err)
11815 {
11816   struct until_break_command_continuation_args *a = arg;
11817
11818   delete_breakpoint (a->breakpoint);
11819   if (a->breakpoint2)
11820     delete_breakpoint (a->breakpoint2);
11821   delete_longjmp_breakpoint (a->thread_num);
11822 }
11823
11824 void
11825 until_break_command (char *arg, int from_tty, int anywhere)
11826 {
11827   struct symtabs_and_lines sals;
11828   struct symtab_and_line sal;
11829   struct frame_info *frame;
11830   struct gdbarch *frame_gdbarch;
11831   struct frame_id stack_frame_id;
11832   struct frame_id caller_frame_id;
11833   struct breakpoint *breakpoint;
11834   struct breakpoint *breakpoint2 = NULL;
11835   struct cleanup *old_chain;
11836   int thread;
11837   struct thread_info *tp;
11838
11839   clear_proceed_status (0);
11840
11841   /* Set a breakpoint where the user wants it and at return from
11842      this function.  */
11843
11844   if (last_displayed_sal_is_valid ())
11845     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11846                           get_last_displayed_symtab (),
11847                           get_last_displayed_line ());
11848   else
11849     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11850                           (struct symtab *) NULL, 0);
11851
11852   if (sals.nelts != 1)
11853     error (_("Couldn't get information on specified line."));
11854
11855   sal = sals.sals[0];
11856   xfree (sals.sals);    /* malloc'd, so freed.  */
11857
11858   if (*arg)
11859     error (_("Junk at end of arguments."));
11860
11861   resolve_sal_pc (&sal);
11862
11863   tp = inferior_thread ();
11864   thread = tp->num;
11865
11866   old_chain = make_cleanup (null_cleanup, NULL);
11867
11868   /* Note linespec handling above invalidates the frame chain.
11869      Installing a breakpoint also invalidates the frame chain (as it
11870      may need to switch threads), so do any frame handling before
11871      that.  */
11872
11873   frame = get_selected_frame (NULL);
11874   frame_gdbarch = get_frame_arch (frame);
11875   stack_frame_id = get_stack_frame_id (frame);
11876   caller_frame_id = frame_unwind_caller_id (frame);
11877
11878   /* Keep within the current frame, or in frames called by the current
11879      one.  */
11880
11881   if (frame_id_p (caller_frame_id))
11882     {
11883       struct symtab_and_line sal2;
11884
11885       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11886       sal2.pc = frame_unwind_caller_pc (frame);
11887       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11888                                               sal2,
11889                                               caller_frame_id,
11890                                               bp_until);
11891       make_cleanup_delete_breakpoint (breakpoint2);
11892
11893       set_longjmp_breakpoint (tp, caller_frame_id);
11894       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11895     }
11896
11897   /* set_momentary_breakpoint could invalidate FRAME.  */
11898   frame = NULL;
11899
11900   if (anywhere)
11901     /* If the user told us to continue until a specified location,
11902        we don't specify a frame at which we need to stop.  */
11903     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11904                                            null_frame_id, bp_until);
11905   else
11906     /* Otherwise, specify the selected frame, because we want to stop
11907        only at the very same frame.  */
11908     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11909                                            stack_frame_id, bp_until);
11910   make_cleanup_delete_breakpoint (breakpoint);
11911
11912   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11913
11914   /* If we are running asynchronously, and proceed call above has
11915      actually managed to start the target, arrange for breakpoints to
11916      be deleted when the target stops.  Otherwise, we're already
11917      stopped and delete breakpoints via cleanup chain.  */
11918
11919   if (target_can_async_p () && is_running (inferior_ptid))
11920     {
11921       struct until_break_command_continuation_args *args;
11922       args = xmalloc (sizeof (*args));
11923
11924       args->breakpoint = breakpoint;
11925       args->breakpoint2 = breakpoint2;
11926       args->thread_num = thread;
11927
11928       discard_cleanups (old_chain);
11929       add_continuation (inferior_thread (),
11930                         until_break_command_continuation, args,
11931                         xfree);
11932     }
11933   else
11934     do_cleanups (old_chain);
11935 }
11936
11937 /* This function attempts to parse an optional "if <cond>" clause
11938    from the arg string.  If one is not found, it returns NULL.
11939
11940    Else, it returns a pointer to the condition string.  (It does not
11941    attempt to evaluate the string against a particular block.)  And,
11942    it updates arg to point to the first character following the parsed
11943    if clause in the arg string.  */
11944
11945 char *
11946 ep_parse_optional_if_clause (char **arg)
11947 {
11948   char *cond_string;
11949
11950   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11951     return NULL;
11952
11953   /* Skip the "if" keyword.  */
11954   (*arg) += 2;
11955
11956   /* Skip any extra leading whitespace, and record the start of the
11957      condition string.  */
11958   *arg = skip_spaces (*arg);
11959   cond_string = *arg;
11960
11961   /* Assume that the condition occupies the remainder of the arg
11962      string.  */
11963   (*arg) += strlen (cond_string);
11964
11965   return cond_string;
11966 }
11967
11968 /* Commands to deal with catching events, such as signals, exceptions,
11969    process start/exit, etc.  */
11970
11971 typedef enum
11972 {
11973   catch_fork_temporary, catch_vfork_temporary,
11974   catch_fork_permanent, catch_vfork_permanent
11975 }
11976 catch_fork_kind;
11977
11978 static void
11979 catch_fork_command_1 (char *arg, int from_tty, 
11980                       struct cmd_list_element *command)
11981 {
11982   struct gdbarch *gdbarch = get_current_arch ();
11983   char *cond_string = NULL;
11984   catch_fork_kind fork_kind;
11985   int tempflag;
11986
11987   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11988   tempflag = (fork_kind == catch_fork_temporary
11989               || fork_kind == catch_vfork_temporary);
11990
11991   if (!arg)
11992     arg = "";
11993   arg = skip_spaces (arg);
11994
11995   /* The allowed syntax is:
11996      catch [v]fork
11997      catch [v]fork if <cond>
11998
11999      First, check if there's an if clause.  */
12000   cond_string = ep_parse_optional_if_clause (&arg);
12001
12002   if ((*arg != '\0') && !isspace (*arg))
12003     error (_("Junk at end of arguments."));
12004
12005   /* If this target supports it, create a fork or vfork catchpoint
12006      and enable reporting of such events.  */
12007   switch (fork_kind)
12008     {
12009     case catch_fork_temporary:
12010     case catch_fork_permanent:
12011       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
12012                                           &catch_fork_breakpoint_ops);
12013       break;
12014     case catch_vfork_temporary:
12015     case catch_vfork_permanent:
12016       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
12017                                           &catch_vfork_breakpoint_ops);
12018       break;
12019     default:
12020       error (_("unsupported or unknown fork kind; cannot catch it"));
12021       break;
12022     }
12023 }
12024
12025 static void
12026 catch_exec_command_1 (char *arg, int from_tty, 
12027                       struct cmd_list_element *command)
12028 {
12029   struct exec_catchpoint *c;
12030   struct gdbarch *gdbarch = get_current_arch ();
12031   int tempflag;
12032   char *cond_string = NULL;
12033
12034   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12035
12036   if (!arg)
12037     arg = "";
12038   arg = skip_spaces (arg);
12039
12040   /* The allowed syntax is:
12041      catch exec
12042      catch exec if <cond>
12043
12044      First, check if there's an if clause.  */
12045   cond_string = ep_parse_optional_if_clause (&arg);
12046
12047   if ((*arg != '\0') && !isspace (*arg))
12048     error (_("Junk at end of arguments."));
12049
12050   c = XNEW (struct exec_catchpoint);
12051   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
12052                    &catch_exec_breakpoint_ops);
12053   c->exec_pathname = NULL;
12054
12055   install_breakpoint (0, &c->base, 1);
12056 }
12057
12058 void
12059 init_ada_exception_breakpoint (struct breakpoint *b,
12060                                struct gdbarch *gdbarch,
12061                                struct symtab_and_line sal,
12062                                char *addr_string,
12063                                const struct breakpoint_ops *ops,
12064                                int tempflag,
12065                                int enabled,
12066                                int from_tty)
12067 {
12068   if (from_tty)
12069     {
12070       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
12071       if (!loc_gdbarch)
12072         loc_gdbarch = gdbarch;
12073
12074       describe_other_breakpoints (loc_gdbarch,
12075                                   sal.pspace, sal.pc, sal.section, -1);
12076       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
12077          version for exception catchpoints, because two catchpoints
12078          used for different exception names will use the same address.
12079          In this case, a "breakpoint ... also set at..." warning is
12080          unproductive.  Besides, the warning phrasing is also a bit
12081          inappropriate, we should use the word catchpoint, and tell
12082          the user what type of catchpoint it is.  The above is good
12083          enough for now, though.  */
12084     }
12085
12086   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
12087
12088   b->enable_state = enabled ? bp_enabled : bp_disabled;
12089   b->disposition = tempflag ? disp_del : disp_donttouch;
12090   b->addr_string = addr_string;
12091   b->language = language_ada;
12092 }
12093
12094 /* Splits the argument using space as delimiter.  Returns an xmalloc'd
12095    filter list, or NULL if no filtering is required.  */
12096 static VEC(int) *
12097 catch_syscall_split_args (char *arg)
12098 {
12099   VEC(int) *result = NULL;
12100   struct cleanup *cleanup = make_cleanup (VEC_cleanup (int), &result);
12101
12102   while (*arg != '\0')
12103     {
12104       int i, syscall_number;
12105       char *endptr;
12106       char cur_name[128];
12107       struct syscall s;
12108
12109       /* Skip whitespace.  */
12110       arg = skip_spaces (arg);
12111
12112       for (i = 0; i < 127 && arg[i] && !isspace (arg[i]); ++i)
12113         cur_name[i] = arg[i];
12114       cur_name[i] = '\0';
12115       arg += i;
12116
12117       /* Check if the user provided a syscall name or a number.  */
12118       syscall_number = (int) strtol (cur_name, &endptr, 0);
12119       if (*endptr == '\0')
12120         get_syscall_by_number (syscall_number, &s);
12121       else
12122         {
12123           /* We have a name.  Let's check if it's valid and convert it
12124              to a number.  */
12125           get_syscall_by_name (cur_name, &s);
12126
12127           if (s.number == UNKNOWN_SYSCALL)
12128             /* Here we have to issue an error instead of a warning,
12129                because GDB cannot do anything useful if there's no
12130                syscall number to be caught.  */
12131             error (_("Unknown syscall name '%s'."), cur_name);
12132         }
12133
12134       /* Ok, it's valid.  */
12135       VEC_safe_push (int, result, s.number);
12136     }
12137
12138   discard_cleanups (cleanup);
12139   return result;
12140 }
12141
12142 /* Implement the "catch syscall" command.  */
12143
12144 static void
12145 catch_syscall_command_1 (char *arg, int from_tty, 
12146                          struct cmd_list_element *command)
12147 {
12148   int tempflag;
12149   VEC(int) *filter;
12150   struct syscall s;
12151   struct gdbarch *gdbarch = get_current_arch ();
12152
12153   /* Checking if the feature if supported.  */
12154   if (gdbarch_get_syscall_number_p (gdbarch) == 0)
12155     error (_("The feature 'catch syscall' is not supported on \
12156 this architecture yet."));
12157
12158   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
12159
12160   arg = skip_spaces (arg);
12161
12162   /* We need to do this first "dummy" translation in order
12163      to get the syscall XML file loaded or, most important,
12164      to display a warning to the user if there's no XML file
12165      for his/her architecture.  */
12166   get_syscall_by_number (0, &s);
12167
12168   /* The allowed syntax is:
12169      catch syscall
12170      catch syscall <name | number> [<name | number> ... <name | number>]
12171
12172      Let's check if there's a syscall name.  */
12173
12174   if (arg != NULL)
12175     filter = catch_syscall_split_args (arg);
12176   else
12177     filter = NULL;
12178
12179   create_syscall_event_catchpoint (tempflag, filter,
12180                                    &catch_syscall_breakpoint_ops);
12181 }
12182
12183 static void
12184 catch_command (char *arg, int from_tty)
12185 {
12186   error (_("Catch requires an event name."));
12187 }
12188 \f
12189
12190 static void
12191 tcatch_command (char *arg, int from_tty)
12192 {
12193   error (_("Catch requires an event name."));
12194 }
12195
12196 /* A qsort comparison function that sorts breakpoints in order.  */
12197
12198 static int
12199 compare_breakpoints (const void *a, const void *b)
12200 {
12201   const breakpoint_p *ba = a;
12202   uintptr_t ua = (uintptr_t) *ba;
12203   const breakpoint_p *bb = b;
12204   uintptr_t ub = (uintptr_t) *bb;
12205
12206   if ((*ba)->number < (*bb)->number)
12207     return -1;
12208   else if ((*ba)->number > (*bb)->number)
12209     return 1;
12210
12211   /* Now sort by address, in case we see, e..g, two breakpoints with
12212      the number 0.  */
12213   if (ua < ub)
12214     return -1;
12215   return ua > ub ? 1 : 0;
12216 }
12217
12218 /* Delete breakpoints by address or line.  */
12219
12220 static void
12221 clear_command (char *arg, int from_tty)
12222 {
12223   struct breakpoint *b, *prev;
12224   VEC(breakpoint_p) *found = 0;
12225   int ix;
12226   int default_match;
12227   struct symtabs_and_lines sals;
12228   struct symtab_and_line sal;
12229   int i;
12230   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12231
12232   if (arg)
12233     {
12234       sals = decode_line_with_current_source (arg,
12235                                               (DECODE_LINE_FUNFIRSTLINE
12236                                                | DECODE_LINE_LIST_MODE));
12237       make_cleanup (xfree, sals.sals);
12238       default_match = 0;
12239     }
12240   else
12241     {
12242       sals.sals = (struct symtab_and_line *)
12243         xmalloc (sizeof (struct symtab_and_line));
12244       make_cleanup (xfree, sals.sals);
12245       init_sal (&sal);          /* Initialize to zeroes.  */
12246
12247       /* Set sal's line, symtab, pc, and pspace to the values
12248          corresponding to the last call to print_frame_info.  If the
12249          codepoint is not valid, this will set all the fields to 0.  */
12250       get_last_displayed_sal (&sal);
12251       if (sal.symtab == 0)
12252         error (_("No source file specified."));
12253
12254       sals.sals[0] = sal;
12255       sals.nelts = 1;
12256
12257       default_match = 1;
12258     }
12259
12260   /* We don't call resolve_sal_pc here.  That's not as bad as it
12261      seems, because all existing breakpoints typically have both
12262      file/line and pc set.  So, if clear is given file/line, we can
12263      match this to existing breakpoint without obtaining pc at all.
12264
12265      We only support clearing given the address explicitly 
12266      present in breakpoint table.  Say, we've set breakpoint 
12267      at file:line.  There were several PC values for that file:line,
12268      due to optimization, all in one block.
12269
12270      We've picked one PC value.  If "clear" is issued with another
12271      PC corresponding to the same file:line, the breakpoint won't
12272      be cleared.  We probably can still clear the breakpoint, but 
12273      since the other PC value is never presented to user, user
12274      can only find it by guessing, and it does not seem important
12275      to support that.  */
12276
12277   /* For each line spec given, delete bps which correspond to it.  Do
12278      it in two passes, solely to preserve the current behavior that
12279      from_tty is forced true if we delete more than one
12280      breakpoint.  */
12281
12282   found = NULL;
12283   make_cleanup (VEC_cleanup (breakpoint_p), &found);
12284   for (i = 0; i < sals.nelts; i++)
12285     {
12286       const char *sal_fullname;
12287
12288       /* If exact pc given, clear bpts at that pc.
12289          If line given (pc == 0), clear all bpts on specified line.
12290          If defaulting, clear all bpts on default line
12291          or at default pc.
12292
12293          defaulting    sal.pc != 0    tests to do
12294
12295          0              1             pc
12296          1              1             pc _and_ line
12297          0              0             line
12298          1              0             <can't happen> */
12299
12300       sal = sals.sals[i];
12301       sal_fullname = (sal.symtab == NULL
12302                       ? NULL : symtab_to_fullname (sal.symtab));
12303
12304       /* Find all matching breakpoints and add them to 'found'.  */
12305       ALL_BREAKPOINTS (b)
12306         {
12307           int match = 0;
12308           /* Are we going to delete b?  */
12309           if (b->type != bp_none && !is_watchpoint (b))
12310             {
12311               struct bp_location *loc = b->loc;
12312               for (; loc; loc = loc->next)
12313                 {
12314                   /* If the user specified file:line, don't allow a PC
12315                      match.  This matches historical gdb behavior.  */
12316                   int pc_match = (!sal.explicit_line
12317                                   && sal.pc
12318                                   && (loc->pspace == sal.pspace)
12319                                   && (loc->address == sal.pc)
12320                                   && (!section_is_overlay (loc->section)
12321                                       || loc->section == sal.section));
12322                   int line_match = 0;
12323
12324                   if ((default_match || sal.explicit_line)
12325                       && loc->symtab != NULL
12326                       && sal_fullname != NULL
12327                       && sal.pspace == loc->pspace
12328                       && loc->line_number == sal.line
12329                       && filename_cmp (symtab_to_fullname (loc->symtab),
12330                                        sal_fullname) == 0)
12331                     line_match = 1;
12332
12333                   if (pc_match || line_match)
12334                     {
12335                       match = 1;
12336                       break;
12337                     }
12338                 }
12339             }
12340
12341           if (match)
12342             VEC_safe_push(breakpoint_p, found, b);
12343         }
12344     }
12345
12346   /* Now go thru the 'found' chain and delete them.  */
12347   if (VEC_empty(breakpoint_p, found))
12348     {
12349       if (arg)
12350         error (_("No breakpoint at %s."), arg);
12351       else
12352         error (_("No breakpoint at this line."));
12353     }
12354
12355   /* Remove duplicates from the vec.  */
12356   qsort (VEC_address (breakpoint_p, found),
12357          VEC_length (breakpoint_p, found),
12358          sizeof (breakpoint_p),
12359          compare_breakpoints);
12360   prev = VEC_index (breakpoint_p, found, 0);
12361   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12362     {
12363       if (b == prev)
12364         {
12365           VEC_ordered_remove (breakpoint_p, found, ix);
12366           --ix;
12367         }
12368     }
12369
12370   if (VEC_length(breakpoint_p, found) > 1)
12371     from_tty = 1;       /* Always report if deleted more than one.  */
12372   if (from_tty)
12373     {
12374       if (VEC_length(breakpoint_p, found) == 1)
12375         printf_unfiltered (_("Deleted breakpoint "));
12376       else
12377         printf_unfiltered (_("Deleted breakpoints "));
12378     }
12379
12380   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12381     {
12382       if (from_tty)
12383         printf_unfiltered ("%d ", b->number);
12384       delete_breakpoint (b);
12385     }
12386   if (from_tty)
12387     putchar_unfiltered ('\n');
12388
12389   do_cleanups (cleanups);
12390 }
12391 \f
12392 /* Delete breakpoint in BS if they are `delete' breakpoints and
12393    all breakpoints that are marked for deletion, whether hit or not.
12394    This is called after any breakpoint is hit, or after errors.  */
12395
12396 void
12397 breakpoint_auto_delete (bpstat bs)
12398 {
12399   struct breakpoint *b, *b_tmp;
12400
12401   for (; bs; bs = bs->next)
12402     if (bs->breakpoint_at
12403         && bs->breakpoint_at->disposition == disp_del
12404         && bs->stop)
12405       delete_breakpoint (bs->breakpoint_at);
12406
12407   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12408   {
12409     if (b->disposition == disp_del_at_next_stop)
12410       delete_breakpoint (b);
12411   }
12412 }
12413
12414 /* A comparison function for bp_location AP and BP being interfaced to
12415    qsort.  Sort elements primarily by their ADDRESS (no matter what
12416    does breakpoint_address_is_meaningful say for its OWNER),
12417    secondarily by ordering first bp_permanent OWNERed elements and
12418    terciarily just ensuring the array is sorted stable way despite
12419    qsort being an unstable algorithm.  */
12420
12421 static int
12422 bp_location_compare (const void *ap, const void *bp)
12423 {
12424   struct bp_location *a = *(void **) ap;
12425   struct bp_location *b = *(void **) bp;
12426   /* A and B come from existing breakpoints having non-NULL OWNER.  */
12427   int a_perm = a->owner->enable_state == bp_permanent;
12428   int b_perm = b->owner->enable_state == bp_permanent;
12429
12430   if (a->address != b->address)
12431     return (a->address > b->address) - (a->address < b->address);
12432
12433   /* Sort locations at the same address by their pspace number, keeping
12434      locations of the same inferior (in a multi-inferior environment)
12435      grouped.  */
12436
12437   if (a->pspace->num != b->pspace->num)
12438     return ((a->pspace->num > b->pspace->num)
12439             - (a->pspace->num < b->pspace->num));
12440
12441   /* Sort permanent breakpoints first.  */
12442   if (a_perm != b_perm)
12443     return (a_perm < b_perm) - (a_perm > b_perm);
12444
12445   /* Make the internal GDB representation stable across GDB runs
12446      where A and B memory inside GDB can differ.  Breakpoint locations of
12447      the same type at the same address can be sorted in arbitrary order.  */
12448
12449   if (a->owner->number != b->owner->number)
12450     return ((a->owner->number > b->owner->number)
12451             - (a->owner->number < b->owner->number));
12452
12453   return (a > b) - (a < b);
12454 }
12455
12456 /* Set bp_location_placed_address_before_address_max and
12457    bp_location_shadow_len_after_address_max according to the current
12458    content of the bp_location array.  */
12459
12460 static void
12461 bp_location_target_extensions_update (void)
12462 {
12463   struct bp_location *bl, **blp_tmp;
12464
12465   bp_location_placed_address_before_address_max = 0;
12466   bp_location_shadow_len_after_address_max = 0;
12467
12468   ALL_BP_LOCATIONS (bl, blp_tmp)
12469     {
12470       CORE_ADDR start, end, addr;
12471
12472       if (!bp_location_has_shadow (bl))
12473         continue;
12474
12475       start = bl->target_info.placed_address;
12476       end = start + bl->target_info.shadow_len;
12477
12478       gdb_assert (bl->address >= start);
12479       addr = bl->address - start;
12480       if (addr > bp_location_placed_address_before_address_max)
12481         bp_location_placed_address_before_address_max = addr;
12482
12483       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12484
12485       gdb_assert (bl->address < end);
12486       addr = end - bl->address;
12487       if (addr > bp_location_shadow_len_after_address_max)
12488         bp_location_shadow_len_after_address_max = addr;
12489     }
12490 }
12491
12492 /* Download tracepoint locations if they haven't been.  */
12493
12494 static void
12495 download_tracepoint_locations (void)
12496 {
12497   struct breakpoint *b;
12498   struct cleanup *old_chain;
12499
12500   if (!target_can_download_tracepoint ())
12501     return;
12502
12503   old_chain = save_current_space_and_thread ();
12504
12505   ALL_TRACEPOINTS (b)
12506     {
12507       struct bp_location *bl;
12508       struct tracepoint *t;
12509       int bp_location_downloaded = 0;
12510
12511       if ((b->type == bp_fast_tracepoint
12512            ? !may_insert_fast_tracepoints
12513            : !may_insert_tracepoints))
12514         continue;
12515
12516       for (bl = b->loc; bl; bl = bl->next)
12517         {
12518           /* In tracepoint, locations are _never_ duplicated, so
12519              should_be_inserted is equivalent to
12520              unduplicated_should_be_inserted.  */
12521           if (!should_be_inserted (bl) || bl->inserted)
12522             continue;
12523
12524           switch_to_program_space_and_thread (bl->pspace);
12525
12526           target_download_tracepoint (bl);
12527
12528           bl->inserted = 1;
12529           bp_location_downloaded = 1;
12530         }
12531       t = (struct tracepoint *) b;
12532       t->number_on_target = b->number;
12533       if (bp_location_downloaded)
12534         observer_notify_breakpoint_modified (b);
12535     }
12536
12537   do_cleanups (old_chain);
12538 }
12539
12540 /* Swap the insertion/duplication state between two locations.  */
12541
12542 static void
12543 swap_insertion (struct bp_location *left, struct bp_location *right)
12544 {
12545   const int left_inserted = left->inserted;
12546   const int left_duplicate = left->duplicate;
12547   const int left_needs_update = left->needs_update;
12548   const struct bp_target_info left_target_info = left->target_info;
12549
12550   /* Locations of tracepoints can never be duplicated.  */
12551   if (is_tracepoint (left->owner))
12552     gdb_assert (!left->duplicate);
12553   if (is_tracepoint (right->owner))
12554     gdb_assert (!right->duplicate);
12555
12556   left->inserted = right->inserted;
12557   left->duplicate = right->duplicate;
12558   left->needs_update = right->needs_update;
12559   left->target_info = right->target_info;
12560   right->inserted = left_inserted;
12561   right->duplicate = left_duplicate;
12562   right->needs_update = left_needs_update;
12563   right->target_info = left_target_info;
12564 }
12565
12566 /* Force the re-insertion of the locations at ADDRESS.  This is called
12567    once a new/deleted/modified duplicate location is found and we are evaluating
12568    conditions on the target's side.  Such conditions need to be updated on
12569    the target.  */
12570
12571 static void
12572 force_breakpoint_reinsertion (struct bp_location *bl)
12573 {
12574   struct bp_location **locp = NULL, **loc2p;
12575   struct bp_location *loc;
12576   CORE_ADDR address = 0;
12577   int pspace_num;
12578
12579   address = bl->address;
12580   pspace_num = bl->pspace->num;
12581
12582   /* This is only meaningful if the target is
12583      evaluating conditions and if the user has
12584      opted for condition evaluation on the target's
12585      side.  */
12586   if (gdb_evaluates_breakpoint_condition_p ()
12587       || !target_supports_evaluation_of_breakpoint_conditions ())
12588     return;
12589
12590   /* Flag all breakpoint locations with this address and
12591      the same program space as the location
12592      as "its condition has changed".  We need to
12593      update the conditions on the target's side.  */
12594   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12595     {
12596       loc = *loc2p;
12597
12598       if (!is_breakpoint (loc->owner)
12599           || pspace_num != loc->pspace->num)
12600         continue;
12601
12602       /* Flag the location appropriately.  We use a different state to
12603          let everyone know that we already updated the set of locations
12604          with addr bl->address and program space bl->pspace.  This is so
12605          we don't have to keep calling these functions just to mark locations
12606          that have already been marked.  */
12607       loc->condition_changed = condition_updated;
12608
12609       /* Free the agent expression bytecode as well.  We will compute
12610          it later on.  */
12611       if (loc->cond_bytecode)
12612         {
12613           free_agent_expr (loc->cond_bytecode);
12614           loc->cond_bytecode = NULL;
12615         }
12616     }
12617 }
12618 /* Called whether new breakpoints are created, or existing breakpoints
12619    deleted, to update the global location list and recompute which
12620    locations are duplicate of which.
12621
12622    The INSERT_MODE flag determines whether locations may not, may, or
12623    shall be inserted now.  See 'enum ugll_insert_mode' for more
12624    info.  */
12625
12626 static void
12627 update_global_location_list (enum ugll_insert_mode insert_mode)
12628 {
12629   struct breakpoint *b;
12630   struct bp_location **locp, *loc;
12631   struct cleanup *cleanups;
12632   /* Last breakpoint location address that was marked for update.  */
12633   CORE_ADDR last_addr = 0;
12634   /* Last breakpoint location program space that was marked for update.  */
12635   int last_pspace_num = -1;
12636
12637   /* Used in the duplicates detection below.  When iterating over all
12638      bp_locations, points to the first bp_location of a given address.
12639      Breakpoints and watchpoints of different types are never
12640      duplicates of each other.  Keep one pointer for each type of
12641      breakpoint/watchpoint, so we only need to loop over all locations
12642      once.  */
12643   struct bp_location *bp_loc_first;  /* breakpoint */
12644   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12645   struct bp_location *awp_loc_first; /* access watchpoint */
12646   struct bp_location *rwp_loc_first; /* read watchpoint */
12647
12648   /* Saved former bp_location array which we compare against the newly
12649      built bp_location from the current state of ALL_BREAKPOINTS.  */
12650   struct bp_location **old_location, **old_locp;
12651   unsigned old_location_count;
12652
12653   old_location = bp_location;
12654   old_location_count = bp_location_count;
12655   bp_location = NULL;
12656   bp_location_count = 0;
12657   cleanups = make_cleanup (xfree, old_location);
12658
12659   ALL_BREAKPOINTS (b)
12660     for (loc = b->loc; loc; loc = loc->next)
12661       bp_location_count++;
12662
12663   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12664   locp = bp_location;
12665   ALL_BREAKPOINTS (b)
12666     for (loc = b->loc; loc; loc = loc->next)
12667       *locp++ = loc;
12668   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12669          bp_location_compare);
12670
12671   bp_location_target_extensions_update ();
12672
12673   /* Identify bp_location instances that are no longer present in the
12674      new list, and therefore should be freed.  Note that it's not
12675      necessary that those locations should be removed from inferior --
12676      if there's another location at the same address (previously
12677      marked as duplicate), we don't need to remove/insert the
12678      location.
12679      
12680      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12681      and former bp_location array state respectively.  */
12682
12683   locp = bp_location;
12684   for (old_locp = old_location; old_locp < old_location + old_location_count;
12685        old_locp++)
12686     {
12687       struct bp_location *old_loc = *old_locp;
12688       struct bp_location **loc2p;
12689
12690       /* Tells if 'old_loc' is found among the new locations.  If
12691          not, we have to free it.  */
12692       int found_object = 0;
12693       /* Tells if the location should remain inserted in the target.  */
12694       int keep_in_target = 0;
12695       int removed = 0;
12696
12697       /* Skip LOCP entries which will definitely never be needed.
12698          Stop either at or being the one matching OLD_LOC.  */
12699       while (locp < bp_location + bp_location_count
12700              && (*locp)->address < old_loc->address)
12701         locp++;
12702
12703       for (loc2p = locp;
12704            (loc2p < bp_location + bp_location_count
12705             && (*loc2p)->address == old_loc->address);
12706            loc2p++)
12707         {
12708           /* Check if this is a new/duplicated location or a duplicated
12709              location that had its condition modified.  If so, we want to send
12710              its condition to the target if evaluation of conditions is taking
12711              place there.  */
12712           if ((*loc2p)->condition_changed == condition_modified
12713               && (last_addr != old_loc->address
12714                   || last_pspace_num != old_loc->pspace->num))
12715             {
12716               force_breakpoint_reinsertion (*loc2p);
12717               last_pspace_num = old_loc->pspace->num;
12718             }
12719
12720           if (*loc2p == old_loc)
12721             found_object = 1;
12722         }
12723
12724       /* We have already handled this address, update it so that we don't
12725          have to go through updates again.  */
12726       last_addr = old_loc->address;
12727
12728       /* Target-side condition evaluation: Handle deleted locations.  */
12729       if (!found_object)
12730         force_breakpoint_reinsertion (old_loc);
12731
12732       /* If this location is no longer present, and inserted, look if
12733          there's maybe a new location at the same address.  If so,
12734          mark that one inserted, and don't remove this one.  This is
12735          needed so that we don't have a time window where a breakpoint
12736          at certain location is not inserted.  */
12737
12738       if (old_loc->inserted)
12739         {
12740           /* If the location is inserted now, we might have to remove
12741              it.  */
12742
12743           if (found_object && should_be_inserted (old_loc))
12744             {
12745               /* The location is still present in the location list,
12746                  and still should be inserted.  Don't do anything.  */
12747               keep_in_target = 1;
12748             }
12749           else
12750             {
12751               /* This location still exists, but it won't be kept in the
12752                  target since it may have been disabled.  We proceed to
12753                  remove its target-side condition.  */
12754
12755               /* The location is either no longer present, or got
12756                  disabled.  See if there's another location at the
12757                  same address, in which case we don't need to remove
12758                  this one from the target.  */
12759
12760               /* OLD_LOC comes from existing struct breakpoint.  */
12761               if (breakpoint_address_is_meaningful (old_loc->owner))
12762                 {
12763                   for (loc2p = locp;
12764                        (loc2p < bp_location + bp_location_count
12765                         && (*loc2p)->address == old_loc->address);
12766                        loc2p++)
12767                     {
12768                       struct bp_location *loc2 = *loc2p;
12769
12770                       if (breakpoint_locations_match (loc2, old_loc))
12771                         {
12772                           /* Read watchpoint locations are switched to
12773                              access watchpoints, if the former are not
12774                              supported, but the latter are.  */
12775                           if (is_hardware_watchpoint (old_loc->owner))
12776                             {
12777                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12778                               loc2->watchpoint_type = old_loc->watchpoint_type;
12779                             }
12780
12781                           /* loc2 is a duplicated location. We need to check
12782                              if it should be inserted in case it will be
12783                              unduplicated.  */
12784                           if (loc2 != old_loc
12785                               && unduplicated_should_be_inserted (loc2))
12786                             {
12787                               swap_insertion (old_loc, loc2);
12788                               keep_in_target = 1;
12789                               break;
12790                             }
12791                         }
12792                     }
12793                 }
12794             }
12795
12796           if (!keep_in_target)
12797             {
12798               if (remove_breakpoint (old_loc, mark_uninserted))
12799                 {
12800                   /* This is just about all we can do.  We could keep
12801                      this location on the global list, and try to
12802                      remove it next time, but there's no particular
12803                      reason why we will succeed next time.
12804                      
12805                      Note that at this point, old_loc->owner is still
12806                      valid, as delete_breakpoint frees the breakpoint
12807                      only after calling us.  */
12808                   printf_filtered (_("warning: Error removing "
12809                                      "breakpoint %d\n"), 
12810                                    old_loc->owner->number);
12811                 }
12812               removed = 1;
12813             }
12814         }
12815
12816       if (!found_object)
12817         {
12818           if (removed && non_stop
12819               && breakpoint_address_is_meaningful (old_loc->owner)
12820               && !is_hardware_watchpoint (old_loc->owner))
12821             {
12822               /* This location was removed from the target.  In
12823                  non-stop mode, a race condition is possible where
12824                  we've removed a breakpoint, but stop events for that
12825                  breakpoint are already queued and will arrive later.
12826                  We apply an heuristic to be able to distinguish such
12827                  SIGTRAPs from other random SIGTRAPs: we keep this
12828                  breakpoint location for a bit, and will retire it
12829                  after we see some number of events.  The theory here
12830                  is that reporting of events should, "on the average",
12831                  be fair, so after a while we'll see events from all
12832                  threads that have anything of interest, and no longer
12833                  need to keep this breakpoint location around.  We
12834                  don't hold locations forever so to reduce chances of
12835                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12836                  SIGTRAP.
12837
12838                  The heuristic failing can be disastrous on
12839                  decr_pc_after_break targets.
12840
12841                  On decr_pc_after_break targets, like e.g., x86-linux,
12842                  if we fail to recognize a late breakpoint SIGTRAP,
12843                  because events_till_retirement has reached 0 too
12844                  soon, we'll fail to do the PC adjustment, and report
12845                  a random SIGTRAP to the user.  When the user resumes
12846                  the inferior, it will most likely immediately crash
12847                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12848                  corrupted, because of being resumed e.g., in the
12849                  middle of a multi-byte instruction, or skipped a
12850                  one-byte instruction.  This was actually seen happen
12851                  on native x86-linux, and should be less rare on
12852                  targets that do not support new thread events, like
12853                  remote, due to the heuristic depending on
12854                  thread_count.
12855
12856                  Mistaking a random SIGTRAP for a breakpoint trap
12857                  causes similar symptoms (PC adjustment applied when
12858                  it shouldn't), but then again, playing with SIGTRAPs
12859                  behind the debugger's back is asking for trouble.
12860
12861                  Since hardware watchpoint traps are always
12862                  distinguishable from other traps, so we don't need to
12863                  apply keep hardware watchpoint moribund locations
12864                  around.  We simply always ignore hardware watchpoint
12865                  traps we can no longer explain.  */
12866
12867               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12868               old_loc->owner = NULL;
12869
12870               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12871             }
12872           else
12873             {
12874               old_loc->owner = NULL;
12875               decref_bp_location (&old_loc);
12876             }
12877         }
12878     }
12879
12880   /* Rescan breakpoints at the same address and section, marking the
12881      first one as "first" and any others as "duplicates".  This is so
12882      that the bpt instruction is only inserted once.  If we have a
12883      permanent breakpoint at the same place as BPT, make that one the
12884      official one, and the rest as duplicates.  Permanent breakpoints
12885      are sorted first for the same address.
12886
12887      Do the same for hardware watchpoints, but also considering the
12888      watchpoint's type (regular/access/read) and length.  */
12889
12890   bp_loc_first = NULL;
12891   wp_loc_first = NULL;
12892   awp_loc_first = NULL;
12893   rwp_loc_first = NULL;
12894   ALL_BP_LOCATIONS (loc, locp)
12895     {
12896       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12897          non-NULL.  */
12898       struct bp_location **loc_first_p;
12899       b = loc->owner;
12900
12901       if (!unduplicated_should_be_inserted (loc)
12902           || !breakpoint_address_is_meaningful (b)
12903           /* Don't detect duplicate for tracepoint locations because they are
12904            never duplicated.  See the comments in field `duplicate' of
12905            `struct bp_location'.  */
12906           || is_tracepoint (b))
12907         {
12908           /* Clear the condition modification flag.  */
12909           loc->condition_changed = condition_unchanged;
12910           continue;
12911         }
12912
12913       /* Permanent breakpoint should always be inserted.  */
12914       if (b->enable_state == bp_permanent && ! loc->inserted)
12915         internal_error (__FILE__, __LINE__,
12916                         _("allegedly permanent breakpoint is not "
12917                         "actually inserted"));
12918
12919       if (b->type == bp_hardware_watchpoint)
12920         loc_first_p = &wp_loc_first;
12921       else if (b->type == bp_read_watchpoint)
12922         loc_first_p = &rwp_loc_first;
12923       else if (b->type == bp_access_watchpoint)
12924         loc_first_p = &awp_loc_first;
12925       else
12926         loc_first_p = &bp_loc_first;
12927
12928       if (*loc_first_p == NULL
12929           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12930           || !breakpoint_locations_match (loc, *loc_first_p))
12931         {
12932           *loc_first_p = loc;
12933           loc->duplicate = 0;
12934
12935           if (is_breakpoint (loc->owner) && loc->condition_changed)
12936             {
12937               loc->needs_update = 1;
12938               /* Clear the condition modification flag.  */
12939               loc->condition_changed = condition_unchanged;
12940             }
12941           continue;
12942         }
12943
12944
12945       /* This and the above ensure the invariant that the first location
12946          is not duplicated, and is the inserted one.
12947          All following are marked as duplicated, and are not inserted.  */
12948       if (loc->inserted)
12949         swap_insertion (loc, *loc_first_p);
12950       loc->duplicate = 1;
12951
12952       /* Clear the condition modification flag.  */
12953       loc->condition_changed = condition_unchanged;
12954
12955       if ((*loc_first_p)->owner->enable_state == bp_permanent && loc->inserted
12956           && b->enable_state != bp_permanent)
12957         internal_error (__FILE__, __LINE__,
12958                         _("another breakpoint was inserted on top of "
12959                         "a permanent breakpoint"));
12960     }
12961
12962   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12963     {
12964       if (insert_mode != UGLL_DONT_INSERT)
12965         insert_breakpoint_locations ();
12966       else
12967         {
12968           /* Even though the caller told us to not insert new
12969              locations, we may still need to update conditions on the
12970              target's side of breakpoints that were already inserted
12971              if the target is evaluating breakpoint conditions.  We
12972              only update conditions for locations that are marked
12973              "needs_update".  */
12974           update_inserted_breakpoint_locations ();
12975         }
12976     }
12977
12978   if (insert_mode != UGLL_DONT_INSERT)
12979     download_tracepoint_locations ();
12980
12981   do_cleanups (cleanups);
12982 }
12983
12984 void
12985 breakpoint_retire_moribund (void)
12986 {
12987   struct bp_location *loc;
12988   int ix;
12989
12990   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12991     if (--(loc->events_till_retirement) == 0)
12992       {
12993         decref_bp_location (&loc);
12994         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12995         --ix;
12996       }
12997 }
12998
12999 static void
13000 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
13001 {
13002   volatile struct gdb_exception e;
13003
13004   TRY_CATCH (e, RETURN_MASK_ERROR)
13005     update_global_location_list (insert_mode);
13006 }
13007
13008 /* Clear BKP from a BPS.  */
13009
13010 static void
13011 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
13012 {
13013   bpstat bs;
13014
13015   for (bs = bps; bs; bs = bs->next)
13016     if (bs->breakpoint_at == bpt)
13017       {
13018         bs->breakpoint_at = NULL;
13019         bs->old_val = NULL;
13020         /* bs->commands will be freed later.  */
13021       }
13022 }
13023
13024 /* Callback for iterate_over_threads.  */
13025 static int
13026 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
13027 {
13028   struct breakpoint *bpt = data;
13029
13030   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
13031   return 0;
13032 }
13033
13034 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
13035    callbacks.  */
13036
13037 static void
13038 say_where (struct breakpoint *b)
13039 {
13040   struct value_print_options opts;
13041
13042   get_user_print_options (&opts);
13043
13044   /* i18n: cagney/2005-02-11: Below needs to be merged into a
13045      single string.  */
13046   if (b->loc == NULL)
13047     {
13048       printf_filtered (_(" (%s) pending."), b->addr_string);
13049     }
13050   else
13051     {
13052       if (opts.addressprint || b->loc->symtab == NULL)
13053         {
13054           printf_filtered (" at ");
13055           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
13056                           gdb_stdout);
13057         }
13058       if (b->loc->symtab != NULL)
13059         {
13060           /* If there is a single location, we can print the location
13061              more nicely.  */
13062           if (b->loc->next == NULL)
13063             printf_filtered (": file %s, line %d.",
13064                              symtab_to_filename_for_display (b->loc->symtab),
13065                              b->loc->line_number);
13066           else
13067             /* This is not ideal, but each location may have a
13068                different file name, and this at least reflects the
13069                real situation somewhat.  */
13070             printf_filtered (": %s.", b->addr_string);
13071         }
13072
13073       if (b->loc->next)
13074         {
13075           struct bp_location *loc = b->loc;
13076           int n = 0;
13077           for (; loc; loc = loc->next)
13078             ++n;
13079           printf_filtered (" (%d locations)", n);
13080         }
13081     }
13082 }
13083
13084 /* Default bp_location_ops methods.  */
13085
13086 static void
13087 bp_location_dtor (struct bp_location *self)
13088 {
13089   xfree (self->cond);
13090   if (self->cond_bytecode)
13091     free_agent_expr (self->cond_bytecode);
13092   xfree (self->function_name);
13093
13094   VEC_free (agent_expr_p, self->target_info.conditions);
13095   VEC_free (agent_expr_p, self->target_info.tcommands);
13096 }
13097
13098 static const struct bp_location_ops bp_location_ops =
13099 {
13100   bp_location_dtor
13101 };
13102
13103 /* Default breakpoint_ops methods all breakpoint_ops ultimately
13104    inherit from.  */
13105
13106 static void
13107 base_breakpoint_dtor (struct breakpoint *self)
13108 {
13109   decref_counted_command_line (&self->commands);
13110   xfree (self->cond_string);
13111   xfree (self->extra_string);
13112   xfree (self->addr_string);
13113   xfree (self->filter);
13114   xfree (self->addr_string_range_end);
13115 }
13116
13117 static struct bp_location *
13118 base_breakpoint_allocate_location (struct breakpoint *self)
13119 {
13120   struct bp_location *loc;
13121
13122   loc = XNEW (struct bp_location);
13123   init_bp_location (loc, &bp_location_ops, self);
13124   return loc;
13125 }
13126
13127 static void
13128 base_breakpoint_re_set (struct breakpoint *b)
13129 {
13130   /* Nothing to re-set. */
13131 }
13132
13133 #define internal_error_pure_virtual_called() \
13134   gdb_assert_not_reached ("pure virtual function called")
13135
13136 static int
13137 base_breakpoint_insert_location (struct bp_location *bl)
13138 {
13139   internal_error_pure_virtual_called ();
13140 }
13141
13142 static int
13143 base_breakpoint_remove_location (struct bp_location *bl)
13144 {
13145   internal_error_pure_virtual_called ();
13146 }
13147
13148 static int
13149 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
13150                                 struct address_space *aspace,
13151                                 CORE_ADDR bp_addr,
13152                                 const struct target_waitstatus *ws)
13153 {
13154   internal_error_pure_virtual_called ();
13155 }
13156
13157 static void
13158 base_breakpoint_check_status (bpstat bs)
13159 {
13160   /* Always stop.   */
13161 }
13162
13163 /* A "works_in_software_mode" breakpoint_ops method that just internal
13164    errors.  */
13165
13166 static int
13167 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
13168 {
13169   internal_error_pure_virtual_called ();
13170 }
13171
13172 /* A "resources_needed" breakpoint_ops method that just internal
13173    errors.  */
13174
13175 static int
13176 base_breakpoint_resources_needed (const struct bp_location *bl)
13177 {
13178   internal_error_pure_virtual_called ();
13179 }
13180
13181 static enum print_stop_action
13182 base_breakpoint_print_it (bpstat bs)
13183 {
13184   internal_error_pure_virtual_called ();
13185 }
13186
13187 static void
13188 base_breakpoint_print_one_detail (const struct breakpoint *self,
13189                                   struct ui_out *uiout)
13190 {
13191   /* nothing */
13192 }
13193
13194 static void
13195 base_breakpoint_print_mention (struct breakpoint *b)
13196 {
13197   internal_error_pure_virtual_called ();
13198 }
13199
13200 static void
13201 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13202 {
13203   internal_error_pure_virtual_called ();
13204 }
13205
13206 static void
13207 base_breakpoint_create_sals_from_address (char **arg,
13208                                           struct linespec_result *canonical,
13209                                           enum bptype type_wanted,
13210                                           char *addr_start,
13211                                           char **copy_arg)
13212 {
13213   internal_error_pure_virtual_called ();
13214 }
13215
13216 static void
13217 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13218                                         struct linespec_result *c,
13219                                         char *cond_string,
13220                                         char *extra_string,
13221                                         enum bptype type_wanted,
13222                                         enum bpdisp disposition,
13223                                         int thread,
13224                                         int task, int ignore_count,
13225                                         const struct breakpoint_ops *o,
13226                                         int from_tty, int enabled,
13227                                         int internal, unsigned flags)
13228 {
13229   internal_error_pure_virtual_called ();
13230 }
13231
13232 static void
13233 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
13234                                  struct symtabs_and_lines *sals)
13235 {
13236   internal_error_pure_virtual_called ();
13237 }
13238
13239 /* The default 'explains_signal' method.  */
13240
13241 static int
13242 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13243 {
13244   return 1;
13245 }
13246
13247 /* The default "after_condition_true" method.  */
13248
13249 static void
13250 base_breakpoint_after_condition_true (struct bpstats *bs)
13251 {
13252   /* Nothing to do.   */
13253 }
13254
13255 struct breakpoint_ops base_breakpoint_ops =
13256 {
13257   base_breakpoint_dtor,
13258   base_breakpoint_allocate_location,
13259   base_breakpoint_re_set,
13260   base_breakpoint_insert_location,
13261   base_breakpoint_remove_location,
13262   base_breakpoint_breakpoint_hit,
13263   base_breakpoint_check_status,
13264   base_breakpoint_resources_needed,
13265   base_breakpoint_works_in_software_mode,
13266   base_breakpoint_print_it,
13267   NULL,
13268   base_breakpoint_print_one_detail,
13269   base_breakpoint_print_mention,
13270   base_breakpoint_print_recreate,
13271   base_breakpoint_create_sals_from_address,
13272   base_breakpoint_create_breakpoints_sal,
13273   base_breakpoint_decode_linespec,
13274   base_breakpoint_explains_signal,
13275   base_breakpoint_after_condition_true,
13276 };
13277
13278 /* Default breakpoint_ops methods.  */
13279
13280 static void
13281 bkpt_re_set (struct breakpoint *b)
13282 {
13283   /* FIXME: is this still reachable?  */
13284   if (b->addr_string == NULL)
13285     {
13286       /* Anything without a string can't be re-set.  */
13287       delete_breakpoint (b);
13288       return;
13289     }
13290
13291   breakpoint_re_set_default (b);
13292 }
13293
13294 /* Copy SRC's shadow buffer and whatever else we'd set if we actually
13295    inserted DEST, so we can remove it later, in case SRC is removed
13296    first.  */
13297
13298 static void
13299 bp_target_info_copy_insertion_state (struct bp_target_info *dest,
13300                                      const struct bp_target_info *src)
13301 {
13302   dest->shadow_len = src->shadow_len;
13303   memcpy (dest->shadow_contents, src->shadow_contents, src->shadow_len);
13304   dest->placed_size = src->placed_size;
13305 }
13306
13307 static int
13308 bkpt_insert_location (struct bp_location *bl)
13309 {
13310   if (bl->loc_type == bp_loc_hardware_breakpoint)
13311     return target_insert_hw_breakpoint (bl->gdbarch,
13312                                         &bl->target_info);
13313   else
13314     {
13315       struct bp_target_info *bp_tgt = &bl->target_info;
13316       int ret;
13317       int sss_slot;
13318
13319       /* There is no need to insert a breakpoint if an unconditional
13320          raw/sss breakpoint is already inserted at that location.  */
13321       sss_slot = find_single_step_breakpoint (bp_tgt->placed_address_space,
13322                                               bp_tgt->placed_address);
13323       if (sss_slot >= 0)
13324         {
13325           struct bp_target_info *sss_bp_tgt = single_step_breakpoints[sss_slot];
13326
13327           bp_target_info_copy_insertion_state (bp_tgt, sss_bp_tgt);
13328           return 0;
13329         }
13330
13331       return target_insert_breakpoint (bl->gdbarch, bp_tgt);
13332     }
13333 }
13334
13335 static int
13336 bkpt_remove_location (struct bp_location *bl)
13337 {
13338   if (bl->loc_type == bp_loc_hardware_breakpoint)
13339     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13340   else
13341     {
13342       struct bp_target_info *bp_tgt = &bl->target_info;
13343       struct address_space *aspace = bp_tgt->placed_address_space;
13344       CORE_ADDR address = bp_tgt->placed_address;
13345
13346       /* Only remove the breakpoint if there is no raw/sss breakpoint
13347          still inserted at this location.  Otherwise, we would be
13348          effectively disabling the raw/sss breakpoint.  */
13349       if (single_step_breakpoint_inserted_here_p (aspace, address))
13350         return 0;
13351
13352       return target_remove_breakpoint (bl->gdbarch, bp_tgt);
13353     }
13354 }
13355
13356 static int
13357 bkpt_breakpoint_hit (const struct bp_location *bl,
13358                      struct address_space *aspace, CORE_ADDR bp_addr,
13359                      const struct target_waitstatus *ws)
13360 {
13361   if (ws->kind != TARGET_WAITKIND_STOPPED
13362       || ws->value.sig != GDB_SIGNAL_TRAP)
13363     return 0;
13364
13365   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13366                                  aspace, bp_addr))
13367     return 0;
13368
13369   if (overlay_debugging         /* unmapped overlay section */
13370       && section_is_overlay (bl->section)
13371       && !section_is_mapped (bl->section))
13372     return 0;
13373
13374   return 1;
13375 }
13376
13377 static int
13378 dprintf_breakpoint_hit (const struct bp_location *bl,
13379                         struct address_space *aspace, CORE_ADDR bp_addr,
13380                         const struct target_waitstatus *ws)
13381 {
13382   if (dprintf_style == dprintf_style_agent
13383       && target_can_run_breakpoint_commands ())
13384     {
13385       /* An agent-style dprintf never causes a stop.  If we see a trap
13386          for this address it must be for a breakpoint that happens to
13387          be set at the same address.  */
13388       return 0;
13389     }
13390
13391   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13392 }
13393
13394 static int
13395 bkpt_resources_needed (const struct bp_location *bl)
13396 {
13397   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13398
13399   return 1;
13400 }
13401
13402 static enum print_stop_action
13403 bkpt_print_it (bpstat bs)
13404 {
13405   struct breakpoint *b;
13406   const struct bp_location *bl;
13407   int bp_temp;
13408   struct ui_out *uiout = current_uiout;
13409
13410   gdb_assert (bs->bp_location_at != NULL);
13411
13412   bl = bs->bp_location_at;
13413   b = bs->breakpoint_at;
13414
13415   bp_temp = b->disposition == disp_del;
13416   if (bl->address != bl->requested_address)
13417     breakpoint_adjustment_warning (bl->requested_address,
13418                                    bl->address,
13419                                    b->number, 1);
13420   annotate_breakpoint (b->number);
13421   if (bp_temp)
13422     ui_out_text (uiout, "\nTemporary breakpoint ");
13423   else
13424     ui_out_text (uiout, "\nBreakpoint ");
13425   if (ui_out_is_mi_like_p (uiout))
13426     {
13427       ui_out_field_string (uiout, "reason",
13428                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13429       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13430     }
13431   ui_out_field_int (uiout, "bkptno", b->number);
13432   ui_out_text (uiout, ", ");
13433
13434   return PRINT_SRC_AND_LOC;
13435 }
13436
13437 static void
13438 bkpt_print_mention (struct breakpoint *b)
13439 {
13440   if (ui_out_is_mi_like_p (current_uiout))
13441     return;
13442
13443   switch (b->type)
13444     {
13445     case bp_breakpoint:
13446     case bp_gnu_ifunc_resolver:
13447       if (b->disposition == disp_del)
13448         printf_filtered (_("Temporary breakpoint"));
13449       else
13450         printf_filtered (_("Breakpoint"));
13451       printf_filtered (_(" %d"), b->number);
13452       if (b->type == bp_gnu_ifunc_resolver)
13453         printf_filtered (_(" at gnu-indirect-function resolver"));
13454       break;
13455     case bp_hardware_breakpoint:
13456       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13457       break;
13458     case bp_dprintf:
13459       printf_filtered (_("Dprintf %d"), b->number);
13460       break;
13461     }
13462
13463   say_where (b);
13464 }
13465
13466 static void
13467 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13468 {
13469   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13470     fprintf_unfiltered (fp, "tbreak");
13471   else if (tp->type == bp_breakpoint)
13472     fprintf_unfiltered (fp, "break");
13473   else if (tp->type == bp_hardware_breakpoint
13474            && tp->disposition == disp_del)
13475     fprintf_unfiltered (fp, "thbreak");
13476   else if (tp->type == bp_hardware_breakpoint)
13477     fprintf_unfiltered (fp, "hbreak");
13478   else
13479     internal_error (__FILE__, __LINE__,
13480                     _("unhandled breakpoint type %d"), (int) tp->type);
13481
13482   fprintf_unfiltered (fp, " %s", tp->addr_string);
13483   print_recreate_thread (tp, fp);
13484 }
13485
13486 static void
13487 bkpt_create_sals_from_address (char **arg,
13488                                struct linespec_result *canonical,
13489                                enum bptype type_wanted,
13490                                char *addr_start, char **copy_arg)
13491 {
13492   create_sals_from_address_default (arg, canonical, type_wanted,
13493                                     addr_start, copy_arg);
13494 }
13495
13496 static void
13497 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13498                              struct linespec_result *canonical,
13499                              char *cond_string,
13500                              char *extra_string,
13501                              enum bptype type_wanted,
13502                              enum bpdisp disposition,
13503                              int thread,
13504                              int task, int ignore_count,
13505                              const struct breakpoint_ops *ops,
13506                              int from_tty, int enabled,
13507                              int internal, unsigned flags)
13508 {
13509   create_breakpoints_sal_default (gdbarch, canonical,
13510                                   cond_string, extra_string,
13511                                   type_wanted,
13512                                   disposition, thread, task,
13513                                   ignore_count, ops, from_tty,
13514                                   enabled, internal, flags);
13515 }
13516
13517 static void
13518 bkpt_decode_linespec (struct breakpoint *b, char **s,
13519                       struct symtabs_and_lines *sals)
13520 {
13521   decode_linespec_default (b, s, sals);
13522 }
13523
13524 /* Virtual table for internal breakpoints.  */
13525
13526 static void
13527 internal_bkpt_re_set (struct breakpoint *b)
13528 {
13529   switch (b->type)
13530     {
13531       /* Delete overlay event and longjmp master breakpoints; they
13532          will be reset later by breakpoint_re_set.  */
13533     case bp_overlay_event:
13534     case bp_longjmp_master:
13535     case bp_std_terminate_master:
13536     case bp_exception_master:
13537       delete_breakpoint (b);
13538       break;
13539
13540       /* This breakpoint is special, it's set up when the inferior
13541          starts and we really don't want to touch it.  */
13542     case bp_shlib_event:
13543
13544       /* Like bp_shlib_event, this breakpoint type is special.  Once
13545          it is set up, we do not want to touch it.  */
13546     case bp_thread_event:
13547       break;
13548     }
13549 }
13550
13551 static void
13552 internal_bkpt_check_status (bpstat bs)
13553 {
13554   if (bs->breakpoint_at->type == bp_shlib_event)
13555     {
13556       /* If requested, stop when the dynamic linker notifies GDB of
13557          events.  This allows the user to get control and place
13558          breakpoints in initializer routines for dynamically loaded
13559          objects (among other things).  */
13560       bs->stop = stop_on_solib_events;
13561       bs->print = stop_on_solib_events;
13562     }
13563   else
13564     bs->stop = 0;
13565 }
13566
13567 static enum print_stop_action
13568 internal_bkpt_print_it (bpstat bs)
13569 {
13570   struct breakpoint *b;
13571
13572   b = bs->breakpoint_at;
13573
13574   switch (b->type)
13575     {
13576     case bp_shlib_event:
13577       /* Did we stop because the user set the stop_on_solib_events
13578          variable?  (If so, we report this as a generic, "Stopped due
13579          to shlib event" message.) */
13580       print_solib_event (0);
13581       break;
13582
13583     case bp_thread_event:
13584       /* Not sure how we will get here.
13585          GDB should not stop for these breakpoints.  */
13586       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13587       break;
13588
13589     case bp_overlay_event:
13590       /* By analogy with the thread event, GDB should not stop for these.  */
13591       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13592       break;
13593
13594     case bp_longjmp_master:
13595       /* These should never be enabled.  */
13596       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13597       break;
13598
13599     case bp_std_terminate_master:
13600       /* These should never be enabled.  */
13601       printf_filtered (_("std::terminate Master Breakpoint: "
13602                          "gdb should not stop!\n"));
13603       break;
13604
13605     case bp_exception_master:
13606       /* These should never be enabled.  */
13607       printf_filtered (_("Exception Master Breakpoint: "
13608                          "gdb should not stop!\n"));
13609       break;
13610     }
13611
13612   return PRINT_NOTHING;
13613 }
13614
13615 static void
13616 internal_bkpt_print_mention (struct breakpoint *b)
13617 {
13618   /* Nothing to mention.  These breakpoints are internal.  */
13619 }
13620
13621 /* Virtual table for momentary breakpoints  */
13622
13623 static void
13624 momentary_bkpt_re_set (struct breakpoint *b)
13625 {
13626   /* Keep temporary breakpoints, which can be encountered when we step
13627      over a dlopen call and solib_add is resetting the breakpoints.
13628      Otherwise these should have been blown away via the cleanup chain
13629      or by breakpoint_init_inferior when we rerun the executable.  */
13630 }
13631
13632 static void
13633 momentary_bkpt_check_status (bpstat bs)
13634 {
13635   /* Nothing.  The point of these breakpoints is causing a stop.  */
13636 }
13637
13638 static enum print_stop_action
13639 momentary_bkpt_print_it (bpstat bs)
13640 {
13641   struct ui_out *uiout = current_uiout;
13642
13643   if (ui_out_is_mi_like_p (uiout))
13644     {
13645       struct breakpoint *b = bs->breakpoint_at;
13646
13647       switch (b->type)
13648         {
13649         case bp_finish:
13650           ui_out_field_string
13651             (uiout, "reason",
13652              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13653           break;
13654
13655         case bp_until:
13656           ui_out_field_string
13657             (uiout, "reason",
13658              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13659           break;
13660         }
13661     }
13662
13663   return PRINT_UNKNOWN;
13664 }
13665
13666 static void
13667 momentary_bkpt_print_mention (struct breakpoint *b)
13668 {
13669   /* Nothing to mention.  These breakpoints are internal.  */
13670 }
13671
13672 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13673
13674    It gets cleared already on the removal of the first one of such placed
13675    breakpoints.  This is OK as they get all removed altogether.  */
13676
13677 static void
13678 longjmp_bkpt_dtor (struct breakpoint *self)
13679 {
13680   struct thread_info *tp = find_thread_id (self->thread);
13681
13682   if (tp)
13683     tp->initiating_frame = null_frame_id;
13684
13685   momentary_breakpoint_ops.dtor (self);
13686 }
13687
13688 /* Specific methods for probe breakpoints.  */
13689
13690 static int
13691 bkpt_probe_insert_location (struct bp_location *bl)
13692 {
13693   int v = bkpt_insert_location (bl);
13694
13695   if (v == 0)
13696     {
13697       /* The insertion was successful, now let's set the probe's semaphore
13698          if needed.  */
13699       bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13700                                             bl->probe.objfile,
13701                                             bl->gdbarch);
13702     }
13703
13704   return v;
13705 }
13706
13707 static int
13708 bkpt_probe_remove_location (struct bp_location *bl)
13709 {
13710   /* Let's clear the semaphore before removing the location.  */
13711   bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13712                                           bl->probe.objfile,
13713                                           bl->gdbarch);
13714
13715   return bkpt_remove_location (bl);
13716 }
13717
13718 static void
13719 bkpt_probe_create_sals_from_address (char **arg,
13720                                      struct linespec_result *canonical,
13721                                      enum bptype type_wanted,
13722                                      char *addr_start, char **copy_arg)
13723 {
13724   struct linespec_sals lsal;
13725
13726   lsal.sals = parse_probes (arg, canonical);
13727
13728   *copy_arg = xstrdup (canonical->addr_string);
13729   lsal.canonical = xstrdup (*copy_arg);
13730
13731   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13732 }
13733
13734 static void
13735 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13736                             struct symtabs_and_lines *sals)
13737 {
13738   *sals = parse_probes (s, NULL);
13739   if (!sals->sals)
13740     error (_("probe not found"));
13741 }
13742
13743 /* The breakpoint_ops structure to be used in tracepoints.  */
13744
13745 static void
13746 tracepoint_re_set (struct breakpoint *b)
13747 {
13748   breakpoint_re_set_default (b);
13749 }
13750
13751 static int
13752 tracepoint_breakpoint_hit (const struct bp_location *bl,
13753                            struct address_space *aspace, CORE_ADDR bp_addr,
13754                            const struct target_waitstatus *ws)
13755 {
13756   /* By definition, the inferior does not report stops at
13757      tracepoints.  */
13758   return 0;
13759 }
13760
13761 static void
13762 tracepoint_print_one_detail (const struct breakpoint *self,
13763                              struct ui_out *uiout)
13764 {
13765   struct tracepoint *tp = (struct tracepoint *) self;
13766   if (tp->static_trace_marker_id)
13767     {
13768       gdb_assert (self->type == bp_static_tracepoint);
13769
13770       ui_out_text (uiout, "\tmarker id is ");
13771       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13772                            tp->static_trace_marker_id);
13773       ui_out_text (uiout, "\n");
13774     }
13775 }
13776
13777 static void
13778 tracepoint_print_mention (struct breakpoint *b)
13779 {
13780   if (ui_out_is_mi_like_p (current_uiout))
13781     return;
13782
13783   switch (b->type)
13784     {
13785     case bp_tracepoint:
13786       printf_filtered (_("Tracepoint"));
13787       printf_filtered (_(" %d"), b->number);
13788       break;
13789     case bp_fast_tracepoint:
13790       printf_filtered (_("Fast tracepoint"));
13791       printf_filtered (_(" %d"), b->number);
13792       break;
13793     case bp_static_tracepoint:
13794       printf_filtered (_("Static tracepoint"));
13795       printf_filtered (_(" %d"), b->number);
13796       break;
13797     default:
13798       internal_error (__FILE__, __LINE__,
13799                       _("unhandled tracepoint type %d"), (int) b->type);
13800     }
13801
13802   say_where (b);
13803 }
13804
13805 static void
13806 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13807 {
13808   struct tracepoint *tp = (struct tracepoint *) self;
13809
13810   if (self->type == bp_fast_tracepoint)
13811     fprintf_unfiltered (fp, "ftrace");
13812   if (self->type == bp_static_tracepoint)
13813     fprintf_unfiltered (fp, "strace");
13814   else if (self->type == bp_tracepoint)
13815     fprintf_unfiltered (fp, "trace");
13816   else
13817     internal_error (__FILE__, __LINE__,
13818                     _("unhandled tracepoint type %d"), (int) self->type);
13819
13820   fprintf_unfiltered (fp, " %s", self->addr_string);
13821   print_recreate_thread (self, fp);
13822
13823   if (tp->pass_count)
13824     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13825 }
13826
13827 static void
13828 tracepoint_create_sals_from_address (char **arg,
13829                                      struct linespec_result *canonical,
13830                                      enum bptype type_wanted,
13831                                      char *addr_start, char **copy_arg)
13832 {
13833   create_sals_from_address_default (arg, canonical, type_wanted,
13834                                     addr_start, copy_arg);
13835 }
13836
13837 static void
13838 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13839                                    struct linespec_result *canonical,
13840                                    char *cond_string,
13841                                    char *extra_string,
13842                                    enum bptype type_wanted,
13843                                    enum bpdisp disposition,
13844                                    int thread,
13845                                    int task, int ignore_count,
13846                                    const struct breakpoint_ops *ops,
13847                                    int from_tty, int enabled,
13848                                    int internal, unsigned flags)
13849 {
13850   create_breakpoints_sal_default (gdbarch, canonical,
13851                                   cond_string, extra_string,
13852                                   type_wanted,
13853                                   disposition, thread, task,
13854                                   ignore_count, ops, from_tty,
13855                                   enabled, internal, flags);
13856 }
13857
13858 static void
13859 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13860                             struct symtabs_and_lines *sals)
13861 {
13862   decode_linespec_default (b, s, sals);
13863 }
13864
13865 struct breakpoint_ops tracepoint_breakpoint_ops;
13866
13867 /* The breakpoint_ops structure to be use on tracepoints placed in a
13868    static probe.  */
13869
13870 static void
13871 tracepoint_probe_create_sals_from_address (char **arg,
13872                                            struct linespec_result *canonical,
13873                                            enum bptype type_wanted,
13874                                            char *addr_start, char **copy_arg)
13875 {
13876   /* We use the same method for breakpoint on probes.  */
13877   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13878                                        addr_start, copy_arg);
13879 }
13880
13881 static void
13882 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13883                                   struct symtabs_and_lines *sals)
13884 {
13885   /* We use the same method for breakpoint on probes.  */
13886   bkpt_probe_decode_linespec (b, s, sals);
13887 }
13888
13889 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13890
13891 /* Dprintf breakpoint_ops methods.  */
13892
13893 static void
13894 dprintf_re_set (struct breakpoint *b)
13895 {
13896   breakpoint_re_set_default (b);
13897
13898   /* This breakpoint could have been pending, and be resolved now, and
13899      if so, we should now have the extra string.  If we don't, the
13900      dprintf was malformed when created, but we couldn't tell because
13901      we can't extract the extra string until the location is
13902      resolved.  */
13903   if (b->loc != NULL && b->extra_string == NULL)
13904     error (_("Format string required"));
13905
13906   /* 1 - connect to target 1, that can run breakpoint commands.
13907      2 - create a dprintf, which resolves fine.
13908      3 - disconnect from target 1
13909      4 - connect to target 2, that can NOT run breakpoint commands.
13910
13911      After steps #3/#4, you'll want the dprintf command list to
13912      be updated, because target 1 and 2 may well return different
13913      answers for target_can_run_breakpoint_commands().
13914      Given absence of finer grained resetting, we get to do
13915      it all the time.  */
13916   if (b->extra_string != NULL)
13917     update_dprintf_command_list (b);
13918 }
13919
13920 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13921
13922 static void
13923 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13924 {
13925   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13926                       tp->extra_string);
13927   print_recreate_thread (tp, fp);
13928 }
13929
13930 /* Implement the "after_condition_true" breakpoint_ops method for
13931    dprintf.
13932
13933    dprintf's are implemented with regular commands in their command
13934    list, but we run the commands here instead of before presenting the
13935    stop to the user, as dprintf's don't actually cause a stop.  This
13936    also makes it so that the commands of multiple dprintfs at the same
13937    address are all handled.  */
13938
13939 static void
13940 dprintf_after_condition_true (struct bpstats *bs)
13941 {
13942   struct cleanup *old_chain;
13943   struct bpstats tmp_bs = { NULL };
13944   struct bpstats *tmp_bs_p = &tmp_bs;
13945
13946   /* dprintf's never cause a stop.  This wasn't set in the
13947      check_status hook instead because that would make the dprintf's
13948      condition not be evaluated.  */
13949   bs->stop = 0;
13950
13951   /* Run the command list here.  Take ownership of it instead of
13952      copying.  We never want these commands to run later in
13953      bpstat_do_actions, if a breakpoint that causes a stop happens to
13954      be set at same address as this dprintf, or even if running the
13955      commands here throws.  */
13956   tmp_bs.commands = bs->commands;
13957   bs->commands = NULL;
13958   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13959
13960   bpstat_do_actions_1 (&tmp_bs_p);
13961
13962   /* 'tmp_bs.commands' will usually be NULL by now, but
13963      bpstat_do_actions_1 may return early without processing the whole
13964      list.  */
13965   do_cleanups (old_chain);
13966 }
13967
13968 /* The breakpoint_ops structure to be used on static tracepoints with
13969    markers (`-m').  */
13970
13971 static void
13972 strace_marker_create_sals_from_address (char **arg,
13973                                         struct linespec_result *canonical,
13974                                         enum bptype type_wanted,
13975                                         char *addr_start, char **copy_arg)
13976 {
13977   struct linespec_sals lsal;
13978
13979   lsal.sals = decode_static_tracepoint_spec (arg);
13980
13981   *copy_arg = savestring (addr_start, *arg - addr_start);
13982
13983   canonical->addr_string = xstrdup (*copy_arg);
13984   lsal.canonical = xstrdup (*copy_arg);
13985   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13986 }
13987
13988 static void
13989 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13990                                       struct linespec_result *canonical,
13991                                       char *cond_string,
13992                                       char *extra_string,
13993                                       enum bptype type_wanted,
13994                                       enum bpdisp disposition,
13995                                       int thread,
13996                                       int task, int ignore_count,
13997                                       const struct breakpoint_ops *ops,
13998                                       int from_tty, int enabled,
13999                                       int internal, unsigned flags)
14000 {
14001   int i;
14002   struct linespec_sals *lsal = VEC_index (linespec_sals,
14003                                           canonical->sals, 0);
14004
14005   /* If the user is creating a static tracepoint by marker id
14006      (strace -m MARKER_ID), then store the sals index, so that
14007      breakpoint_re_set can try to match up which of the newly
14008      found markers corresponds to this one, and, don't try to
14009      expand multiple locations for each sal, given than SALS
14010      already should contain all sals for MARKER_ID.  */
14011
14012   for (i = 0; i < lsal->sals.nelts; ++i)
14013     {
14014       struct symtabs_and_lines expanded;
14015       struct tracepoint *tp;
14016       struct cleanup *old_chain;
14017       char *addr_string;
14018
14019       expanded.nelts = 1;
14020       expanded.sals = &lsal->sals.sals[i];
14021
14022       addr_string = xstrdup (canonical->addr_string);
14023       old_chain = make_cleanup (xfree, addr_string);
14024
14025       tp = XCNEW (struct tracepoint);
14026       init_breakpoint_sal (&tp->base, gdbarch, expanded,
14027                            addr_string, NULL,
14028                            cond_string, extra_string,
14029                            type_wanted, disposition,
14030                            thread, task, ignore_count, ops,
14031                            from_tty, enabled, internal, flags,
14032                            canonical->special_display);
14033       /* Given that its possible to have multiple markers with
14034          the same string id, if the user is creating a static
14035          tracepoint by marker id ("strace -m MARKER_ID"), then
14036          store the sals index, so that breakpoint_re_set can
14037          try to match up which of the newly found markers
14038          corresponds to this one  */
14039       tp->static_trace_marker_id_idx = i;
14040
14041       install_breakpoint (internal, &tp->base, 0);
14042
14043       discard_cleanups (old_chain);
14044     }
14045 }
14046
14047 static void
14048 strace_marker_decode_linespec (struct breakpoint *b, char **s,
14049                                struct symtabs_and_lines *sals)
14050 {
14051   struct tracepoint *tp = (struct tracepoint *) b;
14052
14053   *sals = decode_static_tracepoint_spec (s);
14054   if (sals->nelts > tp->static_trace_marker_id_idx)
14055     {
14056       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
14057       sals->nelts = 1;
14058     }
14059   else
14060     error (_("marker %s not found"), tp->static_trace_marker_id);
14061 }
14062
14063 static struct breakpoint_ops strace_marker_breakpoint_ops;
14064
14065 static int
14066 strace_marker_p (struct breakpoint *b)
14067 {
14068   return b->ops == &strace_marker_breakpoint_ops;
14069 }
14070
14071 /* Delete a breakpoint and clean up all traces of it in the data
14072    structures.  */
14073
14074 void
14075 delete_breakpoint (struct breakpoint *bpt)
14076 {
14077   struct breakpoint *b;
14078
14079   gdb_assert (bpt != NULL);
14080
14081   /* Has this bp already been deleted?  This can happen because
14082      multiple lists can hold pointers to bp's.  bpstat lists are
14083      especial culprits.
14084
14085      One example of this happening is a watchpoint's scope bp.  When
14086      the scope bp triggers, we notice that the watchpoint is out of
14087      scope, and delete it.  We also delete its scope bp.  But the
14088      scope bp is marked "auto-deleting", and is already on a bpstat.
14089      That bpstat is then checked for auto-deleting bp's, which are
14090      deleted.
14091
14092      A real solution to this problem might involve reference counts in
14093      bp's, and/or giving them pointers back to their referencing
14094      bpstat's, and teaching delete_breakpoint to only free a bp's
14095      storage when no more references were extent.  A cheaper bandaid
14096      was chosen.  */
14097   if (bpt->type == bp_none)
14098     return;
14099
14100   /* At least avoid this stale reference until the reference counting
14101      of breakpoints gets resolved.  */
14102   if (bpt->related_breakpoint != bpt)
14103     {
14104       struct breakpoint *related;
14105       struct watchpoint *w;
14106
14107       if (bpt->type == bp_watchpoint_scope)
14108         w = (struct watchpoint *) bpt->related_breakpoint;
14109       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
14110         w = (struct watchpoint *) bpt;
14111       else
14112         w = NULL;
14113       if (w != NULL)
14114         watchpoint_del_at_next_stop (w);
14115
14116       /* Unlink bpt from the bpt->related_breakpoint ring.  */
14117       for (related = bpt; related->related_breakpoint != bpt;
14118            related = related->related_breakpoint);
14119       related->related_breakpoint = bpt->related_breakpoint;
14120       bpt->related_breakpoint = bpt;
14121     }
14122
14123   /* watch_command_1 creates a watchpoint but only sets its number if
14124      update_watchpoint succeeds in creating its bp_locations.  If there's
14125      a problem in that process, we'll be asked to delete the half-created
14126      watchpoint.  In that case, don't announce the deletion.  */
14127   if (bpt->number)
14128     observer_notify_breakpoint_deleted (bpt);
14129
14130   if (breakpoint_chain == bpt)
14131     breakpoint_chain = bpt->next;
14132
14133   ALL_BREAKPOINTS (b)
14134     if (b->next == bpt)
14135     {
14136       b->next = bpt->next;
14137       break;
14138     }
14139
14140   /* Be sure no bpstat's are pointing at the breakpoint after it's
14141      been freed.  */
14142   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
14143      in all threads for now.  Note that we cannot just remove bpstats
14144      pointing at bpt from the stop_bpstat list entirely, as breakpoint
14145      commands are associated with the bpstat; if we remove it here,
14146      then the later call to bpstat_do_actions (&stop_bpstat); in
14147      event-top.c won't do anything, and temporary breakpoints with
14148      commands won't work.  */
14149
14150   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
14151
14152   /* Now that breakpoint is removed from breakpoint list, update the
14153      global location list.  This will remove locations that used to
14154      belong to this breakpoint.  Do this before freeing the breakpoint
14155      itself, since remove_breakpoint looks at location's owner.  It
14156      might be better design to have location completely
14157      self-contained, but it's not the case now.  */
14158   update_global_location_list (UGLL_DONT_INSERT);
14159
14160   bpt->ops->dtor (bpt);
14161   /* On the chance that someone will soon try again to delete this
14162      same bp, we mark it as deleted before freeing its storage.  */
14163   bpt->type = bp_none;
14164   xfree (bpt);
14165 }
14166
14167 static void
14168 do_delete_breakpoint_cleanup (void *b)
14169 {
14170   delete_breakpoint (b);
14171 }
14172
14173 struct cleanup *
14174 make_cleanup_delete_breakpoint (struct breakpoint *b)
14175 {
14176   return make_cleanup (do_delete_breakpoint_cleanup, b);
14177 }
14178
14179 /* Iterator function to call a user-provided callback function once
14180    for each of B and its related breakpoints.  */
14181
14182 static void
14183 iterate_over_related_breakpoints (struct breakpoint *b,
14184                                   void (*function) (struct breakpoint *,
14185                                                     void *),
14186                                   void *data)
14187 {
14188   struct breakpoint *related;
14189
14190   related = b;
14191   do
14192     {
14193       struct breakpoint *next;
14194
14195       /* FUNCTION may delete RELATED.  */
14196       next = related->related_breakpoint;
14197
14198       if (next == related)
14199         {
14200           /* RELATED is the last ring entry.  */
14201           function (related, data);
14202
14203           /* FUNCTION may have deleted it, so we'd never reach back to
14204              B.  There's nothing left to do anyway, so just break
14205              out.  */
14206           break;
14207         }
14208       else
14209         function (related, data);
14210
14211       related = next;
14212     }
14213   while (related != b);
14214 }
14215
14216 static void
14217 do_delete_breakpoint (struct breakpoint *b, void *ignore)
14218 {
14219   delete_breakpoint (b);
14220 }
14221
14222 /* A callback for map_breakpoint_numbers that calls
14223    delete_breakpoint.  */
14224
14225 static void
14226 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
14227 {
14228   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14229 }
14230
14231 void
14232 delete_command (char *arg, int from_tty)
14233 {
14234   struct breakpoint *b, *b_tmp;
14235
14236   dont_repeat ();
14237
14238   if (arg == 0)
14239     {
14240       int breaks_to_delete = 0;
14241
14242       /* Delete all breakpoints if no argument.  Do not delete
14243          internal breakpoints, these have to be deleted with an
14244          explicit breakpoint number argument.  */
14245       ALL_BREAKPOINTS (b)
14246         if (user_breakpoint_p (b))
14247           {
14248             breaks_to_delete = 1;
14249             break;
14250           }
14251
14252       /* Ask user only if there are some breakpoints to delete.  */
14253       if (!from_tty
14254           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14255         {
14256           ALL_BREAKPOINTS_SAFE (b, b_tmp)
14257             if (user_breakpoint_p (b))
14258               delete_breakpoint (b);
14259         }
14260     }
14261   else
14262     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14263 }
14264
14265 static int
14266 all_locations_are_pending (struct bp_location *loc)
14267 {
14268   for (; loc; loc = loc->next)
14269     if (!loc->shlib_disabled
14270         && !loc->pspace->executing_startup)
14271       return 0;
14272   return 1;
14273 }
14274
14275 /* Subroutine of update_breakpoint_locations to simplify it.
14276    Return non-zero if multiple fns in list LOC have the same name.
14277    Null names are ignored.  */
14278
14279 static int
14280 ambiguous_names_p (struct bp_location *loc)
14281 {
14282   struct bp_location *l;
14283   htab_t htab = htab_create_alloc (13, htab_hash_string,
14284                                    (int (*) (const void *, 
14285                                              const void *)) streq,
14286                                    NULL, xcalloc, xfree);
14287
14288   for (l = loc; l != NULL; l = l->next)
14289     {
14290       const char **slot;
14291       const char *name = l->function_name;
14292
14293       /* Allow for some names to be NULL, ignore them.  */
14294       if (name == NULL)
14295         continue;
14296
14297       slot = (const char **) htab_find_slot (htab, (const void *) name,
14298                                              INSERT);
14299       /* NOTE: We can assume slot != NULL here because xcalloc never
14300          returns NULL.  */
14301       if (*slot != NULL)
14302         {
14303           htab_delete (htab);
14304           return 1;
14305         }
14306       *slot = name;
14307     }
14308
14309   htab_delete (htab);
14310   return 0;
14311 }
14312
14313 /* When symbols change, it probably means the sources changed as well,
14314    and it might mean the static tracepoint markers are no longer at
14315    the same address or line numbers they used to be at last we
14316    checked.  Losing your static tracepoints whenever you rebuild is
14317    undesirable.  This function tries to resync/rematch gdb static
14318    tracepoints with the markers on the target, for static tracepoints
14319    that have not been set by marker id.  Static tracepoint that have
14320    been set by marker id are reset by marker id in breakpoint_re_set.
14321    The heuristic is:
14322
14323    1) For a tracepoint set at a specific address, look for a marker at
14324    the old PC.  If one is found there, assume to be the same marker.
14325    If the name / string id of the marker found is different from the
14326    previous known name, assume that means the user renamed the marker
14327    in the sources, and output a warning.
14328
14329    2) For a tracepoint set at a given line number, look for a marker
14330    at the new address of the old line number.  If one is found there,
14331    assume to be the same marker.  If the name / string id of the
14332    marker found is different from the previous known name, assume that
14333    means the user renamed the marker in the sources, and output a
14334    warning.
14335
14336    3) If a marker is no longer found at the same address or line, it
14337    may mean the marker no longer exists.  But it may also just mean
14338    the code changed a bit.  Maybe the user added a few lines of code
14339    that made the marker move up or down (in line number terms).  Ask
14340    the target for info about the marker with the string id as we knew
14341    it.  If found, update line number and address in the matching
14342    static tracepoint.  This will get confused if there's more than one
14343    marker with the same ID (possible in UST, although unadvised
14344    precisely because it confuses tools).  */
14345
14346 static struct symtab_and_line
14347 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14348 {
14349   struct tracepoint *tp = (struct tracepoint *) b;
14350   struct static_tracepoint_marker marker;
14351   CORE_ADDR pc;
14352
14353   pc = sal.pc;
14354   if (sal.line)
14355     find_line_pc (sal.symtab, sal.line, &pc);
14356
14357   if (target_static_tracepoint_marker_at (pc, &marker))
14358     {
14359       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14360         warning (_("static tracepoint %d changed probed marker from %s to %s"),
14361                  b->number,
14362                  tp->static_trace_marker_id, marker.str_id);
14363
14364       xfree (tp->static_trace_marker_id);
14365       tp->static_trace_marker_id = xstrdup (marker.str_id);
14366       release_static_tracepoint_marker (&marker);
14367
14368       return sal;
14369     }
14370
14371   /* Old marker wasn't found on target at lineno.  Try looking it up
14372      by string ID.  */
14373   if (!sal.explicit_pc
14374       && sal.line != 0
14375       && sal.symtab != NULL
14376       && tp->static_trace_marker_id != NULL)
14377     {
14378       VEC(static_tracepoint_marker_p) *markers;
14379
14380       markers
14381         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14382
14383       if (!VEC_empty(static_tracepoint_marker_p, markers))
14384         {
14385           struct symtab_and_line sal2;
14386           struct symbol *sym;
14387           struct static_tracepoint_marker *tpmarker;
14388           struct ui_out *uiout = current_uiout;
14389
14390           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14391
14392           xfree (tp->static_trace_marker_id);
14393           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14394
14395           warning (_("marker for static tracepoint %d (%s) not "
14396                      "found at previous line number"),
14397                    b->number, tp->static_trace_marker_id);
14398
14399           init_sal (&sal2);
14400
14401           sal2.pc = tpmarker->address;
14402
14403           sal2 = find_pc_line (tpmarker->address, 0);
14404           sym = find_pc_sect_function (tpmarker->address, NULL);
14405           ui_out_text (uiout, "Now in ");
14406           if (sym)
14407             {
14408               ui_out_field_string (uiout, "func",
14409                                    SYMBOL_PRINT_NAME (sym));
14410               ui_out_text (uiout, " at ");
14411             }
14412           ui_out_field_string (uiout, "file",
14413                                symtab_to_filename_for_display (sal2.symtab));
14414           ui_out_text (uiout, ":");
14415
14416           if (ui_out_is_mi_like_p (uiout))
14417             {
14418               const char *fullname = symtab_to_fullname (sal2.symtab);
14419
14420               ui_out_field_string (uiout, "fullname", fullname);
14421             }
14422
14423           ui_out_field_int (uiout, "line", sal2.line);
14424           ui_out_text (uiout, "\n");
14425
14426           b->loc->line_number = sal2.line;
14427           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14428
14429           xfree (b->addr_string);
14430           b->addr_string = xstrprintf ("%s:%d",
14431                                    symtab_to_filename_for_display (sal2.symtab),
14432                                        b->loc->line_number);
14433
14434           /* Might be nice to check if function changed, and warn if
14435              so.  */
14436
14437           release_static_tracepoint_marker (tpmarker);
14438         }
14439     }
14440   return sal;
14441 }
14442
14443 /* Returns 1 iff locations A and B are sufficiently same that
14444    we don't need to report breakpoint as changed.  */
14445
14446 static int
14447 locations_are_equal (struct bp_location *a, struct bp_location *b)
14448 {
14449   while (a && b)
14450     {
14451       if (a->address != b->address)
14452         return 0;
14453
14454       if (a->shlib_disabled != b->shlib_disabled)
14455         return 0;
14456
14457       if (a->enabled != b->enabled)
14458         return 0;
14459
14460       a = a->next;
14461       b = b->next;
14462     }
14463
14464   if ((a == NULL) != (b == NULL))
14465     return 0;
14466
14467   return 1;
14468 }
14469
14470 /* Create new breakpoint locations for B (a hardware or software breakpoint)
14471    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
14472    a ranged breakpoint.  */
14473
14474 void
14475 update_breakpoint_locations (struct breakpoint *b,
14476                              struct symtabs_and_lines sals,
14477                              struct symtabs_and_lines sals_end)
14478 {
14479   int i;
14480   struct bp_location *existing_locations = b->loc;
14481
14482   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14483     {
14484       /* Ranged breakpoints have only one start location and one end
14485          location.  */
14486       b->enable_state = bp_disabled;
14487       update_global_location_list (UGLL_MAY_INSERT);
14488       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14489                            "multiple locations found\n"),
14490                          b->number);
14491       return;
14492     }
14493
14494   /* If there's no new locations, and all existing locations are
14495      pending, don't do anything.  This optimizes the common case where
14496      all locations are in the same shared library, that was unloaded.
14497      We'd like to retain the location, so that when the library is
14498      loaded again, we don't loose the enabled/disabled status of the
14499      individual locations.  */
14500   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
14501     return;
14502
14503   b->loc = NULL;
14504
14505   for (i = 0; i < sals.nelts; ++i)
14506     {
14507       struct bp_location *new_loc;
14508
14509       switch_to_program_space_and_thread (sals.sals[i].pspace);
14510
14511       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14512
14513       /* Reparse conditions, they might contain references to the
14514          old symtab.  */
14515       if (b->cond_string != NULL)
14516         {
14517           const char *s;
14518           volatile struct gdb_exception e;
14519
14520           s = b->cond_string;
14521           TRY_CATCH (e, RETURN_MASK_ERROR)
14522             {
14523               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14524                                            block_for_pc (sals.sals[i].pc), 
14525                                            0);
14526             }
14527           if (e.reason < 0)
14528             {
14529               warning (_("failed to reevaluate condition "
14530                          "for breakpoint %d: %s"), 
14531                        b->number, e.message);
14532               new_loc->enabled = 0;
14533             }
14534         }
14535
14536       if (sals_end.nelts)
14537         {
14538           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14539
14540           new_loc->length = end - sals.sals[0].pc + 1;
14541         }
14542     }
14543
14544   /* Update locations of permanent breakpoints.  */
14545   if (b->enable_state == bp_permanent)
14546     make_breakpoint_permanent (b);
14547
14548   /* If possible, carry over 'disable' status from existing
14549      breakpoints.  */
14550   {
14551     struct bp_location *e = existing_locations;
14552     /* If there are multiple breakpoints with the same function name,
14553        e.g. for inline functions, comparing function names won't work.
14554        Instead compare pc addresses; this is just a heuristic as things
14555        may have moved, but in practice it gives the correct answer
14556        often enough until a better solution is found.  */
14557     int have_ambiguous_names = ambiguous_names_p (b->loc);
14558
14559     for (; e; e = e->next)
14560       {
14561         if (!e->enabled && e->function_name)
14562           {
14563             struct bp_location *l = b->loc;
14564             if (have_ambiguous_names)
14565               {
14566                 for (; l; l = l->next)
14567                   if (breakpoint_locations_match (e, l))
14568                     {
14569                       l->enabled = 0;
14570                       break;
14571                     }
14572               }
14573             else
14574               {
14575                 for (; l; l = l->next)
14576                   if (l->function_name
14577                       && strcmp (e->function_name, l->function_name) == 0)
14578                     {
14579                       l->enabled = 0;
14580                       break;
14581                     }
14582               }
14583           }
14584       }
14585   }
14586
14587   if (!locations_are_equal (existing_locations, b->loc))
14588     observer_notify_breakpoint_modified (b);
14589
14590   update_global_location_list (UGLL_MAY_INSERT);
14591 }
14592
14593 /* Find the SaL locations corresponding to the given ADDR_STRING.
14594    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14595
14596 static struct symtabs_and_lines
14597 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14598 {
14599   char *s;
14600   struct symtabs_and_lines sals = {0};
14601   volatile struct gdb_exception e;
14602
14603   gdb_assert (b->ops != NULL);
14604   s = addr_string;
14605
14606   TRY_CATCH (e, RETURN_MASK_ERROR)
14607     {
14608       b->ops->decode_linespec (b, &s, &sals);
14609     }
14610   if (e.reason < 0)
14611     {
14612       int not_found_and_ok = 0;
14613       /* For pending breakpoints, it's expected that parsing will
14614          fail until the right shared library is loaded.  User has
14615          already told to create pending breakpoints and don't need
14616          extra messages.  If breakpoint is in bp_shlib_disabled
14617          state, then user already saw the message about that
14618          breakpoint being disabled, and don't want to see more
14619          errors.  */
14620       if (e.error == NOT_FOUND_ERROR
14621           && (b->condition_not_parsed 
14622               || (b->loc && b->loc->shlib_disabled)
14623               || (b->loc && b->loc->pspace->executing_startup)
14624               || b->enable_state == bp_disabled))
14625         not_found_and_ok = 1;
14626
14627       if (!not_found_and_ok)
14628         {
14629           /* We surely don't want to warn about the same breakpoint
14630              10 times.  One solution, implemented here, is disable
14631              the breakpoint on error.  Another solution would be to
14632              have separate 'warning emitted' flag.  Since this
14633              happens only when a binary has changed, I don't know
14634              which approach is better.  */
14635           b->enable_state = bp_disabled;
14636           throw_exception (e);
14637         }
14638     }
14639
14640   if (e.reason == 0 || e.error != NOT_FOUND_ERROR)
14641     {
14642       int i;
14643
14644       for (i = 0; i < sals.nelts; ++i)
14645         resolve_sal_pc (&sals.sals[i]);
14646       if (b->condition_not_parsed && s && s[0])
14647         {
14648           char *cond_string, *extra_string;
14649           int thread, task;
14650
14651           find_condition_and_thread (s, sals.sals[0].pc,
14652                                      &cond_string, &thread, &task,
14653                                      &extra_string);
14654           if (cond_string)
14655             b->cond_string = cond_string;
14656           b->thread = thread;
14657           b->task = task;
14658           if (extra_string)
14659             b->extra_string = extra_string;
14660           b->condition_not_parsed = 0;
14661         }
14662
14663       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14664         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14665
14666       *found = 1;
14667     }
14668   else
14669     *found = 0;
14670
14671   return sals;
14672 }
14673
14674 /* The default re_set method, for typical hardware or software
14675    breakpoints.  Reevaluate the breakpoint and recreate its
14676    locations.  */
14677
14678 static void
14679 breakpoint_re_set_default (struct breakpoint *b)
14680 {
14681   int found;
14682   struct symtabs_and_lines sals, sals_end;
14683   struct symtabs_and_lines expanded = {0};
14684   struct symtabs_and_lines expanded_end = {0};
14685
14686   sals = addr_string_to_sals (b, b->addr_string, &found);
14687   if (found)
14688     {
14689       make_cleanup (xfree, sals.sals);
14690       expanded = sals;
14691     }
14692
14693   if (b->addr_string_range_end)
14694     {
14695       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14696       if (found)
14697         {
14698           make_cleanup (xfree, sals_end.sals);
14699           expanded_end = sals_end;
14700         }
14701     }
14702
14703   update_breakpoint_locations (b, expanded, expanded_end);
14704 }
14705
14706 /* Default method for creating SALs from an address string.  It basically
14707    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14708
14709 static void
14710 create_sals_from_address_default (char **arg,
14711                                   struct linespec_result *canonical,
14712                                   enum bptype type_wanted,
14713                                   char *addr_start, char **copy_arg)
14714 {
14715   parse_breakpoint_sals (arg, canonical);
14716 }
14717
14718 /* Call create_breakpoints_sal for the given arguments.  This is the default
14719    function for the `create_breakpoints_sal' method of
14720    breakpoint_ops.  */
14721
14722 static void
14723 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14724                                 struct linespec_result *canonical,
14725                                 char *cond_string,
14726                                 char *extra_string,
14727                                 enum bptype type_wanted,
14728                                 enum bpdisp disposition,
14729                                 int thread,
14730                                 int task, int ignore_count,
14731                                 const struct breakpoint_ops *ops,
14732                                 int from_tty, int enabled,
14733                                 int internal, unsigned flags)
14734 {
14735   create_breakpoints_sal (gdbarch, canonical, cond_string,
14736                           extra_string,
14737                           type_wanted, disposition,
14738                           thread, task, ignore_count, ops, from_tty,
14739                           enabled, internal, flags);
14740 }
14741
14742 /* Decode the line represented by S by calling decode_line_full.  This is the
14743    default function for the `decode_linespec' method of breakpoint_ops.  */
14744
14745 static void
14746 decode_linespec_default (struct breakpoint *b, char **s,
14747                          struct symtabs_and_lines *sals)
14748 {
14749   struct linespec_result canonical;
14750
14751   init_linespec_result (&canonical);
14752   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14753                     (struct symtab *) NULL, 0,
14754                     &canonical, multiple_symbols_all,
14755                     b->filter);
14756
14757   /* We should get 0 or 1 resulting SALs.  */
14758   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14759
14760   if (VEC_length (linespec_sals, canonical.sals) > 0)
14761     {
14762       struct linespec_sals *lsal;
14763
14764       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14765       *sals = lsal->sals;
14766       /* Arrange it so the destructor does not free the
14767          contents.  */
14768       lsal->sals.sals = NULL;
14769     }
14770
14771   destroy_linespec_result (&canonical);
14772 }
14773
14774 /* Prepare the global context for a re-set of breakpoint B.  */
14775
14776 static struct cleanup *
14777 prepare_re_set_context (struct breakpoint *b)
14778 {
14779   struct cleanup *cleanups;
14780
14781   input_radix = b->input_radix;
14782   cleanups = save_current_space_and_thread ();
14783   if (b->pspace != NULL)
14784     switch_to_program_space_and_thread (b->pspace);
14785   set_language (b->language);
14786
14787   return cleanups;
14788 }
14789
14790 /* Reset a breakpoint given it's struct breakpoint * BINT.
14791    The value we return ends up being the return value from catch_errors.
14792    Unused in this case.  */
14793
14794 static int
14795 breakpoint_re_set_one (void *bint)
14796 {
14797   /* Get past catch_errs.  */
14798   struct breakpoint *b = (struct breakpoint *) bint;
14799   struct cleanup *cleanups;
14800
14801   cleanups = prepare_re_set_context (b);
14802   b->ops->re_set (b);
14803   do_cleanups (cleanups);
14804   return 0;
14805 }
14806
14807 /* Re-set all breakpoints after symbols have been re-loaded.  */
14808 void
14809 breakpoint_re_set (void)
14810 {
14811   struct breakpoint *b, *b_tmp;
14812   enum language save_language;
14813   int save_input_radix;
14814   struct cleanup *old_chain;
14815
14816   save_language = current_language->la_language;
14817   save_input_radix = input_radix;
14818   old_chain = save_current_program_space ();
14819
14820   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14821   {
14822     /* Format possible error msg.  */
14823     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14824                                 b->number);
14825     struct cleanup *cleanups = make_cleanup (xfree, message);
14826     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14827     do_cleanups (cleanups);
14828   }
14829   set_language (save_language);
14830   input_radix = save_input_radix;
14831
14832   jit_breakpoint_re_set ();
14833
14834   do_cleanups (old_chain);
14835
14836   create_overlay_event_breakpoint ();
14837   create_longjmp_master_breakpoint ();
14838   create_std_terminate_master_breakpoint ();
14839   create_exception_master_breakpoint ();
14840 }
14841 \f
14842 /* Reset the thread number of this breakpoint:
14843
14844    - If the breakpoint is for all threads, leave it as-is.
14845    - Else, reset it to the current thread for inferior_ptid.  */
14846 void
14847 breakpoint_re_set_thread (struct breakpoint *b)
14848 {
14849   if (b->thread != -1)
14850     {
14851       if (in_thread_list (inferior_ptid))
14852         b->thread = pid_to_thread_id (inferior_ptid);
14853
14854       /* We're being called after following a fork.  The new fork is
14855          selected as current, and unless this was a vfork will have a
14856          different program space from the original thread.  Reset that
14857          as well.  */
14858       b->loc->pspace = current_program_space;
14859     }
14860 }
14861
14862 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14863    If from_tty is nonzero, it prints a message to that effect,
14864    which ends with a period (no newline).  */
14865
14866 void
14867 set_ignore_count (int bptnum, int count, int from_tty)
14868 {
14869   struct breakpoint *b;
14870
14871   if (count < 0)
14872     count = 0;
14873
14874   ALL_BREAKPOINTS (b)
14875     if (b->number == bptnum)
14876     {
14877       if (is_tracepoint (b))
14878         {
14879           if (from_tty && count != 0)
14880             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14881                              bptnum);
14882           return;
14883         }
14884       
14885       b->ignore_count = count;
14886       if (from_tty)
14887         {
14888           if (count == 0)
14889             printf_filtered (_("Will stop next time "
14890                                "breakpoint %d is reached."),
14891                              bptnum);
14892           else if (count == 1)
14893             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14894                              bptnum);
14895           else
14896             printf_filtered (_("Will ignore next %d "
14897                                "crossings of breakpoint %d."),
14898                              count, bptnum);
14899         }
14900       observer_notify_breakpoint_modified (b);
14901       return;
14902     }
14903
14904   error (_("No breakpoint number %d."), bptnum);
14905 }
14906
14907 /* Command to set ignore-count of breakpoint N to COUNT.  */
14908
14909 static void
14910 ignore_command (char *args, int from_tty)
14911 {
14912   char *p = args;
14913   int num;
14914
14915   if (p == 0)
14916     error_no_arg (_("a breakpoint number"));
14917
14918   num = get_number (&p);
14919   if (num == 0)
14920     error (_("bad breakpoint number: '%s'"), args);
14921   if (*p == 0)
14922     error (_("Second argument (specified ignore-count) is missing."));
14923
14924   set_ignore_count (num,
14925                     longest_to_int (value_as_long (parse_and_eval (p))),
14926                     from_tty);
14927   if (from_tty)
14928     printf_filtered ("\n");
14929 }
14930 \f
14931 /* Call FUNCTION on each of the breakpoints
14932    whose numbers are given in ARGS.  */
14933
14934 static void
14935 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14936                                                       void *),
14937                         void *data)
14938 {
14939   int num;
14940   struct breakpoint *b, *tmp;
14941   int match;
14942   struct get_number_or_range_state state;
14943
14944   if (args == 0)
14945     error_no_arg (_("one or more breakpoint numbers"));
14946
14947   init_number_or_range (&state, args);
14948
14949   while (!state.finished)
14950     {
14951       const char *p = state.string;
14952
14953       match = 0;
14954
14955       num = get_number_or_range (&state);
14956       if (num == 0)
14957         {
14958           warning (_("bad breakpoint number at or near '%s'"), p);
14959         }
14960       else
14961         {
14962           ALL_BREAKPOINTS_SAFE (b, tmp)
14963             if (b->number == num)
14964               {
14965                 match = 1;
14966                 function (b, data);
14967                 break;
14968               }
14969           if (match == 0)
14970             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14971         }
14972     }
14973 }
14974
14975 static struct bp_location *
14976 find_location_by_number (char *number)
14977 {
14978   char *dot = strchr (number, '.');
14979   char *p1;
14980   int bp_num;
14981   int loc_num;
14982   struct breakpoint *b;
14983   struct bp_location *loc;  
14984
14985   *dot = '\0';
14986
14987   p1 = number;
14988   bp_num = get_number (&p1);
14989   if (bp_num == 0)
14990     error (_("Bad breakpoint number '%s'"), number);
14991
14992   ALL_BREAKPOINTS (b)
14993     if (b->number == bp_num)
14994       {
14995         break;
14996       }
14997
14998   if (!b || b->number != bp_num)
14999     error (_("Bad breakpoint number '%s'"), number);
15000   
15001   p1 = dot+1;
15002   loc_num = get_number (&p1);
15003   if (loc_num == 0)
15004     error (_("Bad breakpoint location number '%s'"), number);
15005
15006   --loc_num;
15007   loc = b->loc;
15008   for (;loc_num && loc; --loc_num, loc = loc->next)
15009     ;
15010   if (!loc)
15011     error (_("Bad breakpoint location number '%s'"), dot+1);
15012     
15013   return loc;  
15014 }
15015
15016
15017 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
15018    If from_tty is nonzero, it prints a message to that effect,
15019    which ends with a period (no newline).  */
15020
15021 void
15022 disable_breakpoint (struct breakpoint *bpt)
15023 {
15024   /* Never disable a watchpoint scope breakpoint; we want to
15025      hit them when we leave scope so we can delete both the
15026      watchpoint and its scope breakpoint at that time.  */
15027   if (bpt->type == bp_watchpoint_scope)
15028     return;
15029
15030   /* You can't disable permanent breakpoints.  */
15031   if (bpt->enable_state == bp_permanent)
15032     return;
15033
15034   bpt->enable_state = bp_disabled;
15035
15036   /* Mark breakpoint locations modified.  */
15037   mark_breakpoint_modified (bpt);
15038
15039   if (target_supports_enable_disable_tracepoint ()
15040       && current_trace_status ()->running && is_tracepoint (bpt))
15041     {
15042       struct bp_location *location;
15043      
15044       for (location = bpt->loc; location; location = location->next)
15045         target_disable_tracepoint (location);
15046     }
15047
15048   update_global_location_list (UGLL_DONT_INSERT);
15049
15050   observer_notify_breakpoint_modified (bpt);
15051 }
15052
15053 /* A callback for iterate_over_related_breakpoints.  */
15054
15055 static void
15056 do_disable_breakpoint (struct breakpoint *b, void *ignore)
15057 {
15058   disable_breakpoint (b);
15059 }
15060
15061 /* A callback for map_breakpoint_numbers that calls
15062    disable_breakpoint.  */
15063
15064 static void
15065 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
15066 {
15067   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
15068 }
15069
15070 static void
15071 disable_command (char *args, int from_tty)
15072 {
15073   if (args == 0)
15074     {
15075       struct breakpoint *bpt;
15076
15077       ALL_BREAKPOINTS (bpt)
15078         if (user_breakpoint_p (bpt))
15079           disable_breakpoint (bpt);
15080     }
15081   else
15082     {
15083       char *num = extract_arg (&args);
15084
15085       while (num)
15086         {
15087           if (strchr (num, '.'))
15088             {
15089               struct bp_location *loc = find_location_by_number (num);
15090
15091               if (loc)
15092                 {
15093                   if (loc->enabled)
15094                     {
15095                       loc->enabled = 0;
15096                       mark_breakpoint_location_modified (loc);
15097                     }
15098                   if (target_supports_enable_disable_tracepoint ()
15099                       && current_trace_status ()->running && loc->owner
15100                       && is_tracepoint (loc->owner))
15101                     target_disable_tracepoint (loc);
15102                 }
15103               update_global_location_list (UGLL_DONT_INSERT);
15104             }
15105           else
15106             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
15107           num = extract_arg (&args);
15108         }
15109     }
15110 }
15111
15112 static void
15113 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
15114                         int count)
15115 {
15116   int target_resources_ok;
15117
15118   if (bpt->type == bp_hardware_breakpoint)
15119     {
15120       int i;
15121       i = hw_breakpoint_used_count ();
15122       target_resources_ok = 
15123         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
15124                                             i + 1, 0);
15125       if (target_resources_ok == 0)
15126         error (_("No hardware breakpoint support in the target."));
15127       else if (target_resources_ok < 0)
15128         error (_("Hardware breakpoints used exceeds limit."));
15129     }
15130
15131   if (is_watchpoint (bpt))
15132     {
15133       /* Initialize it just to avoid a GCC false warning.  */
15134       enum enable_state orig_enable_state = 0;
15135       volatile struct gdb_exception e;
15136
15137       TRY_CATCH (e, RETURN_MASK_ALL)
15138         {
15139           struct watchpoint *w = (struct watchpoint *) bpt;
15140
15141           orig_enable_state = bpt->enable_state;
15142           bpt->enable_state = bp_enabled;
15143           update_watchpoint (w, 1 /* reparse */);
15144         }
15145       if (e.reason < 0)
15146         {
15147           bpt->enable_state = orig_enable_state;
15148           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
15149                              bpt->number);
15150           return;
15151         }
15152     }
15153
15154   if (bpt->enable_state != bp_permanent)
15155     bpt->enable_state = bp_enabled;
15156
15157   bpt->enable_state = bp_enabled;
15158
15159   /* Mark breakpoint locations modified.  */
15160   mark_breakpoint_modified (bpt);
15161
15162   if (target_supports_enable_disable_tracepoint ()
15163       && current_trace_status ()->running && is_tracepoint (bpt))
15164     {
15165       struct bp_location *location;
15166
15167       for (location = bpt->loc; location; location = location->next)
15168         target_enable_tracepoint (location);
15169     }
15170
15171   bpt->disposition = disposition;
15172   bpt->enable_count = count;
15173   update_global_location_list (UGLL_MAY_INSERT);
15174
15175   observer_notify_breakpoint_modified (bpt);
15176 }
15177
15178
15179 void
15180 enable_breakpoint (struct breakpoint *bpt)
15181 {
15182   enable_breakpoint_disp (bpt, bpt->disposition, 0);
15183 }
15184
15185 static void
15186 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15187 {
15188   enable_breakpoint (bpt);
15189 }
15190
15191 /* A callback for map_breakpoint_numbers that calls
15192    enable_breakpoint.  */
15193
15194 static void
15195 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15196 {
15197   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15198 }
15199
15200 /* The enable command enables the specified breakpoints (or all defined
15201    breakpoints) so they once again become (or continue to be) effective
15202    in stopping the inferior.  */
15203
15204 static void
15205 enable_command (char *args, int from_tty)
15206 {
15207   if (args == 0)
15208     {
15209       struct breakpoint *bpt;
15210
15211       ALL_BREAKPOINTS (bpt)
15212         if (user_breakpoint_p (bpt))
15213           enable_breakpoint (bpt);
15214     }
15215   else
15216     {
15217       char *num = extract_arg (&args);
15218
15219       while (num)
15220         {
15221           if (strchr (num, '.'))
15222             {
15223               struct bp_location *loc = find_location_by_number (num);
15224
15225               if (loc)
15226                 {
15227                   if (!loc->enabled)
15228                     {
15229                       loc->enabled = 1;
15230                       mark_breakpoint_location_modified (loc);
15231                     }
15232                   if (target_supports_enable_disable_tracepoint ()
15233                       && current_trace_status ()->running && loc->owner
15234                       && is_tracepoint (loc->owner))
15235                     target_enable_tracepoint (loc);
15236                 }
15237               update_global_location_list (UGLL_MAY_INSERT);
15238             }
15239           else
15240             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15241           num = extract_arg (&args);
15242         }
15243     }
15244 }
15245
15246 /* This struct packages up disposition data for application to multiple
15247    breakpoints.  */
15248
15249 struct disp_data
15250 {
15251   enum bpdisp disp;
15252   int count;
15253 };
15254
15255 static void
15256 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15257 {
15258   struct disp_data disp_data = *(struct disp_data *) arg;
15259
15260   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15261 }
15262
15263 static void
15264 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15265 {
15266   struct disp_data disp = { disp_disable, 1 };
15267
15268   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15269 }
15270
15271 static void
15272 enable_once_command (char *args, int from_tty)
15273 {
15274   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15275 }
15276
15277 static void
15278 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15279 {
15280   struct disp_data disp = { disp_disable, *(int *) countptr };
15281
15282   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15283 }
15284
15285 static void
15286 enable_count_command (char *args, int from_tty)
15287 {
15288   int count = get_number (&args);
15289
15290   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15291 }
15292
15293 static void
15294 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15295 {
15296   struct disp_data disp = { disp_del, 1 };
15297
15298   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15299 }
15300
15301 static void
15302 enable_delete_command (char *args, int from_tty)
15303 {
15304   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15305 }
15306 \f
15307 static void
15308 set_breakpoint_cmd (char *args, int from_tty)
15309 {
15310 }
15311
15312 static void
15313 show_breakpoint_cmd (char *args, int from_tty)
15314 {
15315 }
15316
15317 /* Invalidate last known value of any hardware watchpoint if
15318    the memory which that value represents has been written to by
15319    GDB itself.  */
15320
15321 static void
15322 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15323                                       CORE_ADDR addr, ssize_t len,
15324                                       const bfd_byte *data)
15325 {
15326   struct breakpoint *bp;
15327
15328   ALL_BREAKPOINTS (bp)
15329     if (bp->enable_state == bp_enabled
15330         && bp->type == bp_hardware_watchpoint)
15331       {
15332         struct watchpoint *wp = (struct watchpoint *) bp;
15333
15334         if (wp->val_valid && wp->val)
15335           {
15336             struct bp_location *loc;
15337
15338             for (loc = bp->loc; loc != NULL; loc = loc->next)
15339               if (loc->loc_type == bp_loc_hardware_watchpoint
15340                   && loc->address + loc->length > addr
15341                   && addr + len > loc->address)
15342                 {
15343                   value_free (wp->val);
15344                   wp->val = NULL;
15345                   wp->val_valid = 0;
15346                 }
15347           }
15348       }
15349 }
15350
15351 /* Create and insert a raw software breakpoint at PC.  Return an
15352    identifier, which should be used to remove the breakpoint later.
15353    In general, places which call this should be using something on the
15354    breakpoint chain instead; this function should be eliminated
15355    someday.  */
15356
15357 void *
15358 deprecated_insert_raw_breakpoint (struct gdbarch *gdbarch,
15359                                   struct address_space *aspace, CORE_ADDR pc)
15360 {
15361   struct bp_target_info *bp_tgt;
15362   struct bp_location *bl;
15363
15364   bp_tgt = XCNEW (struct bp_target_info);
15365
15366   bp_tgt->placed_address_space = aspace;
15367   bp_tgt->placed_address = pc;
15368
15369   /* If an unconditional non-raw breakpoint is already inserted at
15370      that location, there's no need to insert another.  However, with
15371      target-side evaluation of breakpoint conditions, if the
15372      breakpoint that is currently inserted on the target is
15373      conditional, we need to make it unconditional.  Note that a
15374      breakpoint with target-side commands is not reported even if
15375      unconditional, so we need to remove the commands from the target
15376      as well.  */
15377   bl = find_non_raw_software_breakpoint_inserted_here (aspace, pc);
15378   if (bl != NULL
15379       && VEC_empty (agent_expr_p, bl->target_info.conditions)
15380       && VEC_empty (agent_expr_p, bl->target_info.tcommands))
15381     {
15382       bp_target_info_copy_insertion_state (bp_tgt, &bl->target_info);
15383       return bp_tgt;
15384     }
15385
15386   if (target_insert_breakpoint (gdbarch, bp_tgt) != 0)
15387     {
15388       /* Could not insert the breakpoint.  */
15389       xfree (bp_tgt);
15390       return NULL;
15391     }
15392
15393   return bp_tgt;
15394 }
15395
15396 /* Remove a breakpoint BP inserted by
15397    deprecated_insert_raw_breakpoint.  */
15398
15399 int
15400 deprecated_remove_raw_breakpoint (struct gdbarch *gdbarch, void *bp)
15401 {
15402   struct bp_target_info *bp_tgt = bp;
15403   struct address_space *aspace = bp_tgt->placed_address_space;
15404   CORE_ADDR address = bp_tgt->placed_address;
15405   struct bp_location *bl;
15406   int ret;
15407
15408   bl = find_non_raw_software_breakpoint_inserted_here (aspace, address);
15409
15410   /* Only remove the raw breakpoint if there are no other non-raw
15411      breakpoints still inserted at this location.  Otherwise, we would
15412      be effectively disabling those breakpoints.  */
15413   if (bl == NULL)
15414     ret = target_remove_breakpoint (gdbarch, bp_tgt);
15415   else if (!VEC_empty (agent_expr_p, bl->target_info.conditions)
15416            || !VEC_empty (agent_expr_p, bl->target_info.tcommands))
15417     {
15418       /* The target is evaluating conditions, and when we inserted the
15419          software single-step breakpoint, we had made the breakpoint
15420          unconditional and command-less on the target side.  Reinsert
15421          to restore the conditions/commands.  */
15422       ret = target_insert_breakpoint (bl->gdbarch, &bl->target_info);
15423     }
15424   else
15425     ret = 0;
15426
15427   xfree (bp_tgt);
15428
15429   return ret;
15430 }
15431
15432 /* Create and insert a breakpoint for software single step.  */
15433
15434 void
15435 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15436                                struct address_space *aspace, 
15437                                CORE_ADDR next_pc)
15438 {
15439   void **bpt_p;
15440
15441   if (single_step_breakpoints[0] == NULL)
15442     {
15443       bpt_p = &single_step_breakpoints[0];
15444       single_step_gdbarch[0] = gdbarch;
15445     }
15446   else
15447     {
15448       gdb_assert (single_step_breakpoints[1] == NULL);
15449       bpt_p = &single_step_breakpoints[1];
15450       single_step_gdbarch[1] = gdbarch;
15451     }
15452
15453   /* NOTE drow/2006-04-11: A future improvement to this function would
15454      be to only create the breakpoints once, and actually put them on
15455      the breakpoint chain.  That would let us use set_raw_breakpoint.
15456      We could adjust the addresses each time they were needed.  Doing
15457      this requires corresponding changes elsewhere where single step
15458      breakpoints are handled, however.  So, for now, we use this.  */
15459
15460   *bpt_p = deprecated_insert_raw_breakpoint (gdbarch, aspace, next_pc);
15461   if (*bpt_p == NULL)
15462     error (_("Could not insert single-step breakpoint at %s"),
15463              paddress (gdbarch, next_pc));
15464 }
15465
15466 /* Check if the breakpoints used for software single stepping
15467    were inserted or not.  */
15468
15469 int
15470 single_step_breakpoints_inserted (void)
15471 {
15472   return (single_step_breakpoints[0] != NULL
15473           || single_step_breakpoints[1] != NULL);
15474 }
15475
15476 /* Remove and delete any breakpoints used for software single step.  */
15477
15478 void
15479 remove_single_step_breakpoints (void)
15480 {
15481   gdb_assert (single_step_breakpoints[0] != NULL);
15482
15483   /* See insert_single_step_breakpoint for more about this deprecated
15484      call.  */
15485   deprecated_remove_raw_breakpoint (single_step_gdbarch[0],
15486                                     single_step_breakpoints[0]);
15487   single_step_gdbarch[0] = NULL;
15488   single_step_breakpoints[0] = NULL;
15489
15490   if (single_step_breakpoints[1] != NULL)
15491     {
15492       deprecated_remove_raw_breakpoint (single_step_gdbarch[1],
15493                                         single_step_breakpoints[1]);
15494       single_step_gdbarch[1] = NULL;
15495       single_step_breakpoints[1] = NULL;
15496     }
15497 }
15498
15499 /* Delete software single step breakpoints without removing them from
15500    the inferior.  This is intended to be used if the inferior's address
15501    space where they were inserted is already gone, e.g. after exit or
15502    exec.  */
15503
15504 void
15505 cancel_single_step_breakpoints (void)
15506 {
15507   int i;
15508
15509   for (i = 0; i < 2; i++)
15510     if (single_step_breakpoints[i])
15511       {
15512         xfree (single_step_breakpoints[i]);
15513         single_step_breakpoints[i] = NULL;
15514         single_step_gdbarch[i] = NULL;
15515       }
15516 }
15517
15518 /* Detach software single-step breakpoints from INFERIOR_PTID without
15519    removing them.  */
15520
15521 static void
15522 detach_single_step_breakpoints (void)
15523 {
15524   int i;
15525
15526   for (i = 0; i < 2; i++)
15527     if (single_step_breakpoints[i])
15528       target_remove_breakpoint (single_step_gdbarch[i],
15529                                 single_step_breakpoints[i]);
15530 }
15531
15532 /* Find the software single-step breakpoint that inserted at PC.
15533    Returns its slot if found, and -1 if not found.  */
15534
15535 static int
15536 find_single_step_breakpoint (struct address_space *aspace,
15537                              CORE_ADDR pc)
15538 {
15539   int i;
15540
15541   for (i = 0; i < 2; i++)
15542     {
15543       struct bp_target_info *bp_tgt = single_step_breakpoints[i];
15544       if (bp_tgt
15545           && breakpoint_address_match (bp_tgt->placed_address_space,
15546                                        bp_tgt->placed_address,
15547                                        aspace, pc))
15548         return i;
15549     }
15550
15551   return -1;
15552 }
15553
15554 /* Check whether a software single-step breakpoint is inserted at
15555    PC.  */
15556
15557 int
15558 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15559                                         CORE_ADDR pc)
15560 {
15561   return find_single_step_breakpoint (aspace, pc) >= 0;
15562 }
15563
15564 /* Returns 0 if 'bp' is NOT a syscall catchpoint,
15565    non-zero otherwise.  */
15566 static int
15567 is_syscall_catchpoint_enabled (struct breakpoint *bp)
15568 {
15569   if (syscall_catchpoint_p (bp)
15570       && bp->enable_state != bp_disabled
15571       && bp->enable_state != bp_call_disabled)
15572     return 1;
15573   else
15574     return 0;
15575 }
15576
15577 int
15578 catch_syscall_enabled (void)
15579 {
15580   struct catch_syscall_inferior_data *inf_data
15581     = get_catch_syscall_inferior_data (current_inferior ());
15582
15583   return inf_data->total_syscalls_count != 0;
15584 }
15585
15586 int
15587 catching_syscall_number (int syscall_number)
15588 {
15589   struct breakpoint *bp;
15590
15591   ALL_BREAKPOINTS (bp)
15592     if (is_syscall_catchpoint_enabled (bp))
15593       {
15594         struct syscall_catchpoint *c = (struct syscall_catchpoint *) bp;
15595
15596         if (c->syscalls_to_be_caught)
15597           {
15598             int i, iter;
15599             for (i = 0;
15600                  VEC_iterate (int, c->syscalls_to_be_caught, i, iter);
15601                  i++)
15602               if (syscall_number == iter)
15603                 return 1;
15604           }
15605         else
15606           return 1;
15607       }
15608
15609   return 0;
15610 }
15611
15612 /* Complete syscall names.  Used by "catch syscall".  */
15613 static VEC (char_ptr) *
15614 catch_syscall_completer (struct cmd_list_element *cmd,
15615                          const char *text, const char *word)
15616 {
15617   const char **list = get_syscall_names ();
15618   VEC (char_ptr) *retlist
15619     = (list == NULL) ? NULL : complete_on_enum (list, word, word);
15620
15621   xfree (list);
15622   return retlist;
15623 }
15624
15625 /* Tracepoint-specific operations.  */
15626
15627 /* Set tracepoint count to NUM.  */
15628 static void
15629 set_tracepoint_count (int num)
15630 {
15631   tracepoint_count = num;
15632   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15633 }
15634
15635 static void
15636 trace_command (char *arg, int from_tty)
15637 {
15638   struct breakpoint_ops *ops;
15639   const char *arg_cp = arg;
15640
15641   if (arg && probe_linespec_to_ops (&arg_cp))
15642     ops = &tracepoint_probe_breakpoint_ops;
15643   else
15644     ops = &tracepoint_breakpoint_ops;
15645
15646   create_breakpoint (get_current_arch (),
15647                      arg,
15648                      NULL, 0, NULL, 1 /* parse arg */,
15649                      0 /* tempflag */,
15650                      bp_tracepoint /* type_wanted */,
15651                      0 /* Ignore count */,
15652                      pending_break_support,
15653                      ops,
15654                      from_tty,
15655                      1 /* enabled */,
15656                      0 /* internal */, 0);
15657 }
15658
15659 static void
15660 ftrace_command (char *arg, int from_tty)
15661 {
15662   create_breakpoint (get_current_arch (),
15663                      arg,
15664                      NULL, 0, NULL, 1 /* parse arg */,
15665                      0 /* tempflag */,
15666                      bp_fast_tracepoint /* type_wanted */,
15667                      0 /* Ignore count */,
15668                      pending_break_support,
15669                      &tracepoint_breakpoint_ops,
15670                      from_tty,
15671                      1 /* enabled */,
15672                      0 /* internal */, 0);
15673 }
15674
15675 /* strace command implementation.  Creates a static tracepoint.  */
15676
15677 static void
15678 strace_command (char *arg, int from_tty)
15679 {
15680   struct breakpoint_ops *ops;
15681
15682   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15683      or with a normal static tracepoint.  */
15684   if (arg && strncmp (arg, "-m", 2) == 0 && isspace (arg[2]))
15685     ops = &strace_marker_breakpoint_ops;
15686   else
15687     ops = &tracepoint_breakpoint_ops;
15688
15689   create_breakpoint (get_current_arch (),
15690                      arg,
15691                      NULL, 0, NULL, 1 /* parse arg */,
15692                      0 /* tempflag */,
15693                      bp_static_tracepoint /* type_wanted */,
15694                      0 /* Ignore count */,
15695                      pending_break_support,
15696                      ops,
15697                      from_tty,
15698                      1 /* enabled */,
15699                      0 /* internal */, 0);
15700 }
15701
15702 /* Set up a fake reader function that gets command lines from a linked
15703    list that was acquired during tracepoint uploading.  */
15704
15705 static struct uploaded_tp *this_utp;
15706 static int next_cmd;
15707
15708 static char *
15709 read_uploaded_action (void)
15710 {
15711   char *rslt;
15712
15713   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15714
15715   next_cmd++;
15716
15717   return rslt;
15718 }
15719
15720 /* Given information about a tracepoint as recorded on a target (which
15721    can be either a live system or a trace file), attempt to create an
15722    equivalent GDB tracepoint.  This is not a reliable process, since
15723    the target does not necessarily have all the information used when
15724    the tracepoint was originally defined.  */
15725   
15726 struct tracepoint *
15727 create_tracepoint_from_upload (struct uploaded_tp *utp)
15728 {
15729   char *addr_str, small_buf[100];
15730   struct tracepoint *tp;
15731
15732   if (utp->at_string)
15733     addr_str = utp->at_string;
15734   else
15735     {
15736       /* In the absence of a source location, fall back to raw
15737          address.  Since there is no way to confirm that the address
15738          means the same thing as when the trace was started, warn the
15739          user.  */
15740       warning (_("Uploaded tracepoint %d has no "
15741                  "source location, using raw address"),
15742                utp->number);
15743       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15744       addr_str = small_buf;
15745     }
15746
15747   /* There's not much we can do with a sequence of bytecodes.  */
15748   if (utp->cond && !utp->cond_string)
15749     warning (_("Uploaded tracepoint %d condition "
15750                "has no source form, ignoring it"),
15751              utp->number);
15752
15753   if (!create_breakpoint (get_current_arch (),
15754                           addr_str,
15755                           utp->cond_string, -1, NULL,
15756                           0 /* parse cond/thread */,
15757                           0 /* tempflag */,
15758                           utp->type /* type_wanted */,
15759                           0 /* Ignore count */,
15760                           pending_break_support,
15761                           &tracepoint_breakpoint_ops,
15762                           0 /* from_tty */,
15763                           utp->enabled /* enabled */,
15764                           0 /* internal */,
15765                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15766     return NULL;
15767
15768   /* Get the tracepoint we just created.  */
15769   tp = get_tracepoint (tracepoint_count);
15770   gdb_assert (tp != NULL);
15771
15772   if (utp->pass > 0)
15773     {
15774       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15775                  tp->base.number);
15776
15777       trace_pass_command (small_buf, 0);
15778     }
15779
15780   /* If we have uploaded versions of the original commands, set up a
15781      special-purpose "reader" function and call the usual command line
15782      reader, then pass the result to the breakpoint command-setting
15783      function.  */
15784   if (!VEC_empty (char_ptr, utp->cmd_strings))
15785     {
15786       struct command_line *cmd_list;
15787
15788       this_utp = utp;
15789       next_cmd = 0;
15790
15791       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15792
15793       breakpoint_set_commands (&tp->base, cmd_list);
15794     }
15795   else if (!VEC_empty (char_ptr, utp->actions)
15796            || !VEC_empty (char_ptr, utp->step_actions))
15797     warning (_("Uploaded tracepoint %d actions "
15798                "have no source form, ignoring them"),
15799              utp->number);
15800
15801   /* Copy any status information that might be available.  */
15802   tp->base.hit_count = utp->hit_count;
15803   tp->traceframe_usage = utp->traceframe_usage;
15804
15805   return tp;
15806 }
15807   
15808 /* Print information on tracepoint number TPNUM_EXP, or all if
15809    omitted.  */
15810
15811 static void
15812 tracepoints_info (char *args, int from_tty)
15813 {
15814   struct ui_out *uiout = current_uiout;
15815   int num_printed;
15816
15817   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15818
15819   if (num_printed == 0)
15820     {
15821       if (args == NULL || *args == '\0')
15822         ui_out_message (uiout, 0, "No tracepoints.\n");
15823       else
15824         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15825     }
15826
15827   default_collect_info ();
15828 }
15829
15830 /* The 'enable trace' command enables tracepoints.
15831    Not supported by all targets.  */
15832 static void
15833 enable_trace_command (char *args, int from_tty)
15834 {
15835   enable_command (args, from_tty);
15836 }
15837
15838 /* The 'disable trace' command disables tracepoints.
15839    Not supported by all targets.  */
15840 static void
15841 disable_trace_command (char *args, int from_tty)
15842 {
15843   disable_command (args, from_tty);
15844 }
15845
15846 /* Remove a tracepoint (or all if no argument).  */
15847 static void
15848 delete_trace_command (char *arg, int from_tty)
15849 {
15850   struct breakpoint *b, *b_tmp;
15851
15852   dont_repeat ();
15853
15854   if (arg == 0)
15855     {
15856       int breaks_to_delete = 0;
15857
15858       /* Delete all breakpoints if no argument.
15859          Do not delete internal or call-dummy breakpoints, these
15860          have to be deleted with an explicit breakpoint number 
15861          argument.  */
15862       ALL_TRACEPOINTS (b)
15863         if (is_tracepoint (b) && user_breakpoint_p (b))
15864           {
15865             breaks_to_delete = 1;
15866             break;
15867           }
15868
15869       /* Ask user only if there are some breakpoints to delete.  */
15870       if (!from_tty
15871           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15872         {
15873           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15874             if (is_tracepoint (b) && user_breakpoint_p (b))
15875               delete_breakpoint (b);
15876         }
15877     }
15878   else
15879     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15880 }
15881
15882 /* Helper function for trace_pass_command.  */
15883
15884 static void
15885 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15886 {
15887   tp->pass_count = count;
15888   observer_notify_breakpoint_modified (&tp->base);
15889   if (from_tty)
15890     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15891                      tp->base.number, count);
15892 }
15893
15894 /* Set passcount for tracepoint.
15895
15896    First command argument is passcount, second is tracepoint number.
15897    If tracepoint number omitted, apply to most recently defined.
15898    Also accepts special argument "all".  */
15899
15900 static void
15901 trace_pass_command (char *args, int from_tty)
15902 {
15903   struct tracepoint *t1;
15904   unsigned int count;
15905
15906   if (args == 0 || *args == 0)
15907     error (_("passcount command requires an "
15908              "argument (count + optional TP num)"));
15909
15910   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15911
15912   args = skip_spaces (args);
15913   if (*args && strncasecmp (args, "all", 3) == 0)
15914     {
15915       struct breakpoint *b;
15916
15917       args += 3;                        /* Skip special argument "all".  */
15918       if (*args)
15919         error (_("Junk at end of arguments."));
15920
15921       ALL_TRACEPOINTS (b)
15922       {
15923         t1 = (struct tracepoint *) b;
15924         trace_pass_set_count (t1, count, from_tty);
15925       }
15926     }
15927   else if (*args == '\0')
15928     {
15929       t1 = get_tracepoint_by_number (&args, NULL);
15930       if (t1)
15931         trace_pass_set_count (t1, count, from_tty);
15932     }
15933   else
15934     {
15935       struct get_number_or_range_state state;
15936
15937       init_number_or_range (&state, args);
15938       while (!state.finished)
15939         {
15940           t1 = get_tracepoint_by_number (&args, &state);
15941           if (t1)
15942             trace_pass_set_count (t1, count, from_tty);
15943         }
15944     }
15945 }
15946
15947 struct tracepoint *
15948 get_tracepoint (int num)
15949 {
15950   struct breakpoint *t;
15951
15952   ALL_TRACEPOINTS (t)
15953     if (t->number == num)
15954       return (struct tracepoint *) t;
15955
15956   return NULL;
15957 }
15958
15959 /* Find the tracepoint with the given target-side number (which may be
15960    different from the tracepoint number after disconnecting and
15961    reconnecting).  */
15962
15963 struct tracepoint *
15964 get_tracepoint_by_number_on_target (int num)
15965 {
15966   struct breakpoint *b;
15967
15968   ALL_TRACEPOINTS (b)
15969     {
15970       struct tracepoint *t = (struct tracepoint *) b;
15971
15972       if (t->number_on_target == num)
15973         return t;
15974     }
15975
15976   return NULL;
15977 }
15978
15979 /* Utility: parse a tracepoint number and look it up in the list.
15980    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15981    If the argument is missing, the most recent tracepoint
15982    (tracepoint_count) is returned.  */
15983
15984 struct tracepoint *
15985 get_tracepoint_by_number (char **arg,
15986                           struct get_number_or_range_state *state)
15987 {
15988   struct breakpoint *t;
15989   int tpnum;
15990   char *instring = arg == NULL ? NULL : *arg;
15991
15992   if (state)
15993     {
15994       gdb_assert (!state->finished);
15995       tpnum = get_number_or_range (state);
15996     }
15997   else if (arg == NULL || *arg == NULL || ! **arg)
15998     tpnum = tracepoint_count;
15999   else
16000     tpnum = get_number (arg);
16001
16002   if (tpnum <= 0)
16003     {
16004       if (instring && *instring)
16005         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
16006                          instring);
16007       else
16008         printf_filtered (_("No previous tracepoint\n"));
16009       return NULL;
16010     }
16011
16012   ALL_TRACEPOINTS (t)
16013     if (t->number == tpnum)
16014     {
16015       return (struct tracepoint *) t;
16016     }
16017
16018   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
16019   return NULL;
16020 }
16021
16022 void
16023 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
16024 {
16025   if (b->thread != -1)
16026     fprintf_unfiltered (fp, " thread %d", b->thread);
16027
16028   if (b->task != 0)
16029     fprintf_unfiltered (fp, " task %d", b->task);
16030
16031   fprintf_unfiltered (fp, "\n");
16032 }
16033
16034 /* Save information on user settable breakpoints (watchpoints, etc) to
16035    a new script file named FILENAME.  If FILTER is non-NULL, call it
16036    on each breakpoint and only include the ones for which it returns
16037    non-zero.  */
16038
16039 static void
16040 save_breakpoints (char *filename, int from_tty,
16041                   int (*filter) (const struct breakpoint *))
16042 {
16043   struct breakpoint *tp;
16044   int any = 0;
16045   struct cleanup *cleanup;
16046   struct ui_file *fp;
16047   int extra_trace_bits = 0;
16048
16049   if (filename == 0 || *filename == 0)
16050     error (_("Argument required (file name in which to save)"));
16051
16052   /* See if we have anything to save.  */
16053   ALL_BREAKPOINTS (tp)
16054   {
16055     /* Skip internal and momentary breakpoints.  */
16056     if (!user_breakpoint_p (tp))
16057       continue;
16058
16059     /* If we have a filter, only save the breakpoints it accepts.  */
16060     if (filter && !filter (tp))
16061       continue;
16062
16063     any = 1;
16064
16065     if (is_tracepoint (tp))
16066       {
16067         extra_trace_bits = 1;
16068
16069         /* We can stop searching.  */
16070         break;
16071       }
16072   }
16073
16074   if (!any)
16075     {
16076       warning (_("Nothing to save."));
16077       return;
16078     }
16079
16080   filename = tilde_expand (filename);
16081   cleanup = make_cleanup (xfree, filename);
16082   fp = gdb_fopen (filename, "w");
16083   if (!fp)
16084     error (_("Unable to open file '%s' for saving (%s)"),
16085            filename, safe_strerror (errno));
16086   make_cleanup_ui_file_delete (fp);
16087
16088   if (extra_trace_bits)
16089     save_trace_state_variables (fp);
16090
16091   ALL_BREAKPOINTS (tp)
16092   {
16093     /* Skip internal and momentary breakpoints.  */
16094     if (!user_breakpoint_p (tp))
16095       continue;
16096
16097     /* If we have a filter, only save the breakpoints it accepts.  */
16098     if (filter && !filter (tp))
16099       continue;
16100
16101     tp->ops->print_recreate (tp, fp);
16102
16103     /* Note, we can't rely on tp->number for anything, as we can't
16104        assume the recreated breakpoint numbers will match.  Use $bpnum
16105        instead.  */
16106
16107     if (tp->cond_string)
16108       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
16109
16110     if (tp->ignore_count)
16111       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
16112
16113     if (tp->type != bp_dprintf && tp->commands)
16114       {
16115         volatile struct gdb_exception ex;       
16116
16117         fprintf_unfiltered (fp, "  commands\n");
16118         
16119         ui_out_redirect (current_uiout, fp);
16120         TRY_CATCH (ex, RETURN_MASK_ALL)
16121           {
16122             print_command_lines (current_uiout, tp->commands->commands, 2);
16123           }
16124         ui_out_redirect (current_uiout, NULL);
16125
16126         if (ex.reason < 0)
16127           throw_exception (ex);
16128
16129         fprintf_unfiltered (fp, "  end\n");
16130       }
16131
16132     if (tp->enable_state == bp_disabled)
16133       fprintf_unfiltered (fp, "disable\n");
16134
16135     /* If this is a multi-location breakpoint, check if the locations
16136        should be individually disabled.  Watchpoint locations are
16137        special, and not user visible.  */
16138     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
16139       {
16140         struct bp_location *loc;
16141         int n = 1;
16142
16143         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
16144           if (!loc->enabled)
16145             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
16146       }
16147   }
16148
16149   if (extra_trace_bits && *default_collect)
16150     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
16151
16152   if (from_tty)
16153     printf_filtered (_("Saved to file '%s'.\n"), filename);
16154   do_cleanups (cleanup);
16155 }
16156
16157 /* The `save breakpoints' command.  */
16158
16159 static void
16160 save_breakpoints_command (char *args, int from_tty)
16161 {
16162   save_breakpoints (args, from_tty, NULL);
16163 }
16164
16165 /* The `save tracepoints' command.  */
16166
16167 static void
16168 save_tracepoints_command (char *args, int from_tty)
16169 {
16170   save_breakpoints (args, from_tty, is_tracepoint);
16171 }
16172
16173 /* Create a vector of all tracepoints.  */
16174
16175 VEC(breakpoint_p) *
16176 all_tracepoints (void)
16177 {
16178   VEC(breakpoint_p) *tp_vec = 0;
16179   struct breakpoint *tp;
16180
16181   ALL_TRACEPOINTS (tp)
16182   {
16183     VEC_safe_push (breakpoint_p, tp_vec, tp);
16184   }
16185
16186   return tp_vec;
16187 }
16188
16189 \f
16190 /* This help string is used for the break, hbreak, tbreak and thbreak
16191    commands.  It is defined as a macro to prevent duplication.
16192    COMMAND should be a string constant containing the name of the
16193    command.  */
16194 #define BREAK_ARGS_HELP(command) \
16195 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
16196 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
16197 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
16198 guessed probe type) or `-probe-stap' (for a SystemTap probe).\n\
16199 LOCATION may be a line number, function name, or \"*\" and an address.\n\
16200 If a line number is specified, break at start of code for that line.\n\
16201 If a function is specified, break at start of code for that function.\n\
16202 If an address is specified, break at that exact address.\n\
16203 With no LOCATION, uses current execution address of the selected\n\
16204 stack frame.  This is useful for breaking on return to a stack frame.\n\
16205 \n\
16206 THREADNUM is the number from \"info threads\".\n\
16207 CONDITION is a boolean expression.\n\
16208 \n\
16209 Multiple breakpoints at one place are permitted, and useful if their\n\
16210 conditions are different.\n\
16211 \n\
16212 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
16213
16214 /* List of subcommands for "catch".  */
16215 static struct cmd_list_element *catch_cmdlist;
16216
16217 /* List of subcommands for "tcatch".  */
16218 static struct cmd_list_element *tcatch_cmdlist;
16219
16220 void
16221 add_catch_command (char *name, char *docstring,
16222                    cmd_sfunc_ftype *sfunc,
16223                    completer_ftype *completer,
16224                    void *user_data_catch,
16225                    void *user_data_tcatch)
16226 {
16227   struct cmd_list_element *command;
16228
16229   command = add_cmd (name, class_breakpoint, NULL, docstring,
16230                      &catch_cmdlist);
16231   set_cmd_sfunc (command, sfunc);
16232   set_cmd_context (command, user_data_catch);
16233   set_cmd_completer (command, completer);
16234
16235   command = add_cmd (name, class_breakpoint, NULL, docstring,
16236                      &tcatch_cmdlist);
16237   set_cmd_sfunc (command, sfunc);
16238   set_cmd_context (command, user_data_tcatch);
16239   set_cmd_completer (command, completer);
16240 }
16241
16242 static void
16243 clear_syscall_counts (struct inferior *inf)
16244 {
16245   struct catch_syscall_inferior_data *inf_data
16246     = get_catch_syscall_inferior_data (inf);
16247
16248   inf_data->total_syscalls_count = 0;
16249   inf_data->any_syscall_count = 0;
16250   VEC_free (int, inf_data->syscalls_counts);
16251 }
16252
16253 static void
16254 save_command (char *arg, int from_tty)
16255 {
16256   printf_unfiltered (_("\"save\" must be followed by "
16257                        "the name of a save subcommand.\n"));
16258   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
16259 }
16260
16261 struct breakpoint *
16262 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
16263                           void *data)
16264 {
16265   struct breakpoint *b, *b_tmp;
16266
16267   ALL_BREAKPOINTS_SAFE (b, b_tmp)
16268     {
16269       if ((*callback) (b, data))
16270         return b;
16271     }
16272
16273   return NULL;
16274 }
16275
16276 /* Zero if any of the breakpoint's locations could be a location where
16277    functions have been inlined, nonzero otherwise.  */
16278
16279 static int
16280 is_non_inline_function (struct breakpoint *b)
16281 {
16282   /* The shared library event breakpoint is set on the address of a
16283      non-inline function.  */
16284   if (b->type == bp_shlib_event)
16285     return 1;
16286
16287   return 0;
16288 }
16289
16290 /* Nonzero if the specified PC cannot be a location where functions
16291    have been inlined.  */
16292
16293 int
16294 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
16295                            const struct target_waitstatus *ws)
16296 {
16297   struct breakpoint *b;
16298   struct bp_location *bl;
16299
16300   ALL_BREAKPOINTS (b)
16301     {
16302       if (!is_non_inline_function (b))
16303         continue;
16304
16305       for (bl = b->loc; bl != NULL; bl = bl->next)
16306         {
16307           if (!bl->shlib_disabled
16308               && bpstat_check_location (bl, aspace, pc, ws))
16309             return 1;
16310         }
16311     }
16312
16313   return 0;
16314 }
16315
16316 /* Remove any references to OBJFILE which is going to be freed.  */
16317
16318 void
16319 breakpoint_free_objfile (struct objfile *objfile)
16320 {
16321   struct bp_location **locp, *loc;
16322
16323   ALL_BP_LOCATIONS (loc, locp)
16324     if (loc->symtab != NULL && loc->symtab->objfile == objfile)
16325       loc->symtab = NULL;
16326 }
16327
16328 void
16329 initialize_breakpoint_ops (void)
16330 {
16331   static int initialized = 0;
16332
16333   struct breakpoint_ops *ops;
16334
16335   if (initialized)
16336     return;
16337   initialized = 1;
16338
16339   /* The breakpoint_ops structure to be inherit by all kinds of
16340      breakpoints (real breakpoints, i.e., user "break" breakpoints,
16341      internal and momentary breakpoints, etc.).  */
16342   ops = &bkpt_base_breakpoint_ops;
16343   *ops = base_breakpoint_ops;
16344   ops->re_set = bkpt_re_set;
16345   ops->insert_location = bkpt_insert_location;
16346   ops->remove_location = bkpt_remove_location;
16347   ops->breakpoint_hit = bkpt_breakpoint_hit;
16348   ops->create_sals_from_address = bkpt_create_sals_from_address;
16349   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16350   ops->decode_linespec = bkpt_decode_linespec;
16351
16352   /* The breakpoint_ops structure to be used in regular breakpoints.  */
16353   ops = &bkpt_breakpoint_ops;
16354   *ops = bkpt_base_breakpoint_ops;
16355   ops->re_set = bkpt_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 = bkpt_print_recreate;
16360
16361   /* Ranged breakpoints.  */
16362   ops = &ranged_breakpoint_ops;
16363   *ops = bkpt_breakpoint_ops;
16364   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16365   ops->resources_needed = resources_needed_ranged_breakpoint;
16366   ops->print_it = print_it_ranged_breakpoint;
16367   ops->print_one = print_one_ranged_breakpoint;
16368   ops->print_one_detail = print_one_detail_ranged_breakpoint;
16369   ops->print_mention = print_mention_ranged_breakpoint;
16370   ops->print_recreate = print_recreate_ranged_breakpoint;
16371
16372   /* Internal breakpoints.  */
16373   ops = &internal_breakpoint_ops;
16374   *ops = bkpt_base_breakpoint_ops;
16375   ops->re_set = internal_bkpt_re_set;
16376   ops->check_status = internal_bkpt_check_status;
16377   ops->print_it = internal_bkpt_print_it;
16378   ops->print_mention = internal_bkpt_print_mention;
16379
16380   /* Momentary breakpoints.  */
16381   ops = &momentary_breakpoint_ops;
16382   *ops = bkpt_base_breakpoint_ops;
16383   ops->re_set = momentary_bkpt_re_set;
16384   ops->check_status = momentary_bkpt_check_status;
16385   ops->print_it = momentary_bkpt_print_it;
16386   ops->print_mention = momentary_bkpt_print_mention;
16387
16388   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
16389   ops = &longjmp_breakpoint_ops;
16390   *ops = momentary_breakpoint_ops;
16391   ops->dtor = longjmp_bkpt_dtor;
16392
16393   /* Probe breakpoints.  */
16394   ops = &bkpt_probe_breakpoint_ops;
16395   *ops = bkpt_breakpoint_ops;
16396   ops->insert_location = bkpt_probe_insert_location;
16397   ops->remove_location = bkpt_probe_remove_location;
16398   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
16399   ops->decode_linespec = bkpt_probe_decode_linespec;
16400
16401   /* Watchpoints.  */
16402   ops = &watchpoint_breakpoint_ops;
16403   *ops = base_breakpoint_ops;
16404   ops->dtor = dtor_watchpoint;
16405   ops->re_set = re_set_watchpoint;
16406   ops->insert_location = insert_watchpoint;
16407   ops->remove_location = remove_watchpoint;
16408   ops->breakpoint_hit = breakpoint_hit_watchpoint;
16409   ops->check_status = check_status_watchpoint;
16410   ops->resources_needed = resources_needed_watchpoint;
16411   ops->works_in_software_mode = works_in_software_mode_watchpoint;
16412   ops->print_it = print_it_watchpoint;
16413   ops->print_mention = print_mention_watchpoint;
16414   ops->print_recreate = print_recreate_watchpoint;
16415   ops->explains_signal = explains_signal_watchpoint;
16416
16417   /* Masked watchpoints.  */
16418   ops = &masked_watchpoint_breakpoint_ops;
16419   *ops = watchpoint_breakpoint_ops;
16420   ops->insert_location = insert_masked_watchpoint;
16421   ops->remove_location = remove_masked_watchpoint;
16422   ops->resources_needed = resources_needed_masked_watchpoint;
16423   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16424   ops->print_it = print_it_masked_watchpoint;
16425   ops->print_one_detail = print_one_detail_masked_watchpoint;
16426   ops->print_mention = print_mention_masked_watchpoint;
16427   ops->print_recreate = print_recreate_masked_watchpoint;
16428
16429   /* Tracepoints.  */
16430   ops = &tracepoint_breakpoint_ops;
16431   *ops = base_breakpoint_ops;
16432   ops->re_set = tracepoint_re_set;
16433   ops->breakpoint_hit = tracepoint_breakpoint_hit;
16434   ops->print_one_detail = tracepoint_print_one_detail;
16435   ops->print_mention = tracepoint_print_mention;
16436   ops->print_recreate = tracepoint_print_recreate;
16437   ops->create_sals_from_address = tracepoint_create_sals_from_address;
16438   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16439   ops->decode_linespec = tracepoint_decode_linespec;
16440
16441   /* Probe tracepoints.  */
16442   ops = &tracepoint_probe_breakpoint_ops;
16443   *ops = tracepoint_breakpoint_ops;
16444   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
16445   ops->decode_linespec = tracepoint_probe_decode_linespec;
16446
16447   /* Static tracepoints with marker (`-m').  */
16448   ops = &strace_marker_breakpoint_ops;
16449   *ops = tracepoint_breakpoint_ops;
16450   ops->create_sals_from_address = strace_marker_create_sals_from_address;
16451   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16452   ops->decode_linespec = strace_marker_decode_linespec;
16453
16454   /* Fork catchpoints.  */
16455   ops = &catch_fork_breakpoint_ops;
16456   *ops = base_breakpoint_ops;
16457   ops->insert_location = insert_catch_fork;
16458   ops->remove_location = remove_catch_fork;
16459   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16460   ops->print_it = print_it_catch_fork;
16461   ops->print_one = print_one_catch_fork;
16462   ops->print_mention = print_mention_catch_fork;
16463   ops->print_recreate = print_recreate_catch_fork;
16464
16465   /* Vfork catchpoints.  */
16466   ops = &catch_vfork_breakpoint_ops;
16467   *ops = base_breakpoint_ops;
16468   ops->insert_location = insert_catch_vfork;
16469   ops->remove_location = remove_catch_vfork;
16470   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16471   ops->print_it = print_it_catch_vfork;
16472   ops->print_one = print_one_catch_vfork;
16473   ops->print_mention = print_mention_catch_vfork;
16474   ops->print_recreate = print_recreate_catch_vfork;
16475
16476   /* Exec catchpoints.  */
16477   ops = &catch_exec_breakpoint_ops;
16478   *ops = base_breakpoint_ops;
16479   ops->dtor = dtor_catch_exec;
16480   ops->insert_location = insert_catch_exec;
16481   ops->remove_location = remove_catch_exec;
16482   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16483   ops->print_it = print_it_catch_exec;
16484   ops->print_one = print_one_catch_exec;
16485   ops->print_mention = print_mention_catch_exec;
16486   ops->print_recreate = print_recreate_catch_exec;
16487
16488   /* Syscall catchpoints.  */
16489   ops = &catch_syscall_breakpoint_ops;
16490   *ops = base_breakpoint_ops;
16491   ops->dtor = dtor_catch_syscall;
16492   ops->insert_location = insert_catch_syscall;
16493   ops->remove_location = remove_catch_syscall;
16494   ops->breakpoint_hit = breakpoint_hit_catch_syscall;
16495   ops->print_it = print_it_catch_syscall;
16496   ops->print_one = print_one_catch_syscall;
16497   ops->print_mention = print_mention_catch_syscall;
16498   ops->print_recreate = print_recreate_catch_syscall;
16499
16500   /* Solib-related catchpoints.  */
16501   ops = &catch_solib_breakpoint_ops;
16502   *ops = base_breakpoint_ops;
16503   ops->dtor = dtor_catch_solib;
16504   ops->insert_location = insert_catch_solib;
16505   ops->remove_location = remove_catch_solib;
16506   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16507   ops->check_status = check_status_catch_solib;
16508   ops->print_it = print_it_catch_solib;
16509   ops->print_one = print_one_catch_solib;
16510   ops->print_mention = print_mention_catch_solib;
16511   ops->print_recreate = print_recreate_catch_solib;
16512
16513   ops = &dprintf_breakpoint_ops;
16514   *ops = bkpt_base_breakpoint_ops;
16515   ops->re_set = dprintf_re_set;
16516   ops->resources_needed = bkpt_resources_needed;
16517   ops->print_it = bkpt_print_it;
16518   ops->print_mention = bkpt_print_mention;
16519   ops->print_recreate = dprintf_print_recreate;
16520   ops->after_condition_true = dprintf_after_condition_true;
16521   ops->breakpoint_hit = dprintf_breakpoint_hit;
16522 }
16523
16524 /* Chain containing all defined "enable breakpoint" subcommands.  */
16525
16526 static struct cmd_list_element *enablebreaklist = NULL;
16527
16528 void
16529 _initialize_breakpoint (void)
16530 {
16531   struct cmd_list_element *c;
16532
16533   initialize_breakpoint_ops ();
16534
16535   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16536   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16537   observer_attach_inferior_exit (clear_syscall_counts);
16538   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16539
16540   breakpoint_objfile_key
16541     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16542
16543   catch_syscall_inferior_data
16544     = register_inferior_data_with_cleanup (NULL,
16545                                            catch_syscall_inferior_data_cleanup);
16546
16547   breakpoint_chain = 0;
16548   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16549      before a breakpoint is set.  */
16550   breakpoint_count = 0;
16551
16552   tracepoint_count = 0;
16553
16554   add_com ("ignore", class_breakpoint, ignore_command, _("\
16555 Set ignore-count of breakpoint number N to COUNT.\n\
16556 Usage is `ignore N COUNT'."));
16557   if (xdb_commands)
16558     add_com_alias ("bc", "ignore", class_breakpoint, 1);
16559
16560   add_com ("commands", class_breakpoint, commands_command, _("\
16561 Set commands to be executed when a breakpoint is hit.\n\
16562 Give breakpoint number as argument after \"commands\".\n\
16563 With no argument, the targeted breakpoint is the last one set.\n\
16564 The commands themselves follow starting on the next line.\n\
16565 Type a line containing \"end\" to indicate the end of them.\n\
16566 Give \"silent\" as the first line to make the breakpoint silent;\n\
16567 then no output is printed when it is hit, except what the commands print."));
16568
16569   c = add_com ("condition", class_breakpoint, condition_command, _("\
16570 Specify breakpoint number N to break only if COND is true.\n\
16571 Usage is `condition N COND', where N is an integer and COND is an\n\
16572 expression to be evaluated whenever breakpoint N is reached."));
16573   set_cmd_completer (c, condition_completer);
16574
16575   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16576 Set a temporary breakpoint.\n\
16577 Like \"break\" except the breakpoint is only temporary,\n\
16578 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16579 by using \"enable delete\" on the breakpoint number.\n\
16580 \n"
16581 BREAK_ARGS_HELP ("tbreak")));
16582   set_cmd_completer (c, location_completer);
16583
16584   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16585 Set a hardware assisted breakpoint.\n\
16586 Like \"break\" except the breakpoint requires hardware support,\n\
16587 some target hardware may not have this support.\n\
16588 \n"
16589 BREAK_ARGS_HELP ("hbreak")));
16590   set_cmd_completer (c, location_completer);
16591
16592   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16593 Set a temporary hardware assisted breakpoint.\n\
16594 Like \"hbreak\" except the breakpoint is only temporary,\n\
16595 so it will be deleted when hit.\n\
16596 \n"
16597 BREAK_ARGS_HELP ("thbreak")));
16598   set_cmd_completer (c, location_completer);
16599
16600   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16601 Enable some breakpoints.\n\
16602 Give breakpoint numbers (separated by spaces) as arguments.\n\
16603 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16604 This is used to cancel the effect of the \"disable\" command.\n\
16605 With a subcommand you can enable temporarily."),
16606                   &enablelist, "enable ", 1, &cmdlist);
16607   if (xdb_commands)
16608     add_com ("ab", class_breakpoint, enable_command, _("\
16609 Enable some breakpoints.\n\
16610 Give breakpoint numbers (separated by spaces) as arguments.\n\
16611 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16612 This is used to cancel the effect of the \"disable\" command.\n\
16613 With a subcommand you can enable temporarily."));
16614
16615   add_com_alias ("en", "enable", class_breakpoint, 1);
16616
16617   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16618 Enable some breakpoints.\n\
16619 Give breakpoint numbers (separated by spaces) as arguments.\n\
16620 This is used to cancel the effect of the \"disable\" command.\n\
16621 May be abbreviated to simply \"enable\".\n"),
16622                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16623
16624   add_cmd ("once", no_class, enable_once_command, _("\
16625 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16626 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16627            &enablebreaklist);
16628
16629   add_cmd ("delete", no_class, enable_delete_command, _("\
16630 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16631 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16632            &enablebreaklist);
16633
16634   add_cmd ("count", no_class, enable_count_command, _("\
16635 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16636 If a breakpoint is hit while enabled in this fashion,\n\
16637 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16638            &enablebreaklist);
16639
16640   add_cmd ("delete", no_class, enable_delete_command, _("\
16641 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16642 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16643            &enablelist);
16644
16645   add_cmd ("once", no_class, enable_once_command, _("\
16646 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16647 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16648            &enablelist);
16649
16650   add_cmd ("count", no_class, enable_count_command, _("\
16651 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16652 If a breakpoint is hit while enabled in this fashion,\n\
16653 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16654            &enablelist);
16655
16656   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16657 Disable some breakpoints.\n\
16658 Arguments are breakpoint numbers with spaces in between.\n\
16659 To disable all breakpoints, give no argument.\n\
16660 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16661                   &disablelist, "disable ", 1, &cmdlist);
16662   add_com_alias ("dis", "disable", class_breakpoint, 1);
16663   add_com_alias ("disa", "disable", class_breakpoint, 1);
16664   if (xdb_commands)
16665     add_com ("sb", class_breakpoint, disable_command, _("\
16666 Disable some breakpoints.\n\
16667 Arguments are breakpoint numbers with spaces in between.\n\
16668 To disable all breakpoints, give no argument.\n\
16669 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
16670
16671   add_cmd ("breakpoints", class_alias, disable_command, _("\
16672 Disable some breakpoints.\n\
16673 Arguments are breakpoint numbers with spaces in between.\n\
16674 To disable all breakpoints, give no argument.\n\
16675 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16676 This command may be abbreviated \"disable\"."),
16677            &disablelist);
16678
16679   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16680 Delete some breakpoints or auto-display expressions.\n\
16681 Arguments are breakpoint numbers with spaces in between.\n\
16682 To delete all breakpoints, give no argument.\n\
16683 \n\
16684 Also a prefix command for deletion of other GDB objects.\n\
16685 The \"unset\" command is also an alias for \"delete\"."),
16686                   &deletelist, "delete ", 1, &cmdlist);
16687   add_com_alias ("d", "delete", class_breakpoint, 1);
16688   add_com_alias ("del", "delete", class_breakpoint, 1);
16689   if (xdb_commands)
16690     add_com ("db", class_breakpoint, delete_command, _("\
16691 Delete some breakpoints.\n\
16692 Arguments are breakpoint numbers with spaces in between.\n\
16693 To delete all breakpoints, give no argument.\n"));
16694
16695   add_cmd ("breakpoints", class_alias, delete_command, _("\
16696 Delete some breakpoints or auto-display expressions.\n\
16697 Arguments are breakpoint numbers with spaces in between.\n\
16698 To delete all breakpoints, give no argument.\n\
16699 This command may be abbreviated \"delete\"."),
16700            &deletelist);
16701
16702   add_com ("clear", class_breakpoint, clear_command, _("\
16703 Clear breakpoint at specified line or function.\n\
16704 Argument may be line number, function name, or \"*\" and an address.\n\
16705 If line number is specified, all breakpoints in that line are cleared.\n\
16706 If function is specified, breakpoints at beginning of function are cleared.\n\
16707 If an address is specified, breakpoints at that address are cleared.\n\
16708 \n\
16709 With no argument, clears all breakpoints in the line that the selected frame\n\
16710 is executing in.\n\
16711 \n\
16712 See also the \"delete\" command which clears breakpoints by number."));
16713   add_com_alias ("cl", "clear", class_breakpoint, 1);
16714
16715   c = add_com ("break", class_breakpoint, break_command, _("\
16716 Set breakpoint at specified line or function.\n"
16717 BREAK_ARGS_HELP ("break")));
16718   set_cmd_completer (c, location_completer);
16719
16720   add_com_alias ("b", "break", class_run, 1);
16721   add_com_alias ("br", "break", class_run, 1);
16722   add_com_alias ("bre", "break", class_run, 1);
16723   add_com_alias ("brea", "break", class_run, 1);
16724
16725   if (xdb_commands)
16726    add_com_alias ("ba", "break", class_breakpoint, 1);
16727
16728   if (dbx_commands)
16729     {
16730       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16731 Break in function/address or break at a line in the current file."),
16732                              &stoplist, "stop ", 1, &cmdlist);
16733       add_cmd ("in", class_breakpoint, stopin_command,
16734                _("Break in function or address."), &stoplist);
16735       add_cmd ("at", class_breakpoint, stopat_command,
16736                _("Break at a line in the current file."), &stoplist);
16737       add_com ("status", class_info, breakpoints_info, _("\
16738 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16739 The \"Type\" column indicates one of:\n\
16740 \tbreakpoint     - normal breakpoint\n\
16741 \twatchpoint     - watchpoint\n\
16742 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16743 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16744 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16745 address and file/line number respectively.\n\
16746 \n\
16747 Convenience variable \"$_\" and default examine address for \"x\"\n\
16748 are set to the address of the last breakpoint listed unless the command\n\
16749 is prefixed with \"server \".\n\n\
16750 Convenience variable \"$bpnum\" contains the number of the last\n\
16751 breakpoint set."));
16752     }
16753
16754   add_info ("breakpoints", breakpoints_info, _("\
16755 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16756 The \"Type\" column indicates one of:\n\
16757 \tbreakpoint     - normal breakpoint\n\
16758 \twatchpoint     - watchpoint\n\
16759 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16760 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16761 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16762 address and file/line number respectively.\n\
16763 \n\
16764 Convenience variable \"$_\" and default examine address for \"x\"\n\
16765 are set to the address of the last breakpoint listed unless the command\n\
16766 is prefixed with \"server \".\n\n\
16767 Convenience variable \"$bpnum\" contains the number of the last\n\
16768 breakpoint set."));
16769
16770   add_info_alias ("b", "breakpoints", 1);
16771
16772   if (xdb_commands)
16773     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16774 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16775 The \"Type\" column indicates one of:\n\
16776 \tbreakpoint     - normal breakpoint\n\
16777 \twatchpoint     - watchpoint\n\
16778 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16779 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16780 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16781 address and file/line number respectively.\n\
16782 \n\
16783 Convenience variable \"$_\" and default examine address for \"x\"\n\
16784 are set to the address of the last breakpoint listed unless the command\n\
16785 is prefixed with \"server \".\n\n\
16786 Convenience variable \"$bpnum\" contains the number of the last\n\
16787 breakpoint set."));
16788
16789   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16790 Status of all breakpoints, or breakpoint number NUMBER.\n\
16791 The \"Type\" column indicates one of:\n\
16792 \tbreakpoint     - normal breakpoint\n\
16793 \twatchpoint     - watchpoint\n\
16794 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16795 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16796 \tuntil          - internal breakpoint used by the \"until\" command\n\
16797 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16798 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16799 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16800 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16801 address and file/line number respectively.\n\
16802 \n\
16803 Convenience variable \"$_\" and default examine address for \"x\"\n\
16804 are set to the address of the last breakpoint listed unless the command\n\
16805 is prefixed with \"server \".\n\n\
16806 Convenience variable \"$bpnum\" contains the number of the last\n\
16807 breakpoint set."),
16808            &maintenanceinfolist);
16809
16810   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16811 Set catchpoints to catch events."),
16812                   &catch_cmdlist, "catch ",
16813                   0/*allow-unknown*/, &cmdlist);
16814
16815   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16816 Set temporary catchpoints to catch events."),
16817                   &tcatch_cmdlist, "tcatch ",
16818                   0/*allow-unknown*/, &cmdlist);
16819
16820   add_catch_command ("fork", _("Catch calls to fork."),
16821                      catch_fork_command_1,
16822                      NULL,
16823                      (void *) (uintptr_t) catch_fork_permanent,
16824                      (void *) (uintptr_t) catch_fork_temporary);
16825   add_catch_command ("vfork", _("Catch calls to vfork."),
16826                      catch_fork_command_1,
16827                      NULL,
16828                      (void *) (uintptr_t) catch_vfork_permanent,
16829                      (void *) (uintptr_t) catch_vfork_temporary);
16830   add_catch_command ("exec", _("Catch calls to exec."),
16831                      catch_exec_command_1,
16832                      NULL,
16833                      CATCH_PERMANENT,
16834                      CATCH_TEMPORARY);
16835   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16836 Usage: catch load [REGEX]\n\
16837 If REGEX is given, only stop for libraries matching the regular expression."),
16838                      catch_load_command_1,
16839                      NULL,
16840                      CATCH_PERMANENT,
16841                      CATCH_TEMPORARY);
16842   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16843 Usage: catch unload [REGEX]\n\
16844 If REGEX is given, only stop for libraries matching the regular expression."),
16845                      catch_unload_command_1,
16846                      NULL,
16847                      CATCH_PERMANENT,
16848                      CATCH_TEMPORARY);
16849   add_catch_command ("syscall", _("\
16850 Catch system calls by their names and/or numbers.\n\
16851 Arguments say which system calls to catch.  If no arguments\n\
16852 are given, every system call will be caught.\n\
16853 Arguments, if given, should be one or more system call names\n\
16854 (if your system supports that), or system call numbers."),
16855                      catch_syscall_command_1,
16856                      catch_syscall_completer,
16857                      CATCH_PERMANENT,
16858                      CATCH_TEMPORARY);
16859
16860   c = add_com ("watch", class_breakpoint, watch_command, _("\
16861 Set a watchpoint for an expression.\n\
16862 Usage: watch [-l|-location] EXPRESSION\n\
16863 A watchpoint stops execution of your program whenever the value of\n\
16864 an expression changes.\n\
16865 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16866 the memory to which it refers."));
16867   set_cmd_completer (c, expression_completer);
16868
16869   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16870 Set a read watchpoint for an expression.\n\
16871 Usage: rwatch [-l|-location] EXPRESSION\n\
16872 A watchpoint stops execution of your program whenever the value of\n\
16873 an expression is read.\n\
16874 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16875 the memory to which it refers."));
16876   set_cmd_completer (c, expression_completer);
16877
16878   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16879 Set a watchpoint for an expression.\n\
16880 Usage: awatch [-l|-location] EXPRESSION\n\
16881 A watchpoint stops execution of your program whenever the value of\n\
16882 an expression is either read or written.\n\
16883 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16884 the memory to which it refers."));
16885   set_cmd_completer (c, expression_completer);
16886
16887   add_info ("watchpoints", watchpoints_info, _("\
16888 Status of specified watchpoints (all watchpoints if no argument)."));
16889
16890   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16891      respond to changes - contrary to the description.  */
16892   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16893                             &can_use_hw_watchpoints, _("\
16894 Set debugger's willingness to use watchpoint hardware."), _("\
16895 Show debugger's willingness to use watchpoint hardware."), _("\
16896 If zero, gdb will not use hardware for new watchpoints, even if\n\
16897 such is available.  (However, any hardware watchpoints that were\n\
16898 created before setting this to nonzero, will continue to use watchpoint\n\
16899 hardware.)"),
16900                             NULL,
16901                             show_can_use_hw_watchpoints,
16902                             &setlist, &showlist);
16903
16904   can_use_hw_watchpoints = 1;
16905
16906   /* Tracepoint manipulation commands.  */
16907
16908   c = add_com ("trace", class_breakpoint, trace_command, _("\
16909 Set a tracepoint at specified line or function.\n\
16910 \n"
16911 BREAK_ARGS_HELP ("trace") "\n\
16912 Do \"help tracepoints\" for info on other tracepoint commands."));
16913   set_cmd_completer (c, location_completer);
16914
16915   add_com_alias ("tp", "trace", class_alias, 0);
16916   add_com_alias ("tr", "trace", class_alias, 1);
16917   add_com_alias ("tra", "trace", class_alias, 1);
16918   add_com_alias ("trac", "trace", class_alias, 1);
16919
16920   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16921 Set a fast tracepoint at specified line or function.\n\
16922 \n"
16923 BREAK_ARGS_HELP ("ftrace") "\n\
16924 Do \"help tracepoints\" for info on other tracepoint commands."));
16925   set_cmd_completer (c, location_completer);
16926
16927   c = add_com ("strace", class_breakpoint, strace_command, _("\
16928 Set a static tracepoint at specified line, function or marker.\n\
16929 \n\
16930 strace [LOCATION] [if CONDITION]\n\
16931 LOCATION may be a line number, function name, \"*\" and an address,\n\
16932 or -m MARKER_ID.\n\
16933 If a line number is specified, probe the marker at start of code\n\
16934 for that line.  If a function is specified, probe the marker at start\n\
16935 of code for that function.  If an address is specified, probe the marker\n\
16936 at that exact address.  If a marker id is specified, probe the marker\n\
16937 with that name.  With no LOCATION, uses current execution address of\n\
16938 the selected stack frame.\n\
16939 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16940 This collects arbitrary user data passed in the probe point call to the\n\
16941 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16942 by printing the $_sdata variable like any other convenience variable.\n\
16943 \n\
16944 CONDITION is a boolean expression.\n\
16945 \n\
16946 Multiple tracepoints at one place are permitted, and useful if their\n\
16947 conditions are different.\n\
16948 \n\
16949 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16950 Do \"help tracepoints\" for info on other tracepoint commands."));
16951   set_cmd_completer (c, location_completer);
16952
16953   add_info ("tracepoints", tracepoints_info, _("\
16954 Status of specified tracepoints (all tracepoints if no argument).\n\
16955 Convenience variable \"$tpnum\" contains the number of the\n\
16956 last tracepoint set."));
16957
16958   add_info_alias ("tp", "tracepoints", 1);
16959
16960   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16961 Delete specified tracepoints.\n\
16962 Arguments are tracepoint numbers, separated by spaces.\n\
16963 No argument means delete all tracepoints."),
16964            &deletelist);
16965   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16966
16967   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16968 Disable specified tracepoints.\n\
16969 Arguments are tracepoint numbers, separated by spaces.\n\
16970 No argument means disable all tracepoints."),
16971            &disablelist);
16972   deprecate_cmd (c, "disable");
16973
16974   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16975 Enable specified tracepoints.\n\
16976 Arguments are tracepoint numbers, separated by spaces.\n\
16977 No argument means enable all tracepoints."),
16978            &enablelist);
16979   deprecate_cmd (c, "enable");
16980
16981   add_com ("passcount", class_trace, trace_pass_command, _("\
16982 Set the passcount for a tracepoint.\n\
16983 The trace will end when the tracepoint has been passed 'count' times.\n\
16984 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16985 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16986
16987   add_prefix_cmd ("save", class_breakpoint, save_command,
16988                   _("Save breakpoint definitions as a script."),
16989                   &save_cmdlist, "save ",
16990                   0/*allow-unknown*/, &cmdlist);
16991
16992   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16993 Save current breakpoint definitions as a script.\n\
16994 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16995 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16996 session to restore them."),
16997                &save_cmdlist);
16998   set_cmd_completer (c, filename_completer);
16999
17000   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
17001 Save current tracepoint definitions as a script.\n\
17002 Use the 'source' command in another debug session to restore them."),
17003                &save_cmdlist);
17004   set_cmd_completer (c, filename_completer);
17005
17006   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
17007   deprecate_cmd (c, "save tracepoints");
17008
17009   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
17010 Breakpoint specific settings\n\
17011 Configure various breakpoint-specific variables such as\n\
17012 pending breakpoint behavior"),
17013                   &breakpoint_set_cmdlist, "set breakpoint ",
17014                   0/*allow-unknown*/, &setlist);
17015   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
17016 Breakpoint specific settings\n\
17017 Configure various breakpoint-specific variables such as\n\
17018 pending breakpoint behavior"),
17019                   &breakpoint_show_cmdlist, "show breakpoint ",
17020                   0/*allow-unknown*/, &showlist);
17021
17022   add_setshow_auto_boolean_cmd ("pending", no_class,
17023                                 &pending_break_support, _("\
17024 Set debugger's behavior regarding pending breakpoints."), _("\
17025 Show debugger's behavior regarding pending breakpoints."), _("\
17026 If on, an unrecognized breakpoint location will cause gdb to create a\n\
17027 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
17028 an error.  If auto, an unrecognized breakpoint location results in a\n\
17029 user-query to see if a pending breakpoint should be created."),
17030                                 NULL,
17031                                 show_pending_break_support,
17032                                 &breakpoint_set_cmdlist,
17033                                 &breakpoint_show_cmdlist);
17034
17035   pending_break_support = AUTO_BOOLEAN_AUTO;
17036
17037   add_setshow_boolean_cmd ("auto-hw", no_class,
17038                            &automatic_hardware_breakpoints, _("\
17039 Set automatic usage of hardware breakpoints."), _("\
17040 Show automatic usage of hardware breakpoints."), _("\
17041 If set, the debugger will automatically use hardware breakpoints for\n\
17042 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
17043 a warning will be emitted for such breakpoints."),
17044                            NULL,
17045                            show_automatic_hardware_breakpoints,
17046                            &breakpoint_set_cmdlist,
17047                            &breakpoint_show_cmdlist);
17048
17049   add_setshow_boolean_cmd ("always-inserted", class_support,
17050                            &always_inserted_mode, _("\
17051 Set mode for inserting breakpoints."), _("\
17052 Show mode for inserting breakpoints."), _("\
17053 When this mode is on, breakpoints are inserted immediately as soon as\n\
17054 they're created, kept inserted even when execution stops, and removed\n\
17055 only when the user deletes them.  When this mode is off (the default),\n\
17056 breakpoints are inserted only when execution continues, and removed\n\
17057 when execution stops."),
17058                                 NULL,
17059                                 &show_always_inserted_mode,
17060                                 &breakpoint_set_cmdlist,
17061                                 &breakpoint_show_cmdlist);
17062
17063   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
17064                         condition_evaluation_enums,
17065                         &condition_evaluation_mode_1, _("\
17066 Set mode of breakpoint condition evaluation."), _("\
17067 Show mode of breakpoint condition evaluation."), _("\
17068 When this is set to \"host\", breakpoint conditions will be\n\
17069 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
17070 breakpoint conditions will be downloaded to the target (if the target\n\
17071 supports such feature) and conditions will be evaluated on the target's side.\n\
17072 If this is set to \"auto\" (default), this will be automatically set to\n\
17073 \"target\" if it supports condition evaluation, otherwise it will\n\
17074 be set to \"gdb\""),
17075                            &set_condition_evaluation_mode,
17076                            &show_condition_evaluation_mode,
17077                            &breakpoint_set_cmdlist,
17078                            &breakpoint_show_cmdlist);
17079
17080   add_com ("break-range", class_breakpoint, break_range_command, _("\
17081 Set a breakpoint for an address range.\n\
17082 break-range START-LOCATION, END-LOCATION\n\
17083 where START-LOCATION and END-LOCATION can be one of the following:\n\
17084   LINENUM, for that line in the current file,\n\
17085   FILE:LINENUM, for that line in that file,\n\
17086   +OFFSET, for that number of lines after the current line\n\
17087            or the start of the range\n\
17088   FUNCTION, for the first line in that function,\n\
17089   FILE:FUNCTION, to distinguish among like-named static functions.\n\
17090   *ADDRESS, for the instruction at that address.\n\
17091 \n\
17092 The breakpoint will stop execution of the inferior whenever it executes\n\
17093 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
17094 range (including START-LOCATION and END-LOCATION)."));
17095
17096   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
17097 Set a dynamic printf at specified line or function.\n\
17098 dprintf location,format string,arg1,arg2,...\n\
17099 location may be a line number, function name, or \"*\" and an address.\n\
17100 If a line number is specified, break at start of code for that line.\n\
17101 If a function is specified, break at start of code for that function."));
17102   set_cmd_completer (c, location_completer);
17103
17104   add_setshow_enum_cmd ("dprintf-style", class_support,
17105                         dprintf_style_enums, &dprintf_style, _("\
17106 Set the style of usage for dynamic printf."), _("\
17107 Show the style of usage for dynamic printf."), _("\
17108 This setting chooses how GDB will do a dynamic printf.\n\
17109 If the value is \"gdb\", then the printing is done by GDB to its own\n\
17110 console, as with the \"printf\" command.\n\
17111 If the value is \"call\", the print is done by calling a function in your\n\
17112 program; by default printf(), but you can choose a different function or\n\
17113 output stream by setting dprintf-function and dprintf-channel."),
17114                         update_dprintf_commands, NULL,
17115                         &setlist, &showlist);
17116
17117   dprintf_function = xstrdup ("printf");
17118   add_setshow_string_cmd ("dprintf-function", class_support,
17119                           &dprintf_function, _("\
17120 Set the function to use for dynamic printf"), _("\
17121 Show the function to use for dynamic printf"), NULL,
17122                           update_dprintf_commands, NULL,
17123                           &setlist, &showlist);
17124
17125   dprintf_channel = xstrdup ("");
17126   add_setshow_string_cmd ("dprintf-channel", class_support,
17127                           &dprintf_channel, _("\
17128 Set the channel to use for dynamic printf"), _("\
17129 Show the channel to use for dynamic printf"), NULL,
17130                           update_dprintf_commands, NULL,
17131                           &setlist, &showlist);
17132
17133   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
17134                            &disconnected_dprintf, _("\
17135 Set whether dprintf continues after GDB disconnects."), _("\
17136 Show whether dprintf continues after GDB disconnects."), _("\
17137 Use this to let dprintf commands continue to hit and produce output\n\
17138 even if GDB disconnects or detaches from the target."),
17139                            NULL,
17140                            NULL,
17141                            &setlist, &showlist);
17142
17143   add_com ("agent-printf", class_vars, agent_printf_command, _("\
17144 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
17145 (target agent only) This is useful for formatted output in user-defined commands."));
17146
17147   automatic_hardware_breakpoints = 1;
17148
17149   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
17150   observer_attach_thread_exit (remove_threaded_breakpoints);
17151 }