]> Git Repo - binutils.git/blob - gdb/breakpoint.c
Create gdb/break-catch-syscall.c
[binutils.git] / gdb / breakpoint.c
1 /* Everything about breakpoints, for GDB.
2
3    Copyright (C) 1986-2015 Free Software Foundation, Inc.
4
5    This file is part of GDB.
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "memattr.h"
55 #include "ada-lang.h"
56 #include "top.h"
57 #include "valprint.h"
58 #include "jit.h"
59 #include "parser-defs.h"
60 #include "gdb_regex.h"
61 #include "probe.h"
62 #include "cli/cli-utils.h"
63 #include "continuations.h"
64 #include "stack.h"
65 #include "skip.h"
66 #include "ax-gdb.h"
67 #include "dummy-frame.h"
68 #include "interps.h"
69 #include "format.h"
70
71 /* readline include files */
72 #include "readline/readline.h"
73 #include "readline/history.h"
74
75 /* readline defines this.  */
76 #undef savestring
77
78 #include "mi/mi-common.h"
79 #include "extension.h"
80
81 /* Enums for exception-handling support.  */
82 enum exception_event_kind
83 {
84   EX_EVENT_THROW,
85   EX_EVENT_RETHROW,
86   EX_EVENT_CATCH
87 };
88
89 /* Prototypes for local functions.  */
90
91 static void enable_delete_command (char *, int);
92
93 static void enable_once_command (char *, int);
94
95 static void enable_count_command (char *, int);
96
97 static void disable_command (char *, int);
98
99 static void enable_command (char *, int);
100
101 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
102                                                       void *),
103                                     void *);
104
105 static void ignore_command (char *, int);
106
107 static int breakpoint_re_set_one (void *);
108
109 static void breakpoint_re_set_default (struct breakpoint *);
110
111 static void create_sals_from_address_default (char **,
112                                               struct linespec_result *,
113                                               enum bptype, char *,
114                                               char **);
115
116 static void create_breakpoints_sal_default (struct gdbarch *,
117                                             struct linespec_result *,
118                                             char *, char *, enum bptype,
119                                             enum bpdisp, int, int,
120                                             int,
121                                             const struct breakpoint_ops *,
122                                             int, int, int, unsigned);
123
124 static void decode_linespec_default (struct breakpoint *, char **,
125                                      struct symtabs_and_lines *);
126
127 static void clear_command (char *, int);
128
129 static void catch_command (char *, int);
130
131 static int can_use_hardware_watchpoint (struct value *);
132
133 static void break_command_1 (char *, int, int);
134
135 static void mention (struct breakpoint *);
136
137 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
138                                                                enum bptype,
139                                                                const struct breakpoint_ops *);
140 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
141                                                        const struct symtab_and_line *);
142
143 /* This function is used in gdbtk sources and thus can not be made
144    static.  */
145 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
146                                        struct symtab_and_line,
147                                        enum bptype,
148                                        const struct breakpoint_ops *);
149
150 static struct breakpoint *
151   momentary_breakpoint_from_master (struct breakpoint *orig,
152                                     enum bptype type,
153                                     const struct breakpoint_ops *ops,
154                                     int loc_enabled);
155
156 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
157
158 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
159                                             CORE_ADDR bpaddr,
160                                             enum bptype bptype);
161
162 static void describe_other_breakpoints (struct gdbarch *,
163                                         struct program_space *, CORE_ADDR,
164                                         struct obj_section *, int);
165
166 static int watchpoint_locations_match (struct bp_location *loc1,
167                                        struct bp_location *loc2);
168
169 static int breakpoint_location_address_match (struct bp_location *bl,
170                                               struct address_space *aspace,
171                                               CORE_ADDR addr);
172
173 static void breakpoints_info (char *, int);
174
175 static void watchpoints_info (char *, int);
176
177 static int breakpoint_1 (char *, int, 
178                          int (*) (const struct breakpoint *));
179
180 static int breakpoint_cond_eval (void *);
181
182 static void cleanup_executing_breakpoints (void *);
183
184 static void commands_command (char *, int);
185
186 static void condition_command (char *, int);
187
188 typedef enum
189   {
190     mark_inserted,
191     mark_uninserted
192   }
193 insertion_state_t;
194
195 static int remove_breakpoint (struct bp_location *, insertion_state_t);
196 static int remove_breakpoint_1 (struct bp_location *, insertion_state_t);
197
198 static enum print_stop_action print_bp_stop_message (bpstat bs);
199
200 static int watchpoint_check (void *);
201
202 static void maintenance_info_breakpoints (char *, int);
203
204 static int hw_breakpoint_used_count (void);
205
206 static int hw_watchpoint_use_count (struct breakpoint *);
207
208 static int hw_watchpoint_used_count_others (struct breakpoint *except,
209                                             enum bptype type,
210                                             int *other_type_used);
211
212 static void hbreak_command (char *, int);
213
214 static void thbreak_command (char *, int);
215
216 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
217                                     int count);
218
219 static void stop_command (char *arg, int from_tty);
220
221 static void stopin_command (char *arg, int from_tty);
222
223 static void stopat_command (char *arg, int from_tty);
224
225 static void tcatch_command (char *arg, int from_tty);
226
227 static void free_bp_location (struct bp_location *loc);
228 static void incref_bp_location (struct bp_location *loc);
229 static void decref_bp_location (struct bp_location **loc);
230
231 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
232
233 /* update_global_location_list's modes of operation wrt to whether to
234    insert locations now.  */
235 enum ugll_insert_mode
236 {
237   /* Don't insert any breakpoint locations into the inferior, only
238      remove already-inserted locations that no longer should be
239      inserted.  Functions that delete a breakpoint or breakpoints
240      should specify this mode, so that deleting a breakpoint doesn't
241      have the side effect of inserting the locations of other
242      breakpoints that are marked not-inserted, but should_be_inserted
243      returns true on them.
244
245      This behavior is useful is situations close to tear-down -- e.g.,
246      after an exec, while the target still has execution, but
247      breakpoint shadows of the previous executable image should *NOT*
248      be restored to the new image; or before detaching, where the
249      target still has execution and wants to delete breakpoints from
250      GDB's lists, and all breakpoints had already been removed from
251      the inferior.  */
252   UGLL_DONT_INSERT,
253
254   /* May insert breakpoints iff breakpoints_should_be_inserted_now
255      claims breakpoints should be inserted now.  */
256   UGLL_MAY_INSERT,
257
258   /* Insert locations now, irrespective of
259      breakpoints_should_be_inserted_now.  E.g., say all threads are
260      stopped right now, and the user did "continue".  We need to
261      insert breakpoints _before_ resuming the target, but
262      UGLL_MAY_INSERT wouldn't insert them, because
263      breakpoints_should_be_inserted_now returns false at that point,
264      as no thread is running yet.  */
265   UGLL_INSERT
266 };
267
268 static void update_global_location_list (enum ugll_insert_mode);
269
270 static void update_global_location_list_nothrow (enum ugll_insert_mode);
271
272 static int is_hardware_watchpoint (const struct breakpoint *bpt);
273
274 static void insert_breakpoint_locations (void);
275
276 static void tracepoints_info (char *, int);
277
278 static void delete_trace_command (char *, int);
279
280 static void enable_trace_command (char *, int);
281
282 static void disable_trace_command (char *, int);
283
284 static void trace_pass_command (char *, int);
285
286 static void set_tracepoint_count (int num);
287
288 static int is_masked_watchpoint (const struct breakpoint *b);
289
290 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
291
292 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
293    otherwise.  */
294
295 static int strace_marker_p (struct breakpoint *b);
296
297 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
298    that are implemented on top of software or hardware breakpoints
299    (user breakpoints, internal and momentary breakpoints, etc.).  */
300 static struct breakpoint_ops bkpt_base_breakpoint_ops;
301
302 /* Internal breakpoints class type.  */
303 static struct breakpoint_ops internal_breakpoint_ops;
304
305 /* Momentary breakpoints class type.  */
306 static struct breakpoint_ops momentary_breakpoint_ops;
307
308 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
309 static struct breakpoint_ops longjmp_breakpoint_ops;
310
311 /* The breakpoint_ops structure to be used in regular user created
312    breakpoints.  */
313 struct breakpoint_ops bkpt_breakpoint_ops;
314
315 /* Breakpoints set on probes.  */
316 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
317
318 /* Dynamic printf class type.  */
319 struct breakpoint_ops dprintf_breakpoint_ops;
320
321 /* The style in which to perform a dynamic printf.  This is a user
322    option because different output options have different tradeoffs;
323    if GDB does the printing, there is better error handling if there
324    is a problem with any of the arguments, but using an inferior
325    function lets you have special-purpose printers and sending of
326    output to the same place as compiled-in print functions.  */
327
328 static const char dprintf_style_gdb[] = "gdb";
329 static const char dprintf_style_call[] = "call";
330 static const char dprintf_style_agent[] = "agent";
331 static const char *const dprintf_style_enums[] = {
332   dprintf_style_gdb,
333   dprintf_style_call,
334   dprintf_style_agent,
335   NULL
336 };
337 static const char *dprintf_style = dprintf_style_gdb;
338
339 /* The function to use for dynamic printf if the preferred style is to
340    call into the inferior.  The value is simply a string that is
341    copied into the command, so it can be anything that GDB can
342    evaluate to a callable address, not necessarily a function name.  */
343
344 static char *dprintf_function = "";
345
346 /* The channel to use for dynamic printf if the preferred style is to
347    call into the inferior; if a nonempty string, it will be passed to
348    the call as the first argument, with the format string as the
349    second.  As with the dprintf function, this can be anything that
350    GDB knows how to evaluate, so in addition to common choices like
351    "stderr", this could be an app-specific expression like
352    "mystreams[curlogger]".  */
353
354 static char *dprintf_channel = "";
355
356 /* True if dprintf commands should continue to operate even if GDB
357    has disconnected.  */
358 static int disconnected_dprintf = 1;
359
360 /* A reference-counted struct command_line.  This lets multiple
361    breakpoints share a single command list.  */
362 struct counted_command_line
363 {
364   /* The reference count.  */
365   int refc;
366
367   /* The command list.  */
368   struct command_line *commands;
369 };
370
371 struct command_line *
372 breakpoint_commands (struct breakpoint *b)
373 {
374   return b->commands ? b->commands->commands : NULL;
375 }
376
377 /* Flag indicating that a command has proceeded the inferior past the
378    current breakpoint.  */
379
380 static int breakpoint_proceeded;
381
382 const char *
383 bpdisp_text (enum bpdisp disp)
384 {
385   /* NOTE: the following values are a part of MI protocol and
386      represent values of 'disp' field returned when inferior stops at
387      a breakpoint.  */
388   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
389
390   return bpdisps[(int) disp];
391 }
392
393 /* Prototypes for exported functions.  */
394 /* If FALSE, gdb will not use hardware support for watchpoints, even
395    if such is available.  */
396 static int can_use_hw_watchpoints;
397
398 static void
399 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
400                              struct cmd_list_element *c,
401                              const char *value)
402 {
403   fprintf_filtered (file,
404                     _("Debugger's willingness to use "
405                       "watchpoint hardware is %s.\n"),
406                     value);
407 }
408
409 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
410    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
411    for unrecognized breakpoint locations.
412    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
413 static enum auto_boolean pending_break_support;
414 static void
415 show_pending_break_support (struct ui_file *file, int from_tty,
416                             struct cmd_list_element *c,
417                             const char *value)
418 {
419   fprintf_filtered (file,
420                     _("Debugger's behavior regarding "
421                       "pending breakpoints is %s.\n"),
422                     value);
423 }
424
425 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
426    set with "break" but falling in read-only memory.
427    If 0, gdb will warn about such breakpoints, but won't automatically
428    use hardware breakpoints.  */
429 static int automatic_hardware_breakpoints;
430 static void
431 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
432                                      struct cmd_list_element *c,
433                                      const char *value)
434 {
435   fprintf_filtered (file,
436                     _("Automatic usage of hardware breakpoints is %s.\n"),
437                     value);
438 }
439
440 /* If on, GDB keeps breakpoints inserted even if the inferior is
441    stopped, and immediately inserts any new breakpoints as soon as
442    they're created.  If off (default), GDB keeps breakpoints off of
443    the target as long as possible.  That is, it delays inserting
444    breakpoints until the next resume, and removes them again when the
445    target fully stops.  This is a bit safer in case GDB crashes while
446    processing user input.  */
447 static int always_inserted_mode = 0;
448
449 static void
450 show_always_inserted_mode (struct ui_file *file, int from_tty,
451                      struct cmd_list_element *c, const char *value)
452 {
453   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
454                     value);
455 }
456
457 /* See breakpoint.h.  */
458
459 int
460 breakpoints_should_be_inserted_now (void)
461 {
462   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
463     {
464       /* If breakpoints are global, they should be inserted even if no
465          thread under gdb's control is running, or even if there are
466          no threads under GDB's control yet.  */
467       return 1;
468     }
469   else if (target_has_execution)
470     {
471       if (always_inserted_mode)
472         {
473           /* The user wants breakpoints inserted even if all threads
474              are stopped.  */
475           return 1;
476         }
477
478       if (threads_are_executing ())
479         return 1;
480     }
481   return 0;
482 }
483
484 static const char condition_evaluation_both[] = "host or target";
485
486 /* Modes for breakpoint condition evaluation.  */
487 static const char condition_evaluation_auto[] = "auto";
488 static const char condition_evaluation_host[] = "host";
489 static const char condition_evaluation_target[] = "target";
490 static const char *const condition_evaluation_enums[] = {
491   condition_evaluation_auto,
492   condition_evaluation_host,
493   condition_evaluation_target,
494   NULL
495 };
496
497 /* Global that holds the current mode for breakpoint condition evaluation.  */
498 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
499
500 /* Global that we use to display information to the user (gets its value from
501    condition_evaluation_mode_1.  */
502 static const char *condition_evaluation_mode = condition_evaluation_auto;
503
504 /* Translate a condition evaluation mode MODE into either "host"
505    or "target".  This is used mostly to translate from "auto" to the
506    real setting that is being used.  It returns the translated
507    evaluation mode.  */
508
509 static const char *
510 translate_condition_evaluation_mode (const char *mode)
511 {
512   if (mode == condition_evaluation_auto)
513     {
514       if (target_supports_evaluation_of_breakpoint_conditions ())
515         return condition_evaluation_target;
516       else
517         return condition_evaluation_host;
518     }
519   else
520     return mode;
521 }
522
523 /* Discovers what condition_evaluation_auto translates to.  */
524
525 static const char *
526 breakpoint_condition_evaluation_mode (void)
527 {
528   return translate_condition_evaluation_mode (condition_evaluation_mode);
529 }
530
531 /* Return true if GDB should evaluate breakpoint conditions or false
532    otherwise.  */
533
534 static int
535 gdb_evaluates_breakpoint_condition_p (void)
536 {
537   const char *mode = breakpoint_condition_evaluation_mode ();
538
539   return (mode == condition_evaluation_host);
540 }
541
542 void _initialize_breakpoint (void);
543
544 /* Are we executing breakpoint commands?  */
545 static int executing_breakpoint_commands;
546
547 /* Are overlay event breakpoints enabled? */
548 static int overlay_events_enabled;
549
550 /* See description in breakpoint.h. */
551 int target_exact_watchpoints = 0;
552
553 /* Walk the following statement or block through all breakpoints.
554    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
555    current breakpoint.  */
556
557 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
558
559 #define ALL_BREAKPOINTS_SAFE(B,TMP)     \
560         for (B = breakpoint_chain;      \
561              B ? (TMP=B->next, 1): 0;   \
562              B = TMP)
563
564 /* Similar iterator for the low-level breakpoints.  SAFE variant is
565    not provided so update_global_location_list must not be called
566    while executing the block of ALL_BP_LOCATIONS.  */
567
568 #define ALL_BP_LOCATIONS(B,BP_TMP)                                      \
569         for (BP_TMP = bp_location;                                      \
570              BP_TMP < bp_location + bp_location_count && (B = *BP_TMP); \
571              BP_TMP++)
572
573 /* Iterates through locations with address ADDRESS for the currently selected
574    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
575    to where the loop should start from.
576    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
577    appropriate location to start with.  */
578
579 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)   \
580         for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
581              BP_LOCP_TMP = BP_LOCP_START;                               \
582              BP_LOCP_START                                              \
583              && (BP_LOCP_TMP < bp_location + bp_location_count          \
584              && (*BP_LOCP_TMP)->address == ADDRESS);                    \
585              BP_LOCP_TMP++)
586
587 /* Iterator for tracepoints only.  */
588
589 #define ALL_TRACEPOINTS(B)  \
590   for (B = breakpoint_chain; B; B = B->next)  \
591     if (is_tracepoint (B))
592
593 /* Chains of all breakpoints defined.  */
594
595 struct breakpoint *breakpoint_chain;
596
597 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
598
599 static struct bp_location **bp_location;
600
601 /* Number of elements of BP_LOCATION.  */
602
603 static unsigned bp_location_count;
604
605 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
606    ADDRESS for the current elements of BP_LOCATION which get a valid
607    result from bp_location_has_shadow.  You can use it for roughly
608    limiting the subrange of BP_LOCATION to scan for shadow bytes for
609    an address you need to read.  */
610
611 static CORE_ADDR bp_location_placed_address_before_address_max;
612
613 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
614    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
615    BP_LOCATION which get a valid result from bp_location_has_shadow.
616    You can use it for roughly limiting the subrange of BP_LOCATION to
617    scan for shadow bytes for an address you need to read.  */
618
619 static CORE_ADDR bp_location_shadow_len_after_address_max;
620
621 /* The locations that no longer correspond to any breakpoint, unlinked
622    from bp_location array, but for which a hit may still be reported
623    by a target.  */
624 VEC(bp_location_p) *moribund_locations = NULL;
625
626 /* Number of last breakpoint made.  */
627
628 static int breakpoint_count;
629
630 /* The value of `breakpoint_count' before the last command that
631    created breakpoints.  If the last (break-like) command created more
632    than one breakpoint, then the difference between BREAKPOINT_COUNT
633    and PREV_BREAKPOINT_COUNT is more than one.  */
634 static int prev_breakpoint_count;
635
636 /* Number of last tracepoint made.  */
637
638 static int tracepoint_count;
639
640 static struct cmd_list_element *breakpoint_set_cmdlist;
641 static struct cmd_list_element *breakpoint_show_cmdlist;
642 struct cmd_list_element *save_cmdlist;
643
644 /* See declaration at breakpoint.h.  */
645
646 struct breakpoint *
647 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
648                     void *user_data)
649 {
650   struct breakpoint *b = NULL;
651
652   ALL_BREAKPOINTS (b)
653     {
654       if (func (b, user_data) != 0)
655         break;
656     }
657
658   return b;
659 }
660
661 /* Return whether a breakpoint is an active enabled breakpoint.  */
662 static int
663 breakpoint_enabled (struct breakpoint *b)
664 {
665   return (b->enable_state == bp_enabled);
666 }
667
668 /* Set breakpoint count to NUM.  */
669
670 static void
671 set_breakpoint_count (int num)
672 {
673   prev_breakpoint_count = breakpoint_count;
674   breakpoint_count = num;
675   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
676 }
677
678 /* Used by `start_rbreak_breakpoints' below, to record the current
679    breakpoint count before "rbreak" creates any breakpoint.  */
680 static int rbreak_start_breakpoint_count;
681
682 /* Called at the start an "rbreak" command to record the first
683    breakpoint made.  */
684
685 void
686 start_rbreak_breakpoints (void)
687 {
688   rbreak_start_breakpoint_count = breakpoint_count;
689 }
690
691 /* Called at the end of an "rbreak" command to record the last
692    breakpoint made.  */
693
694 void
695 end_rbreak_breakpoints (void)
696 {
697   prev_breakpoint_count = rbreak_start_breakpoint_count;
698 }
699
700 /* Used in run_command to zero the hit count when a new run starts.  */
701
702 void
703 clear_breakpoint_hit_counts (void)
704 {
705   struct breakpoint *b;
706
707   ALL_BREAKPOINTS (b)
708     b->hit_count = 0;
709 }
710
711 /* Allocate a new counted_command_line with reference count of 1.
712    The new structure owns COMMANDS.  */
713
714 static struct counted_command_line *
715 alloc_counted_command_line (struct command_line *commands)
716 {
717   struct counted_command_line *result
718     = xmalloc (sizeof (struct counted_command_line));
719
720   result->refc = 1;
721   result->commands = commands;
722   return result;
723 }
724
725 /* Increment reference count.  This does nothing if CMD is NULL.  */
726
727 static void
728 incref_counted_command_line (struct counted_command_line *cmd)
729 {
730   if (cmd)
731     ++cmd->refc;
732 }
733
734 /* Decrement reference count.  If the reference count reaches 0,
735    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
736    nothing if *CMDP is NULL.  */
737
738 static void
739 decref_counted_command_line (struct counted_command_line **cmdp)
740 {
741   if (*cmdp)
742     {
743       if (--(*cmdp)->refc == 0)
744         {
745           free_command_lines (&(*cmdp)->commands);
746           xfree (*cmdp);
747         }
748       *cmdp = NULL;
749     }
750 }
751
752 /* A cleanup function that calls decref_counted_command_line.  */
753
754 static void
755 do_cleanup_counted_command_line (void *arg)
756 {
757   decref_counted_command_line (arg);
758 }
759
760 /* Create a cleanup that calls decref_counted_command_line on the
761    argument.  */
762
763 static struct cleanup *
764 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
765 {
766   return make_cleanup (do_cleanup_counted_command_line, cmdp);
767 }
768
769 \f
770 /* Return the breakpoint with the specified number, or NULL
771    if the number does not refer to an existing breakpoint.  */
772
773 struct breakpoint *
774 get_breakpoint (int num)
775 {
776   struct breakpoint *b;
777
778   ALL_BREAKPOINTS (b)
779     if (b->number == num)
780       return b;
781   
782   return NULL;
783 }
784
785 \f
786
787 /* Mark locations as "conditions have changed" in case the target supports
788    evaluating conditions on its side.  */
789
790 static void
791 mark_breakpoint_modified (struct breakpoint *b)
792 {
793   struct bp_location *loc;
794
795   /* This is only meaningful if the target is
796      evaluating conditions and if the user has
797      opted for condition evaluation on the target's
798      side.  */
799   if (gdb_evaluates_breakpoint_condition_p ()
800       || !target_supports_evaluation_of_breakpoint_conditions ())
801     return;
802
803   if (!is_breakpoint (b))
804     return;
805
806   for (loc = b->loc; loc; loc = loc->next)
807     loc->condition_changed = condition_modified;
808 }
809
810 /* Mark location as "conditions have changed" in case the target supports
811    evaluating conditions on its side.  */
812
813 static void
814 mark_breakpoint_location_modified (struct bp_location *loc)
815 {
816   /* This is only meaningful if the target is
817      evaluating conditions and if the user has
818      opted for condition evaluation on the target's
819      side.  */
820   if (gdb_evaluates_breakpoint_condition_p ()
821       || !target_supports_evaluation_of_breakpoint_conditions ())
822
823     return;
824
825   if (!is_breakpoint (loc->owner))
826     return;
827
828   loc->condition_changed = condition_modified;
829 }
830
831 /* Sets the condition-evaluation mode using the static global
832    condition_evaluation_mode.  */
833
834 static void
835 set_condition_evaluation_mode (char *args, int from_tty,
836                                struct cmd_list_element *c)
837 {
838   const char *old_mode, *new_mode;
839
840   if ((condition_evaluation_mode_1 == condition_evaluation_target)
841       && !target_supports_evaluation_of_breakpoint_conditions ())
842     {
843       condition_evaluation_mode_1 = condition_evaluation_mode;
844       warning (_("Target does not support breakpoint condition evaluation.\n"
845                  "Using host evaluation mode instead."));
846       return;
847     }
848
849   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
850   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
851
852   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
853      settings was "auto".  */
854   condition_evaluation_mode = condition_evaluation_mode_1;
855
856   /* Only update the mode if the user picked a different one.  */
857   if (new_mode != old_mode)
858     {
859       struct bp_location *loc, **loc_tmp;
860       /* If the user switched to a different evaluation mode, we
861          need to synch the changes with the target as follows:
862
863          "host" -> "target": Send all (valid) conditions to the target.
864          "target" -> "host": Remove all the conditions from the target.
865       */
866
867       if (new_mode == condition_evaluation_target)
868         {
869           /* Mark everything modified and synch conditions with the
870              target.  */
871           ALL_BP_LOCATIONS (loc, loc_tmp)
872             mark_breakpoint_location_modified (loc);
873         }
874       else
875         {
876           /* Manually mark non-duplicate locations to synch conditions
877              with the target.  We do this to remove all the conditions the
878              target knows about.  */
879           ALL_BP_LOCATIONS (loc, loc_tmp)
880             if (is_breakpoint (loc->owner) && loc->inserted)
881               loc->needs_update = 1;
882         }
883
884       /* Do the update.  */
885       update_global_location_list (UGLL_MAY_INSERT);
886     }
887
888   return;
889 }
890
891 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
892    what "auto" is translating to.  */
893
894 static void
895 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
896                                 struct cmd_list_element *c, const char *value)
897 {
898   if (condition_evaluation_mode == condition_evaluation_auto)
899     fprintf_filtered (file,
900                       _("Breakpoint condition evaluation "
901                         "mode is %s (currently %s).\n"),
902                       value,
903                       breakpoint_condition_evaluation_mode ());
904   else
905     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
906                       value);
907 }
908
909 /* A comparison function for bp_location AP and BP that is used by
910    bsearch.  This comparison function only cares about addresses, unlike
911    the more general bp_location_compare function.  */
912
913 static int
914 bp_location_compare_addrs (const void *ap, const void *bp)
915 {
916   struct bp_location *a = *(void **) ap;
917   struct bp_location *b = *(void **) bp;
918
919   if (a->address == b->address)
920     return 0;
921   else
922     return ((a->address > b->address) - (a->address < b->address));
923 }
924
925 /* Helper function to skip all bp_locations with addresses
926    less than ADDRESS.  It returns the first bp_location that
927    is greater than or equal to ADDRESS.  If none is found, just
928    return NULL.  */
929
930 static struct bp_location **
931 get_first_locp_gte_addr (CORE_ADDR address)
932 {
933   struct bp_location dummy_loc;
934   struct bp_location *dummy_locp = &dummy_loc;
935   struct bp_location **locp_found = NULL;
936
937   /* Initialize the dummy location's address field.  */
938   memset (&dummy_loc, 0, sizeof (struct bp_location));
939   dummy_loc.address = address;
940
941   /* Find a close match to the first location at ADDRESS.  */
942   locp_found = bsearch (&dummy_locp, bp_location, bp_location_count,
943                         sizeof (struct bp_location **),
944                         bp_location_compare_addrs);
945
946   /* Nothing was found, nothing left to do.  */
947   if (locp_found == NULL)
948     return NULL;
949
950   /* We may have found a location that is at ADDRESS but is not the first in the
951      location's list.  Go backwards (if possible) and locate the first one.  */
952   while ((locp_found - 1) >= bp_location
953          && (*(locp_found - 1))->address == address)
954     locp_found--;
955
956   return locp_found;
957 }
958
959 void
960 set_breakpoint_condition (struct breakpoint *b, char *exp,
961                           int from_tty)
962 {
963   xfree (b->cond_string);
964   b->cond_string = NULL;
965
966   if (is_watchpoint (b))
967     {
968       struct watchpoint *w = (struct watchpoint *) b;
969
970       xfree (w->cond_exp);
971       w->cond_exp = NULL;
972     }
973   else
974     {
975       struct bp_location *loc;
976
977       for (loc = b->loc; loc; loc = loc->next)
978         {
979           xfree (loc->cond);
980           loc->cond = NULL;
981
982           /* No need to free the condition agent expression
983              bytecode (if we have one).  We will handle this
984              when we go through update_global_location_list.  */
985         }
986     }
987
988   if (*exp == 0)
989     {
990       if (from_tty)
991         printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
992     }
993   else
994     {
995       const char *arg = exp;
996
997       /* I don't know if it matters whether this is the string the user
998          typed in or the decompiled expression.  */
999       b->cond_string = xstrdup (arg);
1000       b->condition_not_parsed = 0;
1001
1002       if (is_watchpoint (b))
1003         {
1004           struct watchpoint *w = (struct watchpoint *) b;
1005
1006           innermost_block = NULL;
1007           arg = exp;
1008           w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1009           if (*arg)
1010             error (_("Junk at end of expression"));
1011           w->cond_exp_valid_block = innermost_block;
1012         }
1013       else
1014         {
1015           struct bp_location *loc;
1016
1017           for (loc = b->loc; loc; loc = loc->next)
1018             {
1019               arg = exp;
1020               loc->cond =
1021                 parse_exp_1 (&arg, loc->address,
1022                              block_for_pc (loc->address), 0);
1023               if (*arg)
1024                 error (_("Junk at end of expression"));
1025             }
1026         }
1027     }
1028   mark_breakpoint_modified (b);
1029
1030   observer_notify_breakpoint_modified (b);
1031 }
1032
1033 /* Completion for the "condition" command.  */
1034
1035 static VEC (char_ptr) *
1036 condition_completer (struct cmd_list_element *cmd,
1037                      const char *text, const char *word)
1038 {
1039   const char *space;
1040
1041   text = skip_spaces_const (text);
1042   space = skip_to_space_const (text);
1043   if (*space == '\0')
1044     {
1045       int len;
1046       struct breakpoint *b;
1047       VEC (char_ptr) *result = NULL;
1048
1049       if (text[0] == '$')
1050         {
1051           /* We don't support completion of history indices.  */
1052           if (isdigit (text[1]))
1053             return NULL;
1054           return complete_internalvar (&text[1]);
1055         }
1056
1057       /* We're completing the breakpoint number.  */
1058       len = strlen (text);
1059
1060       ALL_BREAKPOINTS (b)
1061         {
1062           char number[50];
1063
1064           xsnprintf (number, sizeof (number), "%d", b->number);
1065
1066           if (strncmp (number, text, len) == 0)
1067             VEC_safe_push (char_ptr, result, xstrdup (number));
1068         }
1069
1070       return result;
1071     }
1072
1073   /* We're completing the expression part.  */
1074   text = skip_spaces_const (space);
1075   return expression_completer (cmd, text, word);
1076 }
1077
1078 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1079
1080 static void
1081 condition_command (char *arg, int from_tty)
1082 {
1083   struct breakpoint *b;
1084   char *p;
1085   int bnum;
1086
1087   if (arg == 0)
1088     error_no_arg (_("breakpoint number"));
1089
1090   p = arg;
1091   bnum = get_number (&p);
1092   if (bnum == 0)
1093     error (_("Bad breakpoint argument: '%s'"), arg);
1094
1095   ALL_BREAKPOINTS (b)
1096     if (b->number == bnum)
1097       {
1098         /* Check if this breakpoint has a "stop" method implemented in an
1099            extension language.  This method and conditions entered into GDB
1100            from the CLI are mutually exclusive.  */
1101         const struct extension_language_defn *extlang
1102           = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1103
1104         if (extlang != NULL)
1105           {
1106             error (_("Only one stop condition allowed.  There is currently"
1107                      " a %s stop condition defined for this breakpoint."),
1108                    ext_lang_capitalized_name (extlang));
1109           }
1110         set_breakpoint_condition (b, p, from_tty);
1111
1112         if (is_breakpoint (b))
1113           update_global_location_list (UGLL_MAY_INSERT);
1114
1115         return;
1116       }
1117
1118   error (_("No breakpoint number %d."), bnum);
1119 }
1120
1121 /* Check that COMMAND do not contain commands that are suitable
1122    only for tracepoints and not suitable for ordinary breakpoints.
1123    Throw if any such commands is found.  */
1124
1125 static void
1126 check_no_tracepoint_commands (struct command_line *commands)
1127 {
1128   struct command_line *c;
1129
1130   for (c = commands; c; c = c->next)
1131     {
1132       int i;
1133
1134       if (c->control_type == while_stepping_control)
1135         error (_("The 'while-stepping' command can "
1136                  "only be used for tracepoints"));
1137
1138       for (i = 0; i < c->body_count; ++i)
1139         check_no_tracepoint_commands ((c->body_list)[i]);
1140
1141       /* Not that command parsing removes leading whitespace and comment
1142          lines and also empty lines.  So, we only need to check for
1143          command directly.  */
1144       if (strstr (c->line, "collect ") == c->line)
1145         error (_("The 'collect' command can only be used for tracepoints"));
1146
1147       if (strstr (c->line, "teval ") == c->line)
1148         error (_("The 'teval' command can only be used for tracepoints"));
1149     }
1150 }
1151
1152 /* Encapsulate tests for different types of tracepoints.  */
1153
1154 static int
1155 is_tracepoint_type (enum bptype type)
1156 {
1157   return (type == bp_tracepoint
1158           || type == bp_fast_tracepoint
1159           || type == bp_static_tracepoint);
1160 }
1161
1162 int
1163 is_tracepoint (const struct breakpoint *b)
1164 {
1165   return is_tracepoint_type (b->type);
1166 }
1167
1168 /* A helper function that validates that COMMANDS are valid for a
1169    breakpoint.  This function will throw an exception if a problem is
1170    found.  */
1171
1172 static void
1173 validate_commands_for_breakpoint (struct breakpoint *b,
1174                                   struct command_line *commands)
1175 {
1176   if (is_tracepoint (b))
1177     {
1178       struct tracepoint *t = (struct tracepoint *) b;
1179       struct command_line *c;
1180       struct command_line *while_stepping = 0;
1181
1182       /* Reset the while-stepping step count.  The previous commands
1183          might have included a while-stepping action, while the new
1184          ones might not.  */
1185       t->step_count = 0;
1186
1187       /* We need to verify that each top-level element of commands is
1188          valid for tracepoints, that there's at most one
1189          while-stepping element, and that the while-stepping's body
1190          has valid tracing commands excluding nested while-stepping.
1191          We also need to validate the tracepoint action line in the
1192          context of the tracepoint --- validate_actionline actually
1193          has side effects, like setting the tracepoint's
1194          while-stepping STEP_COUNT, in addition to checking if the
1195          collect/teval actions parse and make sense in the
1196          tracepoint's context.  */
1197       for (c = commands; c; c = c->next)
1198         {
1199           if (c->control_type == while_stepping_control)
1200             {
1201               if (b->type == bp_fast_tracepoint)
1202                 error (_("The 'while-stepping' command "
1203                          "cannot be used for fast tracepoint"));
1204               else if (b->type == bp_static_tracepoint)
1205                 error (_("The 'while-stepping' command "
1206                          "cannot be used for static tracepoint"));
1207
1208               if (while_stepping)
1209                 error (_("The 'while-stepping' command "
1210                          "can be used only once"));
1211               else
1212                 while_stepping = c;
1213             }
1214
1215           validate_actionline (c->line, b);
1216         }
1217       if (while_stepping)
1218         {
1219           struct command_line *c2;
1220
1221           gdb_assert (while_stepping->body_count == 1);
1222           c2 = while_stepping->body_list[0];
1223           for (; c2; c2 = c2->next)
1224             {
1225               if (c2->control_type == while_stepping_control)
1226                 error (_("The 'while-stepping' command cannot be nested"));
1227             }
1228         }
1229     }
1230   else
1231     {
1232       check_no_tracepoint_commands (commands);
1233     }
1234 }
1235
1236 /* Return a vector of all the static tracepoints set at ADDR.  The
1237    caller is responsible for releasing the vector.  */
1238
1239 VEC(breakpoint_p) *
1240 static_tracepoints_here (CORE_ADDR addr)
1241 {
1242   struct breakpoint *b;
1243   VEC(breakpoint_p) *found = 0;
1244   struct bp_location *loc;
1245
1246   ALL_BREAKPOINTS (b)
1247     if (b->type == bp_static_tracepoint)
1248       {
1249         for (loc = b->loc; loc; loc = loc->next)
1250           if (loc->address == addr)
1251             VEC_safe_push(breakpoint_p, found, b);
1252       }
1253
1254   return found;
1255 }
1256
1257 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1258    validate that only allowed commands are included.  */
1259
1260 void
1261 breakpoint_set_commands (struct breakpoint *b, 
1262                          struct command_line *commands)
1263 {
1264   validate_commands_for_breakpoint (b, commands);
1265
1266   decref_counted_command_line (&b->commands);
1267   b->commands = alloc_counted_command_line (commands);
1268   observer_notify_breakpoint_modified (b);
1269 }
1270
1271 /* Set the internal `silent' flag on the breakpoint.  Note that this
1272    is not the same as the "silent" that may appear in the breakpoint's
1273    commands.  */
1274
1275 void
1276 breakpoint_set_silent (struct breakpoint *b, int silent)
1277 {
1278   int old_silent = b->silent;
1279
1280   b->silent = silent;
1281   if (old_silent != silent)
1282     observer_notify_breakpoint_modified (b);
1283 }
1284
1285 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1286    breakpoint work for any thread.  */
1287
1288 void
1289 breakpoint_set_thread (struct breakpoint *b, int thread)
1290 {
1291   int old_thread = b->thread;
1292
1293   b->thread = thread;
1294   if (old_thread != thread)
1295     observer_notify_breakpoint_modified (b);
1296 }
1297
1298 /* Set the task for this breakpoint.  If TASK is 0, make the
1299    breakpoint work for any task.  */
1300
1301 void
1302 breakpoint_set_task (struct breakpoint *b, int task)
1303 {
1304   int old_task = b->task;
1305
1306   b->task = task;
1307   if (old_task != task)
1308     observer_notify_breakpoint_modified (b);
1309 }
1310
1311 void
1312 check_tracepoint_command (char *line, void *closure)
1313 {
1314   struct breakpoint *b = closure;
1315
1316   validate_actionline (line, b);
1317 }
1318
1319 /* A structure used to pass information through
1320    map_breakpoint_numbers.  */
1321
1322 struct commands_info
1323 {
1324   /* True if the command was typed at a tty.  */
1325   int from_tty;
1326
1327   /* The breakpoint range spec.  */
1328   char *arg;
1329
1330   /* Non-NULL if the body of the commands are being read from this
1331      already-parsed command.  */
1332   struct command_line *control;
1333
1334   /* The command lines read from the user, or NULL if they have not
1335      yet been read.  */
1336   struct counted_command_line *cmd;
1337 };
1338
1339 /* A callback for map_breakpoint_numbers that sets the commands for
1340    commands_command.  */
1341
1342 static void
1343 do_map_commands_command (struct breakpoint *b, void *data)
1344 {
1345   struct commands_info *info = data;
1346
1347   if (info->cmd == NULL)
1348     {
1349       struct command_line *l;
1350
1351       if (info->control != NULL)
1352         l = copy_command_lines (info->control->body_list[0]);
1353       else
1354         {
1355           struct cleanup *old_chain;
1356           char *str;
1357
1358           str = xstrprintf (_("Type commands for breakpoint(s) "
1359                               "%s, one per line."),
1360                             info->arg);
1361
1362           old_chain = make_cleanup (xfree, str);
1363
1364           l = read_command_lines (str,
1365                                   info->from_tty, 1,
1366                                   (is_tracepoint (b)
1367                                    ? check_tracepoint_command : 0),
1368                                   b);
1369
1370           do_cleanups (old_chain);
1371         }
1372
1373       info->cmd = alloc_counted_command_line (l);
1374     }
1375
1376   /* If a breakpoint was on the list more than once, we don't need to
1377      do anything.  */
1378   if (b->commands != info->cmd)
1379     {
1380       validate_commands_for_breakpoint (b, info->cmd->commands);
1381       incref_counted_command_line (info->cmd);
1382       decref_counted_command_line (&b->commands);
1383       b->commands = info->cmd;
1384       observer_notify_breakpoint_modified (b);
1385     }
1386 }
1387
1388 static void
1389 commands_command_1 (char *arg, int from_tty, 
1390                     struct command_line *control)
1391 {
1392   struct cleanup *cleanups;
1393   struct commands_info info;
1394
1395   info.from_tty = from_tty;
1396   info.control = control;
1397   info.cmd = NULL;
1398   /* If we read command lines from the user, then `info' will hold an
1399      extra reference to the commands that we must clean up.  */
1400   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1401
1402   if (arg == NULL || !*arg)
1403     {
1404       if (breakpoint_count - prev_breakpoint_count > 1)
1405         arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1, 
1406                           breakpoint_count);
1407       else if (breakpoint_count > 0)
1408         arg = xstrprintf ("%d", breakpoint_count);
1409       else
1410         {
1411           /* So that we don't try to free the incoming non-NULL
1412              argument in the cleanup below.  Mapping breakpoint
1413              numbers will fail in this case.  */
1414           arg = NULL;
1415         }
1416     }
1417   else
1418     /* The command loop has some static state, so we need to preserve
1419        our argument.  */
1420     arg = xstrdup (arg);
1421
1422   if (arg != NULL)
1423     make_cleanup (xfree, arg);
1424
1425   info.arg = arg;
1426
1427   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1428
1429   if (info.cmd == NULL)
1430     error (_("No breakpoints specified."));
1431
1432   do_cleanups (cleanups);
1433 }
1434
1435 static void
1436 commands_command (char *arg, int from_tty)
1437 {
1438   commands_command_1 (arg, from_tty, NULL);
1439 }
1440
1441 /* Like commands_command, but instead of reading the commands from
1442    input stream, takes them from an already parsed command structure.
1443
1444    This is used by cli-script.c to DTRT with breakpoint commands
1445    that are part of if and while bodies.  */
1446 enum command_control_type
1447 commands_from_control_command (char *arg, struct command_line *cmd)
1448 {
1449   commands_command_1 (arg, 0, cmd);
1450   return simple_control;
1451 }
1452
1453 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1454
1455 static int
1456 bp_location_has_shadow (struct bp_location *bl)
1457 {
1458   if (bl->loc_type != bp_loc_software_breakpoint)
1459     return 0;
1460   if (!bl->inserted)
1461     return 0;
1462   if (bl->target_info.shadow_len == 0)
1463     /* BL isn't valid, or doesn't shadow memory.  */
1464     return 0;
1465   return 1;
1466 }
1467
1468 /* Update BUF, which is LEN bytes read from the target address
1469    MEMADDR, by replacing a memory breakpoint with its shadowed
1470    contents.
1471
1472    If READBUF is not NULL, this buffer must not overlap with the of
1473    the breakpoint location's shadow_contents buffer.  Otherwise, a
1474    failed assertion internal error will be raised.  */
1475
1476 static void
1477 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1478                             const gdb_byte *writebuf_org,
1479                             ULONGEST memaddr, LONGEST len,
1480                             struct bp_target_info *target_info,
1481                             struct gdbarch *gdbarch)
1482 {
1483   /* Now do full processing of the found relevant range of elements.  */
1484   CORE_ADDR bp_addr = 0;
1485   int bp_size = 0;
1486   int bptoffset = 0;
1487
1488   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1489                                  current_program_space->aspace, 0))
1490     {
1491       /* The breakpoint is inserted in a different address space.  */
1492       return;
1493     }
1494
1495   /* Addresses and length of the part of the breakpoint that
1496      we need to copy.  */
1497   bp_addr = target_info->placed_address;
1498   bp_size = target_info->shadow_len;
1499
1500   if (bp_addr + bp_size <= memaddr)
1501     {
1502       /* The breakpoint is entirely before the chunk of memory we are
1503          reading.  */
1504       return;
1505     }
1506
1507   if (bp_addr >= memaddr + len)
1508     {
1509       /* The breakpoint is entirely after the chunk of memory we are
1510          reading.  */
1511       return;
1512     }
1513
1514   /* Offset within shadow_contents.  */
1515   if (bp_addr < memaddr)
1516     {
1517       /* Only copy the second part of the breakpoint.  */
1518       bp_size -= memaddr - bp_addr;
1519       bptoffset = memaddr - bp_addr;
1520       bp_addr = memaddr;
1521     }
1522
1523   if (bp_addr + bp_size > memaddr + len)
1524     {
1525       /* Only copy the first part of the breakpoint.  */
1526       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1527     }
1528
1529   if (readbuf != NULL)
1530     {
1531       /* Verify that the readbuf buffer does not overlap with the
1532          shadow_contents buffer.  */
1533       gdb_assert (target_info->shadow_contents >= readbuf + len
1534                   || readbuf >= (target_info->shadow_contents
1535                                  + target_info->shadow_len));
1536
1537       /* Update the read buffer with this inserted breakpoint's
1538          shadow.  */
1539       memcpy (readbuf + bp_addr - memaddr,
1540               target_info->shadow_contents + bptoffset, bp_size);
1541     }
1542   else
1543     {
1544       const unsigned char *bp;
1545       CORE_ADDR addr = target_info->reqstd_address;
1546       int placed_size;
1547
1548       /* Update the shadow with what we want to write to memory.  */
1549       memcpy (target_info->shadow_contents + bptoffset,
1550               writebuf_org + bp_addr - memaddr, bp_size);
1551
1552       /* Determine appropriate breakpoint contents and size for this
1553          address.  */
1554       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1555
1556       /* Update the final write buffer with this inserted
1557          breakpoint's INSN.  */
1558       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1559     }
1560 }
1561
1562 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1563    by replacing any memory breakpoints with their shadowed contents.
1564
1565    If READBUF is not NULL, this buffer must not overlap with any of
1566    the breakpoint location's shadow_contents buffers.  Otherwise,
1567    a failed assertion internal error will be raised.
1568
1569    The range of shadowed area by each bp_location is:
1570      bl->address - bp_location_placed_address_before_address_max
1571      up to bl->address + bp_location_shadow_len_after_address_max
1572    The range we were requested to resolve shadows for is:
1573      memaddr ... memaddr + len
1574    Thus the safe cutoff boundaries for performance optimization are
1575      memaddr + len <= (bl->address
1576                        - bp_location_placed_address_before_address_max)
1577    and:
1578      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1579
1580 void
1581 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1582                         const gdb_byte *writebuf_org,
1583                         ULONGEST memaddr, LONGEST len)
1584 {
1585   /* Left boundary, right boundary and median element of our binary
1586      search.  */
1587   unsigned bc_l, bc_r, bc;
1588   size_t i;
1589
1590   /* Find BC_L which is a leftmost element which may affect BUF
1591      content.  It is safe to report lower value but a failure to
1592      report higher one.  */
1593
1594   bc_l = 0;
1595   bc_r = bp_location_count;
1596   while (bc_l + 1 < bc_r)
1597     {
1598       struct bp_location *bl;
1599
1600       bc = (bc_l + bc_r) / 2;
1601       bl = bp_location[bc];
1602
1603       /* Check first BL->ADDRESS will not overflow due to the added
1604          constant.  Then advance the left boundary only if we are sure
1605          the BC element can in no way affect the BUF content (MEMADDR
1606          to MEMADDR + LEN range).
1607
1608          Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1609          offset so that we cannot miss a breakpoint with its shadow
1610          range tail still reaching MEMADDR.  */
1611
1612       if ((bl->address + bp_location_shadow_len_after_address_max
1613            >= bl->address)
1614           && (bl->address + bp_location_shadow_len_after_address_max
1615               <= memaddr))
1616         bc_l = bc;
1617       else
1618         bc_r = bc;
1619     }
1620
1621   /* Due to the binary search above, we need to make sure we pick the
1622      first location that's at BC_L's address.  E.g., if there are
1623      multiple locations at the same address, BC_L may end up pointing
1624      at a duplicate location, and miss the "master"/"inserted"
1625      location.  Say, given locations L1, L2 and L3 at addresses A and
1626      B:
1627
1628       L1@A, L2@A, L3@B, ...
1629
1630      BC_L could end up pointing at location L2, while the "master"
1631      location could be L1.  Since the `loc->inserted' flag is only set
1632      on "master" locations, we'd forget to restore the shadow of L1
1633      and L2.  */
1634   while (bc_l > 0
1635          && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1636     bc_l--;
1637
1638   /* Now do full processing of the found relevant range of elements.  */
1639
1640   for (bc = bc_l; bc < bp_location_count; bc++)
1641   {
1642     struct bp_location *bl = bp_location[bc];
1643     CORE_ADDR bp_addr = 0;
1644     int bp_size = 0;
1645     int bptoffset = 0;
1646
1647     /* bp_location array has BL->OWNER always non-NULL.  */
1648     if (bl->owner->type == bp_none)
1649       warning (_("reading through apparently deleted breakpoint #%d?"),
1650                bl->owner->number);
1651
1652     /* Performance optimization: any further element can no longer affect BUF
1653        content.  */
1654
1655     if (bl->address >= bp_location_placed_address_before_address_max
1656         && memaddr + len <= (bl->address
1657                              - bp_location_placed_address_before_address_max))
1658       break;
1659
1660     if (!bp_location_has_shadow (bl))
1661       continue;
1662
1663     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1664                                 memaddr, len, &bl->target_info, bl->gdbarch);
1665   }
1666 }
1667
1668 \f
1669
1670 /* Return true if BPT is either a software breakpoint or a hardware
1671    breakpoint.  */
1672
1673 int
1674 is_breakpoint (const struct breakpoint *bpt)
1675 {
1676   return (bpt->type == bp_breakpoint
1677           || bpt->type == bp_hardware_breakpoint
1678           || bpt->type == bp_dprintf);
1679 }
1680
1681 /* Return true if BPT is of any hardware watchpoint kind.  */
1682
1683 static int
1684 is_hardware_watchpoint (const struct breakpoint *bpt)
1685 {
1686   return (bpt->type == bp_hardware_watchpoint
1687           || bpt->type == bp_read_watchpoint
1688           || bpt->type == bp_access_watchpoint);
1689 }
1690
1691 /* Return true if BPT is of any watchpoint kind, hardware or
1692    software.  */
1693
1694 int
1695 is_watchpoint (const struct breakpoint *bpt)
1696 {
1697   return (is_hardware_watchpoint (bpt)
1698           || bpt->type == bp_watchpoint);
1699 }
1700
1701 /* Returns true if the current thread and its running state are safe
1702    to evaluate or update watchpoint B.  Watchpoints on local
1703    expressions need to be evaluated in the context of the thread that
1704    was current when the watchpoint was created, and, that thread needs
1705    to be stopped to be able to select the correct frame context.
1706    Watchpoints on global expressions can be evaluated on any thread,
1707    and in any state.  It is presently left to the target allowing
1708    memory accesses when threads are running.  */
1709
1710 static int
1711 watchpoint_in_thread_scope (struct watchpoint *b)
1712 {
1713   return (b->base.pspace == current_program_space
1714           && (ptid_equal (b->watchpoint_thread, null_ptid)
1715               || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1716                   && !is_executing (inferior_ptid))));
1717 }
1718
1719 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1720    associated bp_watchpoint_scope breakpoint.  */
1721
1722 static void
1723 watchpoint_del_at_next_stop (struct watchpoint *w)
1724 {
1725   struct breakpoint *b = &w->base;
1726
1727   if (b->related_breakpoint != b)
1728     {
1729       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1730       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1731       b->related_breakpoint->disposition = disp_del_at_next_stop;
1732       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1733       b->related_breakpoint = b;
1734     }
1735   b->disposition = disp_del_at_next_stop;
1736 }
1737
1738 /* Extract a bitfield value from value VAL using the bit parameters contained in
1739    watchpoint W.  */
1740
1741 static struct value *
1742 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1743 {
1744   struct value *bit_val;
1745
1746   if (val == NULL)
1747     return NULL;
1748
1749   bit_val = allocate_value (value_type (val));
1750
1751   unpack_value_bitfield (bit_val,
1752                          w->val_bitpos,
1753                          w->val_bitsize,
1754                          value_contents_for_printing (val),
1755                          value_offset (val),
1756                          val);
1757
1758   return bit_val;
1759 }
1760
1761 /* Assuming that B is a watchpoint:
1762    - Reparse watchpoint expression, if REPARSE is non-zero
1763    - Evaluate expression and store the result in B->val
1764    - Evaluate the condition if there is one, and store the result
1765      in b->loc->cond.
1766    - Update the list of values that must be watched in B->loc.
1767
1768    If the watchpoint disposition is disp_del_at_next_stop, then do
1769    nothing.  If this is local watchpoint that is out of scope, delete
1770    it.
1771
1772    Even with `set breakpoint always-inserted on' the watchpoints are
1773    removed + inserted on each stop here.  Normal breakpoints must
1774    never be removed because they might be missed by a running thread
1775    when debugging in non-stop mode.  On the other hand, hardware
1776    watchpoints (is_hardware_watchpoint; processed here) are specific
1777    to each LWP since they are stored in each LWP's hardware debug
1778    registers.  Therefore, such LWP must be stopped first in order to
1779    be able to modify its hardware watchpoints.
1780
1781    Hardware watchpoints must be reset exactly once after being
1782    presented to the user.  It cannot be done sooner, because it would
1783    reset the data used to present the watchpoint hit to the user.  And
1784    it must not be done later because it could display the same single
1785    watchpoint hit during multiple GDB stops.  Note that the latter is
1786    relevant only to the hardware watchpoint types bp_read_watchpoint
1787    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1788    not user-visible - its hit is suppressed if the memory content has
1789    not changed.
1790
1791    The following constraints influence the location where we can reset
1792    hardware watchpoints:
1793
1794    * target_stopped_by_watchpoint and target_stopped_data_address are
1795      called several times when GDB stops.
1796
1797    [linux] 
1798    * Multiple hardware watchpoints can be hit at the same time,
1799      causing GDB to stop.  GDB only presents one hardware watchpoint
1800      hit at a time as the reason for stopping, and all the other hits
1801      are presented later, one after the other, each time the user
1802      requests the execution to be resumed.  Execution is not resumed
1803      for the threads still having pending hit event stored in
1804      LWP_INFO->STATUS.  While the watchpoint is already removed from
1805      the inferior on the first stop the thread hit event is kept being
1806      reported from its cached value by linux_nat_stopped_data_address
1807      until the real thread resume happens after the watchpoint gets
1808      presented and thus its LWP_INFO->STATUS gets reset.
1809
1810    Therefore the hardware watchpoint hit can get safely reset on the
1811    watchpoint removal from inferior.  */
1812
1813 static void
1814 update_watchpoint (struct watchpoint *b, int reparse)
1815 {
1816   int within_current_scope;
1817   struct frame_id saved_frame_id;
1818   int frame_saved;
1819
1820   /* If this is a local watchpoint, we only want to check if the
1821      watchpoint frame is in scope if the current thread is the thread
1822      that was used to create the watchpoint.  */
1823   if (!watchpoint_in_thread_scope (b))
1824     return;
1825
1826   if (b->base.disposition == disp_del_at_next_stop)
1827     return;
1828  
1829   frame_saved = 0;
1830
1831   /* Determine if the watchpoint is within scope.  */
1832   if (b->exp_valid_block == NULL)
1833     within_current_scope = 1;
1834   else
1835     {
1836       struct frame_info *fi = get_current_frame ();
1837       struct gdbarch *frame_arch = get_frame_arch (fi);
1838       CORE_ADDR frame_pc = get_frame_pc (fi);
1839
1840       /* If we're in a function epilogue, unwinding may not work
1841          properly, so do not attempt to recreate locations at this
1842          point.  See similar comments in watchpoint_check.  */
1843       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
1844         return;
1845
1846       /* Save the current frame's ID so we can restore it after
1847          evaluating the watchpoint expression on its own frame.  */
1848       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1849          took a frame parameter, so that we didn't have to change the
1850          selected frame.  */
1851       frame_saved = 1;
1852       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1853
1854       fi = frame_find_by_id (b->watchpoint_frame);
1855       within_current_scope = (fi != NULL);
1856       if (within_current_scope)
1857         select_frame (fi);
1858     }
1859
1860   /* We don't free locations.  They are stored in the bp_location array
1861      and update_global_location_list will eventually delete them and
1862      remove breakpoints if needed.  */
1863   b->base.loc = NULL;
1864
1865   if (within_current_scope && reparse)
1866     {
1867       const char *s;
1868
1869       if (b->exp)
1870         {
1871           xfree (b->exp);
1872           b->exp = NULL;
1873         }
1874       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1875       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1876       /* If the meaning of expression itself changed, the old value is
1877          no longer relevant.  We don't want to report a watchpoint hit
1878          to the user when the old value and the new value may actually
1879          be completely different objects.  */
1880       value_free (b->val);
1881       b->val = NULL;
1882       b->val_valid = 0;
1883
1884       /* Note that unlike with breakpoints, the watchpoint's condition
1885          expression is stored in the breakpoint object, not in the
1886          locations (re)created below.  */
1887       if (b->base.cond_string != NULL)
1888         {
1889           if (b->cond_exp != NULL)
1890             {
1891               xfree (b->cond_exp);
1892               b->cond_exp = NULL;
1893             }
1894
1895           s = b->base.cond_string;
1896           b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1897         }
1898     }
1899
1900   /* If we failed to parse the expression, for example because
1901      it refers to a global variable in a not-yet-loaded shared library,
1902      don't try to insert watchpoint.  We don't automatically delete
1903      such watchpoint, though, since failure to parse expression
1904      is different from out-of-scope watchpoint.  */
1905   if (!target_has_execution)
1906     {
1907       /* Without execution, memory can't change.  No use to try and
1908          set watchpoint locations.  The watchpoint will be reset when
1909          the target gains execution, through breakpoint_re_set.  */
1910       if (!can_use_hw_watchpoints)
1911         {
1912           if (b->base.ops->works_in_software_mode (&b->base))
1913             b->base.type = bp_watchpoint;
1914           else
1915             error (_("Can't set read/access watchpoint when "
1916                      "hardware watchpoints are disabled."));
1917         }
1918     }
1919   else if (within_current_scope && b->exp)
1920     {
1921       int pc = 0;
1922       struct value *val_chain, *v, *result, *next;
1923       struct program_space *frame_pspace;
1924
1925       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1926
1927       /* Avoid setting b->val if it's already set.  The meaning of
1928          b->val is 'the last value' user saw, and we should update
1929          it only if we reported that last value to user.  As it
1930          happens, the code that reports it updates b->val directly.
1931          We don't keep track of the memory value for masked
1932          watchpoints.  */
1933       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1934         {
1935           if (b->val_bitsize != 0)
1936             {
1937               v = extract_bitfield_from_watchpoint_value (b, v);
1938               if (v != NULL)
1939                 release_value (v);
1940             }
1941           b->val = v;
1942           b->val_valid = 1;
1943         }
1944
1945       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1946
1947       /* Look at each value on the value chain.  */
1948       for (v = val_chain; v; v = value_next (v))
1949         {
1950           /* If it's a memory location, and GDB actually needed
1951              its contents to evaluate the expression, then we
1952              must watch it.  If the first value returned is
1953              still lazy, that means an error occurred reading it;
1954              watch it anyway in case it becomes readable.  */
1955           if (VALUE_LVAL (v) == lval_memory
1956               && (v == val_chain || ! value_lazy (v)))
1957             {
1958               struct type *vtype = check_typedef (value_type (v));
1959
1960               /* We only watch structs and arrays if user asked
1961                  for it explicitly, never if they just happen to
1962                  appear in the middle of some value chain.  */
1963               if (v == result
1964                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
1965                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
1966                 {
1967                   CORE_ADDR addr;
1968                   int type;
1969                   struct bp_location *loc, **tmp;
1970                   int bitpos = 0, bitsize = 0;
1971
1972                   if (value_bitsize (v) != 0)
1973                     {
1974                       /* Extract the bit parameters out from the bitfield
1975                          sub-expression.  */
1976                       bitpos = value_bitpos (v);
1977                       bitsize = value_bitsize (v);
1978                     }
1979                   else if (v == result && b->val_bitsize != 0)
1980                     {
1981                      /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
1982                         lvalue whose bit parameters are saved in the fields
1983                         VAL_BITPOS and VAL_BITSIZE.  */
1984                       bitpos = b->val_bitpos;
1985                       bitsize = b->val_bitsize;
1986                     }
1987
1988                   addr = value_address (v);
1989                   if (bitsize != 0)
1990                     {
1991                       /* Skip the bytes that don't contain the bitfield.  */
1992                       addr += bitpos / 8;
1993                     }
1994
1995                   type = hw_write;
1996                   if (b->base.type == bp_read_watchpoint)
1997                     type = hw_read;
1998                   else if (b->base.type == bp_access_watchpoint)
1999                     type = hw_access;
2000
2001                   loc = allocate_bp_location (&b->base);
2002                   for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2003                     ;
2004                   *tmp = loc;
2005                   loc->gdbarch = get_type_arch (value_type (v));
2006
2007                   loc->pspace = frame_pspace;
2008                   loc->address = addr;
2009
2010                   if (bitsize != 0)
2011                     {
2012                       /* Just cover the bytes that make up the bitfield.  */
2013                       loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2014                     }
2015                   else
2016                     loc->length = TYPE_LENGTH (value_type (v));
2017
2018                   loc->watchpoint_type = type;
2019                 }
2020             }
2021         }
2022
2023       /* Change the type of breakpoint between hardware assisted or
2024          an ordinary watchpoint depending on the hardware support
2025          and free hardware slots.  REPARSE is set when the inferior
2026          is started.  */
2027       if (reparse)
2028         {
2029           int reg_cnt;
2030           enum bp_loc_type loc_type;
2031           struct bp_location *bl;
2032
2033           reg_cnt = can_use_hardware_watchpoint (val_chain);
2034
2035           if (reg_cnt)
2036             {
2037               int i, target_resources_ok, other_type_used;
2038               enum bptype type;
2039
2040               /* Use an exact watchpoint when there's only one memory region to be
2041                  watched, and only one debug register is needed to watch it.  */
2042               b->exact = target_exact_watchpoints && reg_cnt == 1;
2043
2044               /* We need to determine how many resources are already
2045                  used for all other hardware watchpoints plus this one
2046                  to see if we still have enough resources to also fit
2047                  this watchpoint in as well.  */
2048
2049               /* If this is a software watchpoint, we try to turn it
2050                  to a hardware one -- count resources as if B was of
2051                  hardware watchpoint type.  */
2052               type = b->base.type;
2053               if (type == bp_watchpoint)
2054                 type = bp_hardware_watchpoint;
2055
2056               /* This watchpoint may or may not have been placed on
2057                  the list yet at this point (it won't be in the list
2058                  if we're trying to create it for the first time,
2059                  through watch_command), so always account for it
2060                  manually.  */
2061
2062               /* Count resources used by all watchpoints except B.  */
2063               i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2064
2065               /* Add in the resources needed for B.  */
2066               i += hw_watchpoint_use_count (&b->base);
2067
2068               target_resources_ok
2069                 = target_can_use_hardware_watchpoint (type, i, other_type_used);
2070               if (target_resources_ok <= 0)
2071                 {
2072                   int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2073
2074                   if (target_resources_ok == 0 && !sw_mode)
2075                     error (_("Target does not support this type of "
2076                              "hardware watchpoint."));
2077                   else if (target_resources_ok < 0 && !sw_mode)
2078                     error (_("There are not enough available hardware "
2079                              "resources for this watchpoint."));
2080
2081                   /* Downgrade to software watchpoint.  */
2082                   b->base.type = bp_watchpoint;
2083                 }
2084               else
2085                 {
2086                   /* If this was a software watchpoint, we've just
2087                      found we have enough resources to turn it to a
2088                      hardware watchpoint.  Otherwise, this is a
2089                      nop.  */
2090                   b->base.type = type;
2091                 }
2092             }
2093           else if (!b->base.ops->works_in_software_mode (&b->base))
2094             {
2095               if (!can_use_hw_watchpoints)
2096                 error (_("Can't set read/access watchpoint when "
2097                          "hardware watchpoints are disabled."));
2098               else
2099                 error (_("Expression cannot be implemented with "
2100                          "read/access watchpoint."));
2101             }
2102           else
2103             b->base.type = bp_watchpoint;
2104
2105           loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2106                       : bp_loc_hardware_watchpoint);
2107           for (bl = b->base.loc; bl; bl = bl->next)
2108             bl->loc_type = loc_type;
2109         }
2110
2111       for (v = val_chain; v; v = next)
2112         {
2113           next = value_next (v);
2114           if (v != b->val)
2115             value_free (v);
2116         }
2117
2118       /* If a software watchpoint is not watching any memory, then the
2119          above left it without any location set up.  But,
2120          bpstat_stop_status requires a location to be able to report
2121          stops, so make sure there's at least a dummy one.  */
2122       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2123         {
2124           struct breakpoint *base = &b->base;
2125           base->loc = allocate_bp_location (base);
2126           base->loc->pspace = frame_pspace;
2127           base->loc->address = -1;
2128           base->loc->length = -1;
2129           base->loc->watchpoint_type = -1;
2130         }
2131     }
2132   else if (!within_current_scope)
2133     {
2134       printf_filtered (_("\
2135 Watchpoint %d deleted because the program has left the block\n\
2136 in which its expression is valid.\n"),
2137                        b->base.number);
2138       watchpoint_del_at_next_stop (b);
2139     }
2140
2141   /* Restore the selected frame.  */
2142   if (frame_saved)
2143     select_frame (frame_find_by_id (saved_frame_id));
2144 }
2145
2146
2147 /* Returns 1 iff breakpoint location should be
2148    inserted in the inferior.  We don't differentiate the type of BL's owner
2149    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2150    breakpoint_ops is not defined, because in insert_bp_location,
2151    tracepoint's insert_location will not be called.  */
2152 static int
2153 should_be_inserted (struct bp_location *bl)
2154 {
2155   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2156     return 0;
2157
2158   if (bl->owner->disposition == disp_del_at_next_stop)
2159     return 0;
2160
2161   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2162     return 0;
2163
2164   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2165     return 0;
2166
2167   /* This is set for example, when we're attached to the parent of a
2168      vfork, and have detached from the child.  The child is running
2169      free, and we expect it to do an exec or exit, at which point the
2170      OS makes the parent schedulable again (and the target reports
2171      that the vfork is done).  Until the child is done with the shared
2172      memory region, do not insert breakpoints in the parent, otherwise
2173      the child could still trip on the parent's breakpoints.  Since
2174      the parent is blocked anyway, it won't miss any breakpoint.  */
2175   if (bl->pspace->breakpoints_not_allowed)
2176     return 0;
2177
2178   /* Don't insert a breakpoint if we're trying to step past its
2179      location.  */
2180   if ((bl->loc_type == bp_loc_software_breakpoint
2181        || bl->loc_type == bp_loc_hardware_breakpoint)
2182       && stepping_past_instruction_at (bl->pspace->aspace,
2183                                        bl->address))
2184     {
2185       if (debug_infrun)
2186         {
2187           fprintf_unfiltered (gdb_stdlog,
2188                               "infrun: skipping breakpoint: "
2189                               "stepping past insn at: %s\n",
2190                               paddress (bl->gdbarch, bl->address));
2191         }
2192       return 0;
2193     }
2194
2195   /* Don't insert watchpoints if we're trying to step past the
2196      instruction that triggered one.  */
2197   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2198       && stepping_past_nonsteppable_watchpoint ())
2199     {
2200       if (debug_infrun)
2201         {
2202           fprintf_unfiltered (gdb_stdlog,
2203                               "infrun: stepping past non-steppable watchpoint. "
2204                               "skipping watchpoint at %s:%d\n",
2205                               paddress (bl->gdbarch, bl->address),
2206                               bl->length);
2207         }
2208       return 0;
2209     }
2210
2211   return 1;
2212 }
2213
2214 /* Same as should_be_inserted but does the check assuming
2215    that the location is not duplicated.  */
2216
2217 static int
2218 unduplicated_should_be_inserted (struct bp_location *bl)
2219 {
2220   int result;
2221   const int save_duplicate = bl->duplicate;
2222
2223   bl->duplicate = 0;
2224   result = should_be_inserted (bl);
2225   bl->duplicate = save_duplicate;
2226   return result;
2227 }
2228
2229 /* Parses a conditional described by an expression COND into an
2230    agent expression bytecode suitable for evaluation
2231    by the bytecode interpreter.  Return NULL if there was
2232    any error during parsing.  */
2233
2234 static struct agent_expr *
2235 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2236 {
2237   struct agent_expr *aexpr = NULL;
2238
2239   if (!cond)
2240     return NULL;
2241
2242   /* We don't want to stop processing, so catch any errors
2243      that may show up.  */
2244   TRY
2245     {
2246       aexpr = gen_eval_for_expr (scope, cond);
2247     }
2248
2249   CATCH (ex, RETURN_MASK_ERROR)
2250     {
2251       /* If we got here, it means the condition could not be parsed to a valid
2252          bytecode expression and thus can't be evaluated on the target's side.
2253          It's no use iterating through the conditions.  */
2254       return NULL;
2255     }
2256   END_CATCH
2257
2258   /* We have a valid agent expression.  */
2259   return aexpr;
2260 }
2261
2262 /* Based on location BL, create a list of breakpoint conditions to be
2263    passed on to the target.  If we have duplicated locations with different
2264    conditions, we will add such conditions to the list.  The idea is that the
2265    target will evaluate the list of conditions and will only notify GDB when
2266    one of them is true.  */
2267
2268 static void
2269 build_target_condition_list (struct bp_location *bl)
2270 {
2271   struct bp_location **locp = NULL, **loc2p;
2272   int null_condition_or_parse_error = 0;
2273   int modified = bl->needs_update;
2274   struct bp_location *loc;
2275
2276   /* Release conditions left over from a previous insert.  */
2277   VEC_free (agent_expr_p, bl->target_info.conditions);
2278
2279   /* This is only meaningful if the target is
2280      evaluating conditions and if the user has
2281      opted for condition evaluation on the target's
2282      side.  */
2283   if (gdb_evaluates_breakpoint_condition_p ()
2284       || !target_supports_evaluation_of_breakpoint_conditions ())
2285     return;
2286
2287   /* Do a first pass to check for locations with no assigned
2288      conditions or conditions that fail to parse to a valid agent expression
2289      bytecode.  If any of these happen, then it's no use to send conditions
2290      to the target since this location will always trigger and generate a
2291      response back to GDB.  */
2292   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2293     {
2294       loc = (*loc2p);
2295       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2296         {
2297           if (modified)
2298             {
2299               struct agent_expr *aexpr;
2300
2301               /* Re-parse the conditions since something changed.  In that
2302                  case we already freed the condition bytecodes (see
2303                  force_breakpoint_reinsertion).  We just
2304                  need to parse the condition to bytecodes again.  */
2305               aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2306               loc->cond_bytecode = aexpr;
2307
2308               /* Check if we managed to parse the conditional expression
2309                  correctly.  If not, we will not send this condition
2310                  to the target.  */
2311               if (aexpr)
2312                 continue;
2313             }
2314
2315           /* If we have a NULL bytecode expression, it means something
2316              went wrong or we have a null condition expression.  */
2317           if (!loc->cond_bytecode)
2318             {
2319               null_condition_or_parse_error = 1;
2320               break;
2321             }
2322         }
2323     }
2324
2325   /* If any of these happened, it means we will have to evaluate the conditions
2326      for the location's address on gdb's side.  It is no use keeping bytecodes
2327      for all the other duplicate locations, thus we free all of them here.
2328
2329      This is so we have a finer control over which locations' conditions are
2330      being evaluated by GDB or the remote stub.  */
2331   if (null_condition_or_parse_error)
2332     {
2333       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2334         {
2335           loc = (*loc2p);
2336           if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2337             {
2338               /* Only go as far as the first NULL bytecode is
2339                  located.  */
2340               if (!loc->cond_bytecode)
2341                 return;
2342
2343               free_agent_expr (loc->cond_bytecode);
2344               loc->cond_bytecode = NULL;
2345             }
2346         }
2347     }
2348
2349   /* No NULL conditions or failed bytecode generation.  Build a condition list
2350      for this location's address.  */
2351   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2352     {
2353       loc = (*loc2p);
2354       if (loc->cond
2355           && is_breakpoint (loc->owner)
2356           && loc->pspace->num == bl->pspace->num
2357           && loc->owner->enable_state == bp_enabled
2358           && loc->enabled)
2359         /* Add the condition to the vector.  This will be used later to send the
2360            conditions to the target.  */
2361         VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2362                        loc->cond_bytecode);
2363     }
2364
2365   return;
2366 }
2367
2368 /* Parses a command described by string CMD into an agent expression
2369    bytecode suitable for evaluation by the bytecode interpreter.
2370    Return NULL if there was any error during parsing.  */
2371
2372 static struct agent_expr *
2373 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2374 {
2375   struct cleanup *old_cleanups = 0;
2376   struct expression *expr, **argvec;
2377   struct agent_expr *aexpr = NULL;
2378   const char *cmdrest;
2379   const char *format_start, *format_end;
2380   struct format_piece *fpieces;
2381   int nargs;
2382   struct gdbarch *gdbarch = get_current_arch ();
2383
2384   if (!cmd)
2385     return NULL;
2386
2387   cmdrest = cmd;
2388
2389   if (*cmdrest == ',')
2390     ++cmdrest;
2391   cmdrest = skip_spaces_const (cmdrest);
2392
2393   if (*cmdrest++ != '"')
2394     error (_("No format string following the location"));
2395
2396   format_start = cmdrest;
2397
2398   fpieces = parse_format_string (&cmdrest);
2399
2400   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2401
2402   format_end = cmdrest;
2403
2404   if (*cmdrest++ != '"')
2405     error (_("Bad format string, non-terminated '\"'."));
2406   
2407   cmdrest = skip_spaces_const (cmdrest);
2408
2409   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2410     error (_("Invalid argument syntax"));
2411
2412   if (*cmdrest == ',')
2413     cmdrest++;
2414   cmdrest = skip_spaces_const (cmdrest);
2415
2416   /* For each argument, make an expression.  */
2417
2418   argvec = (struct expression **) alloca (strlen (cmd)
2419                                          * sizeof (struct expression *));
2420
2421   nargs = 0;
2422   while (*cmdrest != '\0')
2423     {
2424       const char *cmd1;
2425
2426       cmd1 = cmdrest;
2427       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2428       argvec[nargs++] = expr;
2429       cmdrest = cmd1;
2430       if (*cmdrest == ',')
2431         ++cmdrest;
2432     }
2433
2434   /* We don't want to stop processing, so catch any errors
2435      that may show up.  */
2436   TRY
2437     {
2438       aexpr = gen_printf (scope, gdbarch, 0, 0,
2439                           format_start, format_end - format_start,
2440                           fpieces, nargs, argvec);
2441     }
2442   CATCH (ex, RETURN_MASK_ERROR)
2443     {
2444       /* If we got here, it means the command could not be parsed to a valid
2445          bytecode expression and thus can't be evaluated on the target's side.
2446          It's no use iterating through the other commands.  */
2447       aexpr = NULL;
2448     }
2449   END_CATCH
2450
2451   do_cleanups (old_cleanups);
2452
2453   /* We have a valid agent expression, return it.  */
2454   return aexpr;
2455 }
2456
2457 /* Based on location BL, create a list of breakpoint commands to be
2458    passed on to the target.  If we have duplicated locations with
2459    different commands, we will add any such to the list.  */
2460
2461 static void
2462 build_target_command_list (struct bp_location *bl)
2463 {
2464   struct bp_location **locp = NULL, **loc2p;
2465   int null_command_or_parse_error = 0;
2466   int modified = bl->needs_update;
2467   struct bp_location *loc;
2468
2469   /* Release commands left over from a previous insert.  */
2470   VEC_free (agent_expr_p, bl->target_info.tcommands);
2471
2472   if (!target_can_run_breakpoint_commands ())
2473     return;
2474
2475   /* For now, limit to agent-style dprintf breakpoints.  */
2476   if (dprintf_style != dprintf_style_agent)
2477     return;
2478
2479   /* For now, if we have any duplicate location that isn't a dprintf,
2480      don't install the target-side commands, as that would make the
2481      breakpoint not be reported to the core, and we'd lose
2482      control.  */
2483   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2484     {
2485       loc = (*loc2p);
2486       if (is_breakpoint (loc->owner)
2487           && loc->pspace->num == bl->pspace->num
2488           && loc->owner->type != bp_dprintf)
2489         return;
2490     }
2491
2492   /* Do a first pass to check for locations with no assigned
2493      conditions or conditions that fail to parse to a valid agent expression
2494      bytecode.  If any of these happen, then it's no use to send conditions
2495      to the target since this location will always trigger and generate a
2496      response back to GDB.  */
2497   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2498     {
2499       loc = (*loc2p);
2500       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2501         {
2502           if (modified)
2503             {
2504               struct agent_expr *aexpr;
2505
2506               /* Re-parse the commands since something changed.  In that
2507                  case we already freed the command bytecodes (see
2508                  force_breakpoint_reinsertion).  We just
2509                  need to parse the command to bytecodes again.  */
2510               aexpr = parse_cmd_to_aexpr (bl->address,
2511                                           loc->owner->extra_string);
2512               loc->cmd_bytecode = aexpr;
2513
2514               if (!aexpr)
2515                 continue;
2516             }
2517
2518           /* If we have a NULL bytecode expression, it means something
2519              went wrong or we have a null command expression.  */
2520           if (!loc->cmd_bytecode)
2521             {
2522               null_command_or_parse_error = 1;
2523               break;
2524             }
2525         }
2526     }
2527
2528   /* If anything failed, then we're not doing target-side commands,
2529      and so clean up.  */
2530   if (null_command_or_parse_error)
2531     {
2532       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2533         {
2534           loc = (*loc2p);
2535           if (is_breakpoint (loc->owner)
2536               && loc->pspace->num == bl->pspace->num)
2537             {
2538               /* Only go as far as the first NULL bytecode is
2539                  located.  */
2540               if (loc->cmd_bytecode == NULL)
2541                 return;
2542
2543               free_agent_expr (loc->cmd_bytecode);
2544               loc->cmd_bytecode = NULL;
2545             }
2546         }
2547     }
2548
2549   /* No NULL commands or failed bytecode generation.  Build a command list
2550      for this location's address.  */
2551   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2552     {
2553       loc = (*loc2p);
2554       if (loc->owner->extra_string
2555           && is_breakpoint (loc->owner)
2556           && loc->pspace->num == bl->pspace->num
2557           && loc->owner->enable_state == bp_enabled
2558           && loc->enabled)
2559         /* Add the command to the vector.  This will be used later
2560            to send the commands to the target.  */
2561         VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2562                        loc->cmd_bytecode);
2563     }
2564
2565   bl->target_info.persist = 0;
2566   /* Maybe flag this location as persistent.  */
2567   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2568     bl->target_info.persist = 1;
2569 }
2570
2571 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2572    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2573    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2574    Returns 0 for success, 1 if the bp_location type is not supported or
2575    -1 for failure.
2576
2577    NOTE drow/2003-09-09: This routine could be broken down to an
2578    object-style method for each breakpoint or catchpoint type.  */
2579 static int
2580 insert_bp_location (struct bp_location *bl,
2581                     struct ui_file *tmp_error_stream,
2582                     int *disabled_breaks,
2583                     int *hw_breakpoint_error,
2584                     int *hw_bp_error_explained_already)
2585 {
2586   enum errors bp_err = GDB_NO_ERROR;
2587   const char *bp_err_message = NULL;
2588
2589   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2590     return 0;
2591
2592   /* Note we don't initialize bl->target_info, as that wipes out
2593      the breakpoint location's shadow_contents if the breakpoint
2594      is still inserted at that location.  This in turn breaks
2595      target_read_memory which depends on these buffers when
2596      a memory read is requested at the breakpoint location:
2597      Once the target_info has been wiped, we fail to see that
2598      we have a breakpoint inserted at that address and thus
2599      read the breakpoint instead of returning the data saved in
2600      the breakpoint location's shadow contents.  */
2601   bl->target_info.reqstd_address = bl->address;
2602   bl->target_info.placed_address_space = bl->pspace->aspace;
2603   bl->target_info.length = bl->length;
2604
2605   /* When working with target-side conditions, we must pass all the conditions
2606      for the same breakpoint address down to the target since GDB will not
2607      insert those locations.  With a list of breakpoint conditions, the target
2608      can decide when to stop and notify GDB.  */
2609
2610   if (is_breakpoint (bl->owner))
2611     {
2612       build_target_condition_list (bl);
2613       build_target_command_list (bl);
2614       /* Reset the modification marker.  */
2615       bl->needs_update = 0;
2616     }
2617
2618   if (bl->loc_type == bp_loc_software_breakpoint
2619       || bl->loc_type == bp_loc_hardware_breakpoint)
2620     {
2621       if (bl->owner->type != bp_hardware_breakpoint)
2622         {
2623           /* If the explicitly specified breakpoint type
2624              is not hardware breakpoint, check the memory map to see
2625              if the breakpoint address is in read only memory or not.
2626
2627              Two important cases are:
2628              - location type is not hardware breakpoint, memory
2629              is readonly.  We change the type of the location to
2630              hardware breakpoint.
2631              - location type is hardware breakpoint, memory is
2632              read-write.  This means we've previously made the
2633              location hardware one, but then the memory map changed,
2634              so we undo.
2635              
2636              When breakpoints are removed, remove_breakpoints will use
2637              location types we've just set here, the only possible
2638              problem is that memory map has changed during running
2639              program, but it's not going to work anyway with current
2640              gdb.  */
2641           struct mem_region *mr 
2642             = lookup_mem_region (bl->target_info.reqstd_address);
2643           
2644           if (mr)
2645             {
2646               if (automatic_hardware_breakpoints)
2647                 {
2648                   enum bp_loc_type new_type;
2649                   
2650                   if (mr->attrib.mode != MEM_RW)
2651                     new_type = bp_loc_hardware_breakpoint;
2652                   else 
2653                     new_type = bp_loc_software_breakpoint;
2654                   
2655                   if (new_type != bl->loc_type)
2656                     {
2657                       static int said = 0;
2658
2659                       bl->loc_type = new_type;
2660                       if (!said)
2661                         {
2662                           fprintf_filtered (gdb_stdout,
2663                                             _("Note: automatically using "
2664                                               "hardware breakpoints for "
2665                                               "read-only addresses.\n"));
2666                           said = 1;
2667                         }
2668                     }
2669                 }
2670               else if (bl->loc_type == bp_loc_software_breakpoint
2671                        && mr->attrib.mode != MEM_RW)
2672                 {
2673                   fprintf_unfiltered (tmp_error_stream,
2674                                       _("Cannot insert breakpoint %d.\n"
2675                                         "Cannot set software breakpoint "
2676                                         "at read-only address %s\n"),
2677                                       bl->owner->number,
2678                                       paddress (bl->gdbarch, bl->address));
2679                   return 1;
2680                 }
2681             }
2682         }
2683         
2684       /* First check to see if we have to handle an overlay.  */
2685       if (overlay_debugging == ovly_off
2686           || bl->section == NULL
2687           || !(section_is_overlay (bl->section)))
2688         {
2689           /* No overlay handling: just set the breakpoint.  */
2690           TRY
2691             {
2692               int val;
2693
2694               val = bl->owner->ops->insert_location (bl);
2695               if (val)
2696                 bp_err = GENERIC_ERROR;
2697             }
2698           CATCH (e, RETURN_MASK_ALL)
2699             {
2700               bp_err = e.error;
2701               bp_err_message = e.message;
2702             }
2703           END_CATCH
2704         }
2705       else
2706         {
2707           /* This breakpoint is in an overlay section.
2708              Shall we set a breakpoint at the LMA?  */
2709           if (!overlay_events_enabled)
2710             {
2711               /* Yes -- overlay event support is not active, 
2712                  so we must try to set a breakpoint at the LMA.
2713                  This will not work for a hardware breakpoint.  */
2714               if (bl->loc_type == bp_loc_hardware_breakpoint)
2715                 warning (_("hardware breakpoint %d not supported in overlay!"),
2716                          bl->owner->number);
2717               else
2718                 {
2719                   CORE_ADDR addr = overlay_unmapped_address (bl->address,
2720                                                              bl->section);
2721                   /* Set a software (trap) breakpoint at the LMA.  */
2722                   bl->overlay_target_info = bl->target_info;
2723                   bl->overlay_target_info.reqstd_address = addr;
2724
2725                   /* No overlay handling: just set the breakpoint.  */
2726                   TRY
2727                     {
2728                       int val;
2729
2730                       val = target_insert_breakpoint (bl->gdbarch,
2731                                                       &bl->overlay_target_info);
2732                       if (val)
2733                         bp_err = GENERIC_ERROR;
2734                     }
2735                   CATCH (e, RETURN_MASK_ALL)
2736                     {
2737                       bp_err = e.error;
2738                       bp_err_message = e.message;
2739                     }
2740                   END_CATCH
2741
2742                   if (bp_err != GDB_NO_ERROR)
2743                     fprintf_unfiltered (tmp_error_stream,
2744                                         "Overlay breakpoint %d "
2745                                         "failed: in ROM?\n",
2746                                         bl->owner->number);
2747                 }
2748             }
2749           /* Shall we set a breakpoint at the VMA? */
2750           if (section_is_mapped (bl->section))
2751             {
2752               /* Yes.  This overlay section is mapped into memory.  */
2753               TRY
2754                 {
2755                   int val;
2756
2757                   val = bl->owner->ops->insert_location (bl);
2758                   if (val)
2759                     bp_err = GENERIC_ERROR;
2760                 }
2761               CATCH (e, RETURN_MASK_ALL)
2762                 {
2763                   bp_err = e.error;
2764                   bp_err_message = e.message;
2765                 }
2766               END_CATCH
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->inserted && !bl->target_info.persist)
3235       {
3236         val = remove_breakpoint (bl, mark_uninserted);
3237         if (val != 0)
3238           return val;
3239       }
3240   }
3241   return 0;
3242 }
3243
3244 int
3245 reattach_breakpoints (int pid)
3246 {
3247   struct cleanup *old_chain;
3248   struct bp_location *bl, **blp_tmp;
3249   int val;
3250   struct ui_file *tmp_error_stream;
3251   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3252   struct inferior *inf;
3253   struct thread_info *tp;
3254
3255   tp = any_live_thread_of_process (pid);
3256   if (tp == NULL)
3257     return 1;
3258
3259   inf = find_inferior_pid (pid);
3260   old_chain = save_inferior_ptid ();
3261
3262   inferior_ptid = tp->ptid;
3263
3264   tmp_error_stream = mem_fileopen ();
3265   make_cleanup_ui_file_delete (tmp_error_stream);
3266
3267   ALL_BP_LOCATIONS (bl, blp_tmp)
3268   {
3269     if (bl->pspace != inf->pspace)
3270       continue;
3271
3272     if (bl->inserted)
3273       {
3274         bl->inserted = 0;
3275         val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3276         if (val != 0)
3277           {
3278             do_cleanups (old_chain);
3279             return val;
3280           }
3281       }
3282   }
3283   do_cleanups (old_chain);
3284   return 0;
3285 }
3286
3287 static int internal_breakpoint_number = -1;
3288
3289 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3290    If INTERNAL is non-zero, the breakpoint number will be populated
3291    from internal_breakpoint_number and that variable decremented.
3292    Otherwise the breakpoint number will be populated from
3293    breakpoint_count and that value incremented.  Internal breakpoints
3294    do not set the internal var bpnum.  */
3295 static void
3296 set_breakpoint_number (int internal, struct breakpoint *b)
3297 {
3298   if (internal)
3299     b->number = internal_breakpoint_number--;
3300   else
3301     {
3302       set_breakpoint_count (breakpoint_count + 1);
3303       b->number = breakpoint_count;
3304     }
3305 }
3306
3307 static struct breakpoint *
3308 create_internal_breakpoint (struct gdbarch *gdbarch,
3309                             CORE_ADDR address, enum bptype type,
3310                             const struct breakpoint_ops *ops)
3311 {
3312   struct symtab_and_line sal;
3313   struct breakpoint *b;
3314
3315   init_sal (&sal);              /* Initialize to zeroes.  */
3316
3317   sal.pc = address;
3318   sal.section = find_pc_overlay (sal.pc);
3319   sal.pspace = current_program_space;
3320
3321   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3322   b->number = internal_breakpoint_number--;
3323   b->disposition = disp_donttouch;
3324
3325   return b;
3326 }
3327
3328 static const char *const longjmp_names[] =
3329   {
3330     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3331   };
3332 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3333
3334 /* Per-objfile data private to breakpoint.c.  */
3335 struct breakpoint_objfile_data
3336 {
3337   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3338   struct bound_minimal_symbol overlay_msym;
3339
3340   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3341   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3342
3343   /* True if we have looked for longjmp probes.  */
3344   int longjmp_searched;
3345
3346   /* SystemTap probe points for longjmp (if any).  */
3347   VEC (probe_p) *longjmp_probes;
3348
3349   /* Minimal symbol for "std::terminate()" (if any).  */
3350   struct bound_minimal_symbol terminate_msym;
3351
3352   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3353   struct bound_minimal_symbol exception_msym;
3354
3355   /* True if we have looked for exception probes.  */
3356   int exception_searched;
3357
3358   /* SystemTap probe points for unwinding (if any).  */
3359   VEC (probe_p) *exception_probes;
3360 };
3361
3362 static const struct objfile_data *breakpoint_objfile_key;
3363
3364 /* Minimal symbol not found sentinel.  */
3365 static struct minimal_symbol msym_not_found;
3366
3367 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3368
3369 static int
3370 msym_not_found_p (const struct minimal_symbol *msym)
3371 {
3372   return msym == &msym_not_found;
3373 }
3374
3375 /* Return per-objfile data needed by breakpoint.c.
3376    Allocate the data if necessary.  */
3377
3378 static struct breakpoint_objfile_data *
3379 get_breakpoint_objfile_data (struct objfile *objfile)
3380 {
3381   struct breakpoint_objfile_data *bp_objfile_data;
3382
3383   bp_objfile_data = objfile_data (objfile, breakpoint_objfile_key);
3384   if (bp_objfile_data == NULL)
3385     {
3386       bp_objfile_data = obstack_alloc (&objfile->objfile_obstack,
3387                                        sizeof (*bp_objfile_data));
3388
3389       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3390       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3391     }
3392   return bp_objfile_data;
3393 }
3394
3395 static void
3396 free_breakpoint_probes (struct objfile *obj, void *data)
3397 {
3398   struct breakpoint_objfile_data *bp_objfile_data = data;
3399
3400   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3401   VEC_free (probe_p, bp_objfile_data->exception_probes);
3402 }
3403
3404 static void
3405 create_overlay_event_breakpoint (void)
3406 {
3407   struct objfile *objfile;
3408   const char *const func_name = "_ovly_debug_event";
3409
3410   ALL_OBJFILES (objfile)
3411     {
3412       struct breakpoint *b;
3413       struct breakpoint_objfile_data *bp_objfile_data;
3414       CORE_ADDR addr;
3415
3416       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3417
3418       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3419         continue;
3420
3421       if (bp_objfile_data->overlay_msym.minsym == NULL)
3422         {
3423           struct bound_minimal_symbol m;
3424
3425           m = lookup_minimal_symbol_text (func_name, objfile);
3426           if (m.minsym == NULL)
3427             {
3428               /* Avoid future lookups in this objfile.  */
3429               bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3430               continue;
3431             }
3432           bp_objfile_data->overlay_msym = m;
3433         }
3434
3435       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3436       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3437                                       bp_overlay_event,
3438                                       &internal_breakpoint_ops);
3439       b->addr_string = xstrdup (func_name);
3440
3441       if (overlay_debugging == ovly_auto)
3442         {
3443           b->enable_state = bp_enabled;
3444           overlay_events_enabled = 1;
3445         }
3446       else
3447        {
3448          b->enable_state = bp_disabled;
3449          overlay_events_enabled = 0;
3450        }
3451     }
3452   update_global_location_list (UGLL_MAY_INSERT);
3453 }
3454
3455 static void
3456 create_longjmp_master_breakpoint (void)
3457 {
3458   struct program_space *pspace;
3459   struct cleanup *old_chain;
3460
3461   old_chain = save_current_program_space ();
3462
3463   ALL_PSPACES (pspace)
3464   {
3465     struct objfile *objfile;
3466
3467     set_current_program_space (pspace);
3468
3469     ALL_OBJFILES (objfile)
3470     {
3471       int i;
3472       struct gdbarch *gdbarch;
3473       struct breakpoint_objfile_data *bp_objfile_data;
3474
3475       gdbarch = get_objfile_arch (objfile);
3476
3477       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3478
3479       if (!bp_objfile_data->longjmp_searched)
3480         {
3481           VEC (probe_p) *ret;
3482
3483           ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3484           if (ret != NULL)
3485             {
3486               /* We are only interested in checking one element.  */
3487               struct probe *p = VEC_index (probe_p, ret, 0);
3488
3489               if (!can_evaluate_probe_arguments (p))
3490                 {
3491                   /* We cannot use the probe interface here, because it does
3492                      not know how to evaluate arguments.  */
3493                   VEC_free (probe_p, ret);
3494                   ret = NULL;
3495                 }
3496             }
3497           bp_objfile_data->longjmp_probes = ret;
3498           bp_objfile_data->longjmp_searched = 1;
3499         }
3500
3501       if (bp_objfile_data->longjmp_probes != NULL)
3502         {
3503           int i;
3504           struct probe *probe;
3505           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3506
3507           for (i = 0;
3508                VEC_iterate (probe_p,
3509                             bp_objfile_data->longjmp_probes,
3510                             i, probe);
3511                ++i)
3512             {
3513               struct breakpoint *b;
3514
3515               b = create_internal_breakpoint (gdbarch,
3516                                               get_probe_address (probe,
3517                                                                  objfile),
3518                                               bp_longjmp_master,
3519                                               &internal_breakpoint_ops);
3520               b->addr_string = xstrdup ("-probe-stap libc:longjmp");
3521               b->enable_state = bp_disabled;
3522             }
3523
3524           continue;
3525         }
3526
3527       if (!gdbarch_get_longjmp_target_p (gdbarch))
3528         continue;
3529
3530       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3531         {
3532           struct breakpoint *b;
3533           const char *func_name;
3534           CORE_ADDR addr;
3535
3536           if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3537             continue;
3538
3539           func_name = longjmp_names[i];
3540           if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3541             {
3542               struct bound_minimal_symbol m;
3543
3544               m = lookup_minimal_symbol_text (func_name, objfile);
3545               if (m.minsym == NULL)
3546                 {
3547                   /* Prevent future lookups in this objfile.  */
3548                   bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3549                   continue;
3550                 }
3551               bp_objfile_data->longjmp_msym[i] = m;
3552             }
3553
3554           addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3555           b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3556                                           &internal_breakpoint_ops);
3557           b->addr_string = xstrdup (func_name);
3558           b->enable_state = bp_disabled;
3559         }
3560     }
3561   }
3562   update_global_location_list (UGLL_MAY_INSERT);
3563
3564   do_cleanups (old_chain);
3565 }
3566
3567 /* Create a master std::terminate breakpoint.  */
3568 static void
3569 create_std_terminate_master_breakpoint (void)
3570 {
3571   struct program_space *pspace;
3572   struct cleanup *old_chain;
3573   const char *const func_name = "std::terminate()";
3574
3575   old_chain = save_current_program_space ();
3576
3577   ALL_PSPACES (pspace)
3578   {
3579     struct objfile *objfile;
3580     CORE_ADDR addr;
3581
3582     set_current_program_space (pspace);
3583
3584     ALL_OBJFILES (objfile)
3585     {
3586       struct breakpoint *b;
3587       struct breakpoint_objfile_data *bp_objfile_data;
3588
3589       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3590
3591       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3592         continue;
3593
3594       if (bp_objfile_data->terminate_msym.minsym == NULL)
3595         {
3596           struct bound_minimal_symbol m;
3597
3598           m = lookup_minimal_symbol (func_name, NULL, objfile);
3599           if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3600                                    && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3601             {
3602               /* Prevent future lookups in this objfile.  */
3603               bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3604               continue;
3605             }
3606           bp_objfile_data->terminate_msym = m;
3607         }
3608
3609       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3610       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3611                                       bp_std_terminate_master,
3612                                       &internal_breakpoint_ops);
3613       b->addr_string = xstrdup (func_name);
3614       b->enable_state = bp_disabled;
3615     }
3616   }
3617
3618   update_global_location_list (UGLL_MAY_INSERT);
3619
3620   do_cleanups (old_chain);
3621 }
3622
3623 /* Install a master breakpoint on the unwinder's debug hook.  */
3624
3625 static void
3626 create_exception_master_breakpoint (void)
3627 {
3628   struct objfile *objfile;
3629   const char *const func_name = "_Unwind_DebugHook";
3630
3631   ALL_OBJFILES (objfile)
3632     {
3633       struct breakpoint *b;
3634       struct gdbarch *gdbarch;
3635       struct breakpoint_objfile_data *bp_objfile_data;
3636       CORE_ADDR addr;
3637
3638       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3639
3640       /* We prefer the SystemTap probe point if it exists.  */
3641       if (!bp_objfile_data->exception_searched)
3642         {
3643           VEC (probe_p) *ret;
3644
3645           ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3646
3647           if (ret != NULL)
3648             {
3649               /* We are only interested in checking one element.  */
3650               struct probe *p = VEC_index (probe_p, ret, 0);
3651
3652               if (!can_evaluate_probe_arguments (p))
3653                 {
3654                   /* We cannot use the probe interface here, because it does
3655                      not know how to evaluate arguments.  */
3656                   VEC_free (probe_p, ret);
3657                   ret = NULL;
3658                 }
3659             }
3660           bp_objfile_data->exception_probes = ret;
3661           bp_objfile_data->exception_searched = 1;
3662         }
3663
3664       if (bp_objfile_data->exception_probes != NULL)
3665         {
3666           struct gdbarch *gdbarch = get_objfile_arch (objfile);
3667           int i;
3668           struct probe *probe;
3669
3670           for (i = 0;
3671                VEC_iterate (probe_p,
3672                             bp_objfile_data->exception_probes,
3673                             i, probe);
3674                ++i)
3675             {
3676               struct breakpoint *b;
3677
3678               b = create_internal_breakpoint (gdbarch,
3679                                               get_probe_address (probe,
3680                                                                  objfile),
3681                                               bp_exception_master,
3682                                               &internal_breakpoint_ops);
3683               b->addr_string = xstrdup ("-probe-stap libgcc:unwind");
3684               b->enable_state = bp_disabled;
3685             }
3686
3687           continue;
3688         }
3689
3690       /* Otherwise, try the hook function.  */
3691
3692       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3693         continue;
3694
3695       gdbarch = get_objfile_arch (objfile);
3696
3697       if (bp_objfile_data->exception_msym.minsym == NULL)
3698         {
3699           struct bound_minimal_symbol debug_hook;
3700
3701           debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3702           if (debug_hook.minsym == NULL)
3703             {
3704               bp_objfile_data->exception_msym.minsym = &msym_not_found;
3705               continue;
3706             }
3707
3708           bp_objfile_data->exception_msym = debug_hook;
3709         }
3710
3711       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3712       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3713                                                  &current_target);
3714       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3715                                       &internal_breakpoint_ops);
3716       b->addr_string = xstrdup (func_name);
3717       b->enable_state = bp_disabled;
3718     }
3719
3720   update_global_location_list (UGLL_MAY_INSERT);
3721 }
3722
3723 void
3724 update_breakpoints_after_exec (void)
3725 {
3726   struct breakpoint *b, *b_tmp;
3727   struct bp_location *bploc, **bplocp_tmp;
3728
3729   /* We're about to delete breakpoints from GDB's lists.  If the
3730      INSERTED flag is true, GDB will try to lift the breakpoints by
3731      writing the breakpoints' "shadow contents" back into memory.  The
3732      "shadow contents" are NOT valid after an exec, so GDB should not
3733      do that.  Instead, the target is responsible from marking
3734      breakpoints out as soon as it detects an exec.  We don't do that
3735      here instead, because there may be other attempts to delete
3736      breakpoints after detecting an exec and before reaching here.  */
3737   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3738     if (bploc->pspace == current_program_space)
3739       gdb_assert (!bploc->inserted);
3740
3741   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3742   {
3743     if (b->pspace != current_program_space)
3744       continue;
3745
3746     /* Solib breakpoints must be explicitly reset after an exec().  */
3747     if (b->type == bp_shlib_event)
3748       {
3749         delete_breakpoint (b);
3750         continue;
3751       }
3752
3753     /* JIT breakpoints must be explicitly reset after an exec().  */
3754     if (b->type == bp_jit_event)
3755       {
3756         delete_breakpoint (b);
3757         continue;
3758       }
3759
3760     /* Thread event breakpoints must be set anew after an exec(),
3761        as must overlay event and longjmp master breakpoints.  */
3762     if (b->type == bp_thread_event || b->type == bp_overlay_event
3763         || b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3764         || b->type == bp_exception_master)
3765       {
3766         delete_breakpoint (b);
3767         continue;
3768       }
3769
3770     /* Step-resume breakpoints are meaningless after an exec().  */
3771     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3772       {
3773         delete_breakpoint (b);
3774         continue;
3775       }
3776
3777     /* Just like single-step breakpoints.  */
3778     if (b->type == bp_single_step)
3779       {
3780         delete_breakpoint (b);
3781         continue;
3782       }
3783
3784     /* Longjmp and longjmp-resume breakpoints are also meaningless
3785        after an exec.  */
3786     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3787         || b->type == bp_longjmp_call_dummy
3788         || b->type == bp_exception || b->type == bp_exception_resume)
3789       {
3790         delete_breakpoint (b);
3791         continue;
3792       }
3793
3794     if (b->type == bp_catchpoint)
3795       {
3796         /* For now, none of the bp_catchpoint breakpoints need to
3797            do anything at this point.  In the future, if some of
3798            the catchpoints need to something, we will need to add
3799            a new method, and call this method from here.  */
3800         continue;
3801       }
3802
3803     /* bp_finish is a special case.  The only way we ought to be able
3804        to see one of these when an exec() has happened, is if the user
3805        caught a vfork, and then said "finish".  Ordinarily a finish just
3806        carries them to the call-site of the current callee, by setting
3807        a temporary bp there and resuming.  But in this case, the finish
3808        will carry them entirely through the vfork & exec.
3809
3810        We don't want to allow a bp_finish to remain inserted now.  But
3811        we can't safely delete it, 'cause finish_command has a handle to
3812        the bp on a bpstat, and will later want to delete it.  There's a
3813        chance (and I've seen it happen) that if we delete the bp_finish
3814        here, that its storage will get reused by the time finish_command
3815        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3816        We really must allow finish_command to delete a bp_finish.
3817
3818        In the absence of a general solution for the "how do we know
3819        it's safe to delete something others may have handles to?"
3820        problem, what we'll do here is just uninsert the bp_finish, and
3821        let finish_command delete it.
3822
3823        (We know the bp_finish is "doomed" in the sense that it's
3824        momentary, and will be deleted as soon as finish_command sees
3825        the inferior stopped.  So it doesn't matter that the bp's
3826        address is probably bogus in the new a.out, unlike e.g., the
3827        solib breakpoints.)  */
3828
3829     if (b->type == bp_finish)
3830       {
3831         continue;
3832       }
3833
3834     /* Without a symbolic address, we have little hope of the
3835        pre-exec() address meaning the same thing in the post-exec()
3836        a.out.  */
3837     if (b->addr_string == NULL)
3838       {
3839         delete_breakpoint (b);
3840         continue;
3841       }
3842   }
3843 }
3844
3845 int
3846 detach_breakpoints (ptid_t ptid)
3847 {
3848   struct bp_location *bl, **blp_tmp;
3849   int val = 0;
3850   struct cleanup *old_chain = save_inferior_ptid ();
3851   struct inferior *inf = current_inferior ();
3852
3853   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3854     error (_("Cannot detach breakpoints of inferior_ptid"));
3855
3856   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3857   inferior_ptid = ptid;
3858   ALL_BP_LOCATIONS (bl, blp_tmp)
3859   {
3860     if (bl->pspace != inf->pspace)
3861       continue;
3862
3863     /* This function must physically remove breakpoints locations
3864        from the specified ptid, without modifying the breakpoint
3865        package's state.  Locations of type bp_loc_other are only
3866        maintained at GDB side.  So, there is no need to remove
3867        these bp_loc_other locations.  Moreover, removing these
3868        would modify the breakpoint package's state.  */
3869     if (bl->loc_type == bp_loc_other)
3870       continue;
3871
3872     if (bl->inserted)
3873       val |= remove_breakpoint_1 (bl, mark_inserted);
3874   }
3875
3876   do_cleanups (old_chain);
3877   return val;
3878 }
3879
3880 /* Remove the breakpoint location BL from the current address space.
3881    Note that this is used to detach breakpoints from a child fork.
3882    When we get here, the child isn't in the inferior list, and neither
3883    do we have objects to represent its address space --- we should
3884    *not* look at bl->pspace->aspace here.  */
3885
3886 static int
3887 remove_breakpoint_1 (struct bp_location *bl, insertion_state_t is)
3888 {
3889   int val;
3890
3891   /* BL is never in moribund_locations by our callers.  */
3892   gdb_assert (bl->owner != NULL);
3893
3894   if (bl->permanent)
3895     /* Permanent breakpoints cannot be inserted or removed.  */
3896     return 0;
3897
3898   /* The type of none suggests that owner is actually deleted.
3899      This should not ever happen.  */
3900   gdb_assert (bl->owner->type != bp_none);
3901
3902   if (bl->loc_type == bp_loc_software_breakpoint
3903       || bl->loc_type == bp_loc_hardware_breakpoint)
3904     {
3905       /* "Normal" instruction breakpoint: either the standard
3906          trap-instruction bp (bp_breakpoint), or a
3907          bp_hardware_breakpoint.  */
3908
3909       /* First check to see if we have to handle an overlay.  */
3910       if (overlay_debugging == ovly_off
3911           || bl->section == NULL
3912           || !(section_is_overlay (bl->section)))
3913         {
3914           /* No overlay handling: just remove the breakpoint.  */
3915
3916           /* If we're trying to uninsert a memory breakpoint that we
3917              know is set in a dynamic object that is marked
3918              shlib_disabled, then either the dynamic object was
3919              removed with "remove-symbol-file" or with
3920              "nosharedlibrary".  In the former case, we don't know
3921              whether another dynamic object might have loaded over the
3922              breakpoint's address -- the user might well let us know
3923              about it next with add-symbol-file (the whole point of
3924              add-symbol-file is letting the user manually maintain a
3925              list of dynamically loaded objects).  If we have the
3926              breakpoint's shadow memory, that is, this is a software
3927              breakpoint managed by GDB, check whether the breakpoint
3928              is still inserted in memory, to avoid overwriting wrong
3929              code with stale saved shadow contents.  Note that HW
3930              breakpoints don't have shadow memory, as they're
3931              implemented using a mechanism that is not dependent on
3932              being able to modify the target's memory, and as such
3933              they should always be removed.  */
3934           if (bl->shlib_disabled
3935               && bl->target_info.shadow_len != 0
3936               && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3937             val = 0;
3938           else
3939             val = bl->owner->ops->remove_location (bl);
3940         }
3941       else
3942         {
3943           /* This breakpoint is in an overlay section.
3944              Did we set a breakpoint at the LMA?  */
3945           if (!overlay_events_enabled)
3946               {
3947                 /* Yes -- overlay event support is not active, so we
3948                    should have set a breakpoint at the LMA.  Remove it.  
3949                 */
3950                 /* Ignore any failures: if the LMA is in ROM, we will
3951                    have already warned when we failed to insert it.  */
3952                 if (bl->loc_type == bp_loc_hardware_breakpoint)
3953                   target_remove_hw_breakpoint (bl->gdbarch,
3954                                                &bl->overlay_target_info);
3955                 else
3956                   target_remove_breakpoint (bl->gdbarch,
3957                                             &bl->overlay_target_info);
3958               }
3959           /* Did we set a breakpoint at the VMA? 
3960              If so, we will have marked the breakpoint 'inserted'.  */
3961           if (bl->inserted)
3962             {
3963               /* Yes -- remove it.  Previously we did not bother to
3964                  remove the breakpoint if the section had been
3965                  unmapped, but let's not rely on that being safe.  We
3966                  don't know what the overlay manager might do.  */
3967
3968               /* However, we should remove *software* breakpoints only
3969                  if the section is still mapped, or else we overwrite
3970                  wrong code with the saved shadow contents.  */
3971               if (bl->loc_type == bp_loc_hardware_breakpoint
3972                   || section_is_mapped (bl->section))
3973                 val = bl->owner->ops->remove_location (bl);
3974               else
3975                 val = 0;
3976             }
3977           else
3978             {
3979               /* No -- not inserted, so no need to remove.  No error.  */
3980               val = 0;
3981             }
3982         }
3983
3984       /* In some cases, we might not be able to remove a breakpoint in
3985          a shared library that has already been removed, but we have
3986          not yet processed the shlib unload event.  Similarly for an
3987          unloaded add-symbol-file object - the user might not yet have
3988          had the chance to remove-symbol-file it.  shlib_disabled will
3989          be set if the library/object has already been removed, but
3990          the breakpoint hasn't been uninserted yet, e.g., after
3991          "nosharedlibrary" or "remove-symbol-file" with breakpoints
3992          always-inserted mode.  */
3993       if (val
3994           && (bl->loc_type == bp_loc_software_breakpoint
3995               && (bl->shlib_disabled
3996                   || solib_name_from_address (bl->pspace, bl->address)
3997                   || shared_objfile_contains_address_p (bl->pspace,
3998                                                         bl->address))))
3999         val = 0;
4000
4001       if (val)
4002         return val;
4003       bl->inserted = (is == mark_inserted);
4004     }
4005   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4006     {
4007       gdb_assert (bl->owner->ops != NULL
4008                   && bl->owner->ops->remove_location != NULL);
4009
4010       bl->inserted = (is == mark_inserted);
4011       bl->owner->ops->remove_location (bl);
4012
4013       /* Failure to remove any of the hardware watchpoints comes here.  */
4014       if ((is == mark_uninserted) && (bl->inserted))
4015         warning (_("Could not remove hardware watchpoint %d."),
4016                  bl->owner->number);
4017     }
4018   else if (bl->owner->type == bp_catchpoint
4019            && breakpoint_enabled (bl->owner)
4020            && !bl->duplicate)
4021     {
4022       gdb_assert (bl->owner->ops != NULL
4023                   && bl->owner->ops->remove_location != NULL);
4024
4025       val = bl->owner->ops->remove_location (bl);
4026       if (val)
4027         return val;
4028
4029       bl->inserted = (is == mark_inserted);
4030     }
4031
4032   return 0;
4033 }
4034
4035 static int
4036 remove_breakpoint (struct bp_location *bl, insertion_state_t is)
4037 {
4038   int ret;
4039   struct cleanup *old_chain;
4040
4041   /* BL is never in moribund_locations by our callers.  */
4042   gdb_assert (bl->owner != NULL);
4043
4044   if (bl->permanent)
4045     /* Permanent breakpoints cannot be inserted or removed.  */
4046     return 0;
4047
4048   /* The type of none suggests that owner is actually deleted.
4049      This should not ever happen.  */
4050   gdb_assert (bl->owner->type != bp_none);
4051
4052   old_chain = save_current_space_and_thread ();
4053
4054   switch_to_program_space_and_thread (bl->pspace);
4055
4056   ret = remove_breakpoint_1 (bl, is);
4057
4058   do_cleanups (old_chain);
4059   return ret;
4060 }
4061
4062 /* Clear the "inserted" flag in all breakpoints.  */
4063
4064 void
4065 mark_breakpoints_out (void)
4066 {
4067   struct bp_location *bl, **blp_tmp;
4068
4069   ALL_BP_LOCATIONS (bl, blp_tmp)
4070     if (bl->pspace == current_program_space
4071         && !bl->permanent)
4072       bl->inserted = 0;
4073 }
4074
4075 /* Clear the "inserted" flag in all breakpoints and delete any
4076    breakpoints which should go away between runs of the program.
4077
4078    Plus other such housekeeping that has to be done for breakpoints
4079    between runs.
4080
4081    Note: this function gets called at the end of a run (by
4082    generic_mourn_inferior) and when a run begins (by
4083    init_wait_for_inferior).  */
4084
4085
4086
4087 void
4088 breakpoint_init_inferior (enum inf_context context)
4089 {
4090   struct breakpoint *b, *b_tmp;
4091   struct bp_location *bl, **blp_tmp;
4092   int ix;
4093   struct program_space *pspace = current_program_space;
4094
4095   /* If breakpoint locations are shared across processes, then there's
4096      nothing to do.  */
4097   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4098     return;
4099
4100   mark_breakpoints_out ();
4101
4102   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4103   {
4104     if (b->loc && b->loc->pspace != pspace)
4105       continue;
4106
4107     switch (b->type)
4108       {
4109       case bp_call_dummy:
4110       case bp_longjmp_call_dummy:
4111
4112         /* If the call dummy breakpoint is at the entry point it will
4113            cause problems when the inferior is rerun, so we better get
4114            rid of it.  */
4115
4116       case bp_watchpoint_scope:
4117
4118         /* Also get rid of scope breakpoints.  */
4119
4120       case bp_shlib_event:
4121
4122         /* Also remove solib event breakpoints.  Their addresses may
4123            have changed since the last time we ran the program.
4124            Actually we may now be debugging against different target;
4125            and so the solib backend that installed this breakpoint may
4126            not be used in by the target.  E.g.,
4127
4128            (gdb) file prog-linux
4129            (gdb) run               # native linux target
4130            ...
4131            (gdb) kill
4132            (gdb) file prog-win.exe
4133            (gdb) tar rem :9999     # remote Windows gdbserver.
4134         */
4135
4136       case bp_step_resume:
4137
4138         /* Also remove step-resume breakpoints.  */
4139
4140       case bp_single_step:
4141
4142         /* Also remove single-step 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->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->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 iff BL is inserted at PC, in address space
4241    ASPACE.  */
4242
4243 static int
4244 bp_location_inserted_here_p (struct bp_location *bl,
4245                              struct address_space *aspace, CORE_ADDR pc)
4246 {
4247   if (bl->inserted
4248       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4249                                    aspace, pc))
4250     {
4251       if (overlay_debugging
4252           && section_is_overlay (bl->section)
4253           && !section_is_mapped (bl->section))
4254         return 0;               /* unmapped overlay -- can't be a match */
4255       else
4256         return 1;
4257     }
4258   return 0;
4259 }
4260
4261 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4262
4263 int
4264 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4265 {
4266   struct bp_location **blp, **blp_tmp = NULL;
4267   struct bp_location *bl;
4268
4269   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4270     {
4271       struct bp_location *bl = *blp;
4272
4273       if (bl->loc_type != bp_loc_software_breakpoint
4274           && bl->loc_type != bp_loc_hardware_breakpoint)
4275         continue;
4276
4277       if (bp_location_inserted_here_p (bl, aspace, pc))
4278         return 1;
4279     }
4280   return 0;
4281 }
4282
4283 /* This function returns non-zero iff there is a software breakpoint
4284    inserted at PC.  */
4285
4286 int
4287 software_breakpoint_inserted_here_p (struct address_space *aspace,
4288                                      CORE_ADDR pc)
4289 {
4290   struct bp_location **blp, **blp_tmp = NULL;
4291   struct bp_location *bl;
4292
4293   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4294     {
4295       struct bp_location *bl = *blp;
4296
4297       if (bl->loc_type != bp_loc_software_breakpoint)
4298         continue;
4299
4300       if (bp_location_inserted_here_p (bl, aspace, pc))
4301         return 1;
4302     }
4303
4304   return 0;
4305 }
4306
4307 /* See breakpoint.h.  */
4308
4309 int
4310 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4311                                      CORE_ADDR pc)
4312 {
4313   struct bp_location **blp, **blp_tmp = NULL;
4314   struct bp_location *bl;
4315
4316   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4317     {
4318       struct bp_location *bl = *blp;
4319
4320       if (bl->loc_type != bp_loc_hardware_breakpoint)
4321         continue;
4322
4323       if (bp_location_inserted_here_p (bl, aspace, pc))
4324         return 1;
4325     }
4326
4327   return 0;
4328 }
4329
4330 int
4331 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4332                                        CORE_ADDR addr, ULONGEST len)
4333 {
4334   struct breakpoint *bpt;
4335
4336   ALL_BREAKPOINTS (bpt)
4337     {
4338       struct bp_location *loc;
4339
4340       if (bpt->type != bp_hardware_watchpoint
4341           && bpt->type != bp_access_watchpoint)
4342         continue;
4343
4344       if (!breakpoint_enabled (bpt))
4345         continue;
4346
4347       for (loc = bpt->loc; loc; loc = loc->next)
4348         if (loc->pspace->aspace == aspace && loc->inserted)
4349           {
4350             CORE_ADDR l, h;
4351
4352             /* Check for intersection.  */
4353             l = max (loc->address, addr);
4354             h = min (loc->address + loc->length, addr + len);
4355             if (l < h)
4356               return 1;
4357           }
4358     }
4359   return 0;
4360 }
4361 \f
4362
4363 /* bpstat stuff.  External routines' interfaces are documented
4364    in breakpoint.h.  */
4365
4366 int
4367 is_catchpoint (struct breakpoint *ep)
4368 {
4369   return (ep->type == bp_catchpoint);
4370 }
4371
4372 /* Frees any storage that is part of a bpstat.  Does not walk the
4373    'next' chain.  */
4374
4375 static void
4376 bpstat_free (bpstat bs)
4377 {
4378   if (bs->old_val != NULL)
4379     value_free (bs->old_val);
4380   decref_counted_command_line (&bs->commands);
4381   decref_bp_location (&bs->bp_location_at);
4382   xfree (bs);
4383 }
4384
4385 /* Clear a bpstat so that it says we are not at any breakpoint.
4386    Also free any storage that is part of a bpstat.  */
4387
4388 void
4389 bpstat_clear (bpstat *bsp)
4390 {
4391   bpstat p;
4392   bpstat q;
4393
4394   if (bsp == 0)
4395     return;
4396   p = *bsp;
4397   while (p != NULL)
4398     {
4399       q = p->next;
4400       bpstat_free (p);
4401       p = q;
4402     }
4403   *bsp = NULL;
4404 }
4405
4406 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4407    is part of the bpstat is copied as well.  */
4408
4409 bpstat
4410 bpstat_copy (bpstat bs)
4411 {
4412   bpstat p = NULL;
4413   bpstat tmp;
4414   bpstat retval = NULL;
4415
4416   if (bs == NULL)
4417     return bs;
4418
4419   for (; bs != NULL; bs = bs->next)
4420     {
4421       tmp = (bpstat) xmalloc (sizeof (*tmp));
4422       memcpy (tmp, bs, sizeof (*tmp));
4423       incref_counted_command_line (tmp->commands);
4424       incref_bp_location (tmp->bp_location_at);
4425       if (bs->old_val != NULL)
4426         {
4427           tmp->old_val = value_copy (bs->old_val);
4428           release_value (tmp->old_val);
4429         }
4430
4431       if (p == NULL)
4432         /* This is the first thing in the chain.  */
4433         retval = tmp;
4434       else
4435         p->next = tmp;
4436       p = tmp;
4437     }
4438   p->next = NULL;
4439   return retval;
4440 }
4441
4442 /* Find the bpstat associated with this breakpoint.  */
4443
4444 bpstat
4445 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4446 {
4447   if (bsp == NULL)
4448     return NULL;
4449
4450   for (; bsp != NULL; bsp = bsp->next)
4451     {
4452       if (bsp->breakpoint_at == breakpoint)
4453         return bsp;
4454     }
4455   return NULL;
4456 }
4457
4458 /* See breakpoint.h.  */
4459
4460 int
4461 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4462 {
4463   for (; bsp != NULL; bsp = bsp->next)
4464     {
4465       if (bsp->breakpoint_at == NULL)
4466         {
4467           /* A moribund location can never explain a signal other than
4468              GDB_SIGNAL_TRAP.  */
4469           if (sig == GDB_SIGNAL_TRAP)
4470             return 1;
4471         }
4472       else
4473         {
4474           if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4475                                                         sig))
4476             return 1;
4477         }
4478     }
4479
4480   return 0;
4481 }
4482
4483 /* Put in *NUM the breakpoint number of the first breakpoint we are
4484    stopped at.  *BSP upon return is a bpstat which points to the
4485    remaining breakpoints stopped at (but which is not guaranteed to be
4486    good for anything but further calls to bpstat_num).
4487
4488    Return 0 if passed a bpstat which does not indicate any breakpoints.
4489    Return -1 if stopped at a breakpoint that has been deleted since
4490    we set it.
4491    Return 1 otherwise.  */
4492
4493 int
4494 bpstat_num (bpstat *bsp, int *num)
4495 {
4496   struct breakpoint *b;
4497
4498   if ((*bsp) == NULL)
4499     return 0;                   /* No more breakpoint values */
4500
4501   /* We assume we'll never have several bpstats that correspond to a
4502      single breakpoint -- otherwise, this function might return the
4503      same number more than once and this will look ugly.  */
4504   b = (*bsp)->breakpoint_at;
4505   *bsp = (*bsp)->next;
4506   if (b == NULL)
4507     return -1;                  /* breakpoint that's been deleted since */
4508
4509   *num = b->number;             /* We have its number */
4510   return 1;
4511 }
4512
4513 /* See breakpoint.h.  */
4514
4515 void
4516 bpstat_clear_actions (void)
4517 {
4518   struct thread_info *tp;
4519   bpstat bs;
4520
4521   if (ptid_equal (inferior_ptid, null_ptid))
4522     return;
4523
4524   tp = find_thread_ptid (inferior_ptid);
4525   if (tp == NULL)
4526     return;
4527
4528   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4529     {
4530       decref_counted_command_line (&bs->commands);
4531
4532       if (bs->old_val != NULL)
4533         {
4534           value_free (bs->old_val);
4535           bs->old_val = NULL;
4536         }
4537     }
4538 }
4539
4540 /* Called when a command is about to proceed the inferior.  */
4541
4542 static void
4543 breakpoint_about_to_proceed (void)
4544 {
4545   if (!ptid_equal (inferior_ptid, null_ptid))
4546     {
4547       struct thread_info *tp = inferior_thread ();
4548
4549       /* Allow inferior function calls in breakpoint commands to not
4550          interrupt the command list.  When the call finishes
4551          successfully, the inferior will be standing at the same
4552          breakpoint as if nothing happened.  */
4553       if (tp->control.in_infcall)
4554         return;
4555     }
4556
4557   breakpoint_proceeded = 1;
4558 }
4559
4560 /* Stub for cleaning up our state if we error-out of a breakpoint
4561    command.  */
4562 static void
4563 cleanup_executing_breakpoints (void *ignore)
4564 {
4565   executing_breakpoint_commands = 0;
4566 }
4567
4568 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4569    or its equivalent.  */
4570
4571 static int
4572 command_line_is_silent (struct command_line *cmd)
4573 {
4574   return cmd && (strcmp ("silent", cmd->line) == 0
4575                  || (xdb_commands && strcmp ("Q", cmd->line) == 0));
4576 }
4577
4578 /* Execute all the commands associated with all the breakpoints at
4579    this location.  Any of these commands could cause the process to
4580    proceed beyond this point, etc.  We look out for such changes by
4581    checking the global "breakpoint_proceeded" after each command.
4582
4583    Returns true if a breakpoint command resumed the inferior.  In that
4584    case, it is the caller's responsibility to recall it again with the
4585    bpstat of the current thread.  */
4586
4587 static int
4588 bpstat_do_actions_1 (bpstat *bsp)
4589 {
4590   bpstat bs;
4591   struct cleanup *old_chain;
4592   int again = 0;
4593
4594   /* Avoid endless recursion if a `source' command is contained
4595      in bs->commands.  */
4596   if (executing_breakpoint_commands)
4597     return 0;
4598
4599   executing_breakpoint_commands = 1;
4600   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4601
4602   prevent_dont_repeat ();
4603
4604   /* This pointer will iterate over the list of bpstat's.  */
4605   bs = *bsp;
4606
4607   breakpoint_proceeded = 0;
4608   for (; bs != NULL; bs = bs->next)
4609     {
4610       struct counted_command_line *ccmd;
4611       struct command_line *cmd;
4612       struct cleanup *this_cmd_tree_chain;
4613
4614       /* Take ownership of the BSP's command tree, if it has one.
4615
4616          The command tree could legitimately contain commands like
4617          'step' and 'next', which call clear_proceed_status, which
4618          frees stop_bpstat's command tree.  To make sure this doesn't
4619          free the tree we're executing out from under us, we need to
4620          take ownership of the tree ourselves.  Since a given bpstat's
4621          commands are only executed once, we don't need to copy it; we
4622          can clear the pointer in the bpstat, and make sure we free
4623          the tree when we're done.  */
4624       ccmd = bs->commands;
4625       bs->commands = NULL;
4626       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4627       cmd = ccmd ? ccmd->commands : NULL;
4628       if (command_line_is_silent (cmd))
4629         {
4630           /* The action has been already done by bpstat_stop_status.  */
4631           cmd = cmd->next;
4632         }
4633
4634       while (cmd != NULL)
4635         {
4636           execute_control_command (cmd);
4637
4638           if (breakpoint_proceeded)
4639             break;
4640           else
4641             cmd = cmd->next;
4642         }
4643
4644       /* We can free this command tree now.  */
4645       do_cleanups (this_cmd_tree_chain);
4646
4647       if (breakpoint_proceeded)
4648         {
4649           if (interpreter_async && target_can_async_p ())
4650             /* If we are in async mode, then the target might be still
4651                running, not stopped at any breakpoint, so nothing for
4652                us to do here -- just return to the event loop.  */
4653             ;
4654           else
4655             /* In sync mode, when execute_control_command returns
4656                we're already standing on the next breakpoint.
4657                Breakpoint commands for that stop were not run, since
4658                execute_command does not run breakpoint commands --
4659                only command_line_handler does, but that one is not
4660                involved in execution of breakpoint commands.  So, we
4661                can now execute breakpoint commands.  It should be
4662                noted that making execute_command do bpstat actions is
4663                not an option -- in this case we'll have recursive
4664                invocation of bpstat for each breakpoint with a
4665                command, and can easily blow up GDB stack.  Instead, we
4666                return true, which will trigger the caller to recall us
4667                with the new stop_bpstat.  */
4668             again = 1;
4669           break;
4670         }
4671     }
4672   do_cleanups (old_chain);
4673   return again;
4674 }
4675
4676 void
4677 bpstat_do_actions (void)
4678 {
4679   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4680
4681   /* Do any commands attached to breakpoint we are stopped at.  */
4682   while (!ptid_equal (inferior_ptid, null_ptid)
4683          && target_has_execution
4684          && !is_exited (inferior_ptid)
4685          && !is_executing (inferior_ptid))
4686     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4687        and only return when it is stopped at the next breakpoint, we
4688        keep doing breakpoint actions until it returns false to
4689        indicate the inferior was not resumed.  */
4690     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4691       break;
4692
4693   discard_cleanups (cleanup_if_error);
4694 }
4695
4696 /* Print out the (old or new) value associated with a watchpoint.  */
4697
4698 static void
4699 watchpoint_value_print (struct value *val, struct ui_file *stream)
4700 {
4701   if (val == NULL)
4702     fprintf_unfiltered (stream, _("<unreadable>"));
4703   else
4704     {
4705       struct value_print_options opts;
4706       get_user_print_options (&opts);
4707       value_print (val, stream, &opts);
4708     }
4709 }
4710
4711 /* Generic routine for printing messages indicating why we
4712    stopped.  The behavior of this function depends on the value
4713    'print_it' in the bpstat structure.  Under some circumstances we
4714    may decide not to print anything here and delegate the task to
4715    normal_stop().  */
4716
4717 static enum print_stop_action
4718 print_bp_stop_message (bpstat bs)
4719 {
4720   switch (bs->print_it)
4721     {
4722     case print_it_noop:
4723       /* Nothing should be printed for this bpstat entry.  */
4724       return PRINT_UNKNOWN;
4725       break;
4726
4727     case print_it_done:
4728       /* We still want to print the frame, but we already printed the
4729          relevant messages.  */
4730       return PRINT_SRC_AND_LOC;
4731       break;
4732
4733     case print_it_normal:
4734       {
4735         struct breakpoint *b = bs->breakpoint_at;
4736
4737         /* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4738            which has since been deleted.  */
4739         if (b == NULL)
4740           return PRINT_UNKNOWN;
4741
4742         /* Normal case.  Call the breakpoint's print_it method.  */
4743         return b->ops->print_it (bs);
4744       }
4745       break;
4746
4747     default:
4748       internal_error (__FILE__, __LINE__,
4749                       _("print_bp_stop_message: unrecognized enum value"));
4750       break;
4751     }
4752 }
4753
4754 /* A helper function that prints a shared library stopped event.  */
4755
4756 static void
4757 print_solib_event (int is_catchpoint)
4758 {
4759   int any_deleted
4760     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4761   int any_added
4762     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4763
4764   if (!is_catchpoint)
4765     {
4766       if (any_added || any_deleted)
4767         ui_out_text (current_uiout,
4768                      _("Stopped due to shared library event:\n"));
4769       else
4770         ui_out_text (current_uiout,
4771                      _("Stopped due to shared library event (no "
4772                        "libraries added or removed)\n"));
4773     }
4774
4775   if (ui_out_is_mi_like_p (current_uiout))
4776     ui_out_field_string (current_uiout, "reason",
4777                          async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4778
4779   if (any_deleted)
4780     {
4781       struct cleanup *cleanup;
4782       char *name;
4783       int ix;
4784
4785       ui_out_text (current_uiout, _("  Inferior unloaded "));
4786       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4787                                                     "removed");
4788       for (ix = 0;
4789            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4790                         ix, name);
4791            ++ix)
4792         {
4793           if (ix > 0)
4794             ui_out_text (current_uiout, "    ");
4795           ui_out_field_string (current_uiout, "library", name);
4796           ui_out_text (current_uiout, "\n");
4797         }
4798
4799       do_cleanups (cleanup);
4800     }
4801
4802   if (any_added)
4803     {
4804       struct so_list *iter;
4805       int ix;
4806       struct cleanup *cleanup;
4807
4808       ui_out_text (current_uiout, _("  Inferior loaded "));
4809       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4810                                                     "added");
4811       for (ix = 0;
4812            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4813                         ix, iter);
4814            ++ix)
4815         {
4816           if (ix > 0)
4817             ui_out_text (current_uiout, "    ");
4818           ui_out_field_string (current_uiout, "library", iter->so_name);
4819           ui_out_text (current_uiout, "\n");
4820         }
4821
4822       do_cleanups (cleanup);
4823     }
4824 }
4825
4826 /* Print a message indicating what happened.  This is called from
4827    normal_stop().  The input to this routine is the head of the bpstat
4828    list - a list of the eventpoints that caused this stop.  KIND is
4829    the target_waitkind for the stopping event.  This
4830    routine calls the generic print routine for printing a message
4831    about reasons for stopping.  This will print (for example) the
4832    "Breakpoint n," part of the output.  The return value of this
4833    routine is one of:
4834
4835    PRINT_UNKNOWN: Means we printed nothing.
4836    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4837    code to print the location.  An example is 
4838    "Breakpoint 1, " which should be followed by
4839    the location.
4840    PRINT_SRC_ONLY: Means we printed something, but there is no need
4841    to also print the location part of the message.
4842    An example is the catch/throw messages, which
4843    don't require a location appended to the end.
4844    PRINT_NOTHING: We have done some printing and we don't need any 
4845    further info to be printed.  */
4846
4847 enum print_stop_action
4848 bpstat_print (bpstat bs, int kind)
4849 {
4850   int val;
4851
4852   /* Maybe another breakpoint in the chain caused us to stop.
4853      (Currently all watchpoints go on the bpstat whether hit or not.
4854      That probably could (should) be changed, provided care is taken
4855      with respect to bpstat_explains_signal).  */
4856   for (; bs; bs = bs->next)
4857     {
4858       val = print_bp_stop_message (bs);
4859       if (val == PRINT_SRC_ONLY 
4860           || val == PRINT_SRC_AND_LOC 
4861           || val == PRINT_NOTHING)
4862         return val;
4863     }
4864
4865   /* If we had hit a shared library event breakpoint,
4866      print_bp_stop_message would print out this message.  If we hit an
4867      OS-level shared library event, do the same thing.  */
4868   if (kind == TARGET_WAITKIND_LOADED)
4869     {
4870       print_solib_event (0);
4871       return PRINT_NOTHING;
4872     }
4873
4874   /* We reached the end of the chain, or we got a null BS to start
4875      with and nothing was printed.  */
4876   return PRINT_UNKNOWN;
4877 }
4878
4879 /* Evaluate the expression EXP and return 1 if value is zero.
4880    This returns the inverse of the condition because it is called
4881    from catch_errors which returns 0 if an exception happened, and if an
4882    exception happens we want execution to stop.
4883    The argument is a "struct expression *" that has been cast to a
4884    "void *" to make it pass through catch_errors.  */
4885
4886 static int
4887 breakpoint_cond_eval (void *exp)
4888 {
4889   struct value *mark = value_mark ();
4890   int i = !value_true (evaluate_expression ((struct expression *) exp));
4891
4892   value_free_to_mark (mark);
4893   return i;
4894 }
4895
4896 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
4897
4898 static bpstat
4899 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
4900 {
4901   bpstat bs;
4902
4903   bs = (bpstat) xmalloc (sizeof (*bs));
4904   bs->next = NULL;
4905   **bs_link_pointer = bs;
4906   *bs_link_pointer = &bs->next;
4907   bs->breakpoint_at = bl->owner;
4908   bs->bp_location_at = bl;
4909   incref_bp_location (bl);
4910   /* If the condition is false, etc., don't do the commands.  */
4911   bs->commands = NULL;
4912   bs->old_val = NULL;
4913   bs->print_it = print_it_normal;
4914   return bs;
4915 }
4916 \f
4917 /* The target has stopped with waitstatus WS.  Check if any hardware
4918    watchpoints have triggered, according to the target.  */
4919
4920 int
4921 watchpoints_triggered (struct target_waitstatus *ws)
4922 {
4923   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
4924   CORE_ADDR addr;
4925   struct breakpoint *b;
4926
4927   if (!stopped_by_watchpoint)
4928     {
4929       /* We were not stopped by a watchpoint.  Mark all watchpoints
4930          as not triggered.  */
4931       ALL_BREAKPOINTS (b)
4932         if (is_hardware_watchpoint (b))
4933           {
4934             struct watchpoint *w = (struct watchpoint *) b;
4935
4936             w->watchpoint_triggered = watch_triggered_no;
4937           }
4938
4939       return 0;
4940     }
4941
4942   if (!target_stopped_data_address (&current_target, &addr))
4943     {
4944       /* We were stopped by a watchpoint, but we don't know where.
4945          Mark all watchpoints as unknown.  */
4946       ALL_BREAKPOINTS (b)
4947         if (is_hardware_watchpoint (b))
4948           {
4949             struct watchpoint *w = (struct watchpoint *) b;
4950
4951             w->watchpoint_triggered = watch_triggered_unknown;
4952           }
4953
4954       return 1;
4955     }
4956
4957   /* The target could report the data address.  Mark watchpoints
4958      affected by this data address as triggered, and all others as not
4959      triggered.  */
4960
4961   ALL_BREAKPOINTS (b)
4962     if (is_hardware_watchpoint (b))
4963       {
4964         struct watchpoint *w = (struct watchpoint *) b;
4965         struct bp_location *loc;
4966
4967         w->watchpoint_triggered = watch_triggered_no;
4968         for (loc = b->loc; loc; loc = loc->next)
4969           {
4970             if (is_masked_watchpoint (b))
4971               {
4972                 CORE_ADDR newaddr = addr & w->hw_wp_mask;
4973                 CORE_ADDR start = loc->address & w->hw_wp_mask;
4974
4975                 if (newaddr == start)
4976                   {
4977                     w->watchpoint_triggered = watch_triggered_yes;
4978                     break;
4979                   }
4980               }
4981             /* Exact match not required.  Within range is sufficient.  */
4982             else if (target_watchpoint_addr_within_range (&current_target,
4983                                                          addr, loc->address,
4984                                                          loc->length))
4985               {
4986                 w->watchpoint_triggered = watch_triggered_yes;
4987                 break;
4988               }
4989           }
4990       }
4991
4992   return 1;
4993 }
4994
4995 /* Possible return values for watchpoint_check (this can't be an enum
4996    because of check_errors).  */
4997 /* The watchpoint has been deleted.  */
4998 #define WP_DELETED 1
4999 /* The value has changed.  */
5000 #define WP_VALUE_CHANGED 2
5001 /* The value has not changed.  */
5002 #define WP_VALUE_NOT_CHANGED 3
5003 /* Ignore this watchpoint, no matter if the value changed or not.  */
5004 #define WP_IGNORE 4
5005
5006 #define BP_TEMPFLAG 1
5007 #define BP_HARDWAREFLAG 2
5008
5009 /* Evaluate watchpoint condition expression and check if its value
5010    changed.
5011
5012    P should be a pointer to struct bpstat, but is defined as a void *
5013    in order for this function to be usable with catch_errors.  */
5014
5015 static int
5016 watchpoint_check (void *p)
5017 {
5018   bpstat bs = (bpstat) p;
5019   struct watchpoint *b;
5020   struct frame_info *fr;
5021   int within_current_scope;
5022
5023   /* BS is built from an existing struct breakpoint.  */
5024   gdb_assert (bs->breakpoint_at != NULL);
5025   b = (struct watchpoint *) bs->breakpoint_at;
5026
5027   /* If this is a local watchpoint, we only want to check if the
5028      watchpoint frame is in scope if the current thread is the thread
5029      that was used to create the watchpoint.  */
5030   if (!watchpoint_in_thread_scope (b))
5031     return WP_IGNORE;
5032
5033   if (b->exp_valid_block == NULL)
5034     within_current_scope = 1;
5035   else
5036     {
5037       struct frame_info *frame = get_current_frame ();
5038       struct gdbarch *frame_arch = get_frame_arch (frame);
5039       CORE_ADDR frame_pc = get_frame_pc (frame);
5040
5041       /* in_function_epilogue_p() returns a non-zero value if we're
5042          still in the function but the stack frame has already been
5043          invalidated.  Since we can't rely on the values of local
5044          variables after the stack has been destroyed, we are treating
5045          the watchpoint in that state as `not changed' without further
5046          checking.  Don't mark watchpoints as changed if the current
5047          frame is in an epilogue - even if they are in some other
5048          frame, our view of the stack is likely to be wrong and
5049          frame_find_by_id could error out.  */
5050       if (gdbarch_in_function_epilogue_p (frame_arch, frame_pc))
5051         return WP_IGNORE;
5052
5053       fr = frame_find_by_id (b->watchpoint_frame);
5054       within_current_scope = (fr != NULL);
5055
5056       /* If we've gotten confused in the unwinder, we might have
5057          returned a frame that can't describe this variable.  */
5058       if (within_current_scope)
5059         {
5060           struct symbol *function;
5061
5062           function = get_frame_function (fr);
5063           if (function == NULL
5064               || !contained_in (b->exp_valid_block,
5065                                 SYMBOL_BLOCK_VALUE (function)))
5066             within_current_scope = 0;
5067         }
5068
5069       if (within_current_scope)
5070         /* If we end up stopping, the current frame will get selected
5071            in normal_stop.  So this call to select_frame won't affect
5072            the user.  */
5073         select_frame (fr);
5074     }
5075
5076   if (within_current_scope)
5077     {
5078       /* We use value_{,free_to_}mark because it could be a *long*
5079          time before we return to the command level and call
5080          free_all_values.  We can't call free_all_values because we
5081          might be in the middle of evaluating a function call.  */
5082
5083       int pc = 0;
5084       struct value *mark;
5085       struct value *new_val;
5086
5087       if (is_masked_watchpoint (&b->base))
5088         /* Since we don't know the exact trigger address (from
5089            stopped_data_address), just tell the user we've triggered
5090            a mask watchpoint.  */
5091         return WP_VALUE_CHANGED;
5092
5093       mark = value_mark ();
5094       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5095
5096       if (b->val_bitsize != 0)
5097         new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5098
5099       /* We use value_equal_contents instead of value_equal because
5100          the latter coerces an array to a pointer, thus comparing just
5101          the address of the array instead of its contents.  This is
5102          not what we want.  */
5103       if ((b->val != NULL) != (new_val != NULL)
5104           || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5105         {
5106           if (new_val != NULL)
5107             {
5108               release_value (new_val);
5109               value_free_to_mark (mark);
5110             }
5111           bs->old_val = b->val;
5112           b->val = new_val;
5113           b->val_valid = 1;
5114           return WP_VALUE_CHANGED;
5115         }
5116       else
5117         {
5118           /* Nothing changed.  */
5119           value_free_to_mark (mark);
5120           return WP_VALUE_NOT_CHANGED;
5121         }
5122     }
5123   else
5124     {
5125       struct ui_out *uiout = current_uiout;
5126
5127       /* This seems like the only logical thing to do because
5128          if we temporarily ignored the watchpoint, then when
5129          we reenter the block in which it is valid it contains
5130          garbage (in the case of a function, it may have two
5131          garbage values, one before and one after the prologue).
5132          So we can't even detect the first assignment to it and
5133          watch after that (since the garbage may or may not equal
5134          the first value assigned).  */
5135       /* We print all the stop information in
5136          breakpoint_ops->print_it, but in this case, by the time we
5137          call breakpoint_ops->print_it this bp will be deleted
5138          already.  So we have no choice but print the information
5139          here.  */
5140       if (ui_out_is_mi_like_p (uiout))
5141         ui_out_field_string
5142           (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5143       ui_out_text (uiout, "\nWatchpoint ");
5144       ui_out_field_int (uiout, "wpnum", b->base.number);
5145       ui_out_text (uiout,
5146                    " deleted because the program has left the block in\n\
5147 which its expression is valid.\n");     
5148
5149       /* Make sure the watchpoint's commands aren't executed.  */
5150       decref_counted_command_line (&b->base.commands);
5151       watchpoint_del_at_next_stop (b);
5152
5153       return WP_DELETED;
5154     }
5155 }
5156
5157 /* Return true if it looks like target has stopped due to hitting
5158    breakpoint location BL.  This function does not check if we should
5159    stop, only if BL explains the stop.  */
5160
5161 static int
5162 bpstat_check_location (const struct bp_location *bl,
5163                        struct address_space *aspace, CORE_ADDR bp_addr,
5164                        const struct target_waitstatus *ws)
5165 {
5166   struct breakpoint *b = bl->owner;
5167
5168   /* BL is from an existing breakpoint.  */
5169   gdb_assert (b != NULL);
5170
5171   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5172 }
5173
5174 /* Determine if the watched values have actually changed, and we
5175    should stop.  If not, set BS->stop to 0.  */
5176
5177 static void
5178 bpstat_check_watchpoint (bpstat bs)
5179 {
5180   const struct bp_location *bl;
5181   struct watchpoint *b;
5182
5183   /* BS is built for existing struct breakpoint.  */
5184   bl = bs->bp_location_at;
5185   gdb_assert (bl != NULL);
5186   b = (struct watchpoint *) bs->breakpoint_at;
5187   gdb_assert (b != NULL);
5188
5189     {
5190       int must_check_value = 0;
5191       
5192       if (b->base.type == bp_watchpoint)
5193         /* For a software watchpoint, we must always check the
5194            watched value.  */
5195         must_check_value = 1;
5196       else if (b->watchpoint_triggered == watch_triggered_yes)
5197         /* We have a hardware watchpoint (read, write, or access)
5198            and the target earlier reported an address watched by
5199            this watchpoint.  */
5200         must_check_value = 1;
5201       else if (b->watchpoint_triggered == watch_triggered_unknown
5202                && b->base.type == bp_hardware_watchpoint)
5203         /* We were stopped by a hardware watchpoint, but the target could
5204            not report the data address.  We must check the watchpoint's
5205            value.  Access and read watchpoints are out of luck; without
5206            a data address, we can't figure it out.  */
5207         must_check_value = 1;
5208
5209       if (must_check_value)
5210         {
5211           char *message
5212             = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5213                           b->base.number);
5214           struct cleanup *cleanups = make_cleanup (xfree, message);
5215           int e = catch_errors (watchpoint_check, bs, message,
5216                                 RETURN_MASK_ALL);
5217           do_cleanups (cleanups);
5218           switch (e)
5219             {
5220             case WP_DELETED:
5221               /* We've already printed what needs to be printed.  */
5222               bs->print_it = print_it_done;
5223               /* Stop.  */
5224               break;
5225             case WP_IGNORE:
5226               bs->print_it = print_it_noop;
5227               bs->stop = 0;
5228               break;
5229             case WP_VALUE_CHANGED:
5230               if (b->base.type == bp_read_watchpoint)
5231                 {
5232                   /* There are two cases to consider here:
5233
5234                      1. We're watching the triggered memory for reads.
5235                      In that case, trust the target, and always report
5236                      the watchpoint hit to the user.  Even though
5237                      reads don't cause value changes, the value may
5238                      have changed since the last time it was read, and
5239                      since we're not trapping writes, we will not see
5240                      those, and as such we should ignore our notion of
5241                      old value.
5242
5243                      2. We're watching the triggered memory for both
5244                      reads and writes.  There are two ways this may
5245                      happen:
5246
5247                      2.1. This is a target that can't break on data
5248                      reads only, but can break on accesses (reads or
5249                      writes), such as e.g., x86.  We detect this case
5250                      at the time we try to insert read watchpoints.
5251
5252                      2.2. Otherwise, the target supports read
5253                      watchpoints, but, the user set an access or write
5254                      watchpoint watching the same memory as this read
5255                      watchpoint.
5256
5257                      If we're watching memory writes as well as reads,
5258                      ignore watchpoint hits when we find that the
5259                      value hasn't changed, as reads don't cause
5260                      changes.  This still gives false positives when
5261                      the program writes the same value to memory as
5262                      what there was already in memory (we will confuse
5263                      it for a read), but it's much better than
5264                      nothing.  */
5265
5266                   int other_write_watchpoint = 0;
5267
5268                   if (bl->watchpoint_type == hw_read)
5269                     {
5270                       struct breakpoint *other_b;
5271
5272                       ALL_BREAKPOINTS (other_b)
5273                         if (other_b->type == bp_hardware_watchpoint
5274                             || other_b->type == bp_access_watchpoint)
5275                           {
5276                             struct watchpoint *other_w =
5277                               (struct watchpoint *) other_b;
5278
5279                             if (other_w->watchpoint_triggered
5280                                 == watch_triggered_yes)
5281                               {
5282                                 other_write_watchpoint = 1;
5283                                 break;
5284                               }
5285                           }
5286                     }
5287
5288                   if (other_write_watchpoint
5289                       || bl->watchpoint_type == hw_access)
5290                     {
5291                       /* We're watching the same memory for writes,
5292                          and the value changed since the last time we
5293                          updated it, so this trap must be for a write.
5294                          Ignore it.  */
5295                       bs->print_it = print_it_noop;
5296                       bs->stop = 0;
5297                     }
5298                 }
5299               break;
5300             case WP_VALUE_NOT_CHANGED:
5301               if (b->base.type == bp_hardware_watchpoint
5302                   || b->base.type == bp_watchpoint)
5303                 {
5304                   /* Don't stop: write watchpoints shouldn't fire if
5305                      the value hasn't changed.  */
5306                   bs->print_it = print_it_noop;
5307                   bs->stop = 0;
5308                 }
5309               /* Stop.  */
5310               break;
5311             default:
5312               /* Can't happen.  */
5313             case 0:
5314               /* Error from catch_errors.  */
5315               printf_filtered (_("Watchpoint %d deleted.\n"), b->base.number);
5316               watchpoint_del_at_next_stop (b);
5317               /* We've already printed what needs to be printed.  */
5318               bs->print_it = print_it_done;
5319               break;
5320             }
5321         }
5322       else      /* must_check_value == 0 */
5323         {
5324           /* This is a case where some watchpoint(s) triggered, but
5325              not at the address of this watchpoint, or else no
5326              watchpoint triggered after all.  So don't print
5327              anything for this watchpoint.  */
5328           bs->print_it = print_it_noop;
5329           bs->stop = 0;
5330         }
5331     }
5332 }
5333
5334 /* For breakpoints that are currently marked as telling gdb to stop,
5335    check conditions (condition proper, frame, thread and ignore count)
5336    of breakpoint referred to by BS.  If we should not stop for this
5337    breakpoint, set BS->stop to 0.  */
5338
5339 static void
5340 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5341 {
5342   const struct bp_location *bl;
5343   struct breakpoint *b;
5344   int value_is_zero = 0;
5345   struct expression *cond;
5346
5347   gdb_assert (bs->stop);
5348
5349   /* BS is built for existing struct breakpoint.  */
5350   bl = bs->bp_location_at;
5351   gdb_assert (bl != NULL);
5352   b = bs->breakpoint_at;
5353   gdb_assert (b != NULL);
5354
5355   /* Even if the target evaluated the condition on its end and notified GDB, we
5356      need to do so again since GDB does not know if we stopped due to a
5357      breakpoint or a single step breakpoint.  */
5358
5359   if (frame_id_p (b->frame_id)
5360       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5361     {
5362       bs->stop = 0;
5363       return;
5364     }
5365
5366   /* If this is a thread/task-specific breakpoint, don't waste cpu
5367      evaluating the condition if this isn't the specified
5368      thread/task.  */
5369   if ((b->thread != -1 && b->thread != pid_to_thread_id (ptid))
5370       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5371
5372     {
5373       bs->stop = 0;
5374       return;
5375     }
5376
5377   /* Evaluate extension language breakpoints that have a "stop" method
5378      implemented.  */
5379   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5380
5381   if (is_watchpoint (b))
5382     {
5383       struct watchpoint *w = (struct watchpoint *) b;
5384
5385       cond = w->cond_exp;
5386     }
5387   else
5388     cond = bl->cond;
5389
5390   if (cond && b->disposition != disp_del_at_next_stop)
5391     {
5392       int within_current_scope = 1;
5393       struct watchpoint * w;
5394
5395       /* We use value_mark and value_free_to_mark because it could
5396          be a long time before we return to the command level and
5397          call free_all_values.  We can't call free_all_values
5398          because we might be in the middle of evaluating a
5399          function call.  */
5400       struct value *mark = value_mark ();
5401
5402       if (is_watchpoint (b))
5403         w = (struct watchpoint *) b;
5404       else
5405         w = NULL;
5406
5407       /* Need to select the frame, with all that implies so that
5408          the conditions will have the right context.  Because we
5409          use the frame, we will not see an inlined function's
5410          variables when we arrive at a breakpoint at the start
5411          of the inlined function; the current frame will be the
5412          call site.  */
5413       if (w == NULL || w->cond_exp_valid_block == NULL)
5414         select_frame (get_current_frame ());
5415       else
5416         {
5417           struct frame_info *frame;
5418
5419           /* For local watchpoint expressions, which particular
5420              instance of a local is being watched matters, so we
5421              keep track of the frame to evaluate the expression
5422              in.  To evaluate the condition however, it doesn't
5423              really matter which instantiation of the function
5424              where the condition makes sense triggers the
5425              watchpoint.  This allows an expression like "watch
5426              global if q > 10" set in `func', catch writes to
5427              global on all threads that call `func', or catch
5428              writes on all recursive calls of `func' by a single
5429              thread.  We simply always evaluate the condition in
5430              the innermost frame that's executing where it makes
5431              sense to evaluate the condition.  It seems
5432              intuitive.  */
5433           frame = block_innermost_frame (w->cond_exp_valid_block);
5434           if (frame != NULL)
5435             select_frame (frame);
5436           else
5437             within_current_scope = 0;
5438         }
5439       if (within_current_scope)
5440         value_is_zero
5441           = catch_errors (breakpoint_cond_eval, cond,
5442                           "Error in testing breakpoint condition:\n",
5443                           RETURN_MASK_ALL);
5444       else
5445         {
5446           warning (_("Watchpoint condition cannot be tested "
5447                      "in the current scope"));
5448           /* If we failed to set the right context for this
5449              watchpoint, unconditionally report it.  */
5450           value_is_zero = 0;
5451         }
5452       /* FIXME-someday, should give breakpoint #.  */
5453       value_free_to_mark (mark);
5454     }
5455
5456   if (cond && value_is_zero)
5457     {
5458       bs->stop = 0;
5459     }
5460   else if (b->ignore_count > 0)
5461     {
5462       b->ignore_count--;
5463       bs->stop = 0;
5464       /* Increase the hit count even though we don't stop.  */
5465       ++(b->hit_count);
5466       observer_notify_breakpoint_modified (b);
5467     }   
5468 }
5469
5470 /* Returns true if we need to track moribund locations of LOC's type
5471    on the current target.  */
5472
5473 static int
5474 need_moribund_for_location_type (struct bp_location *loc)
5475 {
5476   return ((loc->loc_type == bp_loc_software_breakpoint
5477            && !target_supports_stopped_by_sw_breakpoint ())
5478           || (loc->loc_type == bp_loc_hardware_breakpoint
5479               && !target_supports_stopped_by_hw_breakpoint ()));
5480 }
5481
5482
5483 /* Get a bpstat associated with having just stopped at address
5484    BP_ADDR in thread PTID.
5485
5486    Determine whether we stopped at a breakpoint, etc, or whether we
5487    don't understand this stop.  Result is a chain of bpstat's such
5488    that:
5489
5490    if we don't understand the stop, the result is a null pointer.
5491
5492    if we understand why we stopped, the result is not null.
5493
5494    Each element of the chain refers to a particular breakpoint or
5495    watchpoint at which we have stopped.  (We may have stopped for
5496    several reasons concurrently.)
5497
5498    Each element of the chain has valid next, breakpoint_at,
5499    commands, FIXME??? fields.  */
5500
5501 bpstat
5502 bpstat_stop_status (struct address_space *aspace,
5503                     CORE_ADDR bp_addr, ptid_t ptid,
5504                     const struct target_waitstatus *ws)
5505 {
5506   struct breakpoint *b = NULL;
5507   struct bp_location *bl;
5508   struct bp_location *loc;
5509   /* First item of allocated bpstat's.  */
5510   bpstat bs_head = NULL, *bs_link = &bs_head;
5511   /* Pointer to the last thing in the chain currently.  */
5512   bpstat bs;
5513   int ix;
5514   int need_remove_insert;
5515   int removed_any;
5516
5517   /* First, build the bpstat chain with locations that explain a
5518      target stop, while being careful to not set the target running,
5519      as that may invalidate locations (in particular watchpoint
5520      locations are recreated).  Resuming will happen here with
5521      breakpoint conditions or watchpoint expressions that include
5522      inferior function calls.  */
5523
5524   ALL_BREAKPOINTS (b)
5525     {
5526       if (!breakpoint_enabled (b))
5527         continue;
5528
5529       for (bl = b->loc; bl != NULL; bl = bl->next)
5530         {
5531           /* For hardware watchpoints, we look only at the first
5532              location.  The watchpoint_check function will work on the
5533              entire expression, not the individual locations.  For
5534              read watchpoints, the watchpoints_triggered function has
5535              checked all locations already.  */
5536           if (b->type == bp_hardware_watchpoint && bl != b->loc)
5537             break;
5538
5539           if (!bl->enabled || bl->shlib_disabled)
5540             continue;
5541
5542           if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5543             continue;
5544
5545           /* Come here if it's a watchpoint, or if the break address
5546              matches.  */
5547
5548           bs = bpstat_alloc (bl, &bs_link);     /* Alloc a bpstat to
5549                                                    explain stop.  */
5550
5551           /* Assume we stop.  Should we find a watchpoint that is not
5552              actually triggered, or if the condition of the breakpoint
5553              evaluates as false, we'll reset 'stop' to 0.  */
5554           bs->stop = 1;
5555           bs->print = 1;
5556
5557           /* If this is a scope breakpoint, mark the associated
5558              watchpoint as triggered so that we will handle the
5559              out-of-scope event.  We'll get to the watchpoint next
5560              iteration.  */
5561           if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5562             {
5563               struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5564
5565               w->watchpoint_triggered = watch_triggered_yes;
5566             }
5567         }
5568     }
5569
5570   /* Check if a moribund breakpoint explains the stop.  */
5571   if (!target_supports_stopped_by_sw_breakpoint ()
5572       || !target_supports_stopped_by_hw_breakpoint ())
5573     {
5574       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5575         {
5576           if (breakpoint_location_address_match (loc, aspace, bp_addr)
5577               && need_moribund_for_location_type (loc))
5578             {
5579               bs = bpstat_alloc (loc, &bs_link);
5580               /* For hits of moribund locations, we should just proceed.  */
5581               bs->stop = 0;
5582               bs->print = 0;
5583               bs->print_it = print_it_noop;
5584             }
5585         }
5586     }
5587
5588   /* A bit of special processing for shlib breakpoints.  We need to
5589      process solib loading here, so that the lists of loaded and
5590      unloaded libraries are correct before we handle "catch load" and
5591      "catch unload".  */
5592   for (bs = bs_head; bs != NULL; bs = bs->next)
5593     {
5594       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5595         {
5596           handle_solib_event ();
5597           break;
5598         }
5599     }
5600
5601   /* Now go through the locations that caused the target to stop, and
5602      check whether we're interested in reporting this stop to higher
5603      layers, or whether we should resume the target transparently.  */
5604
5605   removed_any = 0;
5606
5607   for (bs = bs_head; bs != NULL; bs = bs->next)
5608     {
5609       if (!bs->stop)
5610         continue;
5611
5612       b = bs->breakpoint_at;
5613       b->ops->check_status (bs);
5614       if (bs->stop)
5615         {
5616           bpstat_check_breakpoint_conditions (bs, ptid);
5617
5618           if (bs->stop)
5619             {
5620               ++(b->hit_count);
5621               observer_notify_breakpoint_modified (b);
5622
5623               /* We will stop here.  */
5624               if (b->disposition == disp_disable)
5625                 {
5626                   --(b->enable_count);
5627                   if (b->enable_count <= 0)
5628                     b->enable_state = bp_disabled;
5629                   removed_any = 1;
5630                 }
5631               if (b->silent)
5632                 bs->print = 0;
5633               bs->commands = b->commands;
5634               incref_counted_command_line (bs->commands);
5635               if (command_line_is_silent (bs->commands
5636                                           ? bs->commands->commands : NULL))
5637                 bs->print = 0;
5638
5639               b->ops->after_condition_true (bs);
5640             }
5641
5642         }
5643
5644       /* Print nothing for this entry if we don't stop or don't
5645          print.  */
5646       if (!bs->stop || !bs->print)
5647         bs->print_it = print_it_noop;
5648     }
5649
5650   /* If we aren't stopping, the value of some hardware watchpoint may
5651      not have changed, but the intermediate memory locations we are
5652      watching may have.  Don't bother if we're stopping; this will get
5653      done later.  */
5654   need_remove_insert = 0;
5655   if (! bpstat_causes_stop (bs_head))
5656     for (bs = bs_head; bs != NULL; bs = bs->next)
5657       if (!bs->stop
5658           && bs->breakpoint_at
5659           && is_hardware_watchpoint (bs->breakpoint_at))
5660         {
5661           struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5662
5663           update_watchpoint (w, 0 /* don't reparse.  */);
5664           need_remove_insert = 1;
5665         }
5666
5667   if (need_remove_insert)
5668     update_global_location_list (UGLL_MAY_INSERT);
5669   else if (removed_any)
5670     update_global_location_list (UGLL_DONT_INSERT);
5671
5672   return bs_head;
5673 }
5674
5675 static void
5676 handle_jit_event (void)
5677 {
5678   struct frame_info *frame;
5679   struct gdbarch *gdbarch;
5680
5681   /* Switch terminal for any messages produced by
5682      breakpoint_re_set.  */
5683   target_terminal_ours_for_output ();
5684
5685   frame = get_current_frame ();
5686   gdbarch = get_frame_arch (frame);
5687
5688   jit_event_handler (gdbarch);
5689
5690   target_terminal_inferior ();
5691 }
5692
5693 /* Prepare WHAT final decision for infrun.  */
5694
5695 /* Decide what infrun needs to do with this bpstat.  */
5696
5697 struct bpstat_what
5698 bpstat_what (bpstat bs_head)
5699 {
5700   struct bpstat_what retval;
5701   int jit_event = 0;
5702   bpstat bs;
5703
5704   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5705   retval.call_dummy = STOP_NONE;
5706   retval.is_longjmp = 0;
5707
5708   for (bs = bs_head; bs != NULL; bs = bs->next)
5709     {
5710       /* Extract this BS's action.  After processing each BS, we check
5711          if its action overrides all we've seem so far.  */
5712       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5713       enum bptype bptype;
5714
5715       if (bs->breakpoint_at == NULL)
5716         {
5717           /* I suspect this can happen if it was a momentary
5718              breakpoint which has since been deleted.  */
5719           bptype = bp_none;
5720         }
5721       else
5722         bptype = bs->breakpoint_at->type;
5723
5724       switch (bptype)
5725         {
5726         case bp_none:
5727           break;
5728         case bp_breakpoint:
5729         case bp_hardware_breakpoint:
5730         case bp_single_step:
5731         case bp_until:
5732         case bp_finish:
5733         case bp_shlib_event:
5734           if (bs->stop)
5735             {
5736               if (bs->print)
5737                 this_action = BPSTAT_WHAT_STOP_NOISY;
5738               else
5739                 this_action = BPSTAT_WHAT_STOP_SILENT;
5740             }
5741           else
5742             this_action = BPSTAT_WHAT_SINGLE;
5743           break;
5744         case bp_watchpoint:
5745         case bp_hardware_watchpoint:
5746         case bp_read_watchpoint:
5747         case bp_access_watchpoint:
5748           if (bs->stop)
5749             {
5750               if (bs->print)
5751                 this_action = BPSTAT_WHAT_STOP_NOISY;
5752               else
5753                 this_action = BPSTAT_WHAT_STOP_SILENT;
5754             }
5755           else
5756             {
5757               /* There was a watchpoint, but we're not stopping.
5758                  This requires no further action.  */
5759             }
5760           break;
5761         case bp_longjmp:
5762         case bp_longjmp_call_dummy:
5763         case bp_exception:
5764           this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5765           retval.is_longjmp = bptype != bp_exception;
5766           break;
5767         case bp_longjmp_resume:
5768         case bp_exception_resume:
5769           this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5770           retval.is_longjmp = bptype == bp_longjmp_resume;
5771           break;
5772         case bp_step_resume:
5773           if (bs->stop)
5774             this_action = BPSTAT_WHAT_STEP_RESUME;
5775           else
5776             {
5777               /* It is for the wrong frame.  */
5778               this_action = BPSTAT_WHAT_SINGLE;
5779             }
5780           break;
5781         case bp_hp_step_resume:
5782           if (bs->stop)
5783             this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5784           else
5785             {
5786               /* It is for the wrong frame.  */
5787               this_action = BPSTAT_WHAT_SINGLE;
5788             }
5789           break;
5790         case bp_watchpoint_scope:
5791         case bp_thread_event:
5792         case bp_overlay_event:
5793         case bp_longjmp_master:
5794         case bp_std_terminate_master:
5795         case bp_exception_master:
5796           this_action = BPSTAT_WHAT_SINGLE;
5797           break;
5798         case bp_catchpoint:
5799           if (bs->stop)
5800             {
5801               if (bs->print)
5802                 this_action = BPSTAT_WHAT_STOP_NOISY;
5803               else
5804                 this_action = BPSTAT_WHAT_STOP_SILENT;
5805             }
5806           else
5807             {
5808               /* There was a catchpoint, but we're not stopping.
5809                  This requires no further action.  */
5810             }
5811           break;
5812         case bp_jit_event:
5813           jit_event = 1;
5814           this_action = BPSTAT_WHAT_SINGLE;
5815           break;
5816         case bp_call_dummy:
5817           /* Make sure the action is stop (silent or noisy),
5818              so infrun.c pops the dummy frame.  */
5819           retval.call_dummy = STOP_STACK_DUMMY;
5820           this_action = BPSTAT_WHAT_STOP_SILENT;
5821           break;
5822         case bp_std_terminate:
5823           /* Make sure the action is stop (silent or noisy),
5824              so infrun.c pops the dummy frame.  */
5825           retval.call_dummy = STOP_STD_TERMINATE;
5826           this_action = BPSTAT_WHAT_STOP_SILENT;
5827           break;
5828         case bp_tracepoint:
5829         case bp_fast_tracepoint:
5830         case bp_static_tracepoint:
5831           /* Tracepoint hits should not be reported back to GDB, and
5832              if one got through somehow, it should have been filtered
5833              out already.  */
5834           internal_error (__FILE__, __LINE__,
5835                           _("bpstat_what: tracepoint encountered"));
5836           break;
5837         case bp_gnu_ifunc_resolver:
5838           /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5839           this_action = BPSTAT_WHAT_SINGLE;
5840           break;
5841         case bp_gnu_ifunc_resolver_return:
5842           /* The breakpoint will be removed, execution will restart from the
5843              PC of the former breakpoint.  */
5844           this_action = BPSTAT_WHAT_KEEP_CHECKING;
5845           break;
5846
5847         case bp_dprintf:
5848           if (bs->stop)
5849             this_action = BPSTAT_WHAT_STOP_SILENT;
5850           else
5851             this_action = BPSTAT_WHAT_SINGLE;
5852           break;
5853
5854         default:
5855           internal_error (__FILE__, __LINE__,
5856                           _("bpstat_what: unhandled bptype %d"), (int) bptype);
5857         }
5858
5859       retval.main_action = max (retval.main_action, this_action);
5860     }
5861
5862   /* These operations may affect the bs->breakpoint_at state so they are
5863      delayed after MAIN_ACTION is decided above.  */
5864
5865   if (jit_event)
5866     {
5867       if (debug_infrun)
5868         fprintf_unfiltered (gdb_stdlog, "bpstat_what: bp_jit_event\n");
5869
5870       handle_jit_event ();
5871     }
5872
5873   for (bs = bs_head; bs != NULL; bs = bs->next)
5874     {
5875       struct breakpoint *b = bs->breakpoint_at;
5876
5877       if (b == NULL)
5878         continue;
5879       switch (b->type)
5880         {
5881         case bp_gnu_ifunc_resolver:
5882           gnu_ifunc_resolver_stop (b);
5883           break;
5884         case bp_gnu_ifunc_resolver_return:
5885           gnu_ifunc_resolver_return_stop (b);
5886           break;
5887         }
5888     }
5889
5890   return retval;
5891 }
5892
5893 /* Nonzero if we should step constantly (e.g. watchpoints on machines
5894    without hardware support).  This isn't related to a specific bpstat,
5895    just to things like whether watchpoints are set.  */
5896
5897 int
5898 bpstat_should_step (void)
5899 {
5900   struct breakpoint *b;
5901
5902   ALL_BREAKPOINTS (b)
5903     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
5904       return 1;
5905   return 0;
5906 }
5907
5908 int
5909 bpstat_causes_stop (bpstat bs)
5910 {
5911   for (; bs != NULL; bs = bs->next)
5912     if (bs->stop)
5913       return 1;
5914
5915   return 0;
5916 }
5917
5918 \f
5919
5920 /* Compute a string of spaces suitable to indent the next line
5921    so it starts at the position corresponding to the table column
5922    named COL_NAME in the currently active table of UIOUT.  */
5923
5924 static char *
5925 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
5926 {
5927   static char wrap_indent[80];
5928   int i, total_width, width, align;
5929   char *text;
5930
5931   total_width = 0;
5932   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
5933     {
5934       if (strcmp (text, col_name) == 0)
5935         {
5936           gdb_assert (total_width < sizeof wrap_indent);
5937           memset (wrap_indent, ' ', total_width);
5938           wrap_indent[total_width] = 0;
5939
5940           return wrap_indent;
5941         }
5942
5943       total_width += width + 1;
5944     }
5945
5946   return NULL;
5947 }
5948
5949 /* Determine if the locations of this breakpoint will have their conditions
5950    evaluated by the target, host or a mix of both.  Returns the following:
5951
5952     "host": Host evals condition.
5953     "host or target": Host or Target evals condition.
5954     "target": Target evals condition.
5955 */
5956
5957 static const char *
5958 bp_condition_evaluator (struct breakpoint *b)
5959 {
5960   struct bp_location *bl;
5961   char host_evals = 0;
5962   char target_evals = 0;
5963
5964   if (!b)
5965     return NULL;
5966
5967   if (!is_breakpoint (b))
5968     return NULL;
5969
5970   if (gdb_evaluates_breakpoint_condition_p ()
5971       || !target_supports_evaluation_of_breakpoint_conditions ())
5972     return condition_evaluation_host;
5973
5974   for (bl = b->loc; bl; bl = bl->next)
5975     {
5976       if (bl->cond_bytecode)
5977         target_evals++;
5978       else
5979         host_evals++;
5980     }
5981
5982   if (host_evals && target_evals)
5983     return condition_evaluation_both;
5984   else if (target_evals)
5985     return condition_evaluation_target;
5986   else
5987     return condition_evaluation_host;
5988 }
5989
5990 /* Determine the breakpoint location's condition evaluator.  This is
5991    similar to bp_condition_evaluator, but for locations.  */
5992
5993 static const char *
5994 bp_location_condition_evaluator (struct bp_location *bl)
5995 {
5996   if (bl && !is_breakpoint (bl->owner))
5997     return NULL;
5998
5999   if (gdb_evaluates_breakpoint_condition_p ()
6000       || !target_supports_evaluation_of_breakpoint_conditions ())
6001     return condition_evaluation_host;
6002
6003   if (bl && bl->cond_bytecode)
6004     return condition_evaluation_target;
6005   else
6006     return condition_evaluation_host;
6007 }
6008
6009 /* Print the LOC location out of the list of B->LOC locations.  */
6010
6011 static void
6012 print_breakpoint_location (struct breakpoint *b,
6013                            struct bp_location *loc)
6014 {
6015   struct ui_out *uiout = current_uiout;
6016   struct cleanup *old_chain = save_current_program_space ();
6017
6018   if (loc != NULL && loc->shlib_disabled)
6019     loc = NULL;
6020
6021   if (loc != NULL)
6022     set_current_program_space (loc->pspace);
6023
6024   if (b->display_canonical)
6025     ui_out_field_string (uiout, "what", b->addr_string);
6026   else if (loc && loc->symtab)
6027     {
6028       struct symbol *sym 
6029         = find_pc_sect_function (loc->address, loc->section);
6030       if (sym)
6031         {
6032           ui_out_text (uiout, "in ");
6033           ui_out_field_string (uiout, "func",
6034                                SYMBOL_PRINT_NAME (sym));
6035           ui_out_text (uiout, " ");
6036           ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
6037           ui_out_text (uiout, "at ");
6038         }
6039       ui_out_field_string (uiout, "file",
6040                            symtab_to_filename_for_display (loc->symtab));
6041       ui_out_text (uiout, ":");
6042
6043       if (ui_out_is_mi_like_p (uiout))
6044         ui_out_field_string (uiout, "fullname",
6045                              symtab_to_fullname (loc->symtab));
6046       
6047       ui_out_field_int (uiout, "line", loc->line_number);
6048     }
6049   else if (loc)
6050     {
6051       struct ui_file *stb = mem_fileopen ();
6052       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
6053
6054       print_address_symbolic (loc->gdbarch, loc->address, stb,
6055                               demangle, "");
6056       ui_out_field_stream (uiout, "at", stb);
6057
6058       do_cleanups (stb_chain);
6059     }
6060   else
6061     ui_out_field_string (uiout, "pending", b->addr_string);
6062
6063   if (loc && is_breakpoint (b)
6064       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6065       && bp_condition_evaluator (b) == condition_evaluation_both)
6066     {
6067       ui_out_text (uiout, " (");
6068       ui_out_field_string (uiout, "evaluated-by",
6069                            bp_location_condition_evaluator (loc));
6070       ui_out_text (uiout, ")");
6071     }
6072
6073   do_cleanups (old_chain);
6074 }
6075
6076 static const char *
6077 bptype_string (enum bptype type)
6078 {
6079   struct ep_type_description
6080     {
6081       enum bptype type;
6082       char *description;
6083     };
6084   static struct ep_type_description bptypes[] =
6085   {
6086     {bp_none, "?deleted?"},
6087     {bp_breakpoint, "breakpoint"},
6088     {bp_hardware_breakpoint, "hw breakpoint"},
6089     {bp_single_step, "sw single-step"},
6090     {bp_until, "until"},
6091     {bp_finish, "finish"},
6092     {bp_watchpoint, "watchpoint"},
6093     {bp_hardware_watchpoint, "hw watchpoint"},
6094     {bp_read_watchpoint, "read watchpoint"},
6095     {bp_access_watchpoint, "acc watchpoint"},
6096     {bp_longjmp, "longjmp"},
6097     {bp_longjmp_resume, "longjmp resume"},
6098     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6099     {bp_exception, "exception"},
6100     {bp_exception_resume, "exception resume"},
6101     {bp_step_resume, "step resume"},
6102     {bp_hp_step_resume, "high-priority step resume"},
6103     {bp_watchpoint_scope, "watchpoint scope"},
6104     {bp_call_dummy, "call dummy"},
6105     {bp_std_terminate, "std::terminate"},
6106     {bp_shlib_event, "shlib events"},
6107     {bp_thread_event, "thread events"},
6108     {bp_overlay_event, "overlay events"},
6109     {bp_longjmp_master, "longjmp master"},
6110     {bp_std_terminate_master, "std::terminate master"},
6111     {bp_exception_master, "exception master"},
6112     {bp_catchpoint, "catchpoint"},
6113     {bp_tracepoint, "tracepoint"},
6114     {bp_fast_tracepoint, "fast tracepoint"},
6115     {bp_static_tracepoint, "static tracepoint"},
6116     {bp_dprintf, "dprintf"},
6117     {bp_jit_event, "jit events"},
6118     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6119     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6120   };
6121
6122   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6123       || ((int) type != bptypes[(int) type].type))
6124     internal_error (__FILE__, __LINE__,
6125                     _("bptypes table does not describe type #%d."),
6126                     (int) type);
6127
6128   return bptypes[(int) type].description;
6129 }
6130
6131 /* For MI, output a field named 'thread-groups' with a list as the value.
6132    For CLI, prefix the list with the string 'inf'. */
6133
6134 static void
6135 output_thread_groups (struct ui_out *uiout,
6136                       const char *field_name,
6137                       VEC(int) *inf_num,
6138                       int mi_only)
6139 {
6140   struct cleanup *back_to;
6141   int is_mi = ui_out_is_mi_like_p (uiout);
6142   int inf;
6143   int i;
6144
6145   /* For backward compatibility, don't display inferiors in CLI unless
6146      there are several.  Always display them for MI. */
6147   if (!is_mi && mi_only)
6148     return;
6149
6150   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6151
6152   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6153     {
6154       if (is_mi)
6155         {
6156           char mi_group[10];
6157
6158           xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6159           ui_out_field_string (uiout, NULL, mi_group);
6160         }
6161       else
6162         {
6163           if (i == 0)
6164             ui_out_text (uiout, " inf ");
6165           else
6166             ui_out_text (uiout, ", ");
6167         
6168           ui_out_text (uiout, plongest (inf));
6169         }
6170     }
6171
6172   do_cleanups (back_to);
6173 }
6174
6175 /* Print B to gdb_stdout.  */
6176
6177 static void
6178 print_one_breakpoint_location (struct breakpoint *b,
6179                                struct bp_location *loc,
6180                                int loc_number,
6181                                struct bp_location **last_loc,
6182                                int allflag)
6183 {
6184   struct command_line *l;
6185   static char bpenables[] = "nynny";
6186
6187   struct ui_out *uiout = current_uiout;
6188   int header_of_multiple = 0;
6189   int part_of_multiple = (loc != NULL);
6190   struct value_print_options opts;
6191
6192   get_user_print_options (&opts);
6193
6194   gdb_assert (!loc || loc_number != 0);
6195   /* See comment in print_one_breakpoint concerning treatment of
6196      breakpoints with single disabled location.  */
6197   if (loc == NULL 
6198       && (b->loc != NULL 
6199           && (b->loc->next != NULL || !b->loc->enabled)))
6200     header_of_multiple = 1;
6201   if (loc == NULL)
6202     loc = b->loc;
6203
6204   annotate_record ();
6205
6206   /* 1 */
6207   annotate_field (0);
6208   if (part_of_multiple)
6209     {
6210       char *formatted;
6211       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6212       ui_out_field_string (uiout, "number", formatted);
6213       xfree (formatted);
6214     }
6215   else
6216     {
6217       ui_out_field_int (uiout, "number", b->number);
6218     }
6219
6220   /* 2 */
6221   annotate_field (1);
6222   if (part_of_multiple)
6223     ui_out_field_skip (uiout, "type");
6224   else
6225     ui_out_field_string (uiout, "type", bptype_string (b->type));
6226
6227   /* 3 */
6228   annotate_field (2);
6229   if (part_of_multiple)
6230     ui_out_field_skip (uiout, "disp");
6231   else
6232     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6233
6234
6235   /* 4 */
6236   annotate_field (3);
6237   if (part_of_multiple)
6238     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6239   else
6240     ui_out_field_fmt (uiout, "enabled", "%c", 
6241                       bpenables[(int) b->enable_state]);
6242   ui_out_spaces (uiout, 2);
6243
6244   
6245   /* 5 and 6 */
6246   if (b->ops != NULL && b->ops->print_one != NULL)
6247     {
6248       /* Although the print_one can possibly print all locations,
6249          calling it here is not likely to get any nice result.  So,
6250          make sure there's just one location.  */
6251       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6252       b->ops->print_one (b, last_loc);
6253     }
6254   else
6255     switch (b->type)
6256       {
6257       case bp_none:
6258         internal_error (__FILE__, __LINE__,
6259                         _("print_one_breakpoint: bp_none encountered\n"));
6260         break;
6261
6262       case bp_watchpoint:
6263       case bp_hardware_watchpoint:
6264       case bp_read_watchpoint:
6265       case bp_access_watchpoint:
6266         {
6267           struct watchpoint *w = (struct watchpoint *) b;
6268
6269           /* Field 4, the address, is omitted (which makes the columns
6270              not line up too nicely with the headers, but the effect
6271              is relatively readable).  */
6272           if (opts.addressprint)
6273             ui_out_field_skip (uiout, "addr");
6274           annotate_field (5);
6275           ui_out_field_string (uiout, "what", w->exp_string);
6276         }
6277         break;
6278
6279       case bp_breakpoint:
6280       case bp_hardware_breakpoint:
6281       case bp_single_step:
6282       case bp_until:
6283       case bp_finish:
6284       case bp_longjmp:
6285       case bp_longjmp_resume:
6286       case bp_longjmp_call_dummy:
6287       case bp_exception:
6288       case bp_exception_resume:
6289       case bp_step_resume:
6290       case bp_hp_step_resume:
6291       case bp_watchpoint_scope:
6292       case bp_call_dummy:
6293       case bp_std_terminate:
6294       case bp_shlib_event:
6295       case bp_thread_event:
6296       case bp_overlay_event:
6297       case bp_longjmp_master:
6298       case bp_std_terminate_master:
6299       case bp_exception_master:
6300       case bp_tracepoint:
6301       case bp_fast_tracepoint:
6302       case bp_static_tracepoint:
6303       case bp_dprintf:
6304       case bp_jit_event:
6305       case bp_gnu_ifunc_resolver:
6306       case bp_gnu_ifunc_resolver_return:
6307         if (opts.addressprint)
6308           {
6309             annotate_field (4);
6310             if (header_of_multiple)
6311               ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6312             else if (b->loc == NULL || loc->shlib_disabled)
6313               ui_out_field_string (uiout, "addr", "<PENDING>");
6314             else
6315               ui_out_field_core_addr (uiout, "addr",
6316                                       loc->gdbarch, loc->address);
6317           }
6318         annotate_field (5);
6319         if (!header_of_multiple)
6320           print_breakpoint_location (b, loc);
6321         if (b->loc)
6322           *last_loc = b->loc;
6323         break;
6324       }
6325
6326
6327   if (loc != NULL && !header_of_multiple)
6328     {
6329       struct inferior *inf;
6330       VEC(int) *inf_num = NULL;
6331       int mi_only = 1;
6332
6333       ALL_INFERIORS (inf)
6334         {
6335           if (inf->pspace == loc->pspace)
6336             VEC_safe_push (int, inf_num, inf->num);
6337         }
6338
6339         /* For backward compatibility, don't display inferiors in CLI unless
6340            there are several.  Always display for MI. */
6341         if (allflag
6342             || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6343                 && (number_of_program_spaces () > 1
6344                     || number_of_inferiors () > 1)
6345                 /* LOC is for existing B, it cannot be in
6346                    moribund_locations and thus having NULL OWNER.  */
6347                 && loc->owner->type != bp_catchpoint))
6348         mi_only = 0;
6349       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6350       VEC_free (int, inf_num);
6351     }
6352
6353   if (!part_of_multiple)
6354     {
6355       if (b->thread != -1)
6356         {
6357           /* FIXME: This seems to be redundant and lost here; see the
6358              "stop only in" line a little further down.  */
6359           ui_out_text (uiout, " thread ");
6360           ui_out_field_int (uiout, "thread", b->thread);
6361         }
6362       else if (b->task != 0)
6363         {
6364           ui_out_text (uiout, " task ");
6365           ui_out_field_int (uiout, "task", b->task);
6366         }
6367     }
6368
6369   ui_out_text (uiout, "\n");
6370
6371   if (!part_of_multiple)
6372     b->ops->print_one_detail (b, uiout);
6373
6374   if (part_of_multiple && frame_id_p (b->frame_id))
6375     {
6376       annotate_field (6);
6377       ui_out_text (uiout, "\tstop only in stack frame at ");
6378       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6379          the frame ID.  */
6380       ui_out_field_core_addr (uiout, "frame",
6381                               b->gdbarch, b->frame_id.stack_addr);
6382       ui_out_text (uiout, "\n");
6383     }
6384   
6385   if (!part_of_multiple && b->cond_string)
6386     {
6387       annotate_field (7);
6388       if (is_tracepoint (b))
6389         ui_out_text (uiout, "\ttrace only if ");
6390       else
6391         ui_out_text (uiout, "\tstop only if ");
6392       ui_out_field_string (uiout, "cond", b->cond_string);
6393
6394       /* Print whether the target is doing the breakpoint's condition
6395          evaluation.  If GDB is doing the evaluation, don't print anything.  */
6396       if (is_breakpoint (b)
6397           && breakpoint_condition_evaluation_mode ()
6398           == condition_evaluation_target)
6399         {
6400           ui_out_text (uiout, " (");
6401           ui_out_field_string (uiout, "evaluated-by",
6402                                bp_condition_evaluator (b));
6403           ui_out_text (uiout, " evals)");
6404         }
6405       ui_out_text (uiout, "\n");
6406     }
6407
6408   if (!part_of_multiple && b->thread != -1)
6409     {
6410       /* FIXME should make an annotation for this.  */
6411       ui_out_text (uiout, "\tstop only in thread ");
6412       ui_out_field_int (uiout, "thread", b->thread);
6413       ui_out_text (uiout, "\n");
6414     }
6415   
6416   if (!part_of_multiple)
6417     {
6418       if (b->hit_count)
6419         {
6420           /* FIXME should make an annotation for this.  */
6421           if (is_catchpoint (b))
6422             ui_out_text (uiout, "\tcatchpoint");
6423           else if (is_tracepoint (b))
6424             ui_out_text (uiout, "\ttracepoint");
6425           else
6426             ui_out_text (uiout, "\tbreakpoint");
6427           ui_out_text (uiout, " already hit ");
6428           ui_out_field_int (uiout, "times", b->hit_count);
6429           if (b->hit_count == 1)
6430             ui_out_text (uiout, " time\n");
6431           else
6432             ui_out_text (uiout, " times\n");
6433         }
6434       else
6435         {
6436           /* Output the count also if it is zero, but only if this is mi.  */
6437           if (ui_out_is_mi_like_p (uiout))
6438             ui_out_field_int (uiout, "times", b->hit_count);
6439         }
6440     }
6441
6442   if (!part_of_multiple && b->ignore_count)
6443     {
6444       annotate_field (8);
6445       ui_out_text (uiout, "\tignore next ");
6446       ui_out_field_int (uiout, "ignore", b->ignore_count);
6447       ui_out_text (uiout, " hits\n");
6448     }
6449
6450   /* Note that an enable count of 1 corresponds to "enable once"
6451      behavior, which is reported by the combination of enablement and
6452      disposition, so we don't need to mention it here.  */
6453   if (!part_of_multiple && b->enable_count > 1)
6454     {
6455       annotate_field (8);
6456       ui_out_text (uiout, "\tdisable after ");
6457       /* Tweak the wording to clarify that ignore and enable counts
6458          are distinct, and have additive effect.  */
6459       if (b->ignore_count)
6460         ui_out_text (uiout, "additional ");
6461       else
6462         ui_out_text (uiout, "next ");
6463       ui_out_field_int (uiout, "enable", b->enable_count);
6464       ui_out_text (uiout, " hits\n");
6465     }
6466
6467   if (!part_of_multiple && is_tracepoint (b))
6468     {
6469       struct tracepoint *tp = (struct tracepoint *) b;
6470
6471       if (tp->traceframe_usage)
6472         {
6473           ui_out_text (uiout, "\ttrace buffer usage ");
6474           ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6475           ui_out_text (uiout, " bytes\n");
6476         }
6477     }
6478
6479   l = b->commands ? b->commands->commands : NULL;
6480   if (!part_of_multiple && l)
6481     {
6482       struct cleanup *script_chain;
6483
6484       annotate_field (9);
6485       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6486       print_command_lines (uiout, l, 4);
6487       do_cleanups (script_chain);
6488     }
6489
6490   if (is_tracepoint (b))
6491     {
6492       struct tracepoint *t = (struct tracepoint *) b;
6493
6494       if (!part_of_multiple && t->pass_count)
6495         {
6496           annotate_field (10);
6497           ui_out_text (uiout, "\tpass count ");
6498           ui_out_field_int (uiout, "pass", t->pass_count);
6499           ui_out_text (uiout, " \n");
6500         }
6501
6502       /* Don't display it when tracepoint or tracepoint location is
6503          pending.   */
6504       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6505         {
6506           annotate_field (11);
6507
6508           if (ui_out_is_mi_like_p (uiout))
6509             ui_out_field_string (uiout, "installed",
6510                                  loc->inserted ? "y" : "n");
6511           else
6512             {
6513               if (loc->inserted)
6514                 ui_out_text (uiout, "\t");
6515               else
6516                 ui_out_text (uiout, "\tnot ");
6517               ui_out_text (uiout, "installed on target\n");
6518             }
6519         }
6520     }
6521
6522   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6523     {
6524       if (is_watchpoint (b))
6525         {
6526           struct watchpoint *w = (struct watchpoint *) b;
6527
6528           ui_out_field_string (uiout, "original-location", w->exp_string);
6529         }
6530       else if (b->addr_string)
6531         ui_out_field_string (uiout, "original-location", b->addr_string);
6532     }
6533 }
6534
6535 static void
6536 print_one_breakpoint (struct breakpoint *b,
6537                       struct bp_location **last_loc, 
6538                       int allflag)
6539 {
6540   struct cleanup *bkpt_chain;
6541   struct ui_out *uiout = current_uiout;
6542
6543   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6544
6545   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6546   do_cleanups (bkpt_chain);
6547
6548   /* If this breakpoint has custom print function,
6549      it's already printed.  Otherwise, print individual
6550      locations, if any.  */
6551   if (b->ops == NULL || b->ops->print_one == NULL)
6552     {
6553       /* If breakpoint has a single location that is disabled, we
6554          print it as if it had several locations, since otherwise it's
6555          hard to represent "breakpoint enabled, location disabled"
6556          situation.
6557
6558          Note that while hardware watchpoints have several locations
6559          internally, that's not a property exposed to user.  */
6560       if (b->loc 
6561           && !is_hardware_watchpoint (b)
6562           && (b->loc->next || !b->loc->enabled))
6563         {
6564           struct bp_location *loc;
6565           int n = 1;
6566
6567           for (loc = b->loc; loc; loc = loc->next, ++n)
6568             {
6569               struct cleanup *inner2 =
6570                 make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6571               print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6572               do_cleanups (inner2);
6573             }
6574         }
6575     }
6576 }
6577
6578 static int
6579 breakpoint_address_bits (struct breakpoint *b)
6580 {
6581   int print_address_bits = 0;
6582   struct bp_location *loc;
6583
6584   for (loc = b->loc; loc; loc = loc->next)
6585     {
6586       int addr_bit;
6587
6588       /* Software watchpoints that aren't watching memory don't have
6589          an address to print.  */
6590       if (b->type == bp_watchpoint && loc->watchpoint_type == -1)
6591         continue;
6592
6593       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6594       if (addr_bit > print_address_bits)
6595         print_address_bits = addr_bit;
6596     }
6597
6598   return print_address_bits;
6599 }
6600
6601 struct captured_breakpoint_query_args
6602   {
6603     int bnum;
6604   };
6605
6606 static int
6607 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6608 {
6609   struct captured_breakpoint_query_args *args = data;
6610   struct breakpoint *b;
6611   struct bp_location *dummy_loc = NULL;
6612
6613   ALL_BREAKPOINTS (b)
6614     {
6615       if (args->bnum == b->number)
6616         {
6617           print_one_breakpoint (b, &dummy_loc, 0);
6618           return GDB_RC_OK;
6619         }
6620     }
6621   return GDB_RC_NONE;
6622 }
6623
6624 enum gdb_rc
6625 gdb_breakpoint_query (struct ui_out *uiout, int bnum, 
6626                       char **error_message)
6627 {
6628   struct captured_breakpoint_query_args args;
6629
6630   args.bnum = bnum;
6631   /* For the moment we don't trust print_one_breakpoint() to not throw
6632      an error.  */
6633   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6634                                  error_message, RETURN_MASK_ALL) < 0)
6635     return GDB_RC_FAIL;
6636   else
6637     return GDB_RC_OK;
6638 }
6639
6640 /* Return true if this breakpoint was set by the user, false if it is
6641    internal or momentary.  */
6642
6643 int
6644 user_breakpoint_p (struct breakpoint *b)
6645 {
6646   return b->number > 0;
6647 }
6648
6649 /* Print information on user settable breakpoint (watchpoint, etc)
6650    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6651    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6652    FILTER is non-NULL, call it on each breakpoint and only include the
6653    ones for which it returns non-zero.  Return the total number of
6654    breakpoints listed.  */
6655
6656 static int
6657 breakpoint_1 (char *args, int allflag, 
6658               int (*filter) (const struct breakpoint *))
6659 {
6660   struct breakpoint *b;
6661   struct bp_location *last_loc = NULL;
6662   int nr_printable_breakpoints;
6663   struct cleanup *bkpttbl_chain;
6664   struct value_print_options opts;
6665   int print_address_bits = 0;
6666   int print_type_col_width = 14;
6667   struct ui_out *uiout = current_uiout;
6668
6669   get_user_print_options (&opts);
6670
6671   /* Compute the number of rows in the table, as well as the size
6672      required for address fields.  */
6673   nr_printable_breakpoints = 0;
6674   ALL_BREAKPOINTS (b)
6675     {
6676       /* If we have a filter, only list the breakpoints it accepts.  */
6677       if (filter && !filter (b))
6678         continue;
6679
6680       /* If we have an "args" string, it is a list of breakpoints to 
6681          accept.  Skip the others.  */
6682       if (args != NULL && *args != '\0')
6683         {
6684           if (allflag && parse_and_eval_long (args) != b->number)
6685             continue;
6686           if (!allflag && !number_is_in_list (args, b->number))
6687             continue;
6688         }
6689
6690       if (allflag || user_breakpoint_p (b))
6691         {
6692           int addr_bit, type_len;
6693
6694           addr_bit = breakpoint_address_bits (b);
6695           if (addr_bit > print_address_bits)
6696             print_address_bits = addr_bit;
6697
6698           type_len = strlen (bptype_string (b->type));
6699           if (type_len > print_type_col_width)
6700             print_type_col_width = type_len;
6701
6702           nr_printable_breakpoints++;
6703         }
6704     }
6705
6706   if (opts.addressprint)
6707     bkpttbl_chain 
6708       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6709                                              nr_printable_breakpoints,
6710                                              "BreakpointTable");
6711   else
6712     bkpttbl_chain 
6713       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6714                                              nr_printable_breakpoints,
6715                                              "BreakpointTable");
6716
6717   if (nr_printable_breakpoints > 0)
6718     annotate_breakpoints_headers ();
6719   if (nr_printable_breakpoints > 0)
6720     annotate_field (0);
6721   ui_out_table_header (uiout, 7, ui_left, "number", "Num");     /* 1 */
6722   if (nr_printable_breakpoints > 0)
6723     annotate_field (1);
6724   ui_out_table_header (uiout, print_type_col_width, ui_left,
6725                        "type", "Type");                         /* 2 */
6726   if (nr_printable_breakpoints > 0)
6727     annotate_field (2);
6728   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");      /* 3 */
6729   if (nr_printable_breakpoints > 0)
6730     annotate_field (3);
6731   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");    /* 4 */
6732   if (opts.addressprint)
6733     {
6734       if (nr_printable_breakpoints > 0)
6735         annotate_field (4);
6736       if (print_address_bits <= 32)
6737         ui_out_table_header (uiout, 10, ui_left, 
6738                              "addr", "Address");                /* 5 */
6739       else
6740         ui_out_table_header (uiout, 18, ui_left, 
6741                              "addr", "Address");                /* 5 */
6742     }
6743   if (nr_printable_breakpoints > 0)
6744     annotate_field (5);
6745   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");  /* 6 */
6746   ui_out_table_body (uiout);
6747   if (nr_printable_breakpoints > 0)
6748     annotate_breakpoints_table ();
6749
6750   ALL_BREAKPOINTS (b)
6751     {
6752       QUIT;
6753       /* If we have a filter, only list the breakpoints it accepts.  */
6754       if (filter && !filter (b))
6755         continue;
6756
6757       /* If we have an "args" string, it is a list of breakpoints to 
6758          accept.  Skip the others.  */
6759
6760       if (args != NULL && *args != '\0')
6761         {
6762           if (allflag)  /* maintenance info breakpoint */
6763             {
6764               if (parse_and_eval_long (args) != b->number)
6765                 continue;
6766             }
6767           else          /* all others */
6768             {
6769               if (!number_is_in_list (args, b->number))
6770                 continue;
6771             }
6772         }
6773       /* We only print out user settable breakpoints unless the
6774          allflag is set.  */
6775       if (allflag || user_breakpoint_p (b))
6776         print_one_breakpoint (b, &last_loc, allflag);
6777     }
6778
6779   do_cleanups (bkpttbl_chain);
6780
6781   if (nr_printable_breakpoints == 0)
6782     {
6783       /* If there's a filter, let the caller decide how to report
6784          empty list.  */
6785       if (!filter)
6786         {
6787           if (args == NULL || *args == '\0')
6788             ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6789           else
6790             ui_out_message (uiout, 0, 
6791                             "No breakpoint or watchpoint matching '%s'.\n",
6792                             args);
6793         }
6794     }
6795   else
6796     {
6797       if (last_loc && !server_command)
6798         set_next_address (last_loc->gdbarch, last_loc->address);
6799     }
6800
6801   /* FIXME?  Should this be moved up so that it is only called when
6802      there have been breakpoints? */
6803   annotate_breakpoints_table_end ();
6804
6805   return nr_printable_breakpoints;
6806 }
6807
6808 /* Display the value of default-collect in a way that is generally
6809    compatible with the breakpoint list.  */
6810
6811 static void
6812 default_collect_info (void)
6813 {
6814   struct ui_out *uiout = current_uiout;
6815
6816   /* If it has no value (which is frequently the case), say nothing; a
6817      message like "No default-collect." gets in user's face when it's
6818      not wanted.  */
6819   if (!*default_collect)
6820     return;
6821
6822   /* The following phrase lines up nicely with per-tracepoint collect
6823      actions.  */
6824   ui_out_text (uiout, "default collect ");
6825   ui_out_field_string (uiout, "default-collect", default_collect);
6826   ui_out_text (uiout, " \n");
6827 }
6828   
6829 static void
6830 breakpoints_info (char *args, int from_tty)
6831 {
6832   breakpoint_1 (args, 0, NULL);
6833
6834   default_collect_info ();
6835 }
6836
6837 static void
6838 watchpoints_info (char *args, int from_tty)
6839 {
6840   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
6841   struct ui_out *uiout = current_uiout;
6842
6843   if (num_printed == 0)
6844     {
6845       if (args == NULL || *args == '\0')
6846         ui_out_message (uiout, 0, "No watchpoints.\n");
6847       else
6848         ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
6849     }
6850 }
6851
6852 static void
6853 maintenance_info_breakpoints (char *args, int from_tty)
6854 {
6855   breakpoint_1 (args, 1, NULL);
6856
6857   default_collect_info ();
6858 }
6859
6860 static int
6861 breakpoint_has_pc (struct breakpoint *b,
6862                    struct program_space *pspace,
6863                    CORE_ADDR pc, struct obj_section *section)
6864 {
6865   struct bp_location *bl = b->loc;
6866
6867   for (; bl; bl = bl->next)
6868     {
6869       if (bl->pspace == pspace
6870           && bl->address == pc
6871           && (!overlay_debugging || bl->section == section))
6872         return 1;         
6873     }
6874   return 0;
6875 }
6876
6877 /* Print a message describing any user-breakpoints set at PC.  This
6878    concerns with logical breakpoints, so we match program spaces, not
6879    address spaces.  */
6880
6881 static void
6882 describe_other_breakpoints (struct gdbarch *gdbarch,
6883                             struct program_space *pspace, CORE_ADDR pc,
6884                             struct obj_section *section, int thread)
6885 {
6886   int others = 0;
6887   struct breakpoint *b;
6888
6889   ALL_BREAKPOINTS (b)
6890     others += (user_breakpoint_p (b)
6891                && breakpoint_has_pc (b, pspace, pc, section));
6892   if (others > 0)
6893     {
6894       if (others == 1)
6895         printf_filtered (_("Note: breakpoint "));
6896       else /* if (others == ???) */
6897         printf_filtered (_("Note: breakpoints "));
6898       ALL_BREAKPOINTS (b)
6899         if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
6900           {
6901             others--;
6902             printf_filtered ("%d", b->number);
6903             if (b->thread == -1 && thread != -1)
6904               printf_filtered (" (all threads)");
6905             else if (b->thread != -1)
6906               printf_filtered (" (thread %d)", b->thread);
6907             printf_filtered ("%s%s ",
6908                              ((b->enable_state == bp_disabled
6909                                || b->enable_state == bp_call_disabled)
6910                               ? " (disabled)"
6911                               : ""),
6912                              (others > 1) ? "," 
6913                              : ((others == 1) ? " and" : ""));
6914           }
6915       printf_filtered (_("also set at pc "));
6916       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
6917       printf_filtered (".\n");
6918     }
6919 }
6920 \f
6921
6922 /* Return true iff it is meaningful to use the address member of
6923    BPT.  For some breakpoint types, the address member is irrelevant
6924    and it makes no sense to attempt to compare it to other addresses
6925    (or use it for any other purpose either).
6926
6927    More specifically, each of the following breakpoint types will
6928    always have a zero valued address and we don't want to mark
6929    breakpoints of any of these types to be a duplicate of an actual
6930    breakpoint at address zero:
6931
6932       bp_watchpoint
6933       bp_catchpoint
6934
6935 */
6936
6937 static int
6938 breakpoint_address_is_meaningful (struct breakpoint *bpt)
6939 {
6940   enum bptype type = bpt->type;
6941
6942   return (type != bp_watchpoint && type != bp_catchpoint);
6943 }
6944
6945 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
6946    true if LOC1 and LOC2 represent the same watchpoint location.  */
6947
6948 static int
6949 watchpoint_locations_match (struct bp_location *loc1, 
6950                             struct bp_location *loc2)
6951 {
6952   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
6953   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
6954
6955   /* Both of them must exist.  */
6956   gdb_assert (w1 != NULL);
6957   gdb_assert (w2 != NULL);
6958
6959   /* If the target can evaluate the condition expression in hardware,
6960      then we we need to insert both watchpoints even if they are at
6961      the same place.  Otherwise the watchpoint will only trigger when
6962      the condition of whichever watchpoint was inserted evaluates to
6963      true, not giving a chance for GDB to check the condition of the
6964      other watchpoint.  */
6965   if ((w1->cond_exp
6966        && target_can_accel_watchpoint_condition (loc1->address, 
6967                                                  loc1->length,
6968                                                  loc1->watchpoint_type,
6969                                                  w1->cond_exp))
6970       || (w2->cond_exp
6971           && target_can_accel_watchpoint_condition (loc2->address, 
6972                                                     loc2->length,
6973                                                     loc2->watchpoint_type,
6974                                                     w2->cond_exp)))
6975     return 0;
6976
6977   /* Note that this checks the owner's type, not the location's.  In
6978      case the target does not support read watchpoints, but does
6979      support access watchpoints, we'll have bp_read_watchpoint
6980      watchpoints with hw_access locations.  Those should be considered
6981      duplicates of hw_read locations.  The hw_read locations will
6982      become hw_access locations later.  */
6983   return (loc1->owner->type == loc2->owner->type
6984           && loc1->pspace->aspace == loc2->pspace->aspace
6985           && loc1->address == loc2->address
6986           && loc1->length == loc2->length);
6987 }
6988
6989 /* See breakpoint.h.  */
6990
6991 int
6992 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
6993                           struct address_space *aspace2, CORE_ADDR addr2)
6994 {
6995   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
6996            || aspace1 == aspace2)
6997           && addr1 == addr2);
6998 }
6999
7000 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7001    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7002    matches ASPACE2.  On targets that have global breakpoints, the address
7003    space doesn't really matter.  */
7004
7005 static int
7006 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7007                                 int len1, struct address_space *aspace2,
7008                                 CORE_ADDR addr2)
7009 {
7010   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7011            || aspace1 == aspace2)
7012           && addr2 >= addr1 && addr2 < addr1 + len1);
7013 }
7014
7015 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7016    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7017    matches the breakpoint's address space.  On targets that have global
7018    breakpoints, the address space doesn't really matter.  */
7019
7020 static int
7021 breakpoint_location_address_match (struct bp_location *bl,
7022                                    struct address_space *aspace,
7023                                    CORE_ADDR addr)
7024 {
7025   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7026                                     aspace, addr)
7027           || (bl->length
7028               && breakpoint_address_match_range (bl->pspace->aspace,
7029                                                  bl->address, bl->length,
7030                                                  aspace, addr)));
7031 }
7032
7033 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7034    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7035    true, otherwise returns false.  */
7036
7037 static int
7038 tracepoint_locations_match (struct bp_location *loc1,
7039                             struct bp_location *loc2)
7040 {
7041   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7042     /* Since tracepoint locations are never duplicated with others', tracepoint
7043        locations at the same address of different tracepoints are regarded as
7044        different locations.  */
7045     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7046   else
7047     return 0;
7048 }
7049
7050 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7051    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7052    represent the same location.  */
7053
7054 static int
7055 breakpoint_locations_match (struct bp_location *loc1, 
7056                             struct bp_location *loc2)
7057 {
7058   int hw_point1, hw_point2;
7059
7060   /* Both of them must not be in moribund_locations.  */
7061   gdb_assert (loc1->owner != NULL);
7062   gdb_assert (loc2->owner != NULL);
7063
7064   hw_point1 = is_hardware_watchpoint (loc1->owner);
7065   hw_point2 = is_hardware_watchpoint (loc2->owner);
7066
7067   if (hw_point1 != hw_point2)
7068     return 0;
7069   else if (hw_point1)
7070     return watchpoint_locations_match (loc1, loc2);
7071   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7072     return tracepoint_locations_match (loc1, loc2);
7073   else
7074     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7075     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7076                                      loc2->pspace->aspace, loc2->address)
7077             && loc1->length == loc2->length);
7078 }
7079
7080 static void
7081 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7082                                int bnum, int have_bnum)
7083 {
7084   /* The longest string possibly returned by hex_string_custom
7085      is 50 chars.  These must be at least that big for safety.  */
7086   char astr1[64];
7087   char astr2[64];
7088
7089   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7090   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7091   if (have_bnum)
7092     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7093              bnum, astr1, astr2);
7094   else
7095     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7096 }
7097
7098 /* Adjust a breakpoint's address to account for architectural
7099    constraints on breakpoint placement.  Return the adjusted address.
7100    Note: Very few targets require this kind of adjustment.  For most
7101    targets, this function is simply the identity function.  */
7102
7103 static CORE_ADDR
7104 adjust_breakpoint_address (struct gdbarch *gdbarch,
7105                            CORE_ADDR bpaddr, enum bptype bptype)
7106 {
7107   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7108     {
7109       /* Very few targets need any kind of breakpoint adjustment.  */
7110       return bpaddr;
7111     }
7112   else if (bptype == bp_watchpoint
7113            || bptype == bp_hardware_watchpoint
7114            || bptype == bp_read_watchpoint
7115            || bptype == bp_access_watchpoint
7116            || bptype == bp_catchpoint)
7117     {
7118       /* Watchpoints and the various bp_catch_* eventpoints should not
7119          have their addresses modified.  */
7120       return bpaddr;
7121     }
7122   else if (bptype == bp_single_step)
7123     {
7124       /* Single-step breakpoints should not have their addresses
7125          modified.  If there's any architectural constrain that
7126          applies to this address, then it should have already been
7127          taken into account when the breakpoint was created in the
7128          first place.  If we didn't do this, stepping through e.g.,
7129          Thumb-2 IT blocks would break.  */
7130       return bpaddr;
7131     }
7132   else
7133     {
7134       CORE_ADDR adjusted_bpaddr;
7135
7136       /* Some targets have architectural constraints on the placement
7137          of breakpoint instructions.  Obtain the adjusted address.  */
7138       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7139
7140       /* An adjusted breakpoint address can significantly alter
7141          a user's expectations.  Print a warning if an adjustment
7142          is required.  */
7143       if (adjusted_bpaddr != bpaddr)
7144         breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7145
7146       return adjusted_bpaddr;
7147     }
7148 }
7149
7150 void
7151 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7152                   struct breakpoint *owner)
7153 {
7154   memset (loc, 0, sizeof (*loc));
7155
7156   gdb_assert (ops != NULL);
7157
7158   loc->ops = ops;
7159   loc->owner = owner;
7160   loc->cond = NULL;
7161   loc->cond_bytecode = NULL;
7162   loc->shlib_disabled = 0;
7163   loc->enabled = 1;
7164
7165   switch (owner->type)
7166     {
7167     case bp_breakpoint:
7168     case bp_single_step:
7169     case bp_until:
7170     case bp_finish:
7171     case bp_longjmp:
7172     case bp_longjmp_resume:
7173     case bp_longjmp_call_dummy:
7174     case bp_exception:
7175     case bp_exception_resume:
7176     case bp_step_resume:
7177     case bp_hp_step_resume:
7178     case bp_watchpoint_scope:
7179     case bp_call_dummy:
7180     case bp_std_terminate:
7181     case bp_shlib_event:
7182     case bp_thread_event:
7183     case bp_overlay_event:
7184     case bp_jit_event:
7185     case bp_longjmp_master:
7186     case bp_std_terminate_master:
7187     case bp_exception_master:
7188     case bp_gnu_ifunc_resolver:
7189     case bp_gnu_ifunc_resolver_return:
7190     case bp_dprintf:
7191       loc->loc_type = bp_loc_software_breakpoint;
7192       mark_breakpoint_location_modified (loc);
7193       break;
7194     case bp_hardware_breakpoint:
7195       loc->loc_type = bp_loc_hardware_breakpoint;
7196       mark_breakpoint_location_modified (loc);
7197       break;
7198     case bp_hardware_watchpoint:
7199     case bp_read_watchpoint:
7200     case bp_access_watchpoint:
7201       loc->loc_type = bp_loc_hardware_watchpoint;
7202       break;
7203     case bp_watchpoint:
7204     case bp_catchpoint:
7205     case bp_tracepoint:
7206     case bp_fast_tracepoint:
7207     case bp_static_tracepoint:
7208       loc->loc_type = bp_loc_other;
7209       break;
7210     default:
7211       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7212     }
7213
7214   loc->refc = 1;
7215 }
7216
7217 /* Allocate a struct bp_location.  */
7218
7219 static struct bp_location *
7220 allocate_bp_location (struct breakpoint *bpt)
7221 {
7222   return bpt->ops->allocate_location (bpt);
7223 }
7224
7225 static void
7226 free_bp_location (struct bp_location *loc)
7227 {
7228   loc->ops->dtor (loc);
7229   xfree (loc);
7230 }
7231
7232 /* Increment reference count.  */
7233
7234 static void
7235 incref_bp_location (struct bp_location *bl)
7236 {
7237   ++bl->refc;
7238 }
7239
7240 /* Decrement reference count.  If the reference count reaches 0,
7241    destroy the bp_location.  Sets *BLP to NULL.  */
7242
7243 static void
7244 decref_bp_location (struct bp_location **blp)
7245 {
7246   gdb_assert ((*blp)->refc > 0);
7247
7248   if (--(*blp)->refc == 0)
7249     free_bp_location (*blp);
7250   *blp = NULL;
7251 }
7252
7253 /* Add breakpoint B at the end of the global breakpoint chain.  */
7254
7255 static void
7256 add_to_breakpoint_chain (struct breakpoint *b)
7257 {
7258   struct breakpoint *b1;
7259
7260   /* Add this breakpoint to the end of the chain so that a list of
7261      breakpoints will come out in order of increasing numbers.  */
7262
7263   b1 = breakpoint_chain;
7264   if (b1 == 0)
7265     breakpoint_chain = b;
7266   else
7267     {
7268       while (b1->next)
7269         b1 = b1->next;
7270       b1->next = b;
7271     }
7272 }
7273
7274 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7275
7276 static void
7277 init_raw_breakpoint_without_location (struct breakpoint *b,
7278                                       struct gdbarch *gdbarch,
7279                                       enum bptype bptype,
7280                                       const struct breakpoint_ops *ops)
7281 {
7282   memset (b, 0, sizeof (*b));
7283
7284   gdb_assert (ops != NULL);
7285
7286   b->ops = ops;
7287   b->type = bptype;
7288   b->gdbarch = gdbarch;
7289   b->language = current_language->la_language;
7290   b->input_radix = input_radix;
7291   b->thread = -1;
7292   b->enable_state = bp_enabled;
7293   b->next = 0;
7294   b->silent = 0;
7295   b->ignore_count = 0;
7296   b->commands = NULL;
7297   b->frame_id = null_frame_id;
7298   b->condition_not_parsed = 0;
7299   b->py_bp_object = NULL;
7300   b->related_breakpoint = b;
7301 }
7302
7303 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7304    that has type BPTYPE and has no locations as yet.  */
7305
7306 static struct breakpoint *
7307 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7308                                      enum bptype bptype,
7309                                      const struct breakpoint_ops *ops)
7310 {
7311   struct breakpoint *b = XNEW (struct breakpoint);
7312
7313   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7314   add_to_breakpoint_chain (b);
7315   return b;
7316 }
7317
7318 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7319    resolutions should be made as the user specified the location explicitly
7320    enough.  */
7321
7322 static void
7323 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7324 {
7325   gdb_assert (loc->owner != NULL);
7326
7327   if (loc->owner->type == bp_breakpoint
7328       || loc->owner->type == bp_hardware_breakpoint
7329       || is_tracepoint (loc->owner))
7330     {
7331       int is_gnu_ifunc;
7332       const char *function_name;
7333       CORE_ADDR func_addr;
7334
7335       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7336                                           &func_addr, NULL, &is_gnu_ifunc);
7337
7338       if (is_gnu_ifunc && !explicit_loc)
7339         {
7340           struct breakpoint *b = loc->owner;
7341
7342           gdb_assert (loc->pspace == current_program_space);
7343           if (gnu_ifunc_resolve_name (function_name,
7344                                       &loc->requested_address))
7345             {
7346               /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7347               loc->address = adjust_breakpoint_address (loc->gdbarch,
7348                                                         loc->requested_address,
7349                                                         b->type);
7350             }
7351           else if (b->type == bp_breakpoint && b->loc == loc
7352                    && loc->next == NULL && b->related_breakpoint == b)
7353             {
7354               /* Create only the whole new breakpoint of this type but do not
7355                  mess more complicated breakpoints with multiple locations.  */
7356               b->type = bp_gnu_ifunc_resolver;
7357               /* Remember the resolver's address for use by the return
7358                  breakpoint.  */
7359               loc->related_address = func_addr;
7360             }
7361         }
7362
7363       if (function_name)
7364         loc->function_name = xstrdup (function_name);
7365     }
7366 }
7367
7368 /* Attempt to determine architecture of location identified by SAL.  */
7369 struct gdbarch *
7370 get_sal_arch (struct symtab_and_line sal)
7371 {
7372   if (sal.section)
7373     return get_objfile_arch (sal.section->objfile);
7374   if (sal.symtab)
7375     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7376
7377   return NULL;
7378 }
7379
7380 /* Low level routine for partially initializing a breakpoint of type
7381    BPTYPE.  The newly created breakpoint's address, section, source
7382    file name, and line number are provided by SAL.
7383
7384    It is expected that the caller will complete the initialization of
7385    the newly created breakpoint struct as well as output any status
7386    information regarding the creation of a new breakpoint.  */
7387
7388 static void
7389 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7390                      struct symtab_and_line sal, enum bptype bptype,
7391                      const struct breakpoint_ops *ops)
7392 {
7393   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7394
7395   add_location_to_breakpoint (b, &sal);
7396
7397   if (bptype != bp_catchpoint)
7398     gdb_assert (sal.pspace != NULL);
7399
7400   /* Store the program space that was used to set the breakpoint,
7401      except for ordinary breakpoints, which are independent of the
7402      program space.  */
7403   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7404     b->pspace = sal.pspace;
7405 }
7406
7407 /* set_raw_breakpoint is a low level routine for allocating and
7408    partially initializing a breakpoint of type BPTYPE.  The newly
7409    created breakpoint's address, section, source file name, and line
7410    number are provided by SAL.  The newly created and partially
7411    initialized breakpoint is added to the breakpoint chain and
7412    is also returned as the value of this function.
7413
7414    It is expected that the caller will complete the initialization of
7415    the newly created breakpoint struct as well as output any status
7416    information regarding the creation of a new breakpoint.  In
7417    particular, set_raw_breakpoint does NOT set the breakpoint
7418    number!  Care should be taken to not allow an error to occur
7419    prior to completing the initialization of the breakpoint.  If this
7420    should happen, a bogus breakpoint will be left on the chain.  */
7421
7422 struct breakpoint *
7423 set_raw_breakpoint (struct gdbarch *gdbarch,
7424                     struct symtab_and_line sal, enum bptype bptype,
7425                     const struct breakpoint_ops *ops)
7426 {
7427   struct breakpoint *b = XNEW (struct breakpoint);
7428
7429   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7430   add_to_breakpoint_chain (b);
7431   return b;
7432 }
7433
7434
7435 /* Note that the breakpoint object B describes a permanent breakpoint
7436    instruction, hard-wired into the inferior's code.  */
7437 void
7438 make_breakpoint_permanent (struct breakpoint *b)
7439 {
7440   struct bp_location *bl;
7441
7442   /* By definition, permanent breakpoints are already present in the
7443      code.  Mark all locations as inserted.  For now,
7444      make_breakpoint_permanent is called in just one place, so it's
7445      hard to say if it's reasonable to have permanent breakpoint with
7446      multiple locations or not, but it's easy to implement.  */
7447   for (bl = b->loc; bl; bl = bl->next)
7448     {
7449       bl->permanent = 1;
7450       bl->inserted = 1;
7451     }
7452 }
7453
7454 /* Call this routine when stepping and nexting to enable a breakpoint
7455    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7456    initiated the operation.  */
7457
7458 void
7459 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7460 {
7461   struct breakpoint *b, *b_tmp;
7462   int thread = tp->num;
7463
7464   /* To avoid having to rescan all objfile symbols at every step,
7465      we maintain a list of continually-inserted but always disabled
7466      longjmp "master" breakpoints.  Here, we simply create momentary
7467      clones of those and enable them for the requested thread.  */
7468   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7469     if (b->pspace == current_program_space
7470         && (b->type == bp_longjmp_master
7471             || b->type == bp_exception_master))
7472       {
7473         enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7474         struct breakpoint *clone;
7475
7476         /* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7477            after their removal.  */
7478         clone = momentary_breakpoint_from_master (b, type,
7479                                                   &longjmp_breakpoint_ops, 1);
7480         clone->thread = thread;
7481       }
7482
7483   tp->initiating_frame = frame;
7484 }
7485
7486 /* Delete all longjmp breakpoints from THREAD.  */
7487 void
7488 delete_longjmp_breakpoint (int thread)
7489 {
7490   struct breakpoint *b, *b_tmp;
7491
7492   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7493     if (b->type == bp_longjmp || b->type == bp_exception)
7494       {
7495         if (b->thread == thread)
7496           delete_breakpoint (b);
7497       }
7498 }
7499
7500 void
7501 delete_longjmp_breakpoint_at_next_stop (int thread)
7502 {
7503   struct breakpoint *b, *b_tmp;
7504
7505   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7506     if (b->type == bp_longjmp || b->type == bp_exception)
7507       {
7508         if (b->thread == thread)
7509           b->disposition = disp_del_at_next_stop;
7510       }
7511 }
7512
7513 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7514    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7515    pointer to any of them.  Return NULL if this system cannot place longjmp
7516    breakpoints.  */
7517
7518 struct breakpoint *
7519 set_longjmp_breakpoint_for_call_dummy (void)
7520 {
7521   struct breakpoint *b, *retval = NULL;
7522
7523   ALL_BREAKPOINTS (b)
7524     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7525       {
7526         struct breakpoint *new_b;
7527
7528         new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7529                                                   &momentary_breakpoint_ops,
7530                                                   1);
7531         new_b->thread = pid_to_thread_id (inferior_ptid);
7532
7533         /* Link NEW_B into the chain of RETVAL breakpoints.  */
7534
7535         gdb_assert (new_b->related_breakpoint == new_b);
7536         if (retval == NULL)
7537           retval = new_b;
7538         new_b->related_breakpoint = retval;
7539         while (retval->related_breakpoint != new_b->related_breakpoint)
7540           retval = retval->related_breakpoint;
7541         retval->related_breakpoint = new_b;
7542       }
7543
7544   return retval;
7545 }
7546
7547 /* Verify all existing dummy frames and their associated breakpoints for
7548    TP.  Remove those which can no longer be found in the current frame
7549    stack.
7550
7551    You should call this function only at places where it is safe to currently
7552    unwind the whole stack.  Failed stack unwind would discard live dummy
7553    frames.  */
7554
7555 void
7556 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7557 {
7558   struct breakpoint *b, *b_tmp;
7559
7560   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7561     if (b->type == bp_longjmp_call_dummy && b->thread == tp->num)
7562       {
7563         struct breakpoint *dummy_b = b->related_breakpoint;
7564
7565         while (dummy_b != b && dummy_b->type != bp_call_dummy)
7566           dummy_b = dummy_b->related_breakpoint;
7567         if (dummy_b->type != bp_call_dummy
7568             || frame_find_by_id (dummy_b->frame_id) != NULL)
7569           continue;
7570         
7571         dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7572
7573         while (b->related_breakpoint != b)
7574           {
7575             if (b_tmp == b->related_breakpoint)
7576               b_tmp = b->related_breakpoint->next;
7577             delete_breakpoint (b->related_breakpoint);
7578           }
7579         delete_breakpoint (b);
7580       }
7581 }
7582
7583 void
7584 enable_overlay_breakpoints (void)
7585 {
7586   struct breakpoint *b;
7587
7588   ALL_BREAKPOINTS (b)
7589     if (b->type == bp_overlay_event)
7590     {
7591       b->enable_state = bp_enabled;
7592       update_global_location_list (UGLL_MAY_INSERT);
7593       overlay_events_enabled = 1;
7594     }
7595 }
7596
7597 void
7598 disable_overlay_breakpoints (void)
7599 {
7600   struct breakpoint *b;
7601
7602   ALL_BREAKPOINTS (b)
7603     if (b->type == bp_overlay_event)
7604     {
7605       b->enable_state = bp_disabled;
7606       update_global_location_list (UGLL_DONT_INSERT);
7607       overlay_events_enabled = 0;
7608     }
7609 }
7610
7611 /* Set an active std::terminate breakpoint for each std::terminate
7612    master breakpoint.  */
7613 void
7614 set_std_terminate_breakpoint (void)
7615 {
7616   struct breakpoint *b, *b_tmp;
7617
7618   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7619     if (b->pspace == current_program_space
7620         && b->type == bp_std_terminate_master)
7621       {
7622         momentary_breakpoint_from_master (b, bp_std_terminate,
7623                                           &momentary_breakpoint_ops, 1);
7624       }
7625 }
7626
7627 /* Delete all the std::terminate breakpoints.  */
7628 void
7629 delete_std_terminate_breakpoint (void)
7630 {
7631   struct breakpoint *b, *b_tmp;
7632
7633   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7634     if (b->type == bp_std_terminate)
7635       delete_breakpoint (b);
7636 }
7637
7638 struct breakpoint *
7639 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7640 {
7641   struct breakpoint *b;
7642
7643   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7644                                   &internal_breakpoint_ops);
7645
7646   b->enable_state = bp_enabled;
7647   /* addr_string has to be used or breakpoint_re_set will delete me.  */
7648   b->addr_string
7649     = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
7650
7651   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7652
7653   return b;
7654 }
7655
7656 void
7657 remove_thread_event_breakpoints (void)
7658 {
7659   struct breakpoint *b, *b_tmp;
7660
7661   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7662     if (b->type == bp_thread_event
7663         && b->loc->pspace == current_program_space)
7664       delete_breakpoint (b);
7665 }
7666
7667 struct lang_and_radix
7668   {
7669     enum language lang;
7670     int radix;
7671   };
7672
7673 /* Create a breakpoint for JIT code registration and unregistration.  */
7674
7675 struct breakpoint *
7676 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7677 {
7678   struct breakpoint *b;
7679
7680   b = create_internal_breakpoint (gdbarch, address, bp_jit_event,
7681                                   &internal_breakpoint_ops);
7682   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7683   return b;
7684 }
7685
7686 /* Remove JIT code registration and unregistration breakpoint(s).  */
7687
7688 void
7689 remove_jit_event_breakpoints (void)
7690 {
7691   struct breakpoint *b, *b_tmp;
7692
7693   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7694     if (b->type == bp_jit_event
7695         && b->loc->pspace == current_program_space)
7696       delete_breakpoint (b);
7697 }
7698
7699 void
7700 remove_solib_event_breakpoints (void)
7701 {
7702   struct breakpoint *b, *b_tmp;
7703
7704   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7705     if (b->type == bp_shlib_event
7706         && b->loc->pspace == current_program_space)
7707       delete_breakpoint (b);
7708 }
7709
7710 /* See breakpoint.h.  */
7711
7712 void
7713 remove_solib_event_breakpoints_at_next_stop (void)
7714 {
7715   struct breakpoint *b, *b_tmp;
7716
7717   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7718     if (b->type == bp_shlib_event
7719         && b->loc->pspace == current_program_space)
7720       b->disposition = disp_del_at_next_stop;
7721 }
7722
7723 /* Helper for create_solib_event_breakpoint /
7724    create_and_insert_solib_event_breakpoint.  Allows specifying which
7725    INSERT_MODE to pass through to update_global_location_list.  */
7726
7727 static struct breakpoint *
7728 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7729                                  enum ugll_insert_mode insert_mode)
7730 {
7731   struct breakpoint *b;
7732
7733   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7734                                   &internal_breakpoint_ops);
7735   update_global_location_list_nothrow (insert_mode);
7736   return b;
7737 }
7738
7739 struct breakpoint *
7740 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7741 {
7742   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7743 }
7744
7745 /* See breakpoint.h.  */
7746
7747 struct breakpoint *
7748 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7749 {
7750   struct breakpoint *b;
7751
7752   /* Explicitly tell update_global_location_list to insert
7753      locations.  */
7754   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7755   if (!b->loc->inserted)
7756     {
7757       delete_breakpoint (b);
7758       return NULL;
7759     }
7760   return b;
7761 }
7762
7763 /* Disable any breakpoints that are on code in shared libraries.  Only
7764    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7765
7766 void
7767 disable_breakpoints_in_shlibs (void)
7768 {
7769   struct bp_location *loc, **locp_tmp;
7770
7771   ALL_BP_LOCATIONS (loc, locp_tmp)
7772   {
7773     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7774     struct breakpoint *b = loc->owner;
7775
7776     /* We apply the check to all breakpoints, including disabled for
7777        those with loc->duplicate set.  This is so that when breakpoint
7778        becomes enabled, or the duplicate is removed, gdb will try to
7779        insert all breakpoints.  If we don't set shlib_disabled here,
7780        we'll try to insert those breakpoints and fail.  */
7781     if (((b->type == bp_breakpoint)
7782          || (b->type == bp_jit_event)
7783          || (b->type == bp_hardware_breakpoint)
7784          || (is_tracepoint (b)))
7785         && loc->pspace == current_program_space
7786         && !loc->shlib_disabled
7787         && solib_name_from_address (loc->pspace, loc->address)
7788         )
7789       {
7790         loc->shlib_disabled = 1;
7791       }
7792   }
7793 }
7794
7795 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7796    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7797    disabled ones can just stay disabled.  */
7798
7799 static void
7800 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7801 {
7802   struct bp_location *loc, **locp_tmp;
7803   int disabled_shlib_breaks = 0;
7804
7805   /* SunOS a.out shared libraries are always mapped, so do not
7806      disable breakpoints; they will only be reported as unloaded
7807      through clear_solib when GDB discards its shared library
7808      list.  See clear_solib for more information.  */
7809   if (exec_bfd != NULL
7810       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7811     return;
7812
7813   ALL_BP_LOCATIONS (loc, locp_tmp)
7814   {
7815     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7816     struct breakpoint *b = loc->owner;
7817
7818     if (solib->pspace == loc->pspace
7819         && !loc->shlib_disabled
7820         && (((b->type == bp_breakpoint
7821               || b->type == bp_jit_event
7822               || b->type == bp_hardware_breakpoint)
7823              && (loc->loc_type == bp_loc_hardware_breakpoint
7824                  || loc->loc_type == bp_loc_software_breakpoint))
7825             || is_tracepoint (b))
7826         && solib_contains_address_p (solib, loc->address))
7827       {
7828         loc->shlib_disabled = 1;
7829         /* At this point, we cannot rely on remove_breakpoint
7830            succeeding so we must mark the breakpoint as not inserted
7831            to prevent future errors occurring in remove_breakpoints.  */
7832         loc->inserted = 0;
7833
7834         /* This may cause duplicate notifications for the same breakpoint.  */
7835         observer_notify_breakpoint_modified (b);
7836
7837         if (!disabled_shlib_breaks)
7838           {
7839             target_terminal_ours_for_output ();
7840             warning (_("Temporarily disabling breakpoints "
7841                        "for unloaded shared library \"%s\""),
7842                      solib->so_name);
7843           }
7844         disabled_shlib_breaks = 1;
7845       }
7846   }
7847 }
7848
7849 /* Disable any breakpoints and tracepoints in OBJFILE upon
7850    notification of free_objfile.  Only apply to enabled breakpoints,
7851    disabled ones can just stay disabled.  */
7852
7853 static void
7854 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
7855 {
7856   struct breakpoint *b;
7857
7858   if (objfile == NULL)
7859     return;
7860
7861   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
7862      managed by the user with add-symbol-file/remove-symbol-file.
7863      Similarly to how breakpoints in shared libraries are handled in
7864      response to "nosharedlibrary", mark breakpoints in such modules
7865      shlib_disabled so they end up uninserted on the next global
7866      location list update.  Shared libraries not loaded by the user
7867      aren't handled here -- they're already handled in
7868      disable_breakpoints_in_unloaded_shlib, called by solib.c's
7869      solib_unloaded observer.  We skip objfiles that are not
7870      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
7871      main objfile).  */
7872   if ((objfile->flags & OBJF_SHARED) == 0
7873       || (objfile->flags & OBJF_USERLOADED) == 0)
7874     return;
7875
7876   ALL_BREAKPOINTS (b)
7877     {
7878       struct bp_location *loc;
7879       int bp_modified = 0;
7880
7881       if (!is_breakpoint (b) && !is_tracepoint (b))
7882         continue;
7883
7884       for (loc = b->loc; loc != NULL; loc = loc->next)
7885         {
7886           CORE_ADDR loc_addr = loc->address;
7887
7888           if (loc->loc_type != bp_loc_hardware_breakpoint
7889               && loc->loc_type != bp_loc_software_breakpoint)
7890             continue;
7891
7892           if (loc->shlib_disabled != 0)
7893             continue;
7894
7895           if (objfile->pspace != loc->pspace)
7896             continue;
7897
7898           if (loc->loc_type != bp_loc_hardware_breakpoint
7899               && loc->loc_type != bp_loc_software_breakpoint)
7900             continue;
7901
7902           if (is_addr_in_objfile (loc_addr, objfile))
7903             {
7904               loc->shlib_disabled = 1;
7905               /* At this point, we don't know whether the object was
7906                  unmapped from the inferior or not, so leave the
7907                  inserted flag alone.  We'll handle failure to
7908                  uninsert quietly, in case the object was indeed
7909                  unmapped.  */
7910
7911               mark_breakpoint_location_modified (loc);
7912
7913               bp_modified = 1;
7914             }
7915         }
7916
7917       if (bp_modified)
7918         observer_notify_breakpoint_modified (b);
7919     }
7920 }
7921
7922 /* FORK & VFORK catchpoints.  */
7923
7924 /* An instance of this type is used to represent a fork or vfork
7925    catchpoint.  It includes a "struct breakpoint" as a kind of base
7926    class; users downcast to "struct breakpoint *" when needed.  A
7927    breakpoint is really of this type iff its ops pointer points to
7928    CATCH_FORK_BREAKPOINT_OPS.  */
7929
7930 struct fork_catchpoint
7931 {
7932   /* The base class.  */
7933   struct breakpoint base;
7934
7935   /* Process id of a child process whose forking triggered this
7936      catchpoint.  This field is only valid immediately after this
7937      catchpoint has triggered.  */
7938   ptid_t forked_inferior_pid;
7939 };
7940
7941 /* Implement the "insert" breakpoint_ops method for fork
7942    catchpoints.  */
7943
7944 static int
7945 insert_catch_fork (struct bp_location *bl)
7946 {
7947   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
7948 }
7949
7950 /* Implement the "remove" breakpoint_ops method for fork
7951    catchpoints.  */
7952
7953 static int
7954 remove_catch_fork (struct bp_location *bl)
7955 {
7956   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
7957 }
7958
7959 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
7960    catchpoints.  */
7961
7962 static int
7963 breakpoint_hit_catch_fork (const struct bp_location *bl,
7964                            struct address_space *aspace, CORE_ADDR bp_addr,
7965                            const struct target_waitstatus *ws)
7966 {
7967   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
7968
7969   if (ws->kind != TARGET_WAITKIND_FORKED)
7970     return 0;
7971
7972   c->forked_inferior_pid = ws->value.related_pid;
7973   return 1;
7974 }
7975
7976 /* Implement the "print_it" breakpoint_ops method for fork
7977    catchpoints.  */
7978
7979 static enum print_stop_action
7980 print_it_catch_fork (bpstat bs)
7981 {
7982   struct ui_out *uiout = current_uiout;
7983   struct breakpoint *b = bs->breakpoint_at;
7984   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
7985
7986   annotate_catchpoint (b->number);
7987   if (b->disposition == disp_del)
7988     ui_out_text (uiout, "\nTemporary catchpoint ");
7989   else
7990     ui_out_text (uiout, "\nCatchpoint ");
7991   if (ui_out_is_mi_like_p (uiout))
7992     {
7993       ui_out_field_string (uiout, "reason",
7994                            async_reason_lookup (EXEC_ASYNC_FORK));
7995       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
7996     }
7997   ui_out_field_int (uiout, "bkptno", b->number);
7998   ui_out_text (uiout, " (forked process ");
7999   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8000   ui_out_text (uiout, "), ");
8001   return PRINT_SRC_AND_LOC;
8002 }
8003
8004 /* Implement the "print_one" breakpoint_ops method for fork
8005    catchpoints.  */
8006
8007 static void
8008 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8009 {
8010   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8011   struct value_print_options opts;
8012   struct ui_out *uiout = current_uiout;
8013
8014   get_user_print_options (&opts);
8015
8016   /* Field 4, the address, is omitted (which makes the columns not
8017      line up too nicely with the headers, but the effect is relatively
8018      readable).  */
8019   if (opts.addressprint)
8020     ui_out_field_skip (uiout, "addr");
8021   annotate_field (5);
8022   ui_out_text (uiout, "fork");
8023   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8024     {
8025       ui_out_text (uiout, ", process ");
8026       ui_out_field_int (uiout, "what",
8027                         ptid_get_pid (c->forked_inferior_pid));
8028       ui_out_spaces (uiout, 1);
8029     }
8030
8031   if (ui_out_is_mi_like_p (uiout))
8032     ui_out_field_string (uiout, "catch-type", "fork");
8033 }
8034
8035 /* Implement the "print_mention" breakpoint_ops method for fork
8036    catchpoints.  */
8037
8038 static void
8039 print_mention_catch_fork (struct breakpoint *b)
8040 {
8041   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8042 }
8043
8044 /* Implement the "print_recreate" breakpoint_ops method for fork
8045    catchpoints.  */
8046
8047 static void
8048 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8049 {
8050   fprintf_unfiltered (fp, "catch fork");
8051   print_recreate_thread (b, fp);
8052 }
8053
8054 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8055
8056 static struct breakpoint_ops catch_fork_breakpoint_ops;
8057
8058 /* Implement the "insert" breakpoint_ops method for vfork
8059    catchpoints.  */
8060
8061 static int
8062 insert_catch_vfork (struct bp_location *bl)
8063 {
8064   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8065 }
8066
8067 /* Implement the "remove" breakpoint_ops method for vfork
8068    catchpoints.  */
8069
8070 static int
8071 remove_catch_vfork (struct bp_location *bl)
8072 {
8073   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8074 }
8075
8076 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8077    catchpoints.  */
8078
8079 static int
8080 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8081                             struct address_space *aspace, CORE_ADDR bp_addr,
8082                             const struct target_waitstatus *ws)
8083 {
8084   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8085
8086   if (ws->kind != TARGET_WAITKIND_VFORKED)
8087     return 0;
8088
8089   c->forked_inferior_pid = ws->value.related_pid;
8090   return 1;
8091 }
8092
8093 /* Implement the "print_it" breakpoint_ops method for vfork
8094    catchpoints.  */
8095
8096 static enum print_stop_action
8097 print_it_catch_vfork (bpstat bs)
8098 {
8099   struct ui_out *uiout = current_uiout;
8100   struct breakpoint *b = bs->breakpoint_at;
8101   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8102
8103   annotate_catchpoint (b->number);
8104   if (b->disposition == disp_del)
8105     ui_out_text (uiout, "\nTemporary catchpoint ");
8106   else
8107     ui_out_text (uiout, "\nCatchpoint ");
8108   if (ui_out_is_mi_like_p (uiout))
8109     {
8110       ui_out_field_string (uiout, "reason",
8111                            async_reason_lookup (EXEC_ASYNC_VFORK));
8112       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8113     }
8114   ui_out_field_int (uiout, "bkptno", b->number);
8115   ui_out_text (uiout, " (vforked process ");
8116   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8117   ui_out_text (uiout, "), ");
8118   return PRINT_SRC_AND_LOC;
8119 }
8120
8121 /* Implement the "print_one" breakpoint_ops method for vfork
8122    catchpoints.  */
8123
8124 static void
8125 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8126 {
8127   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8128   struct value_print_options opts;
8129   struct ui_out *uiout = current_uiout;
8130
8131   get_user_print_options (&opts);
8132   /* Field 4, the address, is omitted (which makes the columns not
8133      line up too nicely with the headers, but the effect is relatively
8134      readable).  */
8135   if (opts.addressprint)
8136     ui_out_field_skip (uiout, "addr");
8137   annotate_field (5);
8138   ui_out_text (uiout, "vfork");
8139   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8140     {
8141       ui_out_text (uiout, ", process ");
8142       ui_out_field_int (uiout, "what",
8143                         ptid_get_pid (c->forked_inferior_pid));
8144       ui_out_spaces (uiout, 1);
8145     }
8146
8147   if (ui_out_is_mi_like_p (uiout))
8148     ui_out_field_string (uiout, "catch-type", "vfork");
8149 }
8150
8151 /* Implement the "print_mention" breakpoint_ops method for vfork
8152    catchpoints.  */
8153
8154 static void
8155 print_mention_catch_vfork (struct breakpoint *b)
8156 {
8157   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8158 }
8159
8160 /* Implement the "print_recreate" breakpoint_ops method for vfork
8161    catchpoints.  */
8162
8163 static void
8164 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8165 {
8166   fprintf_unfiltered (fp, "catch vfork");
8167   print_recreate_thread (b, fp);
8168 }
8169
8170 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8171
8172 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8173
8174 /* An instance of this type is used to represent an solib catchpoint.
8175    It includes a "struct breakpoint" as a kind of base class; users
8176    downcast to "struct breakpoint *" when needed.  A breakpoint is
8177    really of this type iff its ops pointer points to
8178    CATCH_SOLIB_BREAKPOINT_OPS.  */
8179
8180 struct solib_catchpoint
8181 {
8182   /* The base class.  */
8183   struct breakpoint base;
8184
8185   /* True for "catch load", false for "catch unload".  */
8186   unsigned char is_load;
8187
8188   /* Regular expression to match, if any.  COMPILED is only valid when
8189      REGEX is non-NULL.  */
8190   char *regex;
8191   regex_t compiled;
8192 };
8193
8194 static void
8195 dtor_catch_solib (struct breakpoint *b)
8196 {
8197   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8198
8199   if (self->regex)
8200     regfree (&self->compiled);
8201   xfree (self->regex);
8202
8203   base_breakpoint_ops.dtor (b);
8204 }
8205
8206 static int
8207 insert_catch_solib (struct bp_location *ignore)
8208 {
8209   return 0;
8210 }
8211
8212 static int
8213 remove_catch_solib (struct bp_location *ignore)
8214 {
8215   return 0;
8216 }
8217
8218 static int
8219 breakpoint_hit_catch_solib (const struct bp_location *bl,
8220                             struct address_space *aspace,
8221                             CORE_ADDR bp_addr,
8222                             const struct target_waitstatus *ws)
8223 {
8224   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8225   struct breakpoint *other;
8226
8227   if (ws->kind == TARGET_WAITKIND_LOADED)
8228     return 1;
8229
8230   ALL_BREAKPOINTS (other)
8231   {
8232     struct bp_location *other_bl;
8233
8234     if (other == bl->owner)
8235       continue;
8236
8237     if (other->type != bp_shlib_event)
8238       continue;
8239
8240     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8241       continue;
8242
8243     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8244       {
8245         if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8246           return 1;
8247       }
8248   }
8249
8250   return 0;
8251 }
8252
8253 static void
8254 check_status_catch_solib (struct bpstats *bs)
8255 {
8256   struct solib_catchpoint *self
8257     = (struct solib_catchpoint *) bs->breakpoint_at;
8258   int ix;
8259
8260   if (self->is_load)
8261     {
8262       struct so_list *iter;
8263
8264       for (ix = 0;
8265            VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8266                         ix, iter);
8267            ++ix)
8268         {
8269           if (!self->regex
8270               || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8271             return;
8272         }
8273     }
8274   else
8275     {
8276       char *iter;
8277
8278       for (ix = 0;
8279            VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8280                         ix, iter);
8281            ++ix)
8282         {
8283           if (!self->regex
8284               || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8285             return;
8286         }
8287     }
8288
8289   bs->stop = 0;
8290   bs->print_it = print_it_noop;
8291 }
8292
8293 static enum print_stop_action
8294 print_it_catch_solib (bpstat bs)
8295 {
8296   struct breakpoint *b = bs->breakpoint_at;
8297   struct ui_out *uiout = current_uiout;
8298
8299   annotate_catchpoint (b->number);
8300   if (b->disposition == disp_del)
8301     ui_out_text (uiout, "\nTemporary catchpoint ");
8302   else
8303     ui_out_text (uiout, "\nCatchpoint ");
8304   ui_out_field_int (uiout, "bkptno", b->number);
8305   ui_out_text (uiout, "\n");
8306   if (ui_out_is_mi_like_p (uiout))
8307     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8308   print_solib_event (1);
8309   return PRINT_SRC_AND_LOC;
8310 }
8311
8312 static void
8313 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8314 {
8315   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8316   struct value_print_options opts;
8317   struct ui_out *uiout = current_uiout;
8318   char *msg;
8319
8320   get_user_print_options (&opts);
8321   /* Field 4, the address, is omitted (which makes the columns not
8322      line up too nicely with the headers, but the effect is relatively
8323      readable).  */
8324   if (opts.addressprint)
8325     {
8326       annotate_field (4);
8327       ui_out_field_skip (uiout, "addr");
8328     }
8329
8330   annotate_field (5);
8331   if (self->is_load)
8332     {
8333       if (self->regex)
8334         msg = xstrprintf (_("load of library matching %s"), self->regex);
8335       else
8336         msg = xstrdup (_("load of library"));
8337     }
8338   else
8339     {
8340       if (self->regex)
8341         msg = xstrprintf (_("unload of library matching %s"), self->regex);
8342       else
8343         msg = xstrdup (_("unload of library"));
8344     }
8345   ui_out_field_string (uiout, "what", msg);
8346   xfree (msg);
8347
8348   if (ui_out_is_mi_like_p (uiout))
8349     ui_out_field_string (uiout, "catch-type",
8350                          self->is_load ? "load" : "unload");
8351 }
8352
8353 static void
8354 print_mention_catch_solib (struct breakpoint *b)
8355 {
8356   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8357
8358   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8359                    self->is_load ? "load" : "unload");
8360 }
8361
8362 static void
8363 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8364 {
8365   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8366
8367   fprintf_unfiltered (fp, "%s %s",
8368                       b->disposition == disp_del ? "tcatch" : "catch",
8369                       self->is_load ? "load" : "unload");
8370   if (self->regex)
8371     fprintf_unfiltered (fp, " %s", self->regex);
8372   fprintf_unfiltered (fp, "\n");
8373 }
8374
8375 static struct breakpoint_ops catch_solib_breakpoint_ops;
8376
8377 /* Shared helper function (MI and CLI) for creating and installing
8378    a shared object event catchpoint.  If IS_LOAD is non-zero then
8379    the events to be caught are load events, otherwise they are
8380    unload events.  If IS_TEMP is non-zero the catchpoint is a
8381    temporary one.  If ENABLED is non-zero the catchpoint is
8382    created in an enabled state.  */
8383
8384 void
8385 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8386 {
8387   struct solib_catchpoint *c;
8388   struct gdbarch *gdbarch = get_current_arch ();
8389   struct cleanup *cleanup;
8390
8391   if (!arg)
8392     arg = "";
8393   arg = skip_spaces (arg);
8394
8395   c = XCNEW (struct solib_catchpoint);
8396   cleanup = make_cleanup (xfree, c);
8397
8398   if (*arg != '\0')
8399     {
8400       int errcode;
8401
8402       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8403       if (errcode != 0)
8404         {
8405           char *err = get_regcomp_error (errcode, &c->compiled);
8406
8407           make_cleanup (xfree, err);
8408           error (_("Invalid regexp (%s): %s"), err, arg);
8409         }
8410       c->regex = xstrdup (arg);
8411     }
8412
8413   c->is_load = is_load;
8414   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8415                    &catch_solib_breakpoint_ops);
8416
8417   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8418
8419   discard_cleanups (cleanup);
8420   install_breakpoint (0, &c->base, 1);
8421 }
8422
8423 /* A helper function that does all the work for "catch load" and
8424    "catch unload".  */
8425
8426 static void
8427 catch_load_or_unload (char *arg, int from_tty, int is_load,
8428                       struct cmd_list_element *command)
8429 {
8430   int tempflag;
8431   const int enabled = 1;
8432
8433   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8434
8435   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8436 }
8437
8438 static void
8439 catch_load_command_1 (char *arg, int from_tty,
8440                       struct cmd_list_element *command)
8441 {
8442   catch_load_or_unload (arg, from_tty, 1, command);
8443 }
8444
8445 static void
8446 catch_unload_command_1 (char *arg, int from_tty,
8447                         struct cmd_list_element *command)
8448 {
8449   catch_load_or_unload (arg, from_tty, 0, command);
8450 }
8451
8452 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8453    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8454    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8455    the breakpoint_ops structure associated to the catchpoint.  */
8456
8457 void
8458 init_catchpoint (struct breakpoint *b,
8459                  struct gdbarch *gdbarch, int tempflag,
8460                  char *cond_string,
8461                  const struct breakpoint_ops *ops)
8462 {
8463   struct symtab_and_line sal;
8464
8465   init_sal (&sal);
8466   sal.pspace = current_program_space;
8467
8468   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8469
8470   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8471   b->disposition = tempflag ? disp_del : disp_donttouch;
8472 }
8473
8474 void
8475 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8476 {
8477   add_to_breakpoint_chain (b);
8478   set_breakpoint_number (internal, b);
8479   if (is_tracepoint (b))
8480     set_tracepoint_count (breakpoint_count);
8481   if (!internal)
8482     mention (b);
8483   observer_notify_breakpoint_created (b);
8484
8485   if (update_gll)
8486     update_global_location_list (UGLL_MAY_INSERT);
8487 }
8488
8489 static void
8490 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8491                                     int tempflag, char *cond_string,
8492                                     const struct breakpoint_ops *ops)
8493 {
8494   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8495
8496   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8497
8498   c->forked_inferior_pid = null_ptid;
8499
8500   install_breakpoint (0, &c->base, 1);
8501 }
8502
8503 /* Exec catchpoints.  */
8504
8505 /* An instance of this type is used to represent an exec catchpoint.
8506    It includes a "struct breakpoint" as a kind of base class; users
8507    downcast to "struct breakpoint *" when needed.  A breakpoint is
8508    really of this type iff its ops pointer points to
8509    CATCH_EXEC_BREAKPOINT_OPS.  */
8510
8511 struct exec_catchpoint
8512 {
8513   /* The base class.  */
8514   struct breakpoint base;
8515
8516   /* Filename of a program whose exec triggered this catchpoint.
8517      This field is only valid immediately after this catchpoint has
8518      triggered.  */
8519   char *exec_pathname;
8520 };
8521
8522 /* Implement the "dtor" breakpoint_ops method for exec
8523    catchpoints.  */
8524
8525 static void
8526 dtor_catch_exec (struct breakpoint *b)
8527 {
8528   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8529
8530   xfree (c->exec_pathname);
8531
8532   base_breakpoint_ops.dtor (b);
8533 }
8534
8535 static int
8536 insert_catch_exec (struct bp_location *bl)
8537 {
8538   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8539 }
8540
8541 static int
8542 remove_catch_exec (struct bp_location *bl)
8543 {
8544   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8545 }
8546
8547 static int
8548 breakpoint_hit_catch_exec (const struct bp_location *bl,
8549                            struct address_space *aspace, CORE_ADDR bp_addr,
8550                            const struct target_waitstatus *ws)
8551 {
8552   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8553
8554   if (ws->kind != TARGET_WAITKIND_EXECD)
8555     return 0;
8556
8557   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8558   return 1;
8559 }
8560
8561 static enum print_stop_action
8562 print_it_catch_exec (bpstat bs)
8563 {
8564   struct ui_out *uiout = current_uiout;
8565   struct breakpoint *b = bs->breakpoint_at;
8566   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8567
8568   annotate_catchpoint (b->number);
8569   if (b->disposition == disp_del)
8570     ui_out_text (uiout, "\nTemporary catchpoint ");
8571   else
8572     ui_out_text (uiout, "\nCatchpoint ");
8573   if (ui_out_is_mi_like_p (uiout))
8574     {
8575       ui_out_field_string (uiout, "reason",
8576                            async_reason_lookup (EXEC_ASYNC_EXEC));
8577       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8578     }
8579   ui_out_field_int (uiout, "bkptno", b->number);
8580   ui_out_text (uiout, " (exec'd ");
8581   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8582   ui_out_text (uiout, "), ");
8583
8584   return PRINT_SRC_AND_LOC;
8585 }
8586
8587 static void
8588 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8589 {
8590   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8591   struct value_print_options opts;
8592   struct ui_out *uiout = current_uiout;
8593
8594   get_user_print_options (&opts);
8595
8596   /* Field 4, the address, is omitted (which makes the columns
8597      not line up too nicely with the headers, but the effect
8598      is relatively readable).  */
8599   if (opts.addressprint)
8600     ui_out_field_skip (uiout, "addr");
8601   annotate_field (5);
8602   ui_out_text (uiout, "exec");
8603   if (c->exec_pathname != NULL)
8604     {
8605       ui_out_text (uiout, ", program \"");
8606       ui_out_field_string (uiout, "what", c->exec_pathname);
8607       ui_out_text (uiout, "\" ");
8608     }
8609
8610   if (ui_out_is_mi_like_p (uiout))
8611     ui_out_field_string (uiout, "catch-type", "exec");
8612 }
8613
8614 static void
8615 print_mention_catch_exec (struct breakpoint *b)
8616 {
8617   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8618 }
8619
8620 /* Implement the "print_recreate" breakpoint_ops method for exec
8621    catchpoints.  */
8622
8623 static void
8624 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8625 {
8626   fprintf_unfiltered (fp, "catch exec");
8627   print_recreate_thread (b, fp);
8628 }
8629
8630 static struct breakpoint_ops catch_exec_breakpoint_ops;
8631
8632 static int
8633 hw_breakpoint_used_count (void)
8634 {
8635   int i = 0;
8636   struct breakpoint *b;
8637   struct bp_location *bl;
8638
8639   ALL_BREAKPOINTS (b)
8640   {
8641     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8642       for (bl = b->loc; bl; bl = bl->next)
8643         {
8644           /* Special types of hardware breakpoints may use more than
8645              one register.  */
8646           i += b->ops->resources_needed (bl);
8647         }
8648   }
8649
8650   return i;
8651 }
8652
8653 /* Returns the resources B would use if it were a hardware
8654    watchpoint.  */
8655
8656 static int
8657 hw_watchpoint_use_count (struct breakpoint *b)
8658 {
8659   int i = 0;
8660   struct bp_location *bl;
8661
8662   if (!breakpoint_enabled (b))
8663     return 0;
8664
8665   for (bl = b->loc; bl; bl = bl->next)
8666     {
8667       /* Special types of hardware watchpoints may use more than
8668          one register.  */
8669       i += b->ops->resources_needed (bl);
8670     }
8671
8672   return i;
8673 }
8674
8675 /* Returns the sum the used resources of all hardware watchpoints of
8676    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8677    the sum of the used resources of all hardware watchpoints of other
8678    types _not_ TYPE.  */
8679
8680 static int
8681 hw_watchpoint_used_count_others (struct breakpoint *except,
8682                                  enum bptype type, int *other_type_used)
8683 {
8684   int i = 0;
8685   struct breakpoint *b;
8686
8687   *other_type_used = 0;
8688   ALL_BREAKPOINTS (b)
8689     {
8690       if (b == except)
8691         continue;
8692       if (!breakpoint_enabled (b))
8693         continue;
8694
8695       if (b->type == type)
8696         i += hw_watchpoint_use_count (b);
8697       else if (is_hardware_watchpoint (b))
8698         *other_type_used = 1;
8699     }
8700
8701   return i;
8702 }
8703
8704 void
8705 disable_watchpoints_before_interactive_call_start (void)
8706 {
8707   struct breakpoint *b;
8708
8709   ALL_BREAKPOINTS (b)
8710   {
8711     if (is_watchpoint (b) && breakpoint_enabled (b))
8712       {
8713         b->enable_state = bp_call_disabled;
8714         update_global_location_list (UGLL_DONT_INSERT);
8715       }
8716   }
8717 }
8718
8719 void
8720 enable_watchpoints_after_interactive_call_stop (void)
8721 {
8722   struct breakpoint *b;
8723
8724   ALL_BREAKPOINTS (b)
8725   {
8726     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8727       {
8728         b->enable_state = bp_enabled;
8729         update_global_location_list (UGLL_MAY_INSERT);
8730       }
8731   }
8732 }
8733
8734 void
8735 disable_breakpoints_before_startup (void)
8736 {
8737   current_program_space->executing_startup = 1;
8738   update_global_location_list (UGLL_DONT_INSERT);
8739 }
8740
8741 void
8742 enable_breakpoints_after_startup (void)
8743 {
8744   current_program_space->executing_startup = 0;
8745   breakpoint_re_set ();
8746 }
8747
8748 /* Create a new single-step breakpoint for thread THREAD, with no
8749    locations.  */
8750
8751 static struct breakpoint *
8752 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8753 {
8754   struct breakpoint *b = XNEW (struct breakpoint);
8755
8756   init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
8757                                         &momentary_breakpoint_ops);
8758
8759   b->disposition = disp_donttouch;
8760   b->frame_id = null_frame_id;
8761
8762   b->thread = thread;
8763   gdb_assert (b->thread != 0);
8764
8765   add_to_breakpoint_chain (b);
8766
8767   return b;
8768 }
8769
8770 /* Set a momentary breakpoint of type TYPE at address specified by
8771    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8772    frame.  */
8773
8774 struct breakpoint *
8775 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8776                           struct frame_id frame_id, enum bptype type)
8777 {
8778   struct breakpoint *b;
8779
8780   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8781      tail-called one.  */
8782   gdb_assert (!frame_id_artificial_p (frame_id));
8783
8784   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8785   b->enable_state = bp_enabled;
8786   b->disposition = disp_donttouch;
8787   b->frame_id = frame_id;
8788
8789   /* If we're debugging a multi-threaded program, then we want
8790      momentary breakpoints to be active in only a single thread of
8791      control.  */
8792   if (in_thread_list (inferior_ptid))
8793     b->thread = pid_to_thread_id (inferior_ptid);
8794
8795   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8796
8797   return b;
8798 }
8799
8800 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8801    The new breakpoint will have type TYPE, use OPS as its
8802    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8803
8804 static struct breakpoint *
8805 momentary_breakpoint_from_master (struct breakpoint *orig,
8806                                   enum bptype type,
8807                                   const struct breakpoint_ops *ops,
8808                                   int loc_enabled)
8809 {
8810   struct breakpoint *copy;
8811
8812   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8813   copy->loc = allocate_bp_location (copy);
8814   set_breakpoint_location_function (copy->loc, 1);
8815
8816   copy->loc->gdbarch = orig->loc->gdbarch;
8817   copy->loc->requested_address = orig->loc->requested_address;
8818   copy->loc->address = orig->loc->address;
8819   copy->loc->section = orig->loc->section;
8820   copy->loc->pspace = orig->loc->pspace;
8821   copy->loc->probe = orig->loc->probe;
8822   copy->loc->line_number = orig->loc->line_number;
8823   copy->loc->symtab = orig->loc->symtab;
8824   copy->loc->enabled = loc_enabled;
8825   copy->frame_id = orig->frame_id;
8826   copy->thread = orig->thread;
8827   copy->pspace = orig->pspace;
8828
8829   copy->enable_state = bp_enabled;
8830   copy->disposition = disp_donttouch;
8831   copy->number = internal_breakpoint_number--;
8832
8833   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8834   return copy;
8835 }
8836
8837 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
8838    ORIG is NULL.  */
8839
8840 struct breakpoint *
8841 clone_momentary_breakpoint (struct breakpoint *orig)
8842 {
8843   /* If there's nothing to clone, then return nothing.  */
8844   if (orig == NULL)
8845     return NULL;
8846
8847   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
8848 }
8849
8850 struct breakpoint *
8851 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
8852                                 enum bptype type)
8853 {
8854   struct symtab_and_line sal;
8855
8856   sal = find_pc_line (pc, 0);
8857   sal.pc = pc;
8858   sal.section = find_pc_overlay (pc);
8859   sal.explicit_pc = 1;
8860
8861   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
8862 }
8863 \f
8864
8865 /* Tell the user we have just set a breakpoint B.  */
8866
8867 static void
8868 mention (struct breakpoint *b)
8869 {
8870   b->ops->print_mention (b);
8871   if (ui_out_is_mi_like_p (current_uiout))
8872     return;
8873   printf_filtered ("\n");
8874 }
8875 \f
8876
8877 static int bp_loc_is_permanent (struct bp_location *loc);
8878
8879 static struct bp_location *
8880 add_location_to_breakpoint (struct breakpoint *b,
8881                             const struct symtab_and_line *sal)
8882 {
8883   struct bp_location *loc, **tmp;
8884   CORE_ADDR adjusted_address;
8885   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
8886
8887   if (loc_gdbarch == NULL)
8888     loc_gdbarch = b->gdbarch;
8889
8890   /* Adjust the breakpoint's address prior to allocating a location.
8891      Once we call allocate_bp_location(), that mostly uninitialized
8892      location will be placed on the location chain.  Adjustment of the
8893      breakpoint may cause target_read_memory() to be called and we do
8894      not want its scan of the location chain to find a breakpoint and
8895      location that's only been partially initialized.  */
8896   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
8897                                                 sal->pc, b->type);
8898
8899   /* Sort the locations by their ADDRESS.  */
8900   loc = allocate_bp_location (b);
8901   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
8902        tmp = &((*tmp)->next))
8903     ;
8904   loc->next = *tmp;
8905   *tmp = loc;
8906
8907   loc->requested_address = sal->pc;
8908   loc->address = adjusted_address;
8909   loc->pspace = sal->pspace;
8910   loc->probe.probe = sal->probe;
8911   loc->probe.objfile = sal->objfile;
8912   gdb_assert (loc->pspace != NULL);
8913   loc->section = sal->section;
8914   loc->gdbarch = loc_gdbarch;
8915   loc->line_number = sal->line;
8916   loc->symtab = sal->symtab;
8917
8918   set_breakpoint_location_function (loc,
8919                                     sal->explicit_pc || sal->explicit_line);
8920
8921   if (bp_loc_is_permanent (loc))
8922     {
8923       loc->inserted = 1;
8924       loc->permanent = 1;
8925     }
8926
8927   return loc;
8928 }
8929 \f
8930
8931 /* See breakpoint.h.  */
8932
8933 int
8934 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
8935 {
8936   int len;
8937   CORE_ADDR addr;
8938   const gdb_byte *bpoint;
8939   gdb_byte *target_mem;
8940   struct cleanup *cleanup;
8941   int retval = 0;
8942
8943   addr = address;
8944   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
8945
8946   /* Software breakpoints unsupported?  */
8947   if (bpoint == NULL)
8948     return 0;
8949
8950   target_mem = alloca (len);
8951
8952   /* Enable the automatic memory restoration from breakpoints while
8953      we read the memory.  Otherwise we could say about our temporary
8954      breakpoints they are permanent.  */
8955   cleanup = make_show_memory_breakpoints_cleanup (0);
8956
8957   if (target_read_memory (address, target_mem, len) == 0
8958       && memcmp (target_mem, bpoint, len) == 0)
8959     retval = 1;
8960
8961   do_cleanups (cleanup);
8962
8963   return retval;
8964 }
8965
8966 /* Return 1 if LOC is pointing to a permanent breakpoint,
8967    return 0 otherwise.  */
8968
8969 static int
8970 bp_loc_is_permanent (struct bp_location *loc)
8971 {
8972   struct cleanup *cleanup;
8973   int retval;
8974
8975   gdb_assert (loc != NULL);
8976
8977   /* bp_call_dummy breakpoint locations are usually memory locations
8978      where GDB just wrote a breakpoint instruction, making it look
8979      as if there is a permanent breakpoint at that location.  Considering
8980      it permanent makes GDB rely on that breakpoint instruction to stop
8981      the program, thus removing the need to insert its own breakpoint
8982      there.  This is normally expected to work, except that some versions
8983      of QEMU (Eg: QEMU 2.0.0 for SPARC) just report a fatal problem (Trap
8984      0x02 while interrupts disabled, Error state) instead of reporting
8985      a SIGTRAP.  QEMU should probably be fixed, but in the interest of
8986      compatibility with versions that behave this way, we always consider
8987      bp_call_dummy breakpoint locations as non-permanent.  */
8988   if (loc->owner->type == bp_call_dummy)
8989     return 0;
8990
8991   cleanup = save_current_space_and_thread ();
8992   switch_to_program_space_and_thread (loc->pspace);
8993
8994   retval = program_breakpoint_here_p (loc->gdbarch, loc->address);
8995
8996   do_cleanups (cleanup);
8997
8998   return retval;
8999 }
9000
9001 /* Build a command list for the dprintf corresponding to the current
9002    settings of the dprintf style options.  */
9003
9004 static void
9005 update_dprintf_command_list (struct breakpoint *b)
9006 {
9007   char *dprintf_args = b->extra_string;
9008   char *printf_line = NULL;
9009
9010   if (!dprintf_args)
9011     return;
9012
9013   dprintf_args = skip_spaces (dprintf_args);
9014
9015   /* Allow a comma, as it may have terminated a location, but don't
9016      insist on it.  */
9017   if (*dprintf_args == ',')
9018     ++dprintf_args;
9019   dprintf_args = skip_spaces (dprintf_args);
9020
9021   if (*dprintf_args != '"')
9022     error (_("Bad format string, missing '\"'."));
9023
9024   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9025     printf_line = xstrprintf ("printf %s", dprintf_args);
9026   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9027     {
9028       if (!dprintf_function)
9029         error (_("No function supplied for dprintf call"));
9030
9031       if (dprintf_channel && strlen (dprintf_channel) > 0)
9032         printf_line = xstrprintf ("call (void) %s (%s,%s)",
9033                                   dprintf_function,
9034                                   dprintf_channel,
9035                                   dprintf_args);
9036       else
9037         printf_line = xstrprintf ("call (void) %s (%s)",
9038                                   dprintf_function,
9039                                   dprintf_args);
9040     }
9041   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9042     {
9043       if (target_can_run_breakpoint_commands ())
9044         printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9045       else
9046         {
9047           warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9048           printf_line = xstrprintf ("printf %s", dprintf_args);
9049         }
9050     }
9051   else
9052     internal_error (__FILE__, __LINE__,
9053                     _("Invalid dprintf style."));
9054
9055   gdb_assert (printf_line != NULL);
9056   /* Manufacture a printf sequence.  */
9057   {
9058     struct command_line *printf_cmd_line
9059       = xmalloc (sizeof (struct command_line));
9060
9061     printf_cmd_line = xmalloc (sizeof (struct command_line));
9062     printf_cmd_line->control_type = simple_control;
9063     printf_cmd_line->body_count = 0;
9064     printf_cmd_line->body_list = NULL;
9065     printf_cmd_line->next = NULL;
9066     printf_cmd_line->line = printf_line;
9067
9068     breakpoint_set_commands (b, printf_cmd_line);
9069   }
9070 }
9071
9072 /* Update all dprintf commands, making their command lists reflect
9073    current style settings.  */
9074
9075 static void
9076 update_dprintf_commands (char *args, int from_tty,
9077                          struct cmd_list_element *c)
9078 {
9079   struct breakpoint *b;
9080
9081   ALL_BREAKPOINTS (b)
9082     {
9083       if (b->type == bp_dprintf)
9084         update_dprintf_command_list (b);
9085     }
9086 }
9087
9088 /* Create a breakpoint with SAL as location.  Use ADDR_STRING
9089    as textual description of the location, and COND_STRING
9090    as condition expression.  */
9091
9092 static void
9093 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9094                      struct symtabs_and_lines sals, char *addr_string,
9095                      char *filter, char *cond_string,
9096                      char *extra_string,
9097                      enum bptype type, enum bpdisp disposition,
9098                      int thread, int task, int ignore_count,
9099                      const struct breakpoint_ops *ops, int from_tty,
9100                      int enabled, int internal, unsigned flags,
9101                      int display_canonical)
9102 {
9103   int i;
9104
9105   if (type == bp_hardware_breakpoint)
9106     {
9107       int target_resources_ok;
9108
9109       i = hw_breakpoint_used_count ();
9110       target_resources_ok =
9111         target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9112                                             i + 1, 0);
9113       if (target_resources_ok == 0)
9114         error (_("No hardware breakpoint support in the target."));
9115       else if (target_resources_ok < 0)
9116         error (_("Hardware breakpoints used exceeds limit."));
9117     }
9118
9119   gdb_assert (sals.nelts > 0);
9120
9121   for (i = 0; i < sals.nelts; ++i)
9122     {
9123       struct symtab_and_line sal = sals.sals[i];
9124       struct bp_location *loc;
9125
9126       if (from_tty)
9127         {
9128           struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9129           if (!loc_gdbarch)
9130             loc_gdbarch = gdbarch;
9131
9132           describe_other_breakpoints (loc_gdbarch,
9133                                       sal.pspace, sal.pc, sal.section, thread);
9134         }
9135
9136       if (i == 0)
9137         {
9138           init_raw_breakpoint (b, gdbarch, sal, type, ops);
9139           b->thread = thread;
9140           b->task = task;
9141
9142           b->cond_string = cond_string;
9143           b->extra_string = extra_string;
9144           b->ignore_count = ignore_count;
9145           b->enable_state = enabled ? bp_enabled : bp_disabled;
9146           b->disposition = disposition;
9147
9148           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9149             b->loc->inserted = 1;
9150
9151           if (type == bp_static_tracepoint)
9152             {
9153               struct tracepoint *t = (struct tracepoint *) b;
9154               struct static_tracepoint_marker marker;
9155
9156               if (strace_marker_p (b))
9157                 {
9158                   /* We already know the marker exists, otherwise, we
9159                      wouldn't see a sal for it.  */
9160                   char *p = &addr_string[3];
9161                   char *endp;
9162                   char *marker_str;
9163
9164                   p = skip_spaces (p);
9165
9166                   endp = skip_to_space (p);
9167
9168                   marker_str = savestring (p, endp - p);
9169                   t->static_trace_marker_id = marker_str;
9170
9171                   printf_filtered (_("Probed static tracepoint "
9172                                      "marker \"%s\"\n"),
9173                                    t->static_trace_marker_id);
9174                 }
9175               else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9176                 {
9177                   t->static_trace_marker_id = xstrdup (marker.str_id);
9178                   release_static_tracepoint_marker (&marker);
9179
9180                   printf_filtered (_("Probed static tracepoint "
9181                                      "marker \"%s\"\n"),
9182                                    t->static_trace_marker_id);
9183                 }
9184               else
9185                 warning (_("Couldn't determine the static "
9186                            "tracepoint marker to probe"));
9187             }
9188
9189           loc = b->loc;
9190         }
9191       else
9192         {
9193           loc = add_location_to_breakpoint (b, &sal);
9194           if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9195             loc->inserted = 1;
9196         }
9197
9198       if (b->cond_string)
9199         {
9200           const char *arg = b->cond_string;
9201
9202           loc->cond = parse_exp_1 (&arg, loc->address,
9203                                    block_for_pc (loc->address), 0);
9204           if (*arg)
9205               error (_("Garbage '%s' follows condition"), arg);
9206         }
9207
9208       /* Dynamic printf requires and uses additional arguments on the
9209          command line, otherwise it's an error.  */
9210       if (type == bp_dprintf)
9211         {
9212           if (b->extra_string)
9213             update_dprintf_command_list (b);
9214           else
9215             error (_("Format string required"));
9216         }
9217       else if (b->extra_string)
9218         error (_("Garbage '%s' at end of command"), b->extra_string);
9219     }
9220
9221   b->display_canonical = display_canonical;
9222   if (addr_string)
9223     b->addr_string = addr_string;
9224   else
9225     /* addr_string has to be used or breakpoint_re_set will delete
9226        me.  */
9227     b->addr_string
9228       = xstrprintf ("*%s", paddress (b->loc->gdbarch, b->loc->address));
9229   b->filter = filter;
9230 }
9231
9232 static void
9233 create_breakpoint_sal (struct gdbarch *gdbarch,
9234                        struct symtabs_and_lines sals, char *addr_string,
9235                        char *filter, char *cond_string,
9236                        char *extra_string,
9237                        enum bptype type, enum bpdisp disposition,
9238                        int thread, int task, int ignore_count,
9239                        const struct breakpoint_ops *ops, int from_tty,
9240                        int enabled, int internal, unsigned flags,
9241                        int display_canonical)
9242 {
9243   struct breakpoint *b;
9244   struct cleanup *old_chain;
9245
9246   if (is_tracepoint_type (type))
9247     {
9248       struct tracepoint *t;
9249
9250       t = XCNEW (struct tracepoint);
9251       b = &t->base;
9252     }
9253   else
9254     b = XNEW (struct breakpoint);
9255
9256   old_chain = make_cleanup (xfree, b);
9257
9258   init_breakpoint_sal (b, gdbarch,
9259                        sals, addr_string,
9260                        filter, cond_string, extra_string,
9261                        type, disposition,
9262                        thread, task, ignore_count,
9263                        ops, from_tty,
9264                        enabled, internal, flags,
9265                        display_canonical);
9266   discard_cleanups (old_chain);
9267
9268   install_breakpoint (internal, b, 0);
9269 }
9270
9271 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9272    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9273    value.  COND_STRING, if not NULL, specified the condition to be
9274    used for all breakpoints.  Essentially the only case where
9275    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9276    function.  In that case, it's still not possible to specify
9277    separate conditions for different overloaded functions, so
9278    we take just a single condition string.
9279    
9280    NOTE: If the function succeeds, the caller is expected to cleanup
9281    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9282    array contents).  If the function fails (error() is called), the
9283    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9284    COND and SALS arrays and each of those arrays contents.  */
9285
9286 static void
9287 create_breakpoints_sal (struct gdbarch *gdbarch,
9288                         struct linespec_result *canonical,
9289                         char *cond_string, char *extra_string,
9290                         enum bptype type, enum bpdisp disposition,
9291                         int thread, int task, int ignore_count,
9292                         const struct breakpoint_ops *ops, int from_tty,
9293                         int enabled, int internal, unsigned flags)
9294 {
9295   int i;
9296   struct linespec_sals *lsal;
9297
9298   if (canonical->pre_expanded)
9299     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9300
9301   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9302     {
9303       /* Note that 'addr_string' can be NULL in the case of a plain
9304          'break', without arguments.  */
9305       char *addr_string = (canonical->addr_string
9306                            ? xstrdup (canonical->addr_string)
9307                            : NULL);
9308       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9309       struct cleanup *inner = make_cleanup (xfree, addr_string);
9310
9311       make_cleanup (xfree, filter_string);
9312       create_breakpoint_sal (gdbarch, lsal->sals,
9313                              addr_string,
9314                              filter_string,
9315                              cond_string, extra_string,
9316                              type, disposition,
9317                              thread, task, ignore_count, ops,
9318                              from_tty, enabled, internal, flags,
9319                              canonical->special_display);
9320       discard_cleanups (inner);
9321     }
9322 }
9323
9324 /* Parse ADDRESS which is assumed to be a SAL specification possibly
9325    followed by conditionals.  On return, SALS contains an array of SAL
9326    addresses found.  ADDR_STRING contains a vector of (canonical)
9327    address strings.  ADDRESS points to the end of the SAL.
9328
9329    The array and the line spec strings are allocated on the heap, it is
9330    the caller's responsibility to free them.  */
9331
9332 static void
9333 parse_breakpoint_sals (char **address,
9334                        struct linespec_result *canonical)
9335 {
9336   /* If no arg given, or if first arg is 'if ', use the default
9337      breakpoint.  */
9338   if ((*address) == NULL
9339       || (startswith ((*address), "if") && isspace ((*address)[2])))
9340     {
9341       /* The last displayed codepoint, if it's valid, is our default breakpoint
9342          address.  */
9343       if (last_displayed_sal_is_valid ())
9344         {
9345           struct linespec_sals lsal;
9346           struct symtab_and_line sal;
9347           CORE_ADDR pc;
9348
9349           init_sal (&sal);              /* Initialize to zeroes.  */
9350           lsal.sals.sals = (struct symtab_and_line *)
9351             xmalloc (sizeof (struct symtab_and_line));
9352
9353           /* Set sal's pspace, pc, symtab, and line to the values
9354              corresponding to the last call to print_frame_info.
9355              Be sure to reinitialize LINE with NOTCURRENT == 0
9356              as the breakpoint line number is inappropriate otherwise.
9357              find_pc_line would adjust PC, re-set it back.  */
9358           get_last_displayed_sal (&sal);
9359           pc = sal.pc;
9360           sal = find_pc_line (pc, 0);
9361
9362           /* "break" without arguments is equivalent to "break *PC"
9363              where PC is the last displayed codepoint's address.  So
9364              make sure to set sal.explicit_pc to prevent GDB from
9365              trying to expand the list of sals to include all other
9366              instances with the same symtab and line.  */
9367           sal.pc = pc;
9368           sal.explicit_pc = 1;
9369
9370           lsal.sals.sals[0] = sal;
9371           lsal.sals.nelts = 1;
9372           lsal.canonical = NULL;
9373
9374           VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9375         }
9376       else
9377         error (_("No default breakpoint address now."));
9378     }
9379   else
9380     {
9381       struct symtab_and_line cursal = get_current_source_symtab_and_line ();
9382
9383       /* Force almost all breakpoints to be in terms of the
9384          current_source_symtab (which is decode_line_1's default).
9385          This should produce the results we want almost all of the
9386          time while leaving default_breakpoint_* alone.
9387
9388          ObjC: However, don't match an Objective-C method name which
9389          may have a '+' or '-' succeeded by a '['.  */
9390       if (last_displayed_sal_is_valid ()
9391           && (!cursal.symtab
9392               || ((strchr ("+-", (*address)[0]) != NULL)
9393                   && ((*address)[1] != '['))))
9394         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9395                           get_last_displayed_symtab (),
9396                           get_last_displayed_line (),
9397                           canonical, NULL, NULL);
9398       else
9399         decode_line_full (address, DECODE_LINE_FUNFIRSTLINE,
9400                           cursal.symtab, cursal.line, canonical, NULL, NULL);
9401     }
9402 }
9403
9404
9405 /* Convert each SAL into a real PC.  Verify that the PC can be
9406    inserted as a breakpoint.  If it can't throw an error.  */
9407
9408 static void
9409 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9410 {    
9411   int i;
9412
9413   for (i = 0; i < sals->nelts; i++)
9414     resolve_sal_pc (&sals->sals[i]);
9415 }
9416
9417 /* Fast tracepoints may have restrictions on valid locations.  For
9418    instance, a fast tracepoint using a jump instead of a trap will
9419    likely have to overwrite more bytes than a trap would, and so can
9420    only be placed where the instruction is longer than the jump, or a
9421    multi-instruction sequence does not have a jump into the middle of
9422    it, etc.  */
9423
9424 static void
9425 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9426                             struct symtabs_and_lines *sals)
9427 {
9428   int i, rslt;
9429   struct symtab_and_line *sal;
9430   char *msg;
9431   struct cleanup *old_chain;
9432
9433   for (i = 0; i < sals->nelts; i++)
9434     {
9435       struct gdbarch *sarch;
9436
9437       sal = &sals->sals[i];
9438
9439       sarch = get_sal_arch (*sal);
9440       /* We fall back to GDBARCH if there is no architecture
9441          associated with SAL.  */
9442       if (sarch == NULL)
9443         sarch = gdbarch;
9444       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc,
9445                                                NULL, &msg);
9446       old_chain = make_cleanup (xfree, msg);
9447
9448       if (!rslt)
9449         error (_("May not have a fast tracepoint at 0x%s%s"),
9450                paddress (sarch, sal->pc), (msg ? msg : ""));
9451
9452       do_cleanups (old_chain);
9453     }
9454 }
9455
9456 /* Issue an invalid thread ID error.  */
9457
9458 static void ATTRIBUTE_NORETURN
9459 invalid_thread_id_error (int id)
9460 {
9461   error (_("Unknown thread %d."), id);
9462 }
9463
9464 /* Given TOK, a string specification of condition and thread, as
9465    accepted by the 'break' command, extract the condition
9466    string and thread number and set *COND_STRING and *THREAD.
9467    PC identifies the context at which the condition should be parsed.
9468    If no condition is found, *COND_STRING is set to NULL.
9469    If no thread is found, *THREAD is set to -1.  */
9470
9471 static void
9472 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9473                            char **cond_string, int *thread, int *task,
9474                            char **rest)
9475 {
9476   *cond_string = NULL;
9477   *thread = -1;
9478   *task = 0;
9479   *rest = NULL;
9480
9481   while (tok && *tok)
9482     {
9483       const char *end_tok;
9484       int toklen;
9485       const char *cond_start = NULL;
9486       const char *cond_end = NULL;
9487
9488       tok = skip_spaces_const (tok);
9489
9490       if ((*tok == '"' || *tok == ',') && rest)
9491         {
9492           *rest = savestring (tok, strlen (tok));
9493           return;
9494         }
9495
9496       end_tok = skip_to_space_const (tok);
9497
9498       toklen = end_tok - tok;
9499
9500       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9501         {
9502           struct expression *expr;
9503
9504           tok = cond_start = end_tok + 1;
9505           expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9506           xfree (expr);
9507           cond_end = tok;
9508           *cond_string = savestring (cond_start, cond_end - cond_start);
9509         }
9510       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9511         {
9512           char *tmptok;
9513
9514           tok = end_tok + 1;
9515           *thread = strtol (tok, &tmptok, 0);
9516           if (tok == tmptok)
9517             error (_("Junk after thread keyword."));
9518           if (!valid_thread_id (*thread))
9519             invalid_thread_id_error (*thread);
9520           tok = tmptok;
9521         }
9522       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9523         {
9524           char *tmptok;
9525
9526           tok = end_tok + 1;
9527           *task = strtol (tok, &tmptok, 0);
9528           if (tok == tmptok)
9529             error (_("Junk after task keyword."));
9530           if (!valid_task_id (*task))
9531             error (_("Unknown task %d."), *task);
9532           tok = tmptok;
9533         }
9534       else if (rest)
9535         {
9536           *rest = savestring (tok, strlen (tok));
9537           return;
9538         }
9539       else
9540         error (_("Junk at end of arguments."));
9541     }
9542 }
9543
9544 /* Decode a static tracepoint marker spec.  */
9545
9546 static struct symtabs_and_lines
9547 decode_static_tracepoint_spec (char **arg_p)
9548 {
9549   VEC(static_tracepoint_marker_p) *markers = NULL;
9550   struct symtabs_and_lines sals;
9551   struct cleanup *old_chain;
9552   char *p = &(*arg_p)[3];
9553   char *endp;
9554   char *marker_str;
9555   int i;
9556
9557   p = skip_spaces (p);
9558
9559   endp = skip_to_space (p);
9560
9561   marker_str = savestring (p, endp - p);
9562   old_chain = make_cleanup (xfree, marker_str);
9563
9564   markers = target_static_tracepoint_markers_by_strid (marker_str);
9565   if (VEC_empty(static_tracepoint_marker_p, markers))
9566     error (_("No known static tracepoint marker named %s"), marker_str);
9567
9568   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9569   sals.sals = xmalloc (sizeof *sals.sals * sals.nelts);
9570
9571   for (i = 0; i < sals.nelts; i++)
9572     {
9573       struct static_tracepoint_marker *marker;
9574
9575       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9576
9577       init_sal (&sals.sals[i]);
9578
9579       sals.sals[i] = find_pc_line (marker->address, 0);
9580       sals.sals[i].pc = marker->address;
9581
9582       release_static_tracepoint_marker (marker);
9583     }
9584
9585   do_cleanups (old_chain);
9586
9587   *arg_p = endp;
9588   return sals;
9589 }
9590
9591 /* Set a breakpoint.  This function is shared between CLI and MI
9592    functions for setting a breakpoint.  This function has two major
9593    modes of operations, selected by the PARSE_ARG parameter.  If
9594    non-zero, the function will parse ARG, extracting location,
9595    condition, thread and extra string.  Otherwise, ARG is just the
9596    breakpoint's location, with condition, thread, and extra string
9597    specified by the COND_STRING, THREAD and EXTRA_STRING parameters.
9598    If INTERNAL is non-zero, the breakpoint number will be allocated
9599    from the internal breakpoint count.  Returns true if any breakpoint
9600    was created; false otherwise.  */
9601
9602 int
9603 create_breakpoint (struct gdbarch *gdbarch,
9604                    char *arg, char *cond_string,
9605                    int thread, char *extra_string,
9606                    int parse_arg,
9607                    int tempflag, enum bptype type_wanted,
9608                    int ignore_count,
9609                    enum auto_boolean pending_break_support,
9610                    const struct breakpoint_ops *ops,
9611                    int from_tty, int enabled, int internal,
9612                    unsigned flags)
9613 {
9614   char *copy_arg = NULL;
9615   char *addr_start = arg;
9616   struct linespec_result canonical;
9617   struct cleanup *old_chain;
9618   struct cleanup *bkpt_chain = NULL;
9619   int pending = 0;
9620   int task = 0;
9621   int prev_bkpt_count = breakpoint_count;
9622
9623   gdb_assert (ops != NULL);
9624
9625   init_linespec_result (&canonical);
9626
9627   TRY
9628     {
9629       ops->create_sals_from_address (&arg, &canonical, type_wanted,
9630                                      addr_start, &copy_arg);
9631     }
9632   CATCH (e, RETURN_MASK_ERROR)
9633     {
9634       /* If caller is interested in rc value from parse, set
9635          value.  */
9636       if (e.error == NOT_FOUND_ERROR)
9637         {
9638           /* If pending breakpoint support is turned off, throw
9639              error.  */
9640
9641           if (pending_break_support == AUTO_BOOLEAN_FALSE)
9642             throw_exception (e);
9643
9644           exception_print (gdb_stderr, e);
9645
9646           /* If pending breakpoint support is auto query and the user
9647              selects no, then simply return the error code.  */
9648           if (pending_break_support == AUTO_BOOLEAN_AUTO
9649               && !nquery (_("Make %s pending on future shared library load? "),
9650                           bptype_string (type_wanted)))
9651             return 0;
9652
9653           /* At this point, either the user was queried about setting
9654              a pending breakpoint and selected yes, or pending
9655              breakpoint behavior is on and thus a pending breakpoint
9656              is defaulted on behalf of the user.  */
9657           {
9658             struct linespec_sals lsal;
9659
9660             copy_arg = xstrdup (addr_start);
9661             lsal.canonical = xstrdup (copy_arg);
9662             lsal.sals.nelts = 1;
9663             lsal.sals.sals = XNEW (struct symtab_and_line);
9664             init_sal (&lsal.sals.sals[0]);
9665             pending = 1;
9666             VEC_safe_push (linespec_sals, canonical.sals, &lsal);
9667           }
9668         }
9669       else
9670         throw_exception (e);
9671     }
9672   END_CATCH
9673
9674   if (VEC_empty (linespec_sals, canonical.sals))
9675     return 0;
9676
9677   /* Create a chain of things that always need to be cleaned up.  */
9678   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9679
9680   /* ----------------------------- SNIP -----------------------------
9681      Anything added to the cleanup chain beyond this point is assumed
9682      to be part of a breakpoint.  If the breakpoint create succeeds
9683      then the memory is not reclaimed.  */
9684   bkpt_chain = make_cleanup (null_cleanup, 0);
9685
9686   /* Resolve all line numbers to PC's and verify that the addresses
9687      are ok for the target.  */
9688   if (!pending)
9689     {
9690       int ix;
9691       struct linespec_sals *iter;
9692
9693       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9694         breakpoint_sals_to_pc (&iter->sals);
9695     }
9696
9697   /* Fast tracepoints may have additional restrictions on location.  */
9698   if (!pending && type_wanted == bp_fast_tracepoint)
9699     {
9700       int ix;
9701       struct linespec_sals *iter;
9702
9703       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9704         check_fast_tracepoint_sals (gdbarch, &iter->sals);
9705     }
9706
9707   /* Verify that condition can be parsed, before setting any
9708      breakpoints.  Allocate a separate condition expression for each
9709      breakpoint.  */
9710   if (!pending)
9711     {
9712       if (parse_arg)
9713         {
9714           char *rest;
9715           struct linespec_sals *lsal;
9716
9717           lsal = VEC_index (linespec_sals, canonical.sals, 0);
9718
9719           /* Here we only parse 'arg' to separate condition
9720              from thread number, so parsing in context of first
9721              sal is OK.  When setting the breakpoint we'll
9722              re-parse it in context of each sal.  */
9723
9724           find_condition_and_thread (arg, lsal->sals.sals[0].pc, &cond_string,
9725                                      &thread, &task, &rest);
9726           if (cond_string)
9727             make_cleanup (xfree, cond_string);
9728           if (rest)
9729             make_cleanup (xfree, rest);
9730           if (rest)
9731             extra_string = rest;
9732         }
9733       else
9734         {
9735           if (*arg != '\0')
9736             error (_("Garbage '%s' at end of location"), arg);
9737
9738           /* Create a private copy of condition string.  */
9739           if (cond_string)
9740             {
9741               cond_string = xstrdup (cond_string);
9742               make_cleanup (xfree, cond_string);
9743             }
9744           /* Create a private copy of any extra string.  */
9745           if (extra_string)
9746             {
9747               extra_string = xstrdup (extra_string);
9748               make_cleanup (xfree, extra_string);
9749             }
9750         }
9751
9752       ops->create_breakpoints_sal (gdbarch, &canonical,
9753                                    cond_string, extra_string, type_wanted,
9754                                    tempflag ? disp_del : disp_donttouch,
9755                                    thread, task, ignore_count, ops,
9756                                    from_tty, enabled, internal, flags);
9757     }
9758   else
9759     {
9760       struct breakpoint *b;
9761
9762       make_cleanup (xfree, copy_arg);
9763
9764       if (is_tracepoint_type (type_wanted))
9765         {
9766           struct tracepoint *t;
9767
9768           t = XCNEW (struct tracepoint);
9769           b = &t->base;
9770         }
9771       else
9772         b = XNEW (struct breakpoint);
9773
9774       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9775
9776       b->addr_string = copy_arg;
9777       if (parse_arg)
9778         b->cond_string = NULL;
9779       else
9780         {
9781           /* Create a private copy of condition string.  */
9782           if (cond_string)
9783             {
9784               cond_string = xstrdup (cond_string);
9785               make_cleanup (xfree, cond_string);
9786             }
9787           b->cond_string = cond_string;
9788         }
9789       b->extra_string = NULL;
9790       b->ignore_count = ignore_count;
9791       b->disposition = tempflag ? disp_del : disp_donttouch;
9792       b->condition_not_parsed = 1;
9793       b->enable_state = enabled ? bp_enabled : bp_disabled;
9794       if ((type_wanted != bp_breakpoint
9795            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9796         b->pspace = current_program_space;
9797
9798       install_breakpoint (internal, b, 0);
9799     }
9800   
9801   if (VEC_length (linespec_sals, canonical.sals) > 1)
9802     {
9803       warning (_("Multiple breakpoints were set.\nUse the "
9804                  "\"delete\" command to delete unwanted breakpoints."));
9805       prev_breakpoint_count = prev_bkpt_count;
9806     }
9807
9808   /* That's it.  Discard the cleanups for data inserted into the
9809      breakpoint.  */
9810   discard_cleanups (bkpt_chain);
9811   /* But cleanup everything else.  */
9812   do_cleanups (old_chain);
9813
9814   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9815   update_global_location_list (UGLL_MAY_INSERT);
9816
9817   return 1;
9818 }
9819
9820 /* Set a breakpoint.
9821    ARG is a string describing breakpoint address,
9822    condition, and thread.
9823    FLAG specifies if a breakpoint is hardware on,
9824    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9825    and BP_TEMPFLAG.  */
9826
9827 static void
9828 break_command_1 (char *arg, int flag, int from_tty)
9829 {
9830   int tempflag = flag & BP_TEMPFLAG;
9831   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
9832                              ? bp_hardware_breakpoint
9833                              : bp_breakpoint);
9834   struct breakpoint_ops *ops;
9835   const char *arg_cp = arg;
9836
9837   /* Matching breakpoints on probes.  */
9838   if (arg && probe_linespec_to_ops (&arg_cp) != NULL)
9839     ops = &bkpt_probe_breakpoint_ops;
9840   else
9841     ops = &bkpt_breakpoint_ops;
9842
9843   create_breakpoint (get_current_arch (),
9844                      arg,
9845                      NULL, 0, NULL, 1 /* parse arg */,
9846                      tempflag, type_wanted,
9847                      0 /* Ignore count */,
9848                      pending_break_support,
9849                      ops,
9850                      from_tty,
9851                      1 /* enabled */,
9852                      0 /* internal */,
9853                      0);
9854 }
9855
9856 /* Helper function for break_command_1 and disassemble_command.  */
9857
9858 void
9859 resolve_sal_pc (struct symtab_and_line *sal)
9860 {
9861   CORE_ADDR pc;
9862
9863   if (sal->pc == 0 && sal->symtab != NULL)
9864     {
9865       if (!find_line_pc (sal->symtab, sal->line, &pc))
9866         error (_("No line %d in file \"%s\"."),
9867                sal->line, symtab_to_filename_for_display (sal->symtab));
9868       sal->pc = pc;
9869
9870       /* If this SAL corresponds to a breakpoint inserted using a line
9871          number, then skip the function prologue if necessary.  */
9872       if (sal->explicit_line)
9873         skip_prologue_sal (sal);
9874     }
9875
9876   if (sal->section == 0 && sal->symtab != NULL)
9877     {
9878       const struct blockvector *bv;
9879       const struct block *b;
9880       struct symbol *sym;
9881
9882       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
9883                                     SYMTAB_COMPUNIT (sal->symtab));
9884       if (bv != NULL)
9885         {
9886           sym = block_linkage_function (b);
9887           if (sym != NULL)
9888             {
9889               fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
9890               sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
9891                                                  sym);
9892             }
9893           else
9894             {
9895               /* It really is worthwhile to have the section, so we'll
9896                  just have to look harder. This case can be executed
9897                  if we have line numbers but no functions (as can
9898                  happen in assembly source).  */
9899
9900               struct bound_minimal_symbol msym;
9901               struct cleanup *old_chain = save_current_space_and_thread ();
9902
9903               switch_to_program_space_and_thread (sal->pspace);
9904
9905               msym = lookup_minimal_symbol_by_pc (sal->pc);
9906               if (msym.minsym)
9907                 sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
9908
9909               do_cleanups (old_chain);
9910             }
9911         }
9912     }
9913 }
9914
9915 void
9916 break_command (char *arg, int from_tty)
9917 {
9918   break_command_1 (arg, 0, from_tty);
9919 }
9920
9921 void
9922 tbreak_command (char *arg, int from_tty)
9923 {
9924   break_command_1 (arg, BP_TEMPFLAG, from_tty);
9925 }
9926
9927 static void
9928 hbreak_command (char *arg, int from_tty)
9929 {
9930   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
9931 }
9932
9933 static void
9934 thbreak_command (char *arg, int from_tty)
9935 {
9936   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
9937 }
9938
9939 static void
9940 stop_command (char *arg, int from_tty)
9941 {
9942   printf_filtered (_("Specify the type of breakpoint to set.\n\
9943 Usage: stop in <function | address>\n\
9944        stop at <line>\n"));
9945 }
9946
9947 static void
9948 stopin_command (char *arg, int from_tty)
9949 {
9950   int badInput = 0;
9951
9952   if (arg == (char *) NULL)
9953     badInput = 1;
9954   else if (*arg != '*')
9955     {
9956       char *argptr = arg;
9957       int hasColon = 0;
9958
9959       /* Look for a ':'.  If this is a line number specification, then
9960          say it is bad, otherwise, it should be an address or
9961          function/method name.  */
9962       while (*argptr && !hasColon)
9963         {
9964           hasColon = (*argptr == ':');
9965           argptr++;
9966         }
9967
9968       if (hasColon)
9969         badInput = (*argptr != ':');    /* Not a class::method */
9970       else
9971         badInput = isdigit (*arg);      /* a simple line number */
9972     }
9973
9974   if (badInput)
9975     printf_filtered (_("Usage: stop in <function | address>\n"));
9976   else
9977     break_command_1 (arg, 0, from_tty);
9978 }
9979
9980 static void
9981 stopat_command (char *arg, int from_tty)
9982 {
9983   int badInput = 0;
9984
9985   if (arg == (char *) NULL || *arg == '*')      /* no line number */
9986     badInput = 1;
9987   else
9988     {
9989       char *argptr = arg;
9990       int hasColon = 0;
9991
9992       /* Look for a ':'.  If there is a '::' then get out, otherwise
9993          it is probably a line number.  */
9994       while (*argptr && !hasColon)
9995         {
9996           hasColon = (*argptr == ':');
9997           argptr++;
9998         }
9999
10000       if (hasColon)
10001         badInput = (*argptr == ':');    /* we have class::method */
10002       else
10003         badInput = !isdigit (*arg);     /* not a line number */
10004     }
10005
10006   if (badInput)
10007     printf_filtered (_("Usage: stop at <line>\n"));
10008   else
10009     break_command_1 (arg, 0, from_tty);
10010 }
10011
10012 /* The dynamic printf command is mostly like a regular breakpoint, but
10013    with a prewired command list consisting of a single output command,
10014    built from extra arguments supplied on the dprintf command
10015    line.  */
10016
10017 static void
10018 dprintf_command (char *arg, int from_tty)
10019 {
10020   create_breakpoint (get_current_arch (),
10021                      arg,
10022                      NULL, 0, NULL, 1 /* parse arg */,
10023                      0, bp_dprintf,
10024                      0 /* Ignore count */,
10025                      pending_break_support,
10026                      &dprintf_breakpoint_ops,
10027                      from_tty,
10028                      1 /* enabled */,
10029                      0 /* internal */,
10030                      0);
10031 }
10032
10033 static void
10034 agent_printf_command (char *arg, int from_tty)
10035 {
10036   error (_("May only run agent-printf on the target"));
10037 }
10038
10039 /* Implement the "breakpoint_hit" breakpoint_ops method for
10040    ranged breakpoints.  */
10041
10042 static int
10043 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10044                                   struct address_space *aspace,
10045                                   CORE_ADDR bp_addr,
10046                                   const struct target_waitstatus *ws)
10047 {
10048   if (ws->kind != TARGET_WAITKIND_STOPPED
10049       || ws->value.sig != GDB_SIGNAL_TRAP)
10050     return 0;
10051
10052   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10053                                          bl->length, aspace, bp_addr);
10054 }
10055
10056 /* Implement the "resources_needed" breakpoint_ops method for
10057    ranged breakpoints.  */
10058
10059 static int
10060 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10061 {
10062   return target_ranged_break_num_registers ();
10063 }
10064
10065 /* Implement the "print_it" breakpoint_ops method for
10066    ranged breakpoints.  */
10067
10068 static enum print_stop_action
10069 print_it_ranged_breakpoint (bpstat bs)
10070 {
10071   struct breakpoint *b = bs->breakpoint_at;
10072   struct bp_location *bl = b->loc;
10073   struct ui_out *uiout = current_uiout;
10074
10075   gdb_assert (b->type == bp_hardware_breakpoint);
10076
10077   /* Ranged breakpoints have only one location.  */
10078   gdb_assert (bl && bl->next == NULL);
10079
10080   annotate_breakpoint (b->number);
10081   if (b->disposition == disp_del)
10082     ui_out_text (uiout, "\nTemporary ranged breakpoint ");
10083   else
10084     ui_out_text (uiout, "\nRanged breakpoint ");
10085   if (ui_out_is_mi_like_p (uiout))
10086     {
10087       ui_out_field_string (uiout, "reason",
10088                       async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10089       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10090     }
10091   ui_out_field_int (uiout, "bkptno", b->number);
10092   ui_out_text (uiout, ", ");
10093
10094   return PRINT_SRC_AND_LOC;
10095 }
10096
10097 /* Implement the "print_one" breakpoint_ops method for
10098    ranged breakpoints.  */
10099
10100 static void
10101 print_one_ranged_breakpoint (struct breakpoint *b,
10102                              struct bp_location **last_loc)
10103 {
10104   struct bp_location *bl = b->loc;
10105   struct value_print_options opts;
10106   struct ui_out *uiout = current_uiout;
10107
10108   /* Ranged breakpoints have only one location.  */
10109   gdb_assert (bl && bl->next == NULL);
10110
10111   get_user_print_options (&opts);
10112
10113   if (opts.addressprint)
10114     /* We don't print the address range here, it will be printed later
10115        by print_one_detail_ranged_breakpoint.  */
10116     ui_out_field_skip (uiout, "addr");
10117   annotate_field (5);
10118   print_breakpoint_location (b, bl);
10119   *last_loc = bl;
10120 }
10121
10122 /* Implement the "print_one_detail" breakpoint_ops method for
10123    ranged breakpoints.  */
10124
10125 static void
10126 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10127                                     struct ui_out *uiout)
10128 {
10129   CORE_ADDR address_start, address_end;
10130   struct bp_location *bl = b->loc;
10131   struct ui_file *stb = mem_fileopen ();
10132   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10133
10134   gdb_assert (bl);
10135
10136   address_start = bl->address;
10137   address_end = address_start + bl->length - 1;
10138
10139   ui_out_text (uiout, "\taddress range: ");
10140   fprintf_unfiltered (stb, "[%s, %s]",
10141                       print_core_address (bl->gdbarch, address_start),
10142                       print_core_address (bl->gdbarch, address_end));
10143   ui_out_field_stream (uiout, "addr", stb);
10144   ui_out_text (uiout, "\n");
10145
10146   do_cleanups (cleanup);
10147 }
10148
10149 /* Implement the "print_mention" breakpoint_ops method for
10150    ranged breakpoints.  */
10151
10152 static void
10153 print_mention_ranged_breakpoint (struct breakpoint *b)
10154 {
10155   struct bp_location *bl = b->loc;
10156   struct ui_out *uiout = current_uiout;
10157
10158   gdb_assert (bl);
10159   gdb_assert (b->type == bp_hardware_breakpoint);
10160
10161   if (ui_out_is_mi_like_p (uiout))
10162     return;
10163
10164   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10165                    b->number, paddress (bl->gdbarch, bl->address),
10166                    paddress (bl->gdbarch, bl->address + bl->length - 1));
10167 }
10168
10169 /* Implement the "print_recreate" breakpoint_ops method for
10170    ranged breakpoints.  */
10171
10172 static void
10173 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10174 {
10175   fprintf_unfiltered (fp, "break-range %s, %s", b->addr_string,
10176                       b->addr_string_range_end);
10177   print_recreate_thread (b, fp);
10178 }
10179
10180 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10181
10182 static struct breakpoint_ops ranged_breakpoint_ops;
10183
10184 /* Find the address where the end of the breakpoint range should be
10185    placed, given the SAL of the end of the range.  This is so that if
10186    the user provides a line number, the end of the range is set to the
10187    last instruction of the given line.  */
10188
10189 static CORE_ADDR
10190 find_breakpoint_range_end (struct symtab_and_line sal)
10191 {
10192   CORE_ADDR end;
10193
10194   /* If the user provided a PC value, use it.  Otherwise,
10195      find the address of the end of the given location.  */
10196   if (sal.explicit_pc)
10197     end = sal.pc;
10198   else
10199     {
10200       int ret;
10201       CORE_ADDR start;
10202
10203       ret = find_line_pc_range (sal, &start, &end);
10204       if (!ret)
10205         error (_("Could not find location of the end of the range."));
10206
10207       /* find_line_pc_range returns the start of the next line.  */
10208       end--;
10209     }
10210
10211   return end;
10212 }
10213
10214 /* Implement the "break-range" CLI command.  */
10215
10216 static void
10217 break_range_command (char *arg, int from_tty)
10218 {
10219   char *arg_start, *addr_string_start, *addr_string_end;
10220   struct linespec_result canonical_start, canonical_end;
10221   int bp_count, can_use_bp, length;
10222   CORE_ADDR end;
10223   struct breakpoint *b;
10224   struct symtab_and_line sal_start, sal_end;
10225   struct cleanup *cleanup_bkpt;
10226   struct linespec_sals *lsal_start, *lsal_end;
10227
10228   /* We don't support software ranged breakpoints.  */
10229   if (target_ranged_break_num_registers () < 0)
10230     error (_("This target does not support hardware ranged breakpoints."));
10231
10232   bp_count = hw_breakpoint_used_count ();
10233   bp_count += target_ranged_break_num_registers ();
10234   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10235                                                    bp_count, 0);
10236   if (can_use_bp < 0)
10237     error (_("Hardware breakpoints used exceeds limit."));
10238
10239   arg = skip_spaces (arg);
10240   if (arg == NULL || arg[0] == '\0')
10241     error(_("No address range specified."));
10242
10243   init_linespec_result (&canonical_start);
10244
10245   arg_start = arg;
10246   parse_breakpoint_sals (&arg, &canonical_start);
10247
10248   cleanup_bkpt = make_cleanup_destroy_linespec_result (&canonical_start);
10249
10250   if (arg[0] != ',')
10251     error (_("Too few arguments."));
10252   else if (VEC_empty (linespec_sals, canonical_start.sals))
10253     error (_("Could not find location of the beginning of the range."));
10254
10255   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10256
10257   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10258       || lsal_start->sals.nelts != 1)
10259     error (_("Cannot create a ranged breakpoint with multiple locations."));
10260
10261   sal_start = lsal_start->sals.sals[0];
10262   addr_string_start = savestring (arg_start, arg - arg_start);
10263   make_cleanup (xfree, addr_string_start);
10264
10265   arg++;        /* Skip the comma.  */
10266   arg = skip_spaces (arg);
10267
10268   /* Parse the end location.  */
10269
10270   init_linespec_result (&canonical_end);
10271   arg_start = arg;
10272
10273   /* We call decode_line_full directly here instead of using
10274      parse_breakpoint_sals because we need to specify the start location's
10275      symtab and line as the default symtab and line for the end of the
10276      range.  This makes it possible to have ranges like "foo.c:27, +14",
10277      where +14 means 14 lines from the start location.  */
10278   decode_line_full (&arg, DECODE_LINE_FUNFIRSTLINE,
10279                     sal_start.symtab, sal_start.line,
10280                     &canonical_end, NULL, NULL);
10281
10282   make_cleanup_destroy_linespec_result (&canonical_end);
10283
10284   if (VEC_empty (linespec_sals, canonical_end.sals))
10285     error (_("Could not find location of the end of the range."));
10286
10287   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10288   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10289       || lsal_end->sals.nelts != 1)
10290     error (_("Cannot create a ranged breakpoint with multiple locations."));
10291
10292   sal_end = lsal_end->sals.sals[0];
10293   addr_string_end = savestring (arg_start, arg - arg_start);
10294   make_cleanup (xfree, addr_string_end);
10295
10296   end = find_breakpoint_range_end (sal_end);
10297   if (sal_start.pc > end)
10298     error (_("Invalid address range, end precedes start."));
10299
10300   length = end - sal_start.pc + 1;
10301   if (length < 0)
10302     /* Length overflowed.  */
10303     error (_("Address range too large."));
10304   else if (length == 1)
10305     {
10306       /* This range is simple enough to be handled by
10307          the `hbreak' command.  */
10308       hbreak_command (addr_string_start, 1);
10309
10310       do_cleanups (cleanup_bkpt);
10311
10312       return;
10313     }
10314
10315   /* Now set up the breakpoint.  */
10316   b = set_raw_breakpoint (get_current_arch (), sal_start,
10317                           bp_hardware_breakpoint, &ranged_breakpoint_ops);
10318   set_breakpoint_count (breakpoint_count + 1);
10319   b->number = breakpoint_count;
10320   b->disposition = disp_donttouch;
10321   b->addr_string = xstrdup (addr_string_start);
10322   b->addr_string_range_end = xstrdup (addr_string_end);
10323   b->loc->length = length;
10324
10325   do_cleanups (cleanup_bkpt);
10326
10327   mention (b);
10328   observer_notify_breakpoint_created (b);
10329   update_global_location_list (UGLL_MAY_INSERT);
10330 }
10331
10332 /*  Return non-zero if EXP is verified as constant.  Returned zero
10333     means EXP is variable.  Also the constant detection may fail for
10334     some constant expressions and in such case still falsely return
10335     zero.  */
10336
10337 static int
10338 watchpoint_exp_is_const (const struct expression *exp)
10339 {
10340   int i = exp->nelts;
10341
10342   while (i > 0)
10343     {
10344       int oplenp, argsp;
10345
10346       /* We are only interested in the descriptor of each element.  */
10347       operator_length (exp, i, &oplenp, &argsp);
10348       i -= oplenp;
10349
10350       switch (exp->elts[i].opcode)
10351         {
10352         case BINOP_ADD:
10353         case BINOP_SUB:
10354         case BINOP_MUL:
10355         case BINOP_DIV:
10356         case BINOP_REM:
10357         case BINOP_MOD:
10358         case BINOP_LSH:
10359         case BINOP_RSH:
10360         case BINOP_LOGICAL_AND:
10361         case BINOP_LOGICAL_OR:
10362         case BINOP_BITWISE_AND:
10363         case BINOP_BITWISE_IOR:
10364         case BINOP_BITWISE_XOR:
10365         case BINOP_EQUAL:
10366         case BINOP_NOTEQUAL:
10367         case BINOP_LESS:
10368         case BINOP_GTR:
10369         case BINOP_LEQ:
10370         case BINOP_GEQ:
10371         case BINOP_REPEAT:
10372         case BINOP_COMMA:
10373         case BINOP_EXP:
10374         case BINOP_MIN:
10375         case BINOP_MAX:
10376         case BINOP_INTDIV:
10377         case BINOP_CONCAT:
10378         case TERNOP_COND:
10379         case TERNOP_SLICE:
10380
10381         case OP_LONG:
10382         case OP_DOUBLE:
10383         case OP_DECFLOAT:
10384         case OP_LAST:
10385         case OP_COMPLEX:
10386         case OP_STRING:
10387         case OP_ARRAY:
10388         case OP_TYPE:
10389         case OP_TYPEOF:
10390         case OP_DECLTYPE:
10391         case OP_TYPEID:
10392         case OP_NAME:
10393         case OP_OBJC_NSSTRING:
10394
10395         case UNOP_NEG:
10396         case UNOP_LOGICAL_NOT:
10397         case UNOP_COMPLEMENT:
10398         case UNOP_ADDR:
10399         case UNOP_HIGH:
10400         case UNOP_CAST:
10401
10402         case UNOP_CAST_TYPE:
10403         case UNOP_REINTERPRET_CAST:
10404         case UNOP_DYNAMIC_CAST:
10405           /* Unary, binary and ternary operators: We have to check
10406              their operands.  If they are constant, then so is the
10407              result of that operation.  For instance, if A and B are
10408              determined to be constants, then so is "A + B".
10409
10410              UNOP_IND is one exception to the rule above, because the
10411              value of *ADDR is not necessarily a constant, even when
10412              ADDR is.  */
10413           break;
10414
10415         case OP_VAR_VALUE:
10416           /* Check whether the associated symbol is a constant.
10417
10418              We use SYMBOL_CLASS rather than TYPE_CONST because it's
10419              possible that a buggy compiler could mark a variable as
10420              constant even when it is not, and TYPE_CONST would return
10421              true in this case, while SYMBOL_CLASS wouldn't.
10422
10423              We also have to check for function symbols because they
10424              are always constant.  */
10425           {
10426             struct symbol *s = exp->elts[i + 2].symbol;
10427
10428             if (SYMBOL_CLASS (s) != LOC_BLOCK
10429                 && SYMBOL_CLASS (s) != LOC_CONST
10430                 && SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10431               return 0;
10432             break;
10433           }
10434
10435         /* The default action is to return 0 because we are using
10436            the optimistic approach here: If we don't know something,
10437            then it is not a constant.  */
10438         default:
10439           return 0;
10440         }
10441     }
10442
10443   return 1;
10444 }
10445
10446 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10447
10448 static void
10449 dtor_watchpoint (struct breakpoint *self)
10450 {
10451   struct watchpoint *w = (struct watchpoint *) self;
10452
10453   xfree (w->cond_exp);
10454   xfree (w->exp);
10455   xfree (w->exp_string);
10456   xfree (w->exp_string_reparse);
10457   value_free (w->val);
10458
10459   base_breakpoint_ops.dtor (self);
10460 }
10461
10462 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10463
10464 static void
10465 re_set_watchpoint (struct breakpoint *b)
10466 {
10467   struct watchpoint *w = (struct watchpoint *) b;
10468
10469   /* Watchpoint can be either on expression using entirely global
10470      variables, or it can be on local variables.
10471
10472      Watchpoints of the first kind are never auto-deleted, and even
10473      persist across program restarts.  Since they can use variables
10474      from shared libraries, we need to reparse expression as libraries
10475      are loaded and unloaded.
10476
10477      Watchpoints on local variables can also change meaning as result
10478      of solib event.  For example, if a watchpoint uses both a local
10479      and a global variables in expression, it's a local watchpoint,
10480      but unloading of a shared library will make the expression
10481      invalid.  This is not a very common use case, but we still
10482      re-evaluate expression, to avoid surprises to the user.
10483
10484      Note that for local watchpoints, we re-evaluate it only if
10485      watchpoints frame id is still valid.  If it's not, it means the
10486      watchpoint is out of scope and will be deleted soon.  In fact,
10487      I'm not sure we'll ever be called in this case.
10488
10489      If a local watchpoint's frame id is still valid, then
10490      w->exp_valid_block is likewise valid, and we can safely use it.
10491
10492      Don't do anything about disabled watchpoints, since they will be
10493      reevaluated again when enabled.  */
10494   update_watchpoint (w, 1 /* reparse */);
10495 }
10496
10497 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10498
10499 static int
10500 insert_watchpoint (struct bp_location *bl)
10501 {
10502   struct watchpoint *w = (struct watchpoint *) bl->owner;
10503   int length = w->exact ? 1 : bl->length;
10504
10505   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10506                                    w->cond_exp);
10507 }
10508
10509 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10510
10511 static int
10512 remove_watchpoint (struct bp_location *bl)
10513 {
10514   struct watchpoint *w = (struct watchpoint *) bl->owner;
10515   int length = w->exact ? 1 : bl->length;
10516
10517   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10518                                    w->cond_exp);
10519 }
10520
10521 static int
10522 breakpoint_hit_watchpoint (const struct bp_location *bl,
10523                            struct address_space *aspace, CORE_ADDR bp_addr,
10524                            const struct target_waitstatus *ws)
10525 {
10526   struct breakpoint *b = bl->owner;
10527   struct watchpoint *w = (struct watchpoint *) b;
10528
10529   /* Continuable hardware watchpoints are treated as non-existent if the
10530      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10531      some data address).  Otherwise gdb won't stop on a break instruction
10532      in the code (not from a breakpoint) when a hardware watchpoint has
10533      been defined.  Also skip watchpoints which we know did not trigger
10534      (did not match the data address).  */
10535   if (is_hardware_watchpoint (b)
10536       && w->watchpoint_triggered == watch_triggered_no)
10537     return 0;
10538
10539   return 1;
10540 }
10541
10542 static void
10543 check_status_watchpoint (bpstat bs)
10544 {
10545   gdb_assert (is_watchpoint (bs->breakpoint_at));
10546
10547   bpstat_check_watchpoint (bs);
10548 }
10549
10550 /* Implement the "resources_needed" breakpoint_ops method for
10551    hardware watchpoints.  */
10552
10553 static int
10554 resources_needed_watchpoint (const struct bp_location *bl)
10555 {
10556   struct watchpoint *w = (struct watchpoint *) bl->owner;
10557   int length = w->exact? 1 : bl->length;
10558
10559   return target_region_ok_for_hw_watchpoint (bl->address, length);
10560 }
10561
10562 /* Implement the "works_in_software_mode" breakpoint_ops method for
10563    hardware watchpoints.  */
10564
10565 static int
10566 works_in_software_mode_watchpoint (const struct breakpoint *b)
10567 {
10568   /* Read and access watchpoints only work with hardware support.  */
10569   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10570 }
10571
10572 static enum print_stop_action
10573 print_it_watchpoint (bpstat bs)
10574 {
10575   struct cleanup *old_chain;
10576   struct breakpoint *b;
10577   struct ui_file *stb;
10578   enum print_stop_action result;
10579   struct watchpoint *w;
10580   struct ui_out *uiout = current_uiout;
10581
10582   gdb_assert (bs->bp_location_at != NULL);
10583
10584   b = bs->breakpoint_at;
10585   w = (struct watchpoint *) b;
10586
10587   stb = mem_fileopen ();
10588   old_chain = make_cleanup_ui_file_delete (stb);
10589
10590   switch (b->type)
10591     {
10592     case bp_watchpoint:
10593     case bp_hardware_watchpoint:
10594       annotate_watchpoint (b->number);
10595       if (ui_out_is_mi_like_p (uiout))
10596         ui_out_field_string
10597           (uiout, "reason",
10598            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10599       mention (b);
10600       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10601       ui_out_text (uiout, "\nOld value = ");
10602       watchpoint_value_print (bs->old_val, stb);
10603       ui_out_field_stream (uiout, "old", stb);
10604       ui_out_text (uiout, "\nNew value = ");
10605       watchpoint_value_print (w->val, stb);
10606       ui_out_field_stream (uiout, "new", stb);
10607       ui_out_text (uiout, "\n");
10608       /* More than one watchpoint may have been triggered.  */
10609       result = PRINT_UNKNOWN;
10610       break;
10611
10612     case bp_read_watchpoint:
10613       if (ui_out_is_mi_like_p (uiout))
10614         ui_out_field_string
10615           (uiout, "reason",
10616            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10617       mention (b);
10618       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10619       ui_out_text (uiout, "\nValue = ");
10620       watchpoint_value_print (w->val, stb);
10621       ui_out_field_stream (uiout, "value", stb);
10622       ui_out_text (uiout, "\n");
10623       result = PRINT_UNKNOWN;
10624       break;
10625
10626     case bp_access_watchpoint:
10627       if (bs->old_val != NULL)
10628         {
10629           annotate_watchpoint (b->number);
10630           if (ui_out_is_mi_like_p (uiout))
10631             ui_out_field_string
10632               (uiout, "reason",
10633                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10634           mention (b);
10635           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10636           ui_out_text (uiout, "\nOld value = ");
10637           watchpoint_value_print (bs->old_val, stb);
10638           ui_out_field_stream (uiout, "old", stb);
10639           ui_out_text (uiout, "\nNew value = ");
10640         }
10641       else
10642         {
10643           mention (b);
10644           if (ui_out_is_mi_like_p (uiout))
10645             ui_out_field_string
10646               (uiout, "reason",
10647                async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10648           make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10649           ui_out_text (uiout, "\nValue = ");
10650         }
10651       watchpoint_value_print (w->val, stb);
10652       ui_out_field_stream (uiout, "new", stb);
10653       ui_out_text (uiout, "\n");
10654       result = PRINT_UNKNOWN;
10655       break;
10656     default:
10657       result = PRINT_UNKNOWN;
10658     }
10659
10660   do_cleanups (old_chain);
10661   return result;
10662 }
10663
10664 /* Implement the "print_mention" breakpoint_ops method for hardware
10665    watchpoints.  */
10666
10667 static void
10668 print_mention_watchpoint (struct breakpoint *b)
10669 {
10670   struct cleanup *ui_out_chain;
10671   struct watchpoint *w = (struct watchpoint *) b;
10672   struct ui_out *uiout = current_uiout;
10673
10674   switch (b->type)
10675     {
10676     case bp_watchpoint:
10677       ui_out_text (uiout, "Watchpoint ");
10678       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10679       break;
10680     case bp_hardware_watchpoint:
10681       ui_out_text (uiout, "Hardware watchpoint ");
10682       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10683       break;
10684     case bp_read_watchpoint:
10685       ui_out_text (uiout, "Hardware read watchpoint ");
10686       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10687       break;
10688     case bp_access_watchpoint:
10689       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10690       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10691       break;
10692     default:
10693       internal_error (__FILE__, __LINE__,
10694                       _("Invalid hardware watchpoint type."));
10695     }
10696
10697   ui_out_field_int (uiout, "number", b->number);
10698   ui_out_text (uiout, ": ");
10699   ui_out_field_string (uiout, "exp", w->exp_string);
10700   do_cleanups (ui_out_chain);
10701 }
10702
10703 /* Implement the "print_recreate" breakpoint_ops method for
10704    watchpoints.  */
10705
10706 static void
10707 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10708 {
10709   struct watchpoint *w = (struct watchpoint *) b;
10710
10711   switch (b->type)
10712     {
10713     case bp_watchpoint:
10714     case bp_hardware_watchpoint:
10715       fprintf_unfiltered (fp, "watch");
10716       break;
10717     case bp_read_watchpoint:
10718       fprintf_unfiltered (fp, "rwatch");
10719       break;
10720     case bp_access_watchpoint:
10721       fprintf_unfiltered (fp, "awatch");
10722       break;
10723     default:
10724       internal_error (__FILE__, __LINE__,
10725                       _("Invalid watchpoint type."));
10726     }
10727
10728   fprintf_unfiltered (fp, " %s", w->exp_string);
10729   print_recreate_thread (b, fp);
10730 }
10731
10732 /* Implement the "explains_signal" breakpoint_ops method for
10733    watchpoints.  */
10734
10735 static int
10736 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10737 {
10738   /* A software watchpoint cannot cause a signal other than
10739      GDB_SIGNAL_TRAP.  */
10740   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10741     return 0;
10742
10743   return 1;
10744 }
10745
10746 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10747
10748 static struct breakpoint_ops watchpoint_breakpoint_ops;
10749
10750 /* Implement the "insert" breakpoint_ops method for
10751    masked hardware watchpoints.  */
10752
10753 static int
10754 insert_masked_watchpoint (struct bp_location *bl)
10755 {
10756   struct watchpoint *w = (struct watchpoint *) bl->owner;
10757
10758   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10759                                         bl->watchpoint_type);
10760 }
10761
10762 /* Implement the "remove" breakpoint_ops method for
10763    masked hardware watchpoints.  */
10764
10765 static int
10766 remove_masked_watchpoint (struct bp_location *bl)
10767 {
10768   struct watchpoint *w = (struct watchpoint *) bl->owner;
10769
10770   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10771                                         bl->watchpoint_type);
10772 }
10773
10774 /* Implement the "resources_needed" breakpoint_ops method for
10775    masked hardware watchpoints.  */
10776
10777 static int
10778 resources_needed_masked_watchpoint (const struct bp_location *bl)
10779 {
10780   struct watchpoint *w = (struct watchpoint *) bl->owner;
10781
10782   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10783 }
10784
10785 /* Implement the "works_in_software_mode" breakpoint_ops method for
10786    masked hardware watchpoints.  */
10787
10788 static int
10789 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10790 {
10791   return 0;
10792 }
10793
10794 /* Implement the "print_it" breakpoint_ops method for
10795    masked hardware watchpoints.  */
10796
10797 static enum print_stop_action
10798 print_it_masked_watchpoint (bpstat bs)
10799 {
10800   struct breakpoint *b = bs->breakpoint_at;
10801   struct ui_out *uiout = current_uiout;
10802
10803   /* Masked watchpoints have only one location.  */
10804   gdb_assert (b->loc && b->loc->next == NULL);
10805
10806   switch (b->type)
10807     {
10808     case bp_hardware_watchpoint:
10809       annotate_watchpoint (b->number);
10810       if (ui_out_is_mi_like_p (uiout))
10811         ui_out_field_string
10812           (uiout, "reason",
10813            async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10814       break;
10815
10816     case bp_read_watchpoint:
10817       if (ui_out_is_mi_like_p (uiout))
10818         ui_out_field_string
10819           (uiout, "reason",
10820            async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10821       break;
10822
10823     case bp_access_watchpoint:
10824       if (ui_out_is_mi_like_p (uiout))
10825         ui_out_field_string
10826           (uiout, "reason",
10827            async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10828       break;
10829     default:
10830       internal_error (__FILE__, __LINE__,
10831                       _("Invalid hardware watchpoint type."));
10832     }
10833
10834   mention (b);
10835   ui_out_text (uiout, _("\n\
10836 Check the underlying instruction at PC for the memory\n\
10837 address and value which triggered this watchpoint.\n"));
10838   ui_out_text (uiout, "\n");
10839
10840   /* More than one watchpoint may have been triggered.  */
10841   return PRINT_UNKNOWN;
10842 }
10843
10844 /* Implement the "print_one_detail" breakpoint_ops method for
10845    masked hardware watchpoints.  */
10846
10847 static void
10848 print_one_detail_masked_watchpoint (const struct breakpoint *b,
10849                                     struct ui_out *uiout)
10850 {
10851   struct watchpoint *w = (struct watchpoint *) b;
10852
10853   /* Masked watchpoints have only one location.  */
10854   gdb_assert (b->loc && b->loc->next == NULL);
10855
10856   ui_out_text (uiout, "\tmask ");
10857   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
10858   ui_out_text (uiout, "\n");
10859 }
10860
10861 /* Implement the "print_mention" breakpoint_ops method for
10862    masked hardware watchpoints.  */
10863
10864 static void
10865 print_mention_masked_watchpoint (struct breakpoint *b)
10866 {
10867   struct watchpoint *w = (struct watchpoint *) b;
10868   struct ui_out *uiout = current_uiout;
10869   struct cleanup *ui_out_chain;
10870
10871   switch (b->type)
10872     {
10873     case bp_hardware_watchpoint:
10874       ui_out_text (uiout, "Masked hardware watchpoint ");
10875       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10876       break;
10877     case bp_read_watchpoint:
10878       ui_out_text (uiout, "Masked hardware read watchpoint ");
10879       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10880       break;
10881     case bp_access_watchpoint:
10882       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
10883       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10884       break;
10885     default:
10886       internal_error (__FILE__, __LINE__,
10887                       _("Invalid hardware watchpoint type."));
10888     }
10889
10890   ui_out_field_int (uiout, "number", b->number);
10891   ui_out_text (uiout, ": ");
10892   ui_out_field_string (uiout, "exp", w->exp_string);
10893   do_cleanups (ui_out_chain);
10894 }
10895
10896 /* Implement the "print_recreate" breakpoint_ops method for
10897    masked hardware watchpoints.  */
10898
10899 static void
10900 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
10901 {
10902   struct watchpoint *w = (struct watchpoint *) b;
10903   char tmp[40];
10904
10905   switch (b->type)
10906     {
10907     case bp_hardware_watchpoint:
10908       fprintf_unfiltered (fp, "watch");
10909       break;
10910     case bp_read_watchpoint:
10911       fprintf_unfiltered (fp, "rwatch");
10912       break;
10913     case bp_access_watchpoint:
10914       fprintf_unfiltered (fp, "awatch");
10915       break;
10916     default:
10917       internal_error (__FILE__, __LINE__,
10918                       _("Invalid hardware watchpoint type."));
10919     }
10920
10921   sprintf_vma (tmp, w->hw_wp_mask);
10922   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
10923   print_recreate_thread (b, fp);
10924 }
10925
10926 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
10927
10928 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
10929
10930 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
10931
10932 static int
10933 is_masked_watchpoint (const struct breakpoint *b)
10934 {
10935   return b->ops == &masked_watchpoint_breakpoint_ops;
10936 }
10937
10938 /* accessflag:  hw_write:  watch write, 
10939                 hw_read:   watch read, 
10940                 hw_access: watch access (read or write) */
10941 static void
10942 watch_command_1 (const char *arg, int accessflag, int from_tty,
10943                  int just_location, int internal)
10944 {
10945   struct breakpoint *b, *scope_breakpoint = NULL;
10946   struct expression *exp;
10947   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
10948   struct value *val, *mark, *result;
10949   int saved_bitpos = 0, saved_bitsize = 0;
10950   struct frame_info *frame;
10951   const char *exp_start = NULL;
10952   const char *exp_end = NULL;
10953   const char *tok, *end_tok;
10954   int toklen = -1;
10955   const char *cond_start = NULL;
10956   const char *cond_end = NULL;
10957   enum bptype bp_type;
10958   int thread = -1;
10959   int pc = 0;
10960   /* Flag to indicate whether we are going to use masks for
10961      the hardware watchpoint.  */
10962   int use_mask = 0;
10963   CORE_ADDR mask = 0;
10964   struct watchpoint *w;
10965   char *expression;
10966   struct cleanup *back_to;
10967
10968   /* Make sure that we actually have parameters to parse.  */
10969   if (arg != NULL && arg[0] != '\0')
10970     {
10971       const char *value_start;
10972
10973       exp_end = arg + strlen (arg);
10974
10975       /* Look for "parameter value" pairs at the end
10976          of the arguments string.  */
10977       for (tok = exp_end - 1; tok > arg; tok--)
10978         {
10979           /* Skip whitespace at the end of the argument list.  */
10980           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10981             tok--;
10982
10983           /* Find the beginning of the last token.
10984              This is the value of the parameter.  */
10985           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10986             tok--;
10987           value_start = tok + 1;
10988
10989           /* Skip whitespace.  */
10990           while (tok > arg && (*tok == ' ' || *tok == '\t'))
10991             tok--;
10992
10993           end_tok = tok;
10994
10995           /* Find the beginning of the second to last token.
10996              This is the parameter itself.  */
10997           while (tok > arg && (*tok != ' ' && *tok != '\t'))
10998             tok--;
10999           tok++;
11000           toklen = end_tok - tok + 1;
11001
11002           if (toklen == 6 && startswith (tok, "thread"))
11003             {
11004               /* At this point we've found a "thread" token, which means
11005                  the user is trying to set a watchpoint that triggers
11006                  only in a specific thread.  */
11007               char *endp;
11008
11009               if (thread != -1)
11010                 error(_("You can specify only one thread."));
11011
11012               /* Extract the thread ID from the next token.  */
11013               thread = strtol (value_start, &endp, 0);
11014
11015               /* Check if the user provided a valid numeric value for the
11016                  thread ID.  */
11017               if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11018                 error (_("Invalid thread ID specification %s."), value_start);
11019
11020               /* Check if the thread actually exists.  */
11021               if (!valid_thread_id (thread))
11022                 invalid_thread_id_error (thread);
11023             }
11024           else if (toklen == 4 && startswith (tok, "mask"))
11025             {
11026               /* We've found a "mask" token, which means the user wants to
11027                  create a hardware watchpoint that is going to have the mask
11028                  facility.  */
11029               struct value *mask_value, *mark;
11030
11031               if (use_mask)
11032                 error(_("You can specify only one mask."));
11033
11034               use_mask = just_location = 1;
11035
11036               mark = value_mark ();
11037               mask_value = parse_to_comma_and_eval (&value_start);
11038               mask = value_as_address (mask_value);
11039               value_free_to_mark (mark);
11040             }
11041           else
11042             /* We didn't recognize what we found.  We should stop here.  */
11043             break;
11044
11045           /* Truncate the string and get rid of the "parameter value" pair before
11046              the arguments string is parsed by the parse_exp_1 function.  */
11047           exp_end = tok;
11048         }
11049     }
11050   else
11051     exp_end = arg;
11052
11053   /* Parse the rest of the arguments.  From here on out, everything
11054      is in terms of a newly allocated string instead of the original
11055      ARG.  */
11056   innermost_block = NULL;
11057   expression = savestring (arg, exp_end - arg);
11058   back_to = make_cleanup (xfree, expression);
11059   exp_start = arg = expression;
11060   exp = parse_exp_1 (&arg, 0, 0, 0);
11061   exp_end = arg;
11062   /* Remove trailing whitespace from the expression before saving it.
11063      This makes the eventual display of the expression string a bit
11064      prettier.  */
11065   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11066     --exp_end;
11067
11068   /* Checking if the expression is not constant.  */
11069   if (watchpoint_exp_is_const (exp))
11070     {
11071       int len;
11072
11073       len = exp_end - exp_start;
11074       while (len > 0 && isspace (exp_start[len - 1]))
11075         len--;
11076       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11077     }
11078
11079   exp_valid_block = innermost_block;
11080   mark = value_mark ();
11081   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11082
11083   if (val != NULL && just_location)
11084     {
11085       saved_bitpos = value_bitpos (val);
11086       saved_bitsize = value_bitsize (val);
11087     }
11088
11089   if (just_location)
11090     {
11091       int ret;
11092
11093       exp_valid_block = NULL;
11094       val = value_addr (result);
11095       release_value (val);
11096       value_free_to_mark (mark);
11097
11098       if (use_mask)
11099         {
11100           ret = target_masked_watch_num_registers (value_as_address (val),
11101                                                    mask);
11102           if (ret == -1)
11103             error (_("This target does not support masked watchpoints."));
11104           else if (ret == -2)
11105             error (_("Invalid mask or memory region."));
11106         }
11107     }
11108   else if (val != NULL)
11109     release_value (val);
11110
11111   tok = skip_spaces_const (arg);
11112   end_tok = skip_to_space_const (tok);
11113
11114   toklen = end_tok - tok;
11115   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11116     {
11117       struct expression *cond;
11118
11119       innermost_block = NULL;
11120       tok = cond_start = end_tok + 1;
11121       cond = parse_exp_1 (&tok, 0, 0, 0);
11122
11123       /* The watchpoint expression may not be local, but the condition
11124          may still be.  E.g.: `watch global if local > 0'.  */
11125       cond_exp_valid_block = innermost_block;
11126
11127       xfree (cond);
11128       cond_end = tok;
11129     }
11130   if (*tok)
11131     error (_("Junk at end of command."));
11132
11133   frame = block_innermost_frame (exp_valid_block);
11134
11135   /* If the expression is "local", then set up a "watchpoint scope"
11136      breakpoint at the point where we've left the scope of the watchpoint
11137      expression.  Create the scope breakpoint before the watchpoint, so
11138      that we will encounter it first in bpstat_stop_status.  */
11139   if (exp_valid_block && frame)
11140     {
11141       if (frame_id_p (frame_unwind_caller_id (frame)))
11142         {
11143           scope_breakpoint
11144             = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11145                                           frame_unwind_caller_pc (frame),
11146                                           bp_watchpoint_scope,
11147                                           &momentary_breakpoint_ops);
11148
11149           scope_breakpoint->enable_state = bp_enabled;
11150
11151           /* Automatically delete the breakpoint when it hits.  */
11152           scope_breakpoint->disposition = disp_del;
11153
11154           /* Only break in the proper frame (help with recursion).  */
11155           scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11156
11157           /* Set the address at which we will stop.  */
11158           scope_breakpoint->loc->gdbarch
11159             = frame_unwind_caller_arch (frame);
11160           scope_breakpoint->loc->requested_address
11161             = frame_unwind_caller_pc (frame);
11162           scope_breakpoint->loc->address
11163             = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11164                                          scope_breakpoint->loc->requested_address,
11165                                          scope_breakpoint->type);
11166         }
11167     }
11168
11169   /* Now set up the breakpoint.  We create all watchpoints as hardware
11170      watchpoints here even if hardware watchpoints are turned off, a call
11171      to update_watchpoint later in this function will cause the type to
11172      drop back to bp_watchpoint (software watchpoint) if required.  */
11173
11174   if (accessflag == hw_read)
11175     bp_type = bp_read_watchpoint;
11176   else if (accessflag == hw_access)
11177     bp_type = bp_access_watchpoint;
11178   else
11179     bp_type = bp_hardware_watchpoint;
11180
11181   w = XCNEW (struct watchpoint);
11182   b = &w->base;
11183   if (use_mask)
11184     init_raw_breakpoint_without_location (b, NULL, bp_type,
11185                                           &masked_watchpoint_breakpoint_ops);
11186   else
11187     init_raw_breakpoint_without_location (b, NULL, bp_type,
11188                                           &watchpoint_breakpoint_ops);
11189   b->thread = thread;
11190   b->disposition = disp_donttouch;
11191   b->pspace = current_program_space;
11192   w->exp = exp;
11193   w->exp_valid_block = exp_valid_block;
11194   w->cond_exp_valid_block = cond_exp_valid_block;
11195   if (just_location)
11196     {
11197       struct type *t = value_type (val);
11198       CORE_ADDR addr = value_as_address (val);
11199       char *name;
11200
11201       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11202       name = type_to_string (t);
11203
11204       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11205                                           core_addr_to_string (addr));
11206       xfree (name);
11207
11208       w->exp_string = xstrprintf ("-location %.*s",
11209                                   (int) (exp_end - exp_start), exp_start);
11210
11211       /* The above expression is in C.  */
11212       b->language = language_c;
11213     }
11214   else
11215     w->exp_string = savestring (exp_start, exp_end - exp_start);
11216
11217   if (use_mask)
11218     {
11219       w->hw_wp_mask = mask;
11220     }
11221   else
11222     {
11223       w->val = val;
11224       w->val_bitpos = saved_bitpos;
11225       w->val_bitsize = saved_bitsize;
11226       w->val_valid = 1;
11227     }
11228
11229   if (cond_start)
11230     b->cond_string = savestring (cond_start, cond_end - cond_start);
11231   else
11232     b->cond_string = 0;
11233
11234   if (frame)
11235     {
11236       w->watchpoint_frame = get_frame_id (frame);
11237       w->watchpoint_thread = inferior_ptid;
11238     }
11239   else
11240     {
11241       w->watchpoint_frame = null_frame_id;
11242       w->watchpoint_thread = null_ptid;
11243     }
11244
11245   if (scope_breakpoint != NULL)
11246     {
11247       /* The scope breakpoint is related to the watchpoint.  We will
11248          need to act on them together.  */
11249       b->related_breakpoint = scope_breakpoint;
11250       scope_breakpoint->related_breakpoint = b;
11251     }
11252
11253   if (!just_location)
11254     value_free_to_mark (mark);
11255
11256   TRY
11257     {
11258       /* Finally update the new watchpoint.  This creates the locations
11259          that should be inserted.  */
11260       update_watchpoint (w, 1);
11261     }
11262   CATCH (e, RETURN_MASK_ALL)
11263     {
11264       delete_breakpoint (b);
11265       throw_exception (e);
11266     }
11267   END_CATCH
11268
11269   install_breakpoint (internal, b, 1);
11270   do_cleanups (back_to);
11271 }
11272
11273 /* Return count of debug registers needed to watch the given expression.
11274    If the watchpoint cannot be handled in hardware return zero.  */
11275
11276 static int
11277 can_use_hardware_watchpoint (struct value *v)
11278 {
11279   int found_memory_cnt = 0;
11280   struct value *head = v;
11281
11282   /* Did the user specifically forbid us to use hardware watchpoints? */
11283   if (!can_use_hw_watchpoints)
11284     return 0;
11285
11286   /* Make sure that the value of the expression depends only upon
11287      memory contents, and values computed from them within GDB.  If we
11288      find any register references or function calls, we can't use a
11289      hardware watchpoint.
11290
11291      The idea here is that evaluating an expression generates a series
11292      of values, one holding the value of every subexpression.  (The
11293      expression a*b+c has five subexpressions: a, b, a*b, c, and
11294      a*b+c.)  GDB's values hold almost enough information to establish
11295      the criteria given above --- they identify memory lvalues,
11296      register lvalues, computed values, etcetera.  So we can evaluate
11297      the expression, and then scan the chain of values that leaves
11298      behind to decide whether we can detect any possible change to the
11299      expression's final value using only hardware watchpoints.
11300
11301      However, I don't think that the values returned by inferior
11302      function calls are special in any way.  So this function may not
11303      notice that an expression involving an inferior function call
11304      can't be watched with hardware watchpoints.  FIXME.  */
11305   for (; v; v = value_next (v))
11306     {
11307       if (VALUE_LVAL (v) == lval_memory)
11308         {
11309           if (v != head && value_lazy (v))
11310             /* A lazy memory lvalue in the chain is one that GDB never
11311                needed to fetch; we either just used its address (e.g.,
11312                `a' in `a.b') or we never needed it at all (e.g., `a'
11313                in `a,b').  This doesn't apply to HEAD; if that is
11314                lazy then it was not readable, but watch it anyway.  */
11315             ;
11316           else
11317             {
11318               /* Ahh, memory we actually used!  Check if we can cover
11319                  it with hardware watchpoints.  */
11320               struct type *vtype = check_typedef (value_type (v));
11321
11322               /* We only watch structs and arrays if user asked for it
11323                  explicitly, never if they just happen to appear in a
11324                  middle of some value chain.  */
11325               if (v == head
11326                   || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11327                       && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11328                 {
11329                   CORE_ADDR vaddr = value_address (v);
11330                   int len;
11331                   int num_regs;
11332
11333                   len = (target_exact_watchpoints
11334                          && is_scalar_type_recursive (vtype))?
11335                     1 : TYPE_LENGTH (value_type (v));
11336
11337                   num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11338                   if (!num_regs)
11339                     return 0;
11340                   else
11341                     found_memory_cnt += num_regs;
11342                 }
11343             }
11344         }
11345       else if (VALUE_LVAL (v) != not_lval
11346                && deprecated_value_modifiable (v) == 0)
11347         return 0;       /* These are values from the history (e.g., $1).  */
11348       else if (VALUE_LVAL (v) == lval_register)
11349         return 0;       /* Cannot watch a register with a HW watchpoint.  */
11350     }
11351
11352   /* The expression itself looks suitable for using a hardware
11353      watchpoint, but give the target machine a chance to reject it.  */
11354   return found_memory_cnt;
11355 }
11356
11357 void
11358 watch_command_wrapper (char *arg, int from_tty, int internal)
11359 {
11360   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11361 }
11362
11363 /* A helper function that looks for the "-location" argument and then
11364    calls watch_command_1.  */
11365
11366 static void
11367 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11368 {
11369   int just_location = 0;
11370
11371   if (arg
11372       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11373           || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11374     {
11375       arg = skip_spaces (arg);
11376       just_location = 1;
11377     }
11378
11379   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11380 }
11381
11382 static void
11383 watch_command (char *arg, int from_tty)
11384 {
11385   watch_maybe_just_location (arg, hw_write, from_tty);
11386 }
11387
11388 void
11389 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11390 {
11391   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11392 }
11393
11394 static void
11395 rwatch_command (char *arg, int from_tty)
11396 {
11397   watch_maybe_just_location (arg, hw_read, from_tty);
11398 }
11399
11400 void
11401 awatch_command_wrapper (char *arg, int from_tty, int internal)
11402 {
11403   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11404 }
11405
11406 static void
11407 awatch_command (char *arg, int from_tty)
11408 {
11409   watch_maybe_just_location (arg, hw_access, from_tty);
11410 }
11411 \f
11412
11413 /* Helper routines for the until_command routine in infcmd.c.  Here
11414    because it uses the mechanisms of breakpoints.  */
11415
11416 struct until_break_command_continuation_args
11417 {
11418   struct breakpoint *breakpoint;
11419   struct breakpoint *breakpoint2;
11420   int thread_num;
11421 };
11422
11423 /* This function is called by fetch_inferior_event via the
11424    cmd_continuation pointer, to complete the until command.  It takes
11425    care of cleaning up the temporary breakpoints set up by the until
11426    command.  */
11427 static void
11428 until_break_command_continuation (void *arg, int err)
11429 {
11430   struct until_break_command_continuation_args *a = arg;
11431
11432   delete_breakpoint (a->breakpoint);
11433   if (a->breakpoint2)
11434     delete_breakpoint (a->breakpoint2);
11435   delete_longjmp_breakpoint (a->thread_num);
11436 }
11437
11438 void
11439 until_break_command (char *arg, int from_tty, int anywhere)
11440 {
11441   struct symtabs_and_lines sals;
11442   struct symtab_and_line sal;
11443   struct frame_info *frame;
11444   struct gdbarch *frame_gdbarch;
11445   struct frame_id stack_frame_id;
11446   struct frame_id caller_frame_id;
11447   struct breakpoint *breakpoint;
11448   struct breakpoint *breakpoint2 = NULL;
11449   struct cleanup *old_chain;
11450   int thread;
11451   struct thread_info *tp;
11452
11453   clear_proceed_status (0);
11454
11455   /* Set a breakpoint where the user wants it and at return from
11456      this function.  */
11457
11458   if (last_displayed_sal_is_valid ())
11459     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11460                           get_last_displayed_symtab (),
11461                           get_last_displayed_line ());
11462   else
11463     sals = decode_line_1 (&arg, DECODE_LINE_FUNFIRSTLINE,
11464                           (struct symtab *) NULL, 0);
11465
11466   if (sals.nelts != 1)
11467     error (_("Couldn't get information on specified line."));
11468
11469   sal = sals.sals[0];
11470   xfree (sals.sals);    /* malloc'd, so freed.  */
11471
11472   if (*arg)
11473     error (_("Junk at end of arguments."));
11474
11475   resolve_sal_pc (&sal);
11476
11477   tp = inferior_thread ();
11478   thread = tp->num;
11479
11480   old_chain = make_cleanup (null_cleanup, NULL);
11481
11482   /* Note linespec handling above invalidates the frame chain.
11483      Installing a breakpoint also invalidates the frame chain (as it
11484      may need to switch threads), so do any frame handling before
11485      that.  */
11486
11487   frame = get_selected_frame (NULL);
11488   frame_gdbarch = get_frame_arch (frame);
11489   stack_frame_id = get_stack_frame_id (frame);
11490   caller_frame_id = frame_unwind_caller_id (frame);
11491
11492   /* Keep within the current frame, or in frames called by the current
11493      one.  */
11494
11495   if (frame_id_p (caller_frame_id))
11496     {
11497       struct symtab_and_line sal2;
11498
11499       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11500       sal2.pc = frame_unwind_caller_pc (frame);
11501       breakpoint2 = set_momentary_breakpoint (frame_unwind_caller_arch (frame),
11502                                               sal2,
11503                                               caller_frame_id,
11504                                               bp_until);
11505       make_cleanup_delete_breakpoint (breakpoint2);
11506
11507       set_longjmp_breakpoint (tp, caller_frame_id);
11508       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11509     }
11510
11511   /* set_momentary_breakpoint could invalidate FRAME.  */
11512   frame = NULL;
11513
11514   if (anywhere)
11515     /* If the user told us to continue until a specified location,
11516        we don't specify a frame at which we need to stop.  */
11517     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11518                                            null_frame_id, bp_until);
11519   else
11520     /* Otherwise, specify the selected frame, because we want to stop
11521        only at the very same frame.  */
11522     breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11523                                            stack_frame_id, bp_until);
11524   make_cleanup_delete_breakpoint (breakpoint);
11525
11526   proceed (-1, GDB_SIGNAL_DEFAULT, 0);
11527
11528   /* If we are running asynchronously, and proceed call above has
11529      actually managed to start the target, arrange for breakpoints to
11530      be deleted when the target stops.  Otherwise, we're already
11531      stopped and delete breakpoints via cleanup chain.  */
11532
11533   if (target_can_async_p () && is_running (inferior_ptid))
11534     {
11535       struct until_break_command_continuation_args *args;
11536       args = xmalloc (sizeof (*args));
11537
11538       args->breakpoint = breakpoint;
11539       args->breakpoint2 = breakpoint2;
11540       args->thread_num = thread;
11541
11542       discard_cleanups (old_chain);
11543       add_continuation (inferior_thread (),
11544                         until_break_command_continuation, args,
11545                         xfree);
11546     }
11547   else
11548     do_cleanups (old_chain);
11549 }
11550
11551 /* This function attempts to parse an optional "if <cond>" clause
11552    from the arg string.  If one is not found, it returns NULL.
11553
11554    Else, it returns a pointer to the condition string.  (It does not
11555    attempt to evaluate the string against a particular block.)  And,
11556    it updates arg to point to the first character following the parsed
11557    if clause in the arg string.  */
11558
11559 char *
11560 ep_parse_optional_if_clause (char **arg)
11561 {
11562   char *cond_string;
11563
11564   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11565     return NULL;
11566
11567   /* Skip the "if" keyword.  */
11568   (*arg) += 2;
11569
11570   /* Skip any extra leading whitespace, and record the start of the
11571      condition string.  */
11572   *arg = skip_spaces (*arg);
11573   cond_string = *arg;
11574
11575   /* Assume that the condition occupies the remainder of the arg
11576      string.  */
11577   (*arg) += strlen (cond_string);
11578
11579   return cond_string;
11580 }
11581
11582 /* Commands to deal with catching events, such as signals, exceptions,
11583    process start/exit, etc.  */
11584
11585 typedef enum
11586 {
11587   catch_fork_temporary, catch_vfork_temporary,
11588   catch_fork_permanent, catch_vfork_permanent
11589 }
11590 catch_fork_kind;
11591
11592 static void
11593 catch_fork_command_1 (char *arg, int from_tty, 
11594                       struct cmd_list_element *command)
11595 {
11596   struct gdbarch *gdbarch = get_current_arch ();
11597   char *cond_string = NULL;
11598   catch_fork_kind fork_kind;
11599   int tempflag;
11600
11601   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11602   tempflag = (fork_kind == catch_fork_temporary
11603               || fork_kind == catch_vfork_temporary);
11604
11605   if (!arg)
11606     arg = "";
11607   arg = skip_spaces (arg);
11608
11609   /* The allowed syntax is:
11610      catch [v]fork
11611      catch [v]fork if <cond>
11612
11613      First, check if there's an if clause.  */
11614   cond_string = ep_parse_optional_if_clause (&arg);
11615
11616   if ((*arg != '\0') && !isspace (*arg))
11617     error (_("Junk at end of arguments."));
11618
11619   /* If this target supports it, create a fork or vfork catchpoint
11620      and enable reporting of such events.  */
11621   switch (fork_kind)
11622     {
11623     case catch_fork_temporary:
11624     case catch_fork_permanent:
11625       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11626                                           &catch_fork_breakpoint_ops);
11627       break;
11628     case catch_vfork_temporary:
11629     case catch_vfork_permanent:
11630       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11631                                           &catch_vfork_breakpoint_ops);
11632       break;
11633     default:
11634       error (_("unsupported or unknown fork kind; cannot catch it"));
11635       break;
11636     }
11637 }
11638
11639 static void
11640 catch_exec_command_1 (char *arg, int from_tty, 
11641                       struct cmd_list_element *command)
11642 {
11643   struct exec_catchpoint *c;
11644   struct gdbarch *gdbarch = get_current_arch ();
11645   int tempflag;
11646   char *cond_string = NULL;
11647
11648   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11649
11650   if (!arg)
11651     arg = "";
11652   arg = skip_spaces (arg);
11653
11654   /* The allowed syntax is:
11655      catch exec
11656      catch exec if <cond>
11657
11658      First, check if there's an if clause.  */
11659   cond_string = ep_parse_optional_if_clause (&arg);
11660
11661   if ((*arg != '\0') && !isspace (*arg))
11662     error (_("Junk at end of arguments."));
11663
11664   c = XNEW (struct exec_catchpoint);
11665   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11666                    &catch_exec_breakpoint_ops);
11667   c->exec_pathname = NULL;
11668
11669   install_breakpoint (0, &c->base, 1);
11670 }
11671
11672 void
11673 init_ada_exception_breakpoint (struct breakpoint *b,
11674                                struct gdbarch *gdbarch,
11675                                struct symtab_and_line sal,
11676                                char *addr_string,
11677                                const struct breakpoint_ops *ops,
11678                                int tempflag,
11679                                int enabled,
11680                                int from_tty)
11681 {
11682   if (from_tty)
11683     {
11684       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11685       if (!loc_gdbarch)
11686         loc_gdbarch = gdbarch;
11687
11688       describe_other_breakpoints (loc_gdbarch,
11689                                   sal.pspace, sal.pc, sal.section, -1);
11690       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11691          version for exception catchpoints, because two catchpoints
11692          used for different exception names will use the same address.
11693          In this case, a "breakpoint ... also set at..." warning is
11694          unproductive.  Besides, the warning phrasing is also a bit
11695          inappropriate, we should use the word catchpoint, and tell
11696          the user what type of catchpoint it is.  The above is good
11697          enough for now, though.  */
11698     }
11699
11700   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11701
11702   b->enable_state = enabled ? bp_enabled : bp_disabled;
11703   b->disposition = tempflag ? disp_del : disp_donttouch;
11704   b->addr_string = addr_string;
11705   b->language = language_ada;
11706 }
11707
11708 static void
11709 catch_command (char *arg, int from_tty)
11710 {
11711   error (_("Catch requires an event name."));
11712 }
11713 \f
11714
11715 static void
11716 tcatch_command (char *arg, int from_tty)
11717 {
11718   error (_("Catch requires an event name."));
11719 }
11720
11721 /* A qsort comparison function that sorts breakpoints in order.  */
11722
11723 static int
11724 compare_breakpoints (const void *a, const void *b)
11725 {
11726   const breakpoint_p *ba = a;
11727   uintptr_t ua = (uintptr_t) *ba;
11728   const breakpoint_p *bb = b;
11729   uintptr_t ub = (uintptr_t) *bb;
11730
11731   if ((*ba)->number < (*bb)->number)
11732     return -1;
11733   else if ((*ba)->number > (*bb)->number)
11734     return 1;
11735
11736   /* Now sort by address, in case we see, e..g, two breakpoints with
11737      the number 0.  */
11738   if (ua < ub)
11739     return -1;
11740   return ua > ub ? 1 : 0;
11741 }
11742
11743 /* Delete breakpoints by address or line.  */
11744
11745 static void
11746 clear_command (char *arg, int from_tty)
11747 {
11748   struct breakpoint *b, *prev;
11749   VEC(breakpoint_p) *found = 0;
11750   int ix;
11751   int default_match;
11752   struct symtabs_and_lines sals;
11753   struct symtab_and_line sal;
11754   int i;
11755   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
11756
11757   if (arg)
11758     {
11759       sals = decode_line_with_current_source (arg,
11760                                               (DECODE_LINE_FUNFIRSTLINE
11761                                                | DECODE_LINE_LIST_MODE));
11762       make_cleanup (xfree, sals.sals);
11763       default_match = 0;
11764     }
11765   else
11766     {
11767       sals.sals = (struct symtab_and_line *)
11768         xmalloc (sizeof (struct symtab_and_line));
11769       make_cleanup (xfree, sals.sals);
11770       init_sal (&sal);          /* Initialize to zeroes.  */
11771
11772       /* Set sal's line, symtab, pc, and pspace to the values
11773          corresponding to the last call to print_frame_info.  If the
11774          codepoint is not valid, this will set all the fields to 0.  */
11775       get_last_displayed_sal (&sal);
11776       if (sal.symtab == 0)
11777         error (_("No source file specified."));
11778
11779       sals.sals[0] = sal;
11780       sals.nelts = 1;
11781
11782       default_match = 1;
11783     }
11784
11785   /* We don't call resolve_sal_pc here.  That's not as bad as it
11786      seems, because all existing breakpoints typically have both
11787      file/line and pc set.  So, if clear is given file/line, we can
11788      match this to existing breakpoint without obtaining pc at all.
11789
11790      We only support clearing given the address explicitly 
11791      present in breakpoint table.  Say, we've set breakpoint 
11792      at file:line.  There were several PC values for that file:line,
11793      due to optimization, all in one block.
11794
11795      We've picked one PC value.  If "clear" is issued with another
11796      PC corresponding to the same file:line, the breakpoint won't
11797      be cleared.  We probably can still clear the breakpoint, but 
11798      since the other PC value is never presented to user, user
11799      can only find it by guessing, and it does not seem important
11800      to support that.  */
11801
11802   /* For each line spec given, delete bps which correspond to it.  Do
11803      it in two passes, solely to preserve the current behavior that
11804      from_tty is forced true if we delete more than one
11805      breakpoint.  */
11806
11807   found = NULL;
11808   make_cleanup (VEC_cleanup (breakpoint_p), &found);
11809   for (i = 0; i < sals.nelts; i++)
11810     {
11811       const char *sal_fullname;
11812
11813       /* If exact pc given, clear bpts at that pc.
11814          If line given (pc == 0), clear all bpts on specified line.
11815          If defaulting, clear all bpts on default line
11816          or at default pc.
11817
11818          defaulting    sal.pc != 0    tests to do
11819
11820          0              1             pc
11821          1              1             pc _and_ line
11822          0              0             line
11823          1              0             <can't happen> */
11824
11825       sal = sals.sals[i];
11826       sal_fullname = (sal.symtab == NULL
11827                       ? NULL : symtab_to_fullname (sal.symtab));
11828
11829       /* Find all matching breakpoints and add them to 'found'.  */
11830       ALL_BREAKPOINTS (b)
11831         {
11832           int match = 0;
11833           /* Are we going to delete b?  */
11834           if (b->type != bp_none && !is_watchpoint (b))
11835             {
11836               struct bp_location *loc = b->loc;
11837               for (; loc; loc = loc->next)
11838                 {
11839                   /* If the user specified file:line, don't allow a PC
11840                      match.  This matches historical gdb behavior.  */
11841                   int pc_match = (!sal.explicit_line
11842                                   && sal.pc
11843                                   && (loc->pspace == sal.pspace)
11844                                   && (loc->address == sal.pc)
11845                                   && (!section_is_overlay (loc->section)
11846                                       || loc->section == sal.section));
11847                   int line_match = 0;
11848
11849                   if ((default_match || sal.explicit_line)
11850                       && loc->symtab != NULL
11851                       && sal_fullname != NULL
11852                       && sal.pspace == loc->pspace
11853                       && loc->line_number == sal.line
11854                       && filename_cmp (symtab_to_fullname (loc->symtab),
11855                                        sal_fullname) == 0)
11856                     line_match = 1;
11857
11858                   if (pc_match || line_match)
11859                     {
11860                       match = 1;
11861                       break;
11862                     }
11863                 }
11864             }
11865
11866           if (match)
11867             VEC_safe_push(breakpoint_p, found, b);
11868         }
11869     }
11870
11871   /* Now go thru the 'found' chain and delete them.  */
11872   if (VEC_empty(breakpoint_p, found))
11873     {
11874       if (arg)
11875         error (_("No breakpoint at %s."), arg);
11876       else
11877         error (_("No breakpoint at this line."));
11878     }
11879
11880   /* Remove duplicates from the vec.  */
11881   qsort (VEC_address (breakpoint_p, found),
11882          VEC_length (breakpoint_p, found),
11883          sizeof (breakpoint_p),
11884          compare_breakpoints);
11885   prev = VEC_index (breakpoint_p, found, 0);
11886   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
11887     {
11888       if (b == prev)
11889         {
11890           VEC_ordered_remove (breakpoint_p, found, ix);
11891           --ix;
11892         }
11893     }
11894
11895   if (VEC_length(breakpoint_p, found) > 1)
11896     from_tty = 1;       /* Always report if deleted more than one.  */
11897   if (from_tty)
11898     {
11899       if (VEC_length(breakpoint_p, found) == 1)
11900         printf_unfiltered (_("Deleted breakpoint "));
11901       else
11902         printf_unfiltered (_("Deleted breakpoints "));
11903     }
11904
11905   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
11906     {
11907       if (from_tty)
11908         printf_unfiltered ("%d ", b->number);
11909       delete_breakpoint (b);
11910     }
11911   if (from_tty)
11912     putchar_unfiltered ('\n');
11913
11914   do_cleanups (cleanups);
11915 }
11916 \f
11917 /* Delete breakpoint in BS if they are `delete' breakpoints and
11918    all breakpoints that are marked for deletion, whether hit or not.
11919    This is called after any breakpoint is hit, or after errors.  */
11920
11921 void
11922 breakpoint_auto_delete (bpstat bs)
11923 {
11924   struct breakpoint *b, *b_tmp;
11925
11926   for (; bs; bs = bs->next)
11927     if (bs->breakpoint_at
11928         && bs->breakpoint_at->disposition == disp_del
11929         && bs->stop)
11930       delete_breakpoint (bs->breakpoint_at);
11931
11932   ALL_BREAKPOINTS_SAFE (b, b_tmp)
11933   {
11934     if (b->disposition == disp_del_at_next_stop)
11935       delete_breakpoint (b);
11936   }
11937 }
11938
11939 /* A comparison function for bp_location AP and BP being interfaced to
11940    qsort.  Sort elements primarily by their ADDRESS (no matter what
11941    does breakpoint_address_is_meaningful say for its OWNER),
11942    secondarily by ordering first permanent elements and
11943    terciarily just ensuring the array is sorted stable way despite
11944    qsort being an unstable algorithm.  */
11945
11946 static int
11947 bp_location_compare (const void *ap, const void *bp)
11948 {
11949   struct bp_location *a = *(void **) ap;
11950   struct bp_location *b = *(void **) bp;
11951
11952   if (a->address != b->address)
11953     return (a->address > b->address) - (a->address < b->address);
11954
11955   /* Sort locations at the same address by their pspace number, keeping
11956      locations of the same inferior (in a multi-inferior environment)
11957      grouped.  */
11958
11959   if (a->pspace->num != b->pspace->num)
11960     return ((a->pspace->num > b->pspace->num)
11961             - (a->pspace->num < b->pspace->num));
11962
11963   /* Sort permanent breakpoints first.  */
11964   if (a->permanent != b->permanent)
11965     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
11966
11967   /* Make the internal GDB representation stable across GDB runs
11968      where A and B memory inside GDB can differ.  Breakpoint locations of
11969      the same type at the same address can be sorted in arbitrary order.  */
11970
11971   if (a->owner->number != b->owner->number)
11972     return ((a->owner->number > b->owner->number)
11973             - (a->owner->number < b->owner->number));
11974
11975   return (a > b) - (a < b);
11976 }
11977
11978 /* Set bp_location_placed_address_before_address_max and
11979    bp_location_shadow_len_after_address_max according to the current
11980    content of the bp_location array.  */
11981
11982 static void
11983 bp_location_target_extensions_update (void)
11984 {
11985   struct bp_location *bl, **blp_tmp;
11986
11987   bp_location_placed_address_before_address_max = 0;
11988   bp_location_shadow_len_after_address_max = 0;
11989
11990   ALL_BP_LOCATIONS (bl, blp_tmp)
11991     {
11992       CORE_ADDR start, end, addr;
11993
11994       if (!bp_location_has_shadow (bl))
11995         continue;
11996
11997       start = bl->target_info.placed_address;
11998       end = start + bl->target_info.shadow_len;
11999
12000       gdb_assert (bl->address >= start);
12001       addr = bl->address - start;
12002       if (addr > bp_location_placed_address_before_address_max)
12003         bp_location_placed_address_before_address_max = addr;
12004
12005       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12006
12007       gdb_assert (bl->address < end);
12008       addr = end - bl->address;
12009       if (addr > bp_location_shadow_len_after_address_max)
12010         bp_location_shadow_len_after_address_max = addr;
12011     }
12012 }
12013
12014 /* Download tracepoint locations if they haven't been.  */
12015
12016 static void
12017 download_tracepoint_locations (void)
12018 {
12019   struct breakpoint *b;
12020   struct cleanup *old_chain;
12021
12022   if (!target_can_download_tracepoint ())
12023     return;
12024
12025   old_chain = save_current_space_and_thread ();
12026
12027   ALL_TRACEPOINTS (b)
12028     {
12029       struct bp_location *bl;
12030       struct tracepoint *t;
12031       int bp_location_downloaded = 0;
12032
12033       if ((b->type == bp_fast_tracepoint
12034            ? !may_insert_fast_tracepoints
12035            : !may_insert_tracepoints))
12036         continue;
12037
12038       for (bl = b->loc; bl; bl = bl->next)
12039         {
12040           /* In tracepoint, locations are _never_ duplicated, so
12041              should_be_inserted is equivalent to
12042              unduplicated_should_be_inserted.  */
12043           if (!should_be_inserted (bl) || bl->inserted)
12044             continue;
12045
12046           switch_to_program_space_and_thread (bl->pspace);
12047
12048           target_download_tracepoint (bl);
12049
12050           bl->inserted = 1;
12051           bp_location_downloaded = 1;
12052         }
12053       t = (struct tracepoint *) b;
12054       t->number_on_target = b->number;
12055       if (bp_location_downloaded)
12056         observer_notify_breakpoint_modified (b);
12057     }
12058
12059   do_cleanups (old_chain);
12060 }
12061
12062 /* Swap the insertion/duplication state between two locations.  */
12063
12064 static void
12065 swap_insertion (struct bp_location *left, struct bp_location *right)
12066 {
12067   const int left_inserted = left->inserted;
12068   const int left_duplicate = left->duplicate;
12069   const int left_needs_update = left->needs_update;
12070   const struct bp_target_info left_target_info = left->target_info;
12071
12072   /* Locations of tracepoints can never be duplicated.  */
12073   if (is_tracepoint (left->owner))
12074     gdb_assert (!left->duplicate);
12075   if (is_tracepoint (right->owner))
12076     gdb_assert (!right->duplicate);
12077
12078   left->inserted = right->inserted;
12079   left->duplicate = right->duplicate;
12080   left->needs_update = right->needs_update;
12081   left->target_info = right->target_info;
12082   right->inserted = left_inserted;
12083   right->duplicate = left_duplicate;
12084   right->needs_update = left_needs_update;
12085   right->target_info = left_target_info;
12086 }
12087
12088 /* Force the re-insertion of the locations at ADDRESS.  This is called
12089    once a new/deleted/modified duplicate location is found and we are evaluating
12090    conditions on the target's side.  Such conditions need to be updated on
12091    the target.  */
12092
12093 static void
12094 force_breakpoint_reinsertion (struct bp_location *bl)
12095 {
12096   struct bp_location **locp = NULL, **loc2p;
12097   struct bp_location *loc;
12098   CORE_ADDR address = 0;
12099   int pspace_num;
12100
12101   address = bl->address;
12102   pspace_num = bl->pspace->num;
12103
12104   /* This is only meaningful if the target is
12105      evaluating conditions and if the user has
12106      opted for condition evaluation on the target's
12107      side.  */
12108   if (gdb_evaluates_breakpoint_condition_p ()
12109       || !target_supports_evaluation_of_breakpoint_conditions ())
12110     return;
12111
12112   /* Flag all breakpoint locations with this address and
12113      the same program space as the location
12114      as "its condition has changed".  We need to
12115      update the conditions on the target's side.  */
12116   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12117     {
12118       loc = *loc2p;
12119
12120       if (!is_breakpoint (loc->owner)
12121           || pspace_num != loc->pspace->num)
12122         continue;
12123
12124       /* Flag the location appropriately.  We use a different state to
12125          let everyone know that we already updated the set of locations
12126          with addr bl->address and program space bl->pspace.  This is so
12127          we don't have to keep calling these functions just to mark locations
12128          that have already been marked.  */
12129       loc->condition_changed = condition_updated;
12130
12131       /* Free the agent expression bytecode as well.  We will compute
12132          it later on.  */
12133       if (loc->cond_bytecode)
12134         {
12135           free_agent_expr (loc->cond_bytecode);
12136           loc->cond_bytecode = NULL;
12137         }
12138     }
12139 }
12140 /* Called whether new breakpoints are created, or existing breakpoints
12141    deleted, to update the global location list and recompute which
12142    locations are duplicate of which.
12143
12144    The INSERT_MODE flag determines whether locations may not, may, or
12145    shall be inserted now.  See 'enum ugll_insert_mode' for more
12146    info.  */
12147
12148 static void
12149 update_global_location_list (enum ugll_insert_mode insert_mode)
12150 {
12151   struct breakpoint *b;
12152   struct bp_location **locp, *loc;
12153   struct cleanup *cleanups;
12154   /* Last breakpoint location address that was marked for update.  */
12155   CORE_ADDR last_addr = 0;
12156   /* Last breakpoint location program space that was marked for update.  */
12157   int last_pspace_num = -1;
12158
12159   /* Used in the duplicates detection below.  When iterating over all
12160      bp_locations, points to the first bp_location of a given address.
12161      Breakpoints and watchpoints of different types are never
12162      duplicates of each other.  Keep one pointer for each type of
12163      breakpoint/watchpoint, so we only need to loop over all locations
12164      once.  */
12165   struct bp_location *bp_loc_first;  /* breakpoint */
12166   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12167   struct bp_location *awp_loc_first; /* access watchpoint */
12168   struct bp_location *rwp_loc_first; /* read watchpoint */
12169
12170   /* Saved former bp_location array which we compare against the newly
12171      built bp_location from the current state of ALL_BREAKPOINTS.  */
12172   struct bp_location **old_location, **old_locp;
12173   unsigned old_location_count;
12174
12175   old_location = bp_location;
12176   old_location_count = bp_location_count;
12177   bp_location = NULL;
12178   bp_location_count = 0;
12179   cleanups = make_cleanup (xfree, old_location);
12180
12181   ALL_BREAKPOINTS (b)
12182     for (loc = b->loc; loc; loc = loc->next)
12183       bp_location_count++;
12184
12185   bp_location = xmalloc (sizeof (*bp_location) * bp_location_count);
12186   locp = bp_location;
12187   ALL_BREAKPOINTS (b)
12188     for (loc = b->loc; loc; loc = loc->next)
12189       *locp++ = loc;
12190   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12191          bp_location_compare);
12192
12193   bp_location_target_extensions_update ();
12194
12195   /* Identify bp_location instances that are no longer present in the
12196      new list, and therefore should be freed.  Note that it's not
12197      necessary that those locations should be removed from inferior --
12198      if there's another location at the same address (previously
12199      marked as duplicate), we don't need to remove/insert the
12200      location.
12201      
12202      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12203      and former bp_location array state respectively.  */
12204
12205   locp = bp_location;
12206   for (old_locp = old_location; old_locp < old_location + old_location_count;
12207        old_locp++)
12208     {
12209       struct bp_location *old_loc = *old_locp;
12210       struct bp_location **loc2p;
12211
12212       /* Tells if 'old_loc' is found among the new locations.  If
12213          not, we have to free it.  */
12214       int found_object = 0;
12215       /* Tells if the location should remain inserted in the target.  */
12216       int keep_in_target = 0;
12217       int removed = 0;
12218
12219       /* Skip LOCP entries which will definitely never be needed.
12220          Stop either at or being the one matching OLD_LOC.  */
12221       while (locp < bp_location + bp_location_count
12222              && (*locp)->address < old_loc->address)
12223         locp++;
12224
12225       for (loc2p = locp;
12226            (loc2p < bp_location + bp_location_count
12227             && (*loc2p)->address == old_loc->address);
12228            loc2p++)
12229         {
12230           /* Check if this is a new/duplicated location or a duplicated
12231              location that had its condition modified.  If so, we want to send
12232              its condition to the target if evaluation of conditions is taking
12233              place there.  */
12234           if ((*loc2p)->condition_changed == condition_modified
12235               && (last_addr != old_loc->address
12236                   || last_pspace_num != old_loc->pspace->num))
12237             {
12238               force_breakpoint_reinsertion (*loc2p);
12239               last_pspace_num = old_loc->pspace->num;
12240             }
12241
12242           if (*loc2p == old_loc)
12243             found_object = 1;
12244         }
12245
12246       /* We have already handled this address, update it so that we don't
12247          have to go through updates again.  */
12248       last_addr = old_loc->address;
12249
12250       /* Target-side condition evaluation: Handle deleted locations.  */
12251       if (!found_object)
12252         force_breakpoint_reinsertion (old_loc);
12253
12254       /* If this location is no longer present, and inserted, look if
12255          there's maybe a new location at the same address.  If so,
12256          mark that one inserted, and don't remove this one.  This is
12257          needed so that we don't have a time window where a breakpoint
12258          at certain location is not inserted.  */
12259
12260       if (old_loc->inserted)
12261         {
12262           /* If the location is inserted now, we might have to remove
12263              it.  */
12264
12265           if (found_object && should_be_inserted (old_loc))
12266             {
12267               /* The location is still present in the location list,
12268                  and still should be inserted.  Don't do anything.  */
12269               keep_in_target = 1;
12270             }
12271           else
12272             {
12273               /* This location still exists, but it won't be kept in the
12274                  target since it may have been disabled.  We proceed to
12275                  remove its target-side condition.  */
12276
12277               /* The location is either no longer present, or got
12278                  disabled.  See if there's another location at the
12279                  same address, in which case we don't need to remove
12280                  this one from the target.  */
12281
12282               /* OLD_LOC comes from existing struct breakpoint.  */
12283               if (breakpoint_address_is_meaningful (old_loc->owner))
12284                 {
12285                   for (loc2p = locp;
12286                        (loc2p < bp_location + bp_location_count
12287                         && (*loc2p)->address == old_loc->address);
12288                        loc2p++)
12289                     {
12290                       struct bp_location *loc2 = *loc2p;
12291
12292                       if (breakpoint_locations_match (loc2, old_loc))
12293                         {
12294                           /* Read watchpoint locations are switched to
12295                              access watchpoints, if the former are not
12296                              supported, but the latter are.  */
12297                           if (is_hardware_watchpoint (old_loc->owner))
12298                             {
12299                               gdb_assert (is_hardware_watchpoint (loc2->owner));
12300                               loc2->watchpoint_type = old_loc->watchpoint_type;
12301                             }
12302
12303                           /* loc2 is a duplicated location. We need to check
12304                              if it should be inserted in case it will be
12305                              unduplicated.  */
12306                           if (loc2 != old_loc
12307                               && unduplicated_should_be_inserted (loc2))
12308                             {
12309                               swap_insertion (old_loc, loc2);
12310                               keep_in_target = 1;
12311                               break;
12312                             }
12313                         }
12314                     }
12315                 }
12316             }
12317
12318           if (!keep_in_target)
12319             {
12320               if (remove_breakpoint (old_loc, mark_uninserted))
12321                 {
12322                   /* This is just about all we can do.  We could keep
12323                      this location on the global list, and try to
12324                      remove it next time, but there's no particular
12325                      reason why we will succeed next time.
12326                      
12327                      Note that at this point, old_loc->owner is still
12328                      valid, as delete_breakpoint frees the breakpoint
12329                      only after calling us.  */
12330                   printf_filtered (_("warning: Error removing "
12331                                      "breakpoint %d\n"), 
12332                                    old_loc->owner->number);
12333                 }
12334               removed = 1;
12335             }
12336         }
12337
12338       if (!found_object)
12339         {
12340           if (removed && non_stop
12341               && need_moribund_for_location_type (old_loc))
12342             {
12343               /* This location was removed from the target.  In
12344                  non-stop mode, a race condition is possible where
12345                  we've removed a breakpoint, but stop events for that
12346                  breakpoint are already queued and will arrive later.
12347                  We apply an heuristic to be able to distinguish such
12348                  SIGTRAPs from other random SIGTRAPs: we keep this
12349                  breakpoint location for a bit, and will retire it
12350                  after we see some number of events.  The theory here
12351                  is that reporting of events should, "on the average",
12352                  be fair, so after a while we'll see events from all
12353                  threads that have anything of interest, and no longer
12354                  need to keep this breakpoint location around.  We
12355                  don't hold locations forever so to reduce chances of
12356                  mistaking a non-breakpoint SIGTRAP for a breakpoint
12357                  SIGTRAP.
12358
12359                  The heuristic failing can be disastrous on
12360                  decr_pc_after_break targets.
12361
12362                  On decr_pc_after_break targets, like e.g., x86-linux,
12363                  if we fail to recognize a late breakpoint SIGTRAP,
12364                  because events_till_retirement has reached 0 too
12365                  soon, we'll fail to do the PC adjustment, and report
12366                  a random SIGTRAP to the user.  When the user resumes
12367                  the inferior, it will most likely immediately crash
12368                  with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12369                  corrupted, because of being resumed e.g., in the
12370                  middle of a multi-byte instruction, or skipped a
12371                  one-byte instruction.  This was actually seen happen
12372                  on native x86-linux, and should be less rare on
12373                  targets that do not support new thread events, like
12374                  remote, due to the heuristic depending on
12375                  thread_count.
12376
12377                  Mistaking a random SIGTRAP for a breakpoint trap
12378                  causes similar symptoms (PC adjustment applied when
12379                  it shouldn't), but then again, playing with SIGTRAPs
12380                  behind the debugger's back is asking for trouble.
12381
12382                  Since hardware watchpoint traps are always
12383                  distinguishable from other traps, so we don't need to
12384                  apply keep hardware watchpoint moribund locations
12385                  around.  We simply always ignore hardware watchpoint
12386                  traps we can no longer explain.  */
12387
12388               old_loc->events_till_retirement = 3 * (thread_count () + 1);
12389               old_loc->owner = NULL;
12390
12391               VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12392             }
12393           else
12394             {
12395               old_loc->owner = NULL;
12396               decref_bp_location (&old_loc);
12397             }
12398         }
12399     }
12400
12401   /* Rescan breakpoints at the same address and section, marking the
12402      first one as "first" and any others as "duplicates".  This is so
12403      that the bpt instruction is only inserted once.  If we have a
12404      permanent breakpoint at the same place as BPT, make that one the
12405      official one, and the rest as duplicates.  Permanent breakpoints
12406      are sorted first for the same address.
12407
12408      Do the same for hardware watchpoints, but also considering the
12409      watchpoint's type (regular/access/read) and length.  */
12410
12411   bp_loc_first = NULL;
12412   wp_loc_first = NULL;
12413   awp_loc_first = NULL;
12414   rwp_loc_first = NULL;
12415   ALL_BP_LOCATIONS (loc, locp)
12416     {
12417       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12418          non-NULL.  */
12419       struct bp_location **loc_first_p;
12420       b = loc->owner;
12421
12422       if (!unduplicated_should_be_inserted (loc)
12423           || !breakpoint_address_is_meaningful (b)
12424           /* Don't detect duplicate for tracepoint locations because they are
12425            never duplicated.  See the comments in field `duplicate' of
12426            `struct bp_location'.  */
12427           || is_tracepoint (b))
12428         {
12429           /* Clear the condition modification flag.  */
12430           loc->condition_changed = condition_unchanged;
12431           continue;
12432         }
12433
12434       /* Permanent breakpoint should always be inserted.  */
12435       if (loc->permanent && ! loc->inserted)
12436         internal_error (__FILE__, __LINE__,
12437                         _("allegedly permanent breakpoint is not "
12438                         "actually inserted"));
12439
12440       if (b->type == bp_hardware_watchpoint)
12441         loc_first_p = &wp_loc_first;
12442       else if (b->type == bp_read_watchpoint)
12443         loc_first_p = &rwp_loc_first;
12444       else if (b->type == bp_access_watchpoint)
12445         loc_first_p = &awp_loc_first;
12446       else
12447         loc_first_p = &bp_loc_first;
12448
12449       if (*loc_first_p == NULL
12450           || (overlay_debugging && loc->section != (*loc_first_p)->section)
12451           || !breakpoint_locations_match (loc, *loc_first_p))
12452         {
12453           *loc_first_p = loc;
12454           loc->duplicate = 0;
12455
12456           if (is_breakpoint (loc->owner) && loc->condition_changed)
12457             {
12458               loc->needs_update = 1;
12459               /* Clear the condition modification flag.  */
12460               loc->condition_changed = condition_unchanged;
12461             }
12462           continue;
12463         }
12464
12465
12466       /* This and the above ensure the invariant that the first location
12467          is not duplicated, and is the inserted one.
12468          All following are marked as duplicated, and are not inserted.  */
12469       if (loc->inserted)
12470         swap_insertion (loc, *loc_first_p);
12471       loc->duplicate = 1;
12472
12473       /* Clear the condition modification flag.  */
12474       loc->condition_changed = condition_unchanged;
12475
12476       if (loc->inserted && !loc->permanent
12477           && (*loc_first_p)->permanent)
12478         internal_error (__FILE__, __LINE__,
12479                         _("another breakpoint was inserted on top of "
12480                         "a permanent breakpoint"));
12481     }
12482
12483   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12484     {
12485       if (insert_mode != UGLL_DONT_INSERT)
12486         insert_breakpoint_locations ();
12487       else
12488         {
12489           /* Even though the caller told us to not insert new
12490              locations, we may still need to update conditions on the
12491              target's side of breakpoints that were already inserted
12492              if the target is evaluating breakpoint conditions.  We
12493              only update conditions for locations that are marked
12494              "needs_update".  */
12495           update_inserted_breakpoint_locations ();
12496         }
12497     }
12498
12499   if (insert_mode != UGLL_DONT_INSERT)
12500     download_tracepoint_locations ();
12501
12502   do_cleanups (cleanups);
12503 }
12504
12505 void
12506 breakpoint_retire_moribund (void)
12507 {
12508   struct bp_location *loc;
12509   int ix;
12510
12511   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12512     if (--(loc->events_till_retirement) == 0)
12513       {
12514         decref_bp_location (&loc);
12515         VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12516         --ix;
12517       }
12518 }
12519
12520 static void
12521 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12522 {
12523
12524   TRY
12525     {
12526       update_global_location_list (insert_mode);
12527     }
12528   CATCH (e, RETURN_MASK_ERROR)
12529     {
12530     }
12531   END_CATCH
12532 }
12533
12534 /* Clear BKP from a BPS.  */
12535
12536 static void
12537 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12538 {
12539   bpstat bs;
12540
12541   for (bs = bps; bs; bs = bs->next)
12542     if (bs->breakpoint_at == bpt)
12543       {
12544         bs->breakpoint_at = NULL;
12545         bs->old_val = NULL;
12546         /* bs->commands will be freed later.  */
12547       }
12548 }
12549
12550 /* Callback for iterate_over_threads.  */
12551 static int
12552 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12553 {
12554   struct breakpoint *bpt = data;
12555
12556   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12557   return 0;
12558 }
12559
12560 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12561    callbacks.  */
12562
12563 static void
12564 say_where (struct breakpoint *b)
12565 {
12566   struct value_print_options opts;
12567
12568   get_user_print_options (&opts);
12569
12570   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12571      single string.  */
12572   if (b->loc == NULL)
12573     {
12574       printf_filtered (_(" (%s) pending."), b->addr_string);
12575     }
12576   else
12577     {
12578       if (opts.addressprint || b->loc->symtab == NULL)
12579         {
12580           printf_filtered (" at ");
12581           fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12582                           gdb_stdout);
12583         }
12584       if (b->loc->symtab != NULL)
12585         {
12586           /* If there is a single location, we can print the location
12587              more nicely.  */
12588           if (b->loc->next == NULL)
12589             printf_filtered (": file %s, line %d.",
12590                              symtab_to_filename_for_display (b->loc->symtab),
12591                              b->loc->line_number);
12592           else
12593             /* This is not ideal, but each location may have a
12594                different file name, and this at least reflects the
12595                real situation somewhat.  */
12596             printf_filtered (": %s.", b->addr_string);
12597         }
12598
12599       if (b->loc->next)
12600         {
12601           struct bp_location *loc = b->loc;
12602           int n = 0;
12603           for (; loc; loc = loc->next)
12604             ++n;
12605           printf_filtered (" (%d locations)", n);
12606         }
12607     }
12608 }
12609
12610 /* Default bp_location_ops methods.  */
12611
12612 static void
12613 bp_location_dtor (struct bp_location *self)
12614 {
12615   xfree (self->cond);
12616   if (self->cond_bytecode)
12617     free_agent_expr (self->cond_bytecode);
12618   xfree (self->function_name);
12619
12620   VEC_free (agent_expr_p, self->target_info.conditions);
12621   VEC_free (agent_expr_p, self->target_info.tcommands);
12622 }
12623
12624 static const struct bp_location_ops bp_location_ops =
12625 {
12626   bp_location_dtor
12627 };
12628
12629 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12630    inherit from.  */
12631
12632 static void
12633 base_breakpoint_dtor (struct breakpoint *self)
12634 {
12635   decref_counted_command_line (&self->commands);
12636   xfree (self->cond_string);
12637   xfree (self->extra_string);
12638   xfree (self->addr_string);
12639   xfree (self->filter);
12640   xfree (self->addr_string_range_end);
12641 }
12642
12643 static struct bp_location *
12644 base_breakpoint_allocate_location (struct breakpoint *self)
12645 {
12646   struct bp_location *loc;
12647
12648   loc = XNEW (struct bp_location);
12649   init_bp_location (loc, &bp_location_ops, self);
12650   return loc;
12651 }
12652
12653 static void
12654 base_breakpoint_re_set (struct breakpoint *b)
12655 {
12656   /* Nothing to re-set. */
12657 }
12658
12659 #define internal_error_pure_virtual_called() \
12660   gdb_assert_not_reached ("pure virtual function called")
12661
12662 static int
12663 base_breakpoint_insert_location (struct bp_location *bl)
12664 {
12665   internal_error_pure_virtual_called ();
12666 }
12667
12668 static int
12669 base_breakpoint_remove_location (struct bp_location *bl)
12670 {
12671   internal_error_pure_virtual_called ();
12672 }
12673
12674 static int
12675 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12676                                 struct address_space *aspace,
12677                                 CORE_ADDR bp_addr,
12678                                 const struct target_waitstatus *ws)
12679 {
12680   internal_error_pure_virtual_called ();
12681 }
12682
12683 static void
12684 base_breakpoint_check_status (bpstat bs)
12685 {
12686   /* Always stop.   */
12687 }
12688
12689 /* A "works_in_software_mode" breakpoint_ops method that just internal
12690    errors.  */
12691
12692 static int
12693 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12694 {
12695   internal_error_pure_virtual_called ();
12696 }
12697
12698 /* A "resources_needed" breakpoint_ops method that just internal
12699    errors.  */
12700
12701 static int
12702 base_breakpoint_resources_needed (const struct bp_location *bl)
12703 {
12704   internal_error_pure_virtual_called ();
12705 }
12706
12707 static enum print_stop_action
12708 base_breakpoint_print_it (bpstat bs)
12709 {
12710   internal_error_pure_virtual_called ();
12711 }
12712
12713 static void
12714 base_breakpoint_print_one_detail (const struct breakpoint *self,
12715                                   struct ui_out *uiout)
12716 {
12717   /* nothing */
12718 }
12719
12720 static void
12721 base_breakpoint_print_mention (struct breakpoint *b)
12722 {
12723   internal_error_pure_virtual_called ();
12724 }
12725
12726 static void
12727 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
12728 {
12729   internal_error_pure_virtual_called ();
12730 }
12731
12732 static void
12733 base_breakpoint_create_sals_from_address (char **arg,
12734                                           struct linespec_result *canonical,
12735                                           enum bptype type_wanted,
12736                                           char *addr_start,
12737                                           char **copy_arg)
12738 {
12739   internal_error_pure_virtual_called ();
12740 }
12741
12742 static void
12743 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
12744                                         struct linespec_result *c,
12745                                         char *cond_string,
12746                                         char *extra_string,
12747                                         enum bptype type_wanted,
12748                                         enum bpdisp disposition,
12749                                         int thread,
12750                                         int task, int ignore_count,
12751                                         const struct breakpoint_ops *o,
12752                                         int from_tty, int enabled,
12753                                         int internal, unsigned flags)
12754 {
12755   internal_error_pure_virtual_called ();
12756 }
12757
12758 static void
12759 base_breakpoint_decode_linespec (struct breakpoint *b, char **s,
12760                                  struct symtabs_and_lines *sals)
12761 {
12762   internal_error_pure_virtual_called ();
12763 }
12764
12765 /* The default 'explains_signal' method.  */
12766
12767 static int
12768 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
12769 {
12770   return 1;
12771 }
12772
12773 /* The default "after_condition_true" method.  */
12774
12775 static void
12776 base_breakpoint_after_condition_true (struct bpstats *bs)
12777 {
12778   /* Nothing to do.   */
12779 }
12780
12781 struct breakpoint_ops base_breakpoint_ops =
12782 {
12783   base_breakpoint_dtor,
12784   base_breakpoint_allocate_location,
12785   base_breakpoint_re_set,
12786   base_breakpoint_insert_location,
12787   base_breakpoint_remove_location,
12788   base_breakpoint_breakpoint_hit,
12789   base_breakpoint_check_status,
12790   base_breakpoint_resources_needed,
12791   base_breakpoint_works_in_software_mode,
12792   base_breakpoint_print_it,
12793   NULL,
12794   base_breakpoint_print_one_detail,
12795   base_breakpoint_print_mention,
12796   base_breakpoint_print_recreate,
12797   base_breakpoint_create_sals_from_address,
12798   base_breakpoint_create_breakpoints_sal,
12799   base_breakpoint_decode_linespec,
12800   base_breakpoint_explains_signal,
12801   base_breakpoint_after_condition_true,
12802 };
12803
12804 /* Default breakpoint_ops methods.  */
12805
12806 static void
12807 bkpt_re_set (struct breakpoint *b)
12808 {
12809   /* FIXME: is this still reachable?  */
12810   if (b->addr_string == NULL)
12811     {
12812       /* Anything without a string can't be re-set.  */
12813       delete_breakpoint (b);
12814       return;
12815     }
12816
12817   breakpoint_re_set_default (b);
12818 }
12819
12820 static int
12821 bkpt_insert_location (struct bp_location *bl)
12822 {
12823   if (bl->loc_type == bp_loc_hardware_breakpoint)
12824     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
12825   else
12826     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
12827 }
12828
12829 static int
12830 bkpt_remove_location (struct bp_location *bl)
12831 {
12832   if (bl->loc_type == bp_loc_hardware_breakpoint)
12833     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
12834   else
12835     return target_remove_breakpoint (bl->gdbarch, &bl->target_info);
12836 }
12837
12838 static int
12839 bkpt_breakpoint_hit (const struct bp_location *bl,
12840                      struct address_space *aspace, CORE_ADDR bp_addr,
12841                      const struct target_waitstatus *ws)
12842 {
12843   if (ws->kind != TARGET_WAITKIND_STOPPED
12844       || ws->value.sig != GDB_SIGNAL_TRAP)
12845     return 0;
12846
12847   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
12848                                  aspace, bp_addr))
12849     return 0;
12850
12851   if (overlay_debugging         /* unmapped overlay section */
12852       && section_is_overlay (bl->section)
12853       && !section_is_mapped (bl->section))
12854     return 0;
12855
12856   return 1;
12857 }
12858
12859 static int
12860 dprintf_breakpoint_hit (const struct bp_location *bl,
12861                         struct address_space *aspace, CORE_ADDR bp_addr,
12862                         const struct target_waitstatus *ws)
12863 {
12864   if (dprintf_style == dprintf_style_agent
12865       && target_can_run_breakpoint_commands ())
12866     {
12867       /* An agent-style dprintf never causes a stop.  If we see a trap
12868          for this address it must be for a breakpoint that happens to
12869          be set at the same address.  */
12870       return 0;
12871     }
12872
12873   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
12874 }
12875
12876 static int
12877 bkpt_resources_needed (const struct bp_location *bl)
12878 {
12879   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
12880
12881   return 1;
12882 }
12883
12884 static enum print_stop_action
12885 bkpt_print_it (bpstat bs)
12886 {
12887   struct breakpoint *b;
12888   const struct bp_location *bl;
12889   int bp_temp;
12890   struct ui_out *uiout = current_uiout;
12891
12892   gdb_assert (bs->bp_location_at != NULL);
12893
12894   bl = bs->bp_location_at;
12895   b = bs->breakpoint_at;
12896
12897   bp_temp = b->disposition == disp_del;
12898   if (bl->address != bl->requested_address)
12899     breakpoint_adjustment_warning (bl->requested_address,
12900                                    bl->address,
12901                                    b->number, 1);
12902   annotate_breakpoint (b->number);
12903   if (bp_temp)
12904     ui_out_text (uiout, "\nTemporary breakpoint ");
12905   else
12906     ui_out_text (uiout, "\nBreakpoint ");
12907   if (ui_out_is_mi_like_p (uiout))
12908     {
12909       ui_out_field_string (uiout, "reason",
12910                            async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
12911       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
12912     }
12913   ui_out_field_int (uiout, "bkptno", b->number);
12914   ui_out_text (uiout, ", ");
12915
12916   return PRINT_SRC_AND_LOC;
12917 }
12918
12919 static void
12920 bkpt_print_mention (struct breakpoint *b)
12921 {
12922   if (ui_out_is_mi_like_p (current_uiout))
12923     return;
12924
12925   switch (b->type)
12926     {
12927     case bp_breakpoint:
12928     case bp_gnu_ifunc_resolver:
12929       if (b->disposition == disp_del)
12930         printf_filtered (_("Temporary breakpoint"));
12931       else
12932         printf_filtered (_("Breakpoint"));
12933       printf_filtered (_(" %d"), b->number);
12934       if (b->type == bp_gnu_ifunc_resolver)
12935         printf_filtered (_(" at gnu-indirect-function resolver"));
12936       break;
12937     case bp_hardware_breakpoint:
12938       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
12939       break;
12940     case bp_dprintf:
12941       printf_filtered (_("Dprintf %d"), b->number);
12942       break;
12943     }
12944
12945   say_where (b);
12946 }
12947
12948 static void
12949 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
12950 {
12951   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
12952     fprintf_unfiltered (fp, "tbreak");
12953   else if (tp->type == bp_breakpoint)
12954     fprintf_unfiltered (fp, "break");
12955   else if (tp->type == bp_hardware_breakpoint
12956            && tp->disposition == disp_del)
12957     fprintf_unfiltered (fp, "thbreak");
12958   else if (tp->type == bp_hardware_breakpoint)
12959     fprintf_unfiltered (fp, "hbreak");
12960   else
12961     internal_error (__FILE__, __LINE__,
12962                     _("unhandled breakpoint type %d"), (int) tp->type);
12963
12964   fprintf_unfiltered (fp, " %s", tp->addr_string);
12965   print_recreate_thread (tp, fp);
12966 }
12967
12968 static void
12969 bkpt_create_sals_from_address (char **arg,
12970                                struct linespec_result *canonical,
12971                                enum bptype type_wanted,
12972                                char *addr_start, char **copy_arg)
12973 {
12974   create_sals_from_address_default (arg, canonical, type_wanted,
12975                                     addr_start, copy_arg);
12976 }
12977
12978 static void
12979 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
12980                              struct linespec_result *canonical,
12981                              char *cond_string,
12982                              char *extra_string,
12983                              enum bptype type_wanted,
12984                              enum bpdisp disposition,
12985                              int thread,
12986                              int task, int ignore_count,
12987                              const struct breakpoint_ops *ops,
12988                              int from_tty, int enabled,
12989                              int internal, unsigned flags)
12990 {
12991   create_breakpoints_sal_default (gdbarch, canonical,
12992                                   cond_string, extra_string,
12993                                   type_wanted,
12994                                   disposition, thread, task,
12995                                   ignore_count, ops, from_tty,
12996                                   enabled, internal, flags);
12997 }
12998
12999 static void
13000 bkpt_decode_linespec (struct breakpoint *b, char **s,
13001                       struct symtabs_and_lines *sals)
13002 {
13003   decode_linespec_default (b, s, sals);
13004 }
13005
13006 /* Virtual table for internal breakpoints.  */
13007
13008 static void
13009 internal_bkpt_re_set (struct breakpoint *b)
13010 {
13011   switch (b->type)
13012     {
13013       /* Delete overlay event and longjmp master breakpoints; they
13014          will be reset later by breakpoint_re_set.  */
13015     case bp_overlay_event:
13016     case bp_longjmp_master:
13017     case bp_std_terminate_master:
13018     case bp_exception_master:
13019       delete_breakpoint (b);
13020       break;
13021
13022       /* This breakpoint is special, it's set up when the inferior
13023          starts and we really don't want to touch it.  */
13024     case bp_shlib_event:
13025
13026       /* Like bp_shlib_event, this breakpoint type is special.  Once
13027          it is set up, we do not want to touch it.  */
13028     case bp_thread_event:
13029       break;
13030     }
13031 }
13032
13033 static void
13034 internal_bkpt_check_status (bpstat bs)
13035 {
13036   if (bs->breakpoint_at->type == bp_shlib_event)
13037     {
13038       /* If requested, stop when the dynamic linker notifies GDB of
13039          events.  This allows the user to get control and place
13040          breakpoints in initializer routines for dynamically loaded
13041          objects (among other things).  */
13042       bs->stop = stop_on_solib_events;
13043       bs->print = stop_on_solib_events;
13044     }
13045   else
13046     bs->stop = 0;
13047 }
13048
13049 static enum print_stop_action
13050 internal_bkpt_print_it (bpstat bs)
13051 {
13052   struct breakpoint *b;
13053
13054   b = bs->breakpoint_at;
13055
13056   switch (b->type)
13057     {
13058     case bp_shlib_event:
13059       /* Did we stop because the user set the stop_on_solib_events
13060          variable?  (If so, we report this as a generic, "Stopped due
13061          to shlib event" message.) */
13062       print_solib_event (0);
13063       break;
13064
13065     case bp_thread_event:
13066       /* Not sure how we will get here.
13067          GDB should not stop for these breakpoints.  */
13068       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13069       break;
13070
13071     case bp_overlay_event:
13072       /* By analogy with the thread event, GDB should not stop for these.  */
13073       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13074       break;
13075
13076     case bp_longjmp_master:
13077       /* These should never be enabled.  */
13078       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13079       break;
13080
13081     case bp_std_terminate_master:
13082       /* These should never be enabled.  */
13083       printf_filtered (_("std::terminate Master Breakpoint: "
13084                          "gdb should not stop!\n"));
13085       break;
13086
13087     case bp_exception_master:
13088       /* These should never be enabled.  */
13089       printf_filtered (_("Exception Master Breakpoint: "
13090                          "gdb should not stop!\n"));
13091       break;
13092     }
13093
13094   return PRINT_NOTHING;
13095 }
13096
13097 static void
13098 internal_bkpt_print_mention (struct breakpoint *b)
13099 {
13100   /* Nothing to mention.  These breakpoints are internal.  */
13101 }
13102
13103 /* Virtual table for momentary breakpoints  */
13104
13105 static void
13106 momentary_bkpt_re_set (struct breakpoint *b)
13107 {
13108   /* Keep temporary breakpoints, which can be encountered when we step
13109      over a dlopen call and solib_add is resetting the breakpoints.
13110      Otherwise these should have been blown away via the cleanup chain
13111      or by breakpoint_init_inferior when we rerun the executable.  */
13112 }
13113
13114 static void
13115 momentary_bkpt_check_status (bpstat bs)
13116 {
13117   /* Nothing.  The point of these breakpoints is causing a stop.  */
13118 }
13119
13120 static enum print_stop_action
13121 momentary_bkpt_print_it (bpstat bs)
13122 {
13123   struct ui_out *uiout = current_uiout;
13124
13125   if (ui_out_is_mi_like_p (uiout))
13126     {
13127       struct breakpoint *b = bs->breakpoint_at;
13128
13129       switch (b->type)
13130         {
13131         case bp_finish:
13132           ui_out_field_string
13133             (uiout, "reason",
13134              async_reason_lookup (EXEC_ASYNC_FUNCTION_FINISHED));
13135           break;
13136
13137         case bp_until:
13138           ui_out_field_string
13139             (uiout, "reason",
13140              async_reason_lookup (EXEC_ASYNC_LOCATION_REACHED));
13141           break;
13142         }
13143     }
13144
13145   return PRINT_UNKNOWN;
13146 }
13147
13148 static void
13149 momentary_bkpt_print_mention (struct breakpoint *b)
13150 {
13151   /* Nothing to mention.  These breakpoints are internal.  */
13152 }
13153
13154 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13155
13156    It gets cleared already on the removal of the first one of such placed
13157    breakpoints.  This is OK as they get all removed altogether.  */
13158
13159 static void
13160 longjmp_bkpt_dtor (struct breakpoint *self)
13161 {
13162   struct thread_info *tp = find_thread_id (self->thread);
13163
13164   if (tp)
13165     tp->initiating_frame = null_frame_id;
13166
13167   momentary_breakpoint_ops.dtor (self);
13168 }
13169
13170 /* Specific methods for probe breakpoints.  */
13171
13172 static int
13173 bkpt_probe_insert_location (struct bp_location *bl)
13174 {
13175   int v = bkpt_insert_location (bl);
13176
13177   if (v == 0)
13178     {
13179       /* The insertion was successful, now let's set the probe's semaphore
13180          if needed.  */
13181       if (bl->probe.probe->pops->set_semaphore != NULL)
13182         bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13183                                               bl->probe.objfile,
13184                                               bl->gdbarch);
13185     }
13186
13187   return v;
13188 }
13189
13190 static int
13191 bkpt_probe_remove_location (struct bp_location *bl)
13192 {
13193   /* Let's clear the semaphore before removing the location.  */
13194   if (bl->probe.probe->pops->clear_semaphore != NULL)
13195     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13196                                             bl->probe.objfile,
13197                                             bl->gdbarch);
13198
13199   return bkpt_remove_location (bl);
13200 }
13201
13202 static void
13203 bkpt_probe_create_sals_from_address (char **arg,
13204                                      struct linespec_result *canonical,
13205                                      enum bptype type_wanted,
13206                                      char *addr_start, char **copy_arg)
13207 {
13208   struct linespec_sals lsal;
13209
13210   lsal.sals = parse_probes (arg, canonical);
13211
13212   *copy_arg = xstrdup (canonical->addr_string);
13213   lsal.canonical = xstrdup (*copy_arg);
13214
13215   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13216 }
13217
13218 static void
13219 bkpt_probe_decode_linespec (struct breakpoint *b, char **s,
13220                             struct symtabs_and_lines *sals)
13221 {
13222   *sals = parse_probes (s, NULL);
13223   if (!sals->sals)
13224     error (_("probe not found"));
13225 }
13226
13227 /* The breakpoint_ops structure to be used in tracepoints.  */
13228
13229 static void
13230 tracepoint_re_set (struct breakpoint *b)
13231 {
13232   breakpoint_re_set_default (b);
13233 }
13234
13235 static int
13236 tracepoint_breakpoint_hit (const struct bp_location *bl,
13237                            struct address_space *aspace, CORE_ADDR bp_addr,
13238                            const struct target_waitstatus *ws)
13239 {
13240   /* By definition, the inferior does not report stops at
13241      tracepoints.  */
13242   return 0;
13243 }
13244
13245 static void
13246 tracepoint_print_one_detail (const struct breakpoint *self,
13247                              struct ui_out *uiout)
13248 {
13249   struct tracepoint *tp = (struct tracepoint *) self;
13250   if (tp->static_trace_marker_id)
13251     {
13252       gdb_assert (self->type == bp_static_tracepoint);
13253
13254       ui_out_text (uiout, "\tmarker id is ");
13255       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13256                            tp->static_trace_marker_id);
13257       ui_out_text (uiout, "\n");
13258     }
13259 }
13260
13261 static void
13262 tracepoint_print_mention (struct breakpoint *b)
13263 {
13264   if (ui_out_is_mi_like_p (current_uiout))
13265     return;
13266
13267   switch (b->type)
13268     {
13269     case bp_tracepoint:
13270       printf_filtered (_("Tracepoint"));
13271       printf_filtered (_(" %d"), b->number);
13272       break;
13273     case bp_fast_tracepoint:
13274       printf_filtered (_("Fast tracepoint"));
13275       printf_filtered (_(" %d"), b->number);
13276       break;
13277     case bp_static_tracepoint:
13278       printf_filtered (_("Static tracepoint"));
13279       printf_filtered (_(" %d"), b->number);
13280       break;
13281     default:
13282       internal_error (__FILE__, __LINE__,
13283                       _("unhandled tracepoint type %d"), (int) b->type);
13284     }
13285
13286   say_where (b);
13287 }
13288
13289 static void
13290 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13291 {
13292   struct tracepoint *tp = (struct tracepoint *) self;
13293
13294   if (self->type == bp_fast_tracepoint)
13295     fprintf_unfiltered (fp, "ftrace");
13296   if (self->type == bp_static_tracepoint)
13297     fprintf_unfiltered (fp, "strace");
13298   else if (self->type == bp_tracepoint)
13299     fprintf_unfiltered (fp, "trace");
13300   else
13301     internal_error (__FILE__, __LINE__,
13302                     _("unhandled tracepoint type %d"), (int) self->type);
13303
13304   fprintf_unfiltered (fp, " %s", self->addr_string);
13305   print_recreate_thread (self, fp);
13306
13307   if (tp->pass_count)
13308     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13309 }
13310
13311 static void
13312 tracepoint_create_sals_from_address (char **arg,
13313                                      struct linespec_result *canonical,
13314                                      enum bptype type_wanted,
13315                                      char *addr_start, char **copy_arg)
13316 {
13317   create_sals_from_address_default (arg, canonical, type_wanted,
13318                                     addr_start, copy_arg);
13319 }
13320
13321 static void
13322 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13323                                    struct linespec_result *canonical,
13324                                    char *cond_string,
13325                                    char *extra_string,
13326                                    enum bptype type_wanted,
13327                                    enum bpdisp disposition,
13328                                    int thread,
13329                                    int task, int ignore_count,
13330                                    const struct breakpoint_ops *ops,
13331                                    int from_tty, int enabled,
13332                                    int internal, unsigned flags)
13333 {
13334   create_breakpoints_sal_default (gdbarch, canonical,
13335                                   cond_string, extra_string,
13336                                   type_wanted,
13337                                   disposition, thread, task,
13338                                   ignore_count, ops, from_tty,
13339                                   enabled, internal, flags);
13340 }
13341
13342 static void
13343 tracepoint_decode_linespec (struct breakpoint *b, char **s,
13344                             struct symtabs_and_lines *sals)
13345 {
13346   decode_linespec_default (b, s, sals);
13347 }
13348
13349 struct breakpoint_ops tracepoint_breakpoint_ops;
13350
13351 /* The breakpoint_ops structure to be use on tracepoints placed in a
13352    static probe.  */
13353
13354 static void
13355 tracepoint_probe_create_sals_from_address (char **arg,
13356                                            struct linespec_result *canonical,
13357                                            enum bptype type_wanted,
13358                                            char *addr_start, char **copy_arg)
13359 {
13360   /* We use the same method for breakpoint on probes.  */
13361   bkpt_probe_create_sals_from_address (arg, canonical, type_wanted,
13362                                        addr_start, copy_arg);
13363 }
13364
13365 static void
13366 tracepoint_probe_decode_linespec (struct breakpoint *b, char **s,
13367                                   struct symtabs_and_lines *sals)
13368 {
13369   /* We use the same method for breakpoint on probes.  */
13370   bkpt_probe_decode_linespec (b, s, sals);
13371 }
13372
13373 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13374
13375 /* Dprintf breakpoint_ops methods.  */
13376
13377 static void
13378 dprintf_re_set (struct breakpoint *b)
13379 {
13380   breakpoint_re_set_default (b);
13381
13382   /* This breakpoint could have been pending, and be resolved now, and
13383      if so, we should now have the extra string.  If we don't, the
13384      dprintf was malformed when created, but we couldn't tell because
13385      we can't extract the extra string until the location is
13386      resolved.  */
13387   if (b->loc != NULL && b->extra_string == NULL)
13388     error (_("Format string required"));
13389
13390   /* 1 - connect to target 1, that can run breakpoint commands.
13391      2 - create a dprintf, which resolves fine.
13392      3 - disconnect from target 1
13393      4 - connect to target 2, that can NOT run breakpoint commands.
13394
13395      After steps #3/#4, you'll want the dprintf command list to
13396      be updated, because target 1 and 2 may well return different
13397      answers for target_can_run_breakpoint_commands().
13398      Given absence of finer grained resetting, we get to do
13399      it all the time.  */
13400   if (b->extra_string != NULL)
13401     update_dprintf_command_list (b);
13402 }
13403
13404 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13405
13406 static void
13407 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13408 {
13409   fprintf_unfiltered (fp, "dprintf %s%s", tp->addr_string,
13410                       tp->extra_string);
13411   print_recreate_thread (tp, fp);
13412 }
13413
13414 /* Implement the "after_condition_true" breakpoint_ops method for
13415    dprintf.
13416
13417    dprintf's are implemented with regular commands in their command
13418    list, but we run the commands here instead of before presenting the
13419    stop to the user, as dprintf's don't actually cause a stop.  This
13420    also makes it so that the commands of multiple dprintfs at the same
13421    address are all handled.  */
13422
13423 static void
13424 dprintf_after_condition_true (struct bpstats *bs)
13425 {
13426   struct cleanup *old_chain;
13427   struct bpstats tmp_bs = { NULL };
13428   struct bpstats *tmp_bs_p = &tmp_bs;
13429
13430   /* dprintf's never cause a stop.  This wasn't set in the
13431      check_status hook instead because that would make the dprintf's
13432      condition not be evaluated.  */
13433   bs->stop = 0;
13434
13435   /* Run the command list here.  Take ownership of it instead of
13436      copying.  We never want these commands to run later in
13437      bpstat_do_actions, if a breakpoint that causes a stop happens to
13438      be set at same address as this dprintf, or even if running the
13439      commands here throws.  */
13440   tmp_bs.commands = bs->commands;
13441   bs->commands = NULL;
13442   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13443
13444   bpstat_do_actions_1 (&tmp_bs_p);
13445
13446   /* 'tmp_bs.commands' will usually be NULL by now, but
13447      bpstat_do_actions_1 may return early without processing the whole
13448      list.  */
13449   do_cleanups (old_chain);
13450 }
13451
13452 /* The breakpoint_ops structure to be used on static tracepoints with
13453    markers (`-m').  */
13454
13455 static void
13456 strace_marker_create_sals_from_address (char **arg,
13457                                         struct linespec_result *canonical,
13458                                         enum bptype type_wanted,
13459                                         char *addr_start, char **copy_arg)
13460 {
13461   struct linespec_sals lsal;
13462
13463   lsal.sals = decode_static_tracepoint_spec (arg);
13464
13465   *copy_arg = savestring (addr_start, *arg - addr_start);
13466
13467   canonical->addr_string = xstrdup (*copy_arg);
13468   lsal.canonical = xstrdup (*copy_arg);
13469   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13470 }
13471
13472 static void
13473 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13474                                       struct linespec_result *canonical,
13475                                       char *cond_string,
13476                                       char *extra_string,
13477                                       enum bptype type_wanted,
13478                                       enum bpdisp disposition,
13479                                       int thread,
13480                                       int task, int ignore_count,
13481                                       const struct breakpoint_ops *ops,
13482                                       int from_tty, int enabled,
13483                                       int internal, unsigned flags)
13484 {
13485   int i;
13486   struct linespec_sals *lsal = VEC_index (linespec_sals,
13487                                           canonical->sals, 0);
13488
13489   /* If the user is creating a static tracepoint by marker id
13490      (strace -m MARKER_ID), then store the sals index, so that
13491      breakpoint_re_set can try to match up which of the newly
13492      found markers corresponds to this one, and, don't try to
13493      expand multiple locations for each sal, given than SALS
13494      already should contain all sals for MARKER_ID.  */
13495
13496   for (i = 0; i < lsal->sals.nelts; ++i)
13497     {
13498       struct symtabs_and_lines expanded;
13499       struct tracepoint *tp;
13500       struct cleanup *old_chain;
13501       char *addr_string;
13502
13503       expanded.nelts = 1;
13504       expanded.sals = &lsal->sals.sals[i];
13505
13506       addr_string = xstrdup (canonical->addr_string);
13507       old_chain = make_cleanup (xfree, addr_string);
13508
13509       tp = XCNEW (struct tracepoint);
13510       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13511                            addr_string, NULL,
13512                            cond_string, extra_string,
13513                            type_wanted, disposition,
13514                            thread, task, ignore_count, ops,
13515                            from_tty, enabled, internal, flags,
13516                            canonical->special_display);
13517       /* Given that its possible to have multiple markers with
13518          the same string id, if the user is creating a static
13519          tracepoint by marker id ("strace -m MARKER_ID"), then
13520          store the sals index, so that breakpoint_re_set can
13521          try to match up which of the newly found markers
13522          corresponds to this one  */
13523       tp->static_trace_marker_id_idx = i;
13524
13525       install_breakpoint (internal, &tp->base, 0);
13526
13527       discard_cleanups (old_chain);
13528     }
13529 }
13530
13531 static void
13532 strace_marker_decode_linespec (struct breakpoint *b, char **s,
13533                                struct symtabs_and_lines *sals)
13534 {
13535   struct tracepoint *tp = (struct tracepoint *) b;
13536
13537   *sals = decode_static_tracepoint_spec (s);
13538   if (sals->nelts > tp->static_trace_marker_id_idx)
13539     {
13540       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13541       sals->nelts = 1;
13542     }
13543   else
13544     error (_("marker %s not found"), tp->static_trace_marker_id);
13545 }
13546
13547 static struct breakpoint_ops strace_marker_breakpoint_ops;
13548
13549 static int
13550 strace_marker_p (struct breakpoint *b)
13551 {
13552   return b->ops == &strace_marker_breakpoint_ops;
13553 }
13554
13555 /* Delete a breakpoint and clean up all traces of it in the data
13556    structures.  */
13557
13558 void
13559 delete_breakpoint (struct breakpoint *bpt)
13560 {
13561   struct breakpoint *b;
13562
13563   gdb_assert (bpt != NULL);
13564
13565   /* Has this bp already been deleted?  This can happen because
13566      multiple lists can hold pointers to bp's.  bpstat lists are
13567      especial culprits.
13568
13569      One example of this happening is a watchpoint's scope bp.  When
13570      the scope bp triggers, we notice that the watchpoint is out of
13571      scope, and delete it.  We also delete its scope bp.  But the
13572      scope bp is marked "auto-deleting", and is already on a bpstat.
13573      That bpstat is then checked for auto-deleting bp's, which are
13574      deleted.
13575
13576      A real solution to this problem might involve reference counts in
13577      bp's, and/or giving them pointers back to their referencing
13578      bpstat's, and teaching delete_breakpoint to only free a bp's
13579      storage when no more references were extent.  A cheaper bandaid
13580      was chosen.  */
13581   if (bpt->type == bp_none)
13582     return;
13583
13584   /* At least avoid this stale reference until the reference counting
13585      of breakpoints gets resolved.  */
13586   if (bpt->related_breakpoint != bpt)
13587     {
13588       struct breakpoint *related;
13589       struct watchpoint *w;
13590
13591       if (bpt->type == bp_watchpoint_scope)
13592         w = (struct watchpoint *) bpt->related_breakpoint;
13593       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13594         w = (struct watchpoint *) bpt;
13595       else
13596         w = NULL;
13597       if (w != NULL)
13598         watchpoint_del_at_next_stop (w);
13599
13600       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13601       for (related = bpt; related->related_breakpoint != bpt;
13602            related = related->related_breakpoint);
13603       related->related_breakpoint = bpt->related_breakpoint;
13604       bpt->related_breakpoint = bpt;
13605     }
13606
13607   /* watch_command_1 creates a watchpoint but only sets its number if
13608      update_watchpoint succeeds in creating its bp_locations.  If there's
13609      a problem in that process, we'll be asked to delete the half-created
13610      watchpoint.  In that case, don't announce the deletion.  */
13611   if (bpt->number)
13612     observer_notify_breakpoint_deleted (bpt);
13613
13614   if (breakpoint_chain == bpt)
13615     breakpoint_chain = bpt->next;
13616
13617   ALL_BREAKPOINTS (b)
13618     if (b->next == bpt)
13619     {
13620       b->next = bpt->next;
13621       break;
13622     }
13623
13624   /* Be sure no bpstat's are pointing at the breakpoint after it's
13625      been freed.  */
13626   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13627      in all threads for now.  Note that we cannot just remove bpstats
13628      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13629      commands are associated with the bpstat; if we remove it here,
13630      then the later call to bpstat_do_actions (&stop_bpstat); in
13631      event-top.c won't do anything, and temporary breakpoints with
13632      commands won't work.  */
13633
13634   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13635
13636   /* Now that breakpoint is removed from breakpoint list, update the
13637      global location list.  This will remove locations that used to
13638      belong to this breakpoint.  Do this before freeing the breakpoint
13639      itself, since remove_breakpoint looks at location's owner.  It
13640      might be better design to have location completely
13641      self-contained, but it's not the case now.  */
13642   update_global_location_list (UGLL_DONT_INSERT);
13643
13644   bpt->ops->dtor (bpt);
13645   /* On the chance that someone will soon try again to delete this
13646      same bp, we mark it as deleted before freeing its storage.  */
13647   bpt->type = bp_none;
13648   xfree (bpt);
13649 }
13650
13651 static void
13652 do_delete_breakpoint_cleanup (void *b)
13653 {
13654   delete_breakpoint (b);
13655 }
13656
13657 struct cleanup *
13658 make_cleanup_delete_breakpoint (struct breakpoint *b)
13659 {
13660   return make_cleanup (do_delete_breakpoint_cleanup, b);
13661 }
13662
13663 /* Iterator function to call a user-provided callback function once
13664    for each of B and its related breakpoints.  */
13665
13666 static void
13667 iterate_over_related_breakpoints (struct breakpoint *b,
13668                                   void (*function) (struct breakpoint *,
13669                                                     void *),
13670                                   void *data)
13671 {
13672   struct breakpoint *related;
13673
13674   related = b;
13675   do
13676     {
13677       struct breakpoint *next;
13678
13679       /* FUNCTION may delete RELATED.  */
13680       next = related->related_breakpoint;
13681
13682       if (next == related)
13683         {
13684           /* RELATED is the last ring entry.  */
13685           function (related, data);
13686
13687           /* FUNCTION may have deleted it, so we'd never reach back to
13688              B.  There's nothing left to do anyway, so just break
13689              out.  */
13690           break;
13691         }
13692       else
13693         function (related, data);
13694
13695       related = next;
13696     }
13697   while (related != b);
13698 }
13699
13700 static void
13701 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13702 {
13703   delete_breakpoint (b);
13704 }
13705
13706 /* A callback for map_breakpoint_numbers that calls
13707    delete_breakpoint.  */
13708
13709 static void
13710 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13711 {
13712   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
13713 }
13714
13715 void
13716 delete_command (char *arg, int from_tty)
13717 {
13718   struct breakpoint *b, *b_tmp;
13719
13720   dont_repeat ();
13721
13722   if (arg == 0)
13723     {
13724       int breaks_to_delete = 0;
13725
13726       /* Delete all breakpoints if no argument.  Do not delete
13727          internal breakpoints, these have to be deleted with an
13728          explicit breakpoint number argument.  */
13729       ALL_BREAKPOINTS (b)
13730         if (user_breakpoint_p (b))
13731           {
13732             breaks_to_delete = 1;
13733             break;
13734           }
13735
13736       /* Ask user only if there are some breakpoints to delete.  */
13737       if (!from_tty
13738           || (breaks_to_delete && query (_("Delete all breakpoints? "))))
13739         {
13740           ALL_BREAKPOINTS_SAFE (b, b_tmp)
13741             if (user_breakpoint_p (b))
13742               delete_breakpoint (b);
13743         }
13744     }
13745   else
13746     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
13747 }
13748
13749 static int
13750 all_locations_are_pending (struct bp_location *loc)
13751 {
13752   for (; loc; loc = loc->next)
13753     if (!loc->shlib_disabled
13754         && !loc->pspace->executing_startup)
13755       return 0;
13756   return 1;
13757 }
13758
13759 /* Subroutine of update_breakpoint_locations to simplify it.
13760    Return non-zero if multiple fns in list LOC have the same name.
13761    Null names are ignored.  */
13762
13763 static int
13764 ambiguous_names_p (struct bp_location *loc)
13765 {
13766   struct bp_location *l;
13767   htab_t htab = htab_create_alloc (13, htab_hash_string,
13768                                    (int (*) (const void *, 
13769                                              const void *)) streq,
13770                                    NULL, xcalloc, xfree);
13771
13772   for (l = loc; l != NULL; l = l->next)
13773     {
13774       const char **slot;
13775       const char *name = l->function_name;
13776
13777       /* Allow for some names to be NULL, ignore them.  */
13778       if (name == NULL)
13779         continue;
13780
13781       slot = (const char **) htab_find_slot (htab, (const void *) name,
13782                                              INSERT);
13783       /* NOTE: We can assume slot != NULL here because xcalloc never
13784          returns NULL.  */
13785       if (*slot != NULL)
13786         {
13787           htab_delete (htab);
13788           return 1;
13789         }
13790       *slot = name;
13791     }
13792
13793   htab_delete (htab);
13794   return 0;
13795 }
13796
13797 /* When symbols change, it probably means the sources changed as well,
13798    and it might mean the static tracepoint markers are no longer at
13799    the same address or line numbers they used to be at last we
13800    checked.  Losing your static tracepoints whenever you rebuild is
13801    undesirable.  This function tries to resync/rematch gdb static
13802    tracepoints with the markers on the target, for static tracepoints
13803    that have not been set by marker id.  Static tracepoint that have
13804    been set by marker id are reset by marker id in breakpoint_re_set.
13805    The heuristic is:
13806
13807    1) For a tracepoint set at a specific address, look for a marker at
13808    the old PC.  If one is found there, assume to be the same marker.
13809    If the name / string id of the marker found is different from the
13810    previous known name, assume that means the user renamed the marker
13811    in the sources, and output a warning.
13812
13813    2) For a tracepoint set at a given line number, look for a marker
13814    at the new address of the old line number.  If one is found there,
13815    assume to be the same marker.  If the name / string id of the
13816    marker found is different from the previous known name, assume that
13817    means the user renamed the marker in the sources, and output a
13818    warning.
13819
13820    3) If a marker is no longer found at the same address or line, it
13821    may mean the marker no longer exists.  But it may also just mean
13822    the code changed a bit.  Maybe the user added a few lines of code
13823    that made the marker move up or down (in line number terms).  Ask
13824    the target for info about the marker with the string id as we knew
13825    it.  If found, update line number and address in the matching
13826    static tracepoint.  This will get confused if there's more than one
13827    marker with the same ID (possible in UST, although unadvised
13828    precisely because it confuses tools).  */
13829
13830 static struct symtab_and_line
13831 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
13832 {
13833   struct tracepoint *tp = (struct tracepoint *) b;
13834   struct static_tracepoint_marker marker;
13835   CORE_ADDR pc;
13836
13837   pc = sal.pc;
13838   if (sal.line)
13839     find_line_pc (sal.symtab, sal.line, &pc);
13840
13841   if (target_static_tracepoint_marker_at (pc, &marker))
13842     {
13843       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
13844         warning (_("static tracepoint %d changed probed marker from %s to %s"),
13845                  b->number,
13846                  tp->static_trace_marker_id, marker.str_id);
13847
13848       xfree (tp->static_trace_marker_id);
13849       tp->static_trace_marker_id = xstrdup (marker.str_id);
13850       release_static_tracepoint_marker (&marker);
13851
13852       return sal;
13853     }
13854
13855   /* Old marker wasn't found on target at lineno.  Try looking it up
13856      by string ID.  */
13857   if (!sal.explicit_pc
13858       && sal.line != 0
13859       && sal.symtab != NULL
13860       && tp->static_trace_marker_id != NULL)
13861     {
13862       VEC(static_tracepoint_marker_p) *markers;
13863
13864       markers
13865         = target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
13866
13867       if (!VEC_empty(static_tracepoint_marker_p, markers))
13868         {
13869           struct symtab_and_line sal2;
13870           struct symbol *sym;
13871           struct static_tracepoint_marker *tpmarker;
13872           struct ui_out *uiout = current_uiout;
13873
13874           tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
13875
13876           xfree (tp->static_trace_marker_id);
13877           tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
13878
13879           warning (_("marker for static tracepoint %d (%s) not "
13880                      "found at previous line number"),
13881                    b->number, tp->static_trace_marker_id);
13882
13883           init_sal (&sal2);
13884
13885           sal2.pc = tpmarker->address;
13886
13887           sal2 = find_pc_line (tpmarker->address, 0);
13888           sym = find_pc_sect_function (tpmarker->address, NULL);
13889           ui_out_text (uiout, "Now in ");
13890           if (sym)
13891             {
13892               ui_out_field_string (uiout, "func",
13893                                    SYMBOL_PRINT_NAME (sym));
13894               ui_out_text (uiout, " at ");
13895             }
13896           ui_out_field_string (uiout, "file",
13897                                symtab_to_filename_for_display (sal2.symtab));
13898           ui_out_text (uiout, ":");
13899
13900           if (ui_out_is_mi_like_p (uiout))
13901             {
13902               const char *fullname = symtab_to_fullname (sal2.symtab);
13903
13904               ui_out_field_string (uiout, "fullname", fullname);
13905             }
13906
13907           ui_out_field_int (uiout, "line", sal2.line);
13908           ui_out_text (uiout, "\n");
13909
13910           b->loc->line_number = sal2.line;
13911           b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
13912
13913           xfree (b->addr_string);
13914           b->addr_string = xstrprintf ("%s:%d",
13915                                    symtab_to_filename_for_display (sal2.symtab),
13916                                        b->loc->line_number);
13917
13918           /* Might be nice to check if function changed, and warn if
13919              so.  */
13920
13921           release_static_tracepoint_marker (tpmarker);
13922         }
13923     }
13924   return sal;
13925 }
13926
13927 /* Returns 1 iff locations A and B are sufficiently same that
13928    we don't need to report breakpoint as changed.  */
13929
13930 static int
13931 locations_are_equal (struct bp_location *a, struct bp_location *b)
13932 {
13933   while (a && b)
13934     {
13935       if (a->address != b->address)
13936         return 0;
13937
13938       if (a->shlib_disabled != b->shlib_disabled)
13939         return 0;
13940
13941       if (a->enabled != b->enabled)
13942         return 0;
13943
13944       a = a->next;
13945       b = b->next;
13946     }
13947
13948   if ((a == NULL) != (b == NULL))
13949     return 0;
13950
13951   return 1;
13952 }
13953
13954 /* Create new breakpoint locations for B (a hardware or software breakpoint)
13955    based on SALS and SALS_END.  If SALS_END.NELTS is not zero, then B is
13956    a ranged breakpoint.  */
13957
13958 void
13959 update_breakpoint_locations (struct breakpoint *b,
13960                              struct symtabs_and_lines sals,
13961                              struct symtabs_and_lines sals_end)
13962 {
13963   int i;
13964   struct bp_location *existing_locations = b->loc;
13965
13966   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
13967     {
13968       /* Ranged breakpoints have only one start location and one end
13969          location.  */
13970       b->enable_state = bp_disabled;
13971       update_global_location_list (UGLL_MAY_INSERT);
13972       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
13973                            "multiple locations found\n"),
13974                          b->number);
13975       return;
13976     }
13977
13978   /* If there's no new locations, and all existing locations are
13979      pending, don't do anything.  This optimizes the common case where
13980      all locations are in the same shared library, that was unloaded.
13981      We'd like to retain the location, so that when the library is
13982      loaded again, we don't loose the enabled/disabled status of the
13983      individual locations.  */
13984   if (all_locations_are_pending (existing_locations) && sals.nelts == 0)
13985     return;
13986
13987   b->loc = NULL;
13988
13989   for (i = 0; i < sals.nelts; ++i)
13990     {
13991       struct bp_location *new_loc;
13992
13993       switch_to_program_space_and_thread (sals.sals[i].pspace);
13994
13995       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
13996
13997       /* Reparse conditions, they might contain references to the
13998          old symtab.  */
13999       if (b->cond_string != NULL)
14000         {
14001           const char *s;
14002
14003           s = b->cond_string;
14004           TRY
14005             {
14006               new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14007                                            block_for_pc (sals.sals[i].pc), 
14008                                            0);
14009             }
14010           CATCH (e, RETURN_MASK_ERROR)
14011             {
14012               warning (_("failed to reevaluate condition "
14013                          "for breakpoint %d: %s"), 
14014                        b->number, e.message);
14015               new_loc->enabled = 0;
14016             }
14017           END_CATCH
14018         }
14019
14020       if (sals_end.nelts)
14021         {
14022           CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14023
14024           new_loc->length = end - sals.sals[0].pc + 1;
14025         }
14026     }
14027
14028   /* If possible, carry over 'disable' status from existing
14029      breakpoints.  */
14030   {
14031     struct bp_location *e = existing_locations;
14032     /* If there are multiple breakpoints with the same function name,
14033        e.g. for inline functions, comparing function names won't work.
14034        Instead compare pc addresses; this is just a heuristic as things
14035        may have moved, but in practice it gives the correct answer
14036        often enough until a better solution is found.  */
14037     int have_ambiguous_names = ambiguous_names_p (b->loc);
14038
14039     for (; e; e = e->next)
14040       {
14041         if (!e->enabled && e->function_name)
14042           {
14043             struct bp_location *l = b->loc;
14044             if (have_ambiguous_names)
14045               {
14046                 for (; l; l = l->next)
14047                   if (breakpoint_locations_match (e, l))
14048                     {
14049                       l->enabled = 0;
14050                       break;
14051                     }
14052               }
14053             else
14054               {
14055                 for (; l; l = l->next)
14056                   if (l->function_name
14057                       && strcmp (e->function_name, l->function_name) == 0)
14058                     {
14059                       l->enabled = 0;
14060                       break;
14061                     }
14062               }
14063           }
14064       }
14065   }
14066
14067   if (!locations_are_equal (existing_locations, b->loc))
14068     observer_notify_breakpoint_modified (b);
14069
14070   update_global_location_list (UGLL_MAY_INSERT);
14071 }
14072
14073 /* Find the SaL locations corresponding to the given ADDR_STRING.
14074    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14075
14076 static struct symtabs_and_lines
14077 addr_string_to_sals (struct breakpoint *b, char *addr_string, int *found)
14078 {
14079   char *s;
14080   struct symtabs_and_lines sals = {0};
14081   struct gdb_exception exception = exception_none;
14082
14083   gdb_assert (b->ops != NULL);
14084   s = addr_string;
14085
14086   TRY
14087     {
14088       b->ops->decode_linespec (b, &s, &sals);
14089     }
14090   CATCH (e, RETURN_MASK_ERROR)
14091     {
14092       int not_found_and_ok = 0;
14093
14094       exception = e;
14095
14096       /* For pending breakpoints, it's expected that parsing will
14097          fail until the right shared library is loaded.  User has
14098          already told to create pending breakpoints and don't need
14099          extra messages.  If breakpoint is in bp_shlib_disabled
14100          state, then user already saw the message about that
14101          breakpoint being disabled, and don't want to see more
14102          errors.  */
14103       if (e.error == NOT_FOUND_ERROR
14104           && (b->condition_not_parsed 
14105               || (b->loc && b->loc->shlib_disabled)
14106               || (b->loc && b->loc->pspace->executing_startup)
14107               || b->enable_state == bp_disabled))
14108         not_found_and_ok = 1;
14109
14110       if (!not_found_and_ok)
14111         {
14112           /* We surely don't want to warn about the same breakpoint
14113              10 times.  One solution, implemented here, is disable
14114              the breakpoint on error.  Another solution would be to
14115              have separate 'warning emitted' flag.  Since this
14116              happens only when a binary has changed, I don't know
14117              which approach is better.  */
14118           b->enable_state = bp_disabled;
14119           throw_exception (e);
14120         }
14121     }
14122   END_CATCH
14123
14124   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14125     {
14126       int i;
14127
14128       for (i = 0; i < sals.nelts; ++i)
14129         resolve_sal_pc (&sals.sals[i]);
14130       if (b->condition_not_parsed && s && s[0])
14131         {
14132           char *cond_string, *extra_string;
14133           int thread, task;
14134
14135           find_condition_and_thread (s, sals.sals[0].pc,
14136                                      &cond_string, &thread, &task,
14137                                      &extra_string);
14138           if (cond_string)
14139             b->cond_string = cond_string;
14140           b->thread = thread;
14141           b->task = task;
14142           if (extra_string)
14143             b->extra_string = extra_string;
14144           b->condition_not_parsed = 0;
14145         }
14146
14147       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14148         sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14149
14150       *found = 1;
14151     }
14152   else
14153     *found = 0;
14154
14155   return sals;
14156 }
14157
14158 /* The default re_set method, for typical hardware or software
14159    breakpoints.  Reevaluate the breakpoint and recreate its
14160    locations.  */
14161
14162 static void
14163 breakpoint_re_set_default (struct breakpoint *b)
14164 {
14165   int found;
14166   struct symtabs_and_lines sals, sals_end;
14167   struct symtabs_and_lines expanded = {0};
14168   struct symtabs_and_lines expanded_end = {0};
14169
14170   sals = addr_string_to_sals (b, b->addr_string, &found);
14171   if (found)
14172     {
14173       make_cleanup (xfree, sals.sals);
14174       expanded = sals;
14175     }
14176
14177   if (b->addr_string_range_end)
14178     {
14179       sals_end = addr_string_to_sals (b, b->addr_string_range_end, &found);
14180       if (found)
14181         {
14182           make_cleanup (xfree, sals_end.sals);
14183           expanded_end = sals_end;
14184         }
14185     }
14186
14187   update_breakpoint_locations (b, expanded, expanded_end);
14188 }
14189
14190 /* Default method for creating SALs from an address string.  It basically
14191    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14192
14193 static void
14194 create_sals_from_address_default (char **arg,
14195                                   struct linespec_result *canonical,
14196                                   enum bptype type_wanted,
14197                                   char *addr_start, char **copy_arg)
14198 {
14199   parse_breakpoint_sals (arg, canonical);
14200 }
14201
14202 /* Call create_breakpoints_sal for the given arguments.  This is the default
14203    function for the `create_breakpoints_sal' method of
14204    breakpoint_ops.  */
14205
14206 static void
14207 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14208                                 struct linespec_result *canonical,
14209                                 char *cond_string,
14210                                 char *extra_string,
14211                                 enum bptype type_wanted,
14212                                 enum bpdisp disposition,
14213                                 int thread,
14214                                 int task, int ignore_count,
14215                                 const struct breakpoint_ops *ops,
14216                                 int from_tty, int enabled,
14217                                 int internal, unsigned flags)
14218 {
14219   create_breakpoints_sal (gdbarch, canonical, cond_string,
14220                           extra_string,
14221                           type_wanted, disposition,
14222                           thread, task, ignore_count, ops, from_tty,
14223                           enabled, internal, flags);
14224 }
14225
14226 /* Decode the line represented by S by calling decode_line_full.  This is the
14227    default function for the `decode_linespec' method of breakpoint_ops.  */
14228
14229 static void
14230 decode_linespec_default (struct breakpoint *b, char **s,
14231                          struct symtabs_and_lines *sals)
14232 {
14233   struct linespec_result canonical;
14234
14235   init_linespec_result (&canonical);
14236   decode_line_full (s, DECODE_LINE_FUNFIRSTLINE,
14237                     (struct symtab *) NULL, 0,
14238                     &canonical, multiple_symbols_all,
14239                     b->filter);
14240
14241   /* We should get 0 or 1 resulting SALs.  */
14242   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14243
14244   if (VEC_length (linespec_sals, canonical.sals) > 0)
14245     {
14246       struct linespec_sals *lsal;
14247
14248       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14249       *sals = lsal->sals;
14250       /* Arrange it so the destructor does not free the
14251          contents.  */
14252       lsal->sals.sals = NULL;
14253     }
14254
14255   destroy_linespec_result (&canonical);
14256 }
14257
14258 /* Prepare the global context for a re-set of breakpoint B.  */
14259
14260 static struct cleanup *
14261 prepare_re_set_context (struct breakpoint *b)
14262 {
14263   struct cleanup *cleanups;
14264
14265   input_radix = b->input_radix;
14266   cleanups = save_current_space_and_thread ();
14267   if (b->pspace != NULL)
14268     switch_to_program_space_and_thread (b->pspace);
14269   set_language (b->language);
14270
14271   return cleanups;
14272 }
14273
14274 /* Reset a breakpoint given it's struct breakpoint * BINT.
14275    The value we return ends up being the return value from catch_errors.
14276    Unused in this case.  */
14277
14278 static int
14279 breakpoint_re_set_one (void *bint)
14280 {
14281   /* Get past catch_errs.  */
14282   struct breakpoint *b = (struct breakpoint *) bint;
14283   struct cleanup *cleanups;
14284
14285   cleanups = prepare_re_set_context (b);
14286   b->ops->re_set (b);
14287   do_cleanups (cleanups);
14288   return 0;
14289 }
14290
14291 /* Re-set all breakpoints after symbols have been re-loaded.  */
14292 void
14293 breakpoint_re_set (void)
14294 {
14295   struct breakpoint *b, *b_tmp;
14296   enum language save_language;
14297   int save_input_radix;
14298   struct cleanup *old_chain;
14299
14300   save_language = current_language->la_language;
14301   save_input_radix = input_radix;
14302   old_chain = save_current_program_space ();
14303
14304   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14305   {
14306     /* Format possible error msg.  */
14307     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14308                                 b->number);
14309     struct cleanup *cleanups = make_cleanup (xfree, message);
14310     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14311     do_cleanups (cleanups);
14312   }
14313   set_language (save_language);
14314   input_radix = save_input_radix;
14315
14316   jit_breakpoint_re_set ();
14317
14318   do_cleanups (old_chain);
14319
14320   create_overlay_event_breakpoint ();
14321   create_longjmp_master_breakpoint ();
14322   create_std_terminate_master_breakpoint ();
14323   create_exception_master_breakpoint ();
14324 }
14325 \f
14326 /* Reset the thread number of this breakpoint:
14327
14328    - If the breakpoint is for all threads, leave it as-is.
14329    - Else, reset it to the current thread for inferior_ptid.  */
14330 void
14331 breakpoint_re_set_thread (struct breakpoint *b)
14332 {
14333   if (b->thread != -1)
14334     {
14335       if (in_thread_list (inferior_ptid))
14336         b->thread = pid_to_thread_id (inferior_ptid);
14337
14338       /* We're being called after following a fork.  The new fork is
14339          selected as current, and unless this was a vfork will have a
14340          different program space from the original thread.  Reset that
14341          as well.  */
14342       b->loc->pspace = current_program_space;
14343     }
14344 }
14345
14346 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14347    If from_tty is nonzero, it prints a message to that effect,
14348    which ends with a period (no newline).  */
14349
14350 void
14351 set_ignore_count (int bptnum, int count, int from_tty)
14352 {
14353   struct breakpoint *b;
14354
14355   if (count < 0)
14356     count = 0;
14357
14358   ALL_BREAKPOINTS (b)
14359     if (b->number == bptnum)
14360     {
14361       if (is_tracepoint (b))
14362         {
14363           if (from_tty && count != 0)
14364             printf_filtered (_("Ignore count ignored for tracepoint %d."),
14365                              bptnum);
14366           return;
14367         }
14368       
14369       b->ignore_count = count;
14370       if (from_tty)
14371         {
14372           if (count == 0)
14373             printf_filtered (_("Will stop next time "
14374                                "breakpoint %d is reached."),
14375                              bptnum);
14376           else if (count == 1)
14377             printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14378                              bptnum);
14379           else
14380             printf_filtered (_("Will ignore next %d "
14381                                "crossings of breakpoint %d."),
14382                              count, bptnum);
14383         }
14384       observer_notify_breakpoint_modified (b);
14385       return;
14386     }
14387
14388   error (_("No breakpoint number %d."), bptnum);
14389 }
14390
14391 /* Command to set ignore-count of breakpoint N to COUNT.  */
14392
14393 static void
14394 ignore_command (char *args, int from_tty)
14395 {
14396   char *p = args;
14397   int num;
14398
14399   if (p == 0)
14400     error_no_arg (_("a breakpoint number"));
14401
14402   num = get_number (&p);
14403   if (num == 0)
14404     error (_("bad breakpoint number: '%s'"), args);
14405   if (*p == 0)
14406     error (_("Second argument (specified ignore-count) is missing."));
14407
14408   set_ignore_count (num,
14409                     longest_to_int (value_as_long (parse_and_eval (p))),
14410                     from_tty);
14411   if (from_tty)
14412     printf_filtered ("\n");
14413 }
14414 \f
14415 /* Call FUNCTION on each of the breakpoints
14416    whose numbers are given in ARGS.  */
14417
14418 static void
14419 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14420                                                       void *),
14421                         void *data)
14422 {
14423   int num;
14424   struct breakpoint *b, *tmp;
14425   int match;
14426   struct get_number_or_range_state state;
14427
14428   if (args == 0 || *args == '\0')
14429     error_no_arg (_("one or more breakpoint numbers"));
14430
14431   init_number_or_range (&state, args);
14432
14433   while (!state.finished)
14434     {
14435       const char *p = state.string;
14436
14437       match = 0;
14438
14439       num = get_number_or_range (&state);
14440       if (num == 0)
14441         {
14442           warning (_("bad breakpoint number at or near '%s'"), p);
14443         }
14444       else
14445         {
14446           ALL_BREAKPOINTS_SAFE (b, tmp)
14447             if (b->number == num)
14448               {
14449                 match = 1;
14450                 function (b, data);
14451                 break;
14452               }
14453           if (match == 0)
14454             printf_unfiltered (_("No breakpoint number %d.\n"), num);
14455         }
14456     }
14457 }
14458
14459 static struct bp_location *
14460 find_location_by_number (char *number)
14461 {
14462   char *dot = strchr (number, '.');
14463   char *p1;
14464   int bp_num;
14465   int loc_num;
14466   struct breakpoint *b;
14467   struct bp_location *loc;  
14468
14469   *dot = '\0';
14470
14471   p1 = number;
14472   bp_num = get_number (&p1);
14473   if (bp_num == 0)
14474     error (_("Bad breakpoint number '%s'"), number);
14475
14476   ALL_BREAKPOINTS (b)
14477     if (b->number == bp_num)
14478       {
14479         break;
14480       }
14481
14482   if (!b || b->number != bp_num)
14483     error (_("Bad breakpoint number '%s'"), number);
14484   
14485   p1 = dot+1;
14486   loc_num = get_number (&p1);
14487   if (loc_num == 0)
14488     error (_("Bad breakpoint location number '%s'"), number);
14489
14490   --loc_num;
14491   loc = b->loc;
14492   for (;loc_num && loc; --loc_num, loc = loc->next)
14493     ;
14494   if (!loc)
14495     error (_("Bad breakpoint location number '%s'"), dot+1);
14496     
14497   return loc;  
14498 }
14499
14500
14501 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14502    If from_tty is nonzero, it prints a message to that effect,
14503    which ends with a period (no newline).  */
14504
14505 void
14506 disable_breakpoint (struct breakpoint *bpt)
14507 {
14508   /* Never disable a watchpoint scope breakpoint; we want to
14509      hit them when we leave scope so we can delete both the
14510      watchpoint and its scope breakpoint at that time.  */
14511   if (bpt->type == bp_watchpoint_scope)
14512     return;
14513
14514   bpt->enable_state = bp_disabled;
14515
14516   /* Mark breakpoint locations modified.  */
14517   mark_breakpoint_modified (bpt);
14518
14519   if (target_supports_enable_disable_tracepoint ()
14520       && current_trace_status ()->running && is_tracepoint (bpt))
14521     {
14522       struct bp_location *location;
14523      
14524       for (location = bpt->loc; location; location = location->next)
14525         target_disable_tracepoint (location);
14526     }
14527
14528   update_global_location_list (UGLL_DONT_INSERT);
14529
14530   observer_notify_breakpoint_modified (bpt);
14531 }
14532
14533 /* A callback for iterate_over_related_breakpoints.  */
14534
14535 static void
14536 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14537 {
14538   disable_breakpoint (b);
14539 }
14540
14541 /* A callback for map_breakpoint_numbers that calls
14542    disable_breakpoint.  */
14543
14544 static void
14545 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14546 {
14547   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14548 }
14549
14550 static void
14551 disable_command (char *args, int from_tty)
14552 {
14553   if (args == 0)
14554     {
14555       struct breakpoint *bpt;
14556
14557       ALL_BREAKPOINTS (bpt)
14558         if (user_breakpoint_p (bpt))
14559           disable_breakpoint (bpt);
14560     }
14561   else
14562     {
14563       char *num = extract_arg (&args);
14564
14565       while (num)
14566         {
14567           if (strchr (num, '.'))
14568             {
14569               struct bp_location *loc = find_location_by_number (num);
14570
14571               if (loc)
14572                 {
14573                   if (loc->enabled)
14574                     {
14575                       loc->enabled = 0;
14576                       mark_breakpoint_location_modified (loc);
14577                     }
14578                   if (target_supports_enable_disable_tracepoint ()
14579                       && current_trace_status ()->running && loc->owner
14580                       && is_tracepoint (loc->owner))
14581                     target_disable_tracepoint (loc);
14582                 }
14583               update_global_location_list (UGLL_DONT_INSERT);
14584             }
14585           else
14586             map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14587           num = extract_arg (&args);
14588         }
14589     }
14590 }
14591
14592 static void
14593 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14594                         int count)
14595 {
14596   int target_resources_ok;
14597
14598   if (bpt->type == bp_hardware_breakpoint)
14599     {
14600       int i;
14601       i = hw_breakpoint_used_count ();
14602       target_resources_ok = 
14603         target_can_use_hardware_watchpoint (bp_hardware_breakpoint, 
14604                                             i + 1, 0);
14605       if (target_resources_ok == 0)
14606         error (_("No hardware breakpoint support in the target."));
14607       else if (target_resources_ok < 0)
14608         error (_("Hardware breakpoints used exceeds limit."));
14609     }
14610
14611   if (is_watchpoint (bpt))
14612     {
14613       /* Initialize it just to avoid a GCC false warning.  */
14614       enum enable_state orig_enable_state = 0;
14615
14616       TRY
14617         {
14618           struct watchpoint *w = (struct watchpoint *) bpt;
14619
14620           orig_enable_state = bpt->enable_state;
14621           bpt->enable_state = bp_enabled;
14622           update_watchpoint (w, 1 /* reparse */);
14623         }
14624       CATCH (e, RETURN_MASK_ALL)
14625         {
14626           bpt->enable_state = orig_enable_state;
14627           exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14628                              bpt->number);
14629           return;
14630         }
14631       END_CATCH
14632     }
14633
14634   bpt->enable_state = bp_enabled;
14635
14636   /* Mark breakpoint locations modified.  */
14637   mark_breakpoint_modified (bpt);
14638
14639   if (target_supports_enable_disable_tracepoint ()
14640       && current_trace_status ()->running && is_tracepoint (bpt))
14641     {
14642       struct bp_location *location;
14643
14644       for (location = bpt->loc; location; location = location->next)
14645         target_enable_tracepoint (location);
14646     }
14647
14648   bpt->disposition = disposition;
14649   bpt->enable_count = count;
14650   update_global_location_list (UGLL_MAY_INSERT);
14651
14652   observer_notify_breakpoint_modified (bpt);
14653 }
14654
14655
14656 void
14657 enable_breakpoint (struct breakpoint *bpt)
14658 {
14659   enable_breakpoint_disp (bpt, bpt->disposition, 0);
14660 }
14661
14662 static void
14663 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
14664 {
14665   enable_breakpoint (bpt);
14666 }
14667
14668 /* A callback for map_breakpoint_numbers that calls
14669    enable_breakpoint.  */
14670
14671 static void
14672 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
14673 {
14674   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
14675 }
14676
14677 /* The enable command enables the specified breakpoints (or all defined
14678    breakpoints) so they once again become (or continue to be) effective
14679    in stopping the inferior.  */
14680
14681 static void
14682 enable_command (char *args, int from_tty)
14683 {
14684   if (args == 0)
14685     {
14686       struct breakpoint *bpt;
14687
14688       ALL_BREAKPOINTS (bpt)
14689         if (user_breakpoint_p (bpt))
14690           enable_breakpoint (bpt);
14691     }
14692   else
14693     {
14694       char *num = extract_arg (&args);
14695
14696       while (num)
14697         {
14698           if (strchr (num, '.'))
14699             {
14700               struct bp_location *loc = find_location_by_number (num);
14701
14702               if (loc)
14703                 {
14704                   if (!loc->enabled)
14705                     {
14706                       loc->enabled = 1;
14707                       mark_breakpoint_location_modified (loc);
14708                     }
14709                   if (target_supports_enable_disable_tracepoint ()
14710                       && current_trace_status ()->running && loc->owner
14711                       && is_tracepoint (loc->owner))
14712                     target_enable_tracepoint (loc);
14713                 }
14714               update_global_location_list (UGLL_MAY_INSERT);
14715             }
14716           else
14717             map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
14718           num = extract_arg (&args);
14719         }
14720     }
14721 }
14722
14723 /* This struct packages up disposition data for application to multiple
14724    breakpoints.  */
14725
14726 struct disp_data
14727 {
14728   enum bpdisp disp;
14729   int count;
14730 };
14731
14732 static void
14733 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
14734 {
14735   struct disp_data disp_data = *(struct disp_data *) arg;
14736
14737   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
14738 }
14739
14740 static void
14741 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
14742 {
14743   struct disp_data disp = { disp_disable, 1 };
14744
14745   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14746 }
14747
14748 static void
14749 enable_once_command (char *args, int from_tty)
14750 {
14751   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
14752 }
14753
14754 static void
14755 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
14756 {
14757   struct disp_data disp = { disp_disable, *(int *) countptr };
14758
14759   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14760 }
14761
14762 static void
14763 enable_count_command (char *args, int from_tty)
14764 {
14765   int count;
14766
14767   if (args == NULL)
14768     error_no_arg (_("hit count"));
14769
14770   count = get_number (&args);
14771
14772   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
14773 }
14774
14775 static void
14776 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
14777 {
14778   struct disp_data disp = { disp_del, 1 };
14779
14780   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
14781 }
14782
14783 static void
14784 enable_delete_command (char *args, int from_tty)
14785 {
14786   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
14787 }
14788 \f
14789 static void
14790 set_breakpoint_cmd (char *args, int from_tty)
14791 {
14792 }
14793
14794 static void
14795 show_breakpoint_cmd (char *args, int from_tty)
14796 {
14797 }
14798
14799 /* Invalidate last known value of any hardware watchpoint if
14800    the memory which that value represents has been written to by
14801    GDB itself.  */
14802
14803 static void
14804 invalidate_bp_value_on_memory_change (struct inferior *inferior,
14805                                       CORE_ADDR addr, ssize_t len,
14806                                       const bfd_byte *data)
14807 {
14808   struct breakpoint *bp;
14809
14810   ALL_BREAKPOINTS (bp)
14811     if (bp->enable_state == bp_enabled
14812         && bp->type == bp_hardware_watchpoint)
14813       {
14814         struct watchpoint *wp = (struct watchpoint *) bp;
14815
14816         if (wp->val_valid && wp->val)
14817           {
14818             struct bp_location *loc;
14819
14820             for (loc = bp->loc; loc != NULL; loc = loc->next)
14821               if (loc->loc_type == bp_loc_hardware_watchpoint
14822                   && loc->address + loc->length > addr
14823                   && addr + len > loc->address)
14824                 {
14825                   value_free (wp->val);
14826                   wp->val = NULL;
14827                   wp->val_valid = 0;
14828                 }
14829           }
14830       }
14831 }
14832
14833 /* Create and insert a breakpoint for software single step.  */
14834
14835 void
14836 insert_single_step_breakpoint (struct gdbarch *gdbarch,
14837                                struct address_space *aspace, 
14838                                CORE_ADDR next_pc)
14839 {
14840   struct thread_info *tp = inferior_thread ();
14841   struct symtab_and_line sal;
14842   CORE_ADDR pc = next_pc;
14843
14844   if (tp->control.single_step_breakpoints == NULL)
14845     {
14846       tp->control.single_step_breakpoints
14847         = new_single_step_breakpoint (tp->num, gdbarch);
14848     }
14849
14850   sal = find_pc_line (pc, 0);
14851   sal.pc = pc;
14852   sal.section = find_pc_overlay (pc);
14853   sal.explicit_pc = 1;
14854   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
14855
14856   update_global_location_list (UGLL_INSERT);
14857 }
14858
14859 /* See breakpoint.h.  */
14860
14861 int
14862 breakpoint_has_location_inserted_here (struct breakpoint *bp,
14863                                        struct address_space *aspace,
14864                                        CORE_ADDR pc)
14865 {
14866   struct bp_location *loc;
14867
14868   for (loc = bp->loc; loc != NULL; loc = loc->next)
14869     if (loc->inserted
14870         && breakpoint_location_address_match (loc, aspace, pc))
14871       return 1;
14872
14873   return 0;
14874 }
14875
14876 /* Check whether a software single-step breakpoint is inserted at
14877    PC.  */
14878
14879 int
14880 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
14881                                         CORE_ADDR pc)
14882 {
14883   struct breakpoint *bpt;
14884
14885   ALL_BREAKPOINTS (bpt)
14886     {
14887       if (bpt->type == bp_single_step
14888           && breakpoint_has_location_inserted_here (bpt, aspace, pc))
14889         return 1;
14890     }
14891   return 0;
14892 }
14893
14894 /* Tracepoint-specific operations.  */
14895
14896 /* Set tracepoint count to NUM.  */
14897 static void
14898 set_tracepoint_count (int num)
14899 {
14900   tracepoint_count = num;
14901   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
14902 }
14903
14904 static void
14905 trace_command (char *arg, int from_tty)
14906 {
14907   struct breakpoint_ops *ops;
14908   const char *arg_cp = arg;
14909
14910   if (arg && probe_linespec_to_ops (&arg_cp))
14911     ops = &tracepoint_probe_breakpoint_ops;
14912   else
14913     ops = &tracepoint_breakpoint_ops;
14914
14915   create_breakpoint (get_current_arch (),
14916                      arg,
14917                      NULL, 0, NULL, 1 /* parse arg */,
14918                      0 /* tempflag */,
14919                      bp_tracepoint /* type_wanted */,
14920                      0 /* Ignore count */,
14921                      pending_break_support,
14922                      ops,
14923                      from_tty,
14924                      1 /* enabled */,
14925                      0 /* internal */, 0);
14926 }
14927
14928 static void
14929 ftrace_command (char *arg, int from_tty)
14930 {
14931   create_breakpoint (get_current_arch (),
14932                      arg,
14933                      NULL, 0, NULL, 1 /* parse arg */,
14934                      0 /* tempflag */,
14935                      bp_fast_tracepoint /* type_wanted */,
14936                      0 /* Ignore count */,
14937                      pending_break_support,
14938                      &tracepoint_breakpoint_ops,
14939                      from_tty,
14940                      1 /* enabled */,
14941                      0 /* internal */, 0);
14942 }
14943
14944 /* strace command implementation.  Creates a static tracepoint.  */
14945
14946 static void
14947 strace_command (char *arg, int from_tty)
14948 {
14949   struct breakpoint_ops *ops;
14950
14951   /* Decide if we are dealing with a static tracepoint marker (`-m'),
14952      or with a normal static tracepoint.  */
14953   if (arg && startswith (arg, "-m") && isspace (arg[2]))
14954     ops = &strace_marker_breakpoint_ops;
14955   else
14956     ops = &tracepoint_breakpoint_ops;
14957
14958   create_breakpoint (get_current_arch (),
14959                      arg,
14960                      NULL, 0, NULL, 1 /* parse arg */,
14961                      0 /* tempflag */,
14962                      bp_static_tracepoint /* type_wanted */,
14963                      0 /* Ignore count */,
14964                      pending_break_support,
14965                      ops,
14966                      from_tty,
14967                      1 /* enabled */,
14968                      0 /* internal */, 0);
14969 }
14970
14971 /* Set up a fake reader function that gets command lines from a linked
14972    list that was acquired during tracepoint uploading.  */
14973
14974 static struct uploaded_tp *this_utp;
14975 static int next_cmd;
14976
14977 static char *
14978 read_uploaded_action (void)
14979 {
14980   char *rslt;
14981
14982   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
14983
14984   next_cmd++;
14985
14986   return rslt;
14987 }
14988
14989 /* Given information about a tracepoint as recorded on a target (which
14990    can be either a live system or a trace file), attempt to create an
14991    equivalent GDB tracepoint.  This is not a reliable process, since
14992    the target does not necessarily have all the information used when
14993    the tracepoint was originally defined.  */
14994   
14995 struct tracepoint *
14996 create_tracepoint_from_upload (struct uploaded_tp *utp)
14997 {
14998   char *addr_str, small_buf[100];
14999   struct tracepoint *tp;
15000
15001   if (utp->at_string)
15002     addr_str = utp->at_string;
15003   else
15004     {
15005       /* In the absence of a source location, fall back to raw
15006          address.  Since there is no way to confirm that the address
15007          means the same thing as when the trace was started, warn the
15008          user.  */
15009       warning (_("Uploaded tracepoint %d has no "
15010                  "source location, using raw address"),
15011                utp->number);
15012       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15013       addr_str = small_buf;
15014     }
15015
15016   /* There's not much we can do with a sequence of bytecodes.  */
15017   if (utp->cond && !utp->cond_string)
15018     warning (_("Uploaded tracepoint %d condition "
15019                "has no source form, ignoring it"),
15020              utp->number);
15021
15022   if (!create_breakpoint (get_current_arch (),
15023                           addr_str,
15024                           utp->cond_string, -1, NULL,
15025                           0 /* parse cond/thread */,
15026                           0 /* tempflag */,
15027                           utp->type /* type_wanted */,
15028                           0 /* Ignore count */,
15029                           pending_break_support,
15030                           &tracepoint_breakpoint_ops,
15031                           0 /* from_tty */,
15032                           utp->enabled /* enabled */,
15033                           0 /* internal */,
15034                           CREATE_BREAKPOINT_FLAGS_INSERTED))
15035     return NULL;
15036
15037   /* Get the tracepoint we just created.  */
15038   tp = get_tracepoint (tracepoint_count);
15039   gdb_assert (tp != NULL);
15040
15041   if (utp->pass > 0)
15042     {
15043       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15044                  tp->base.number);
15045
15046       trace_pass_command (small_buf, 0);
15047     }
15048
15049   /* If we have uploaded versions of the original commands, set up a
15050      special-purpose "reader" function and call the usual command line
15051      reader, then pass the result to the breakpoint command-setting
15052      function.  */
15053   if (!VEC_empty (char_ptr, utp->cmd_strings))
15054     {
15055       struct command_line *cmd_list;
15056
15057       this_utp = utp;
15058       next_cmd = 0;
15059
15060       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15061
15062       breakpoint_set_commands (&tp->base, cmd_list);
15063     }
15064   else if (!VEC_empty (char_ptr, utp->actions)
15065            || !VEC_empty (char_ptr, utp->step_actions))
15066     warning (_("Uploaded tracepoint %d actions "
15067                "have no source form, ignoring them"),
15068              utp->number);
15069
15070   /* Copy any status information that might be available.  */
15071   tp->base.hit_count = utp->hit_count;
15072   tp->traceframe_usage = utp->traceframe_usage;
15073
15074   return tp;
15075 }
15076   
15077 /* Print information on tracepoint number TPNUM_EXP, or all if
15078    omitted.  */
15079
15080 static void
15081 tracepoints_info (char *args, int from_tty)
15082 {
15083   struct ui_out *uiout = current_uiout;
15084   int num_printed;
15085
15086   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15087
15088   if (num_printed == 0)
15089     {
15090       if (args == NULL || *args == '\0')
15091         ui_out_message (uiout, 0, "No tracepoints.\n");
15092       else
15093         ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15094     }
15095
15096   default_collect_info ();
15097 }
15098
15099 /* The 'enable trace' command enables tracepoints.
15100    Not supported by all targets.  */
15101 static void
15102 enable_trace_command (char *args, int from_tty)
15103 {
15104   enable_command (args, from_tty);
15105 }
15106
15107 /* The 'disable trace' command disables tracepoints.
15108    Not supported by all targets.  */
15109 static void
15110 disable_trace_command (char *args, int from_tty)
15111 {
15112   disable_command (args, from_tty);
15113 }
15114
15115 /* Remove a tracepoint (or all if no argument).  */
15116 static void
15117 delete_trace_command (char *arg, int from_tty)
15118 {
15119   struct breakpoint *b, *b_tmp;
15120
15121   dont_repeat ();
15122
15123   if (arg == 0)
15124     {
15125       int breaks_to_delete = 0;
15126
15127       /* Delete all breakpoints if no argument.
15128          Do not delete internal or call-dummy breakpoints, these
15129          have to be deleted with an explicit breakpoint number 
15130          argument.  */
15131       ALL_TRACEPOINTS (b)
15132         if (is_tracepoint (b) && user_breakpoint_p (b))
15133           {
15134             breaks_to_delete = 1;
15135             break;
15136           }
15137
15138       /* Ask user only if there are some breakpoints to delete.  */
15139       if (!from_tty
15140           || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15141         {
15142           ALL_BREAKPOINTS_SAFE (b, b_tmp)
15143             if (is_tracepoint (b) && user_breakpoint_p (b))
15144               delete_breakpoint (b);
15145         }
15146     }
15147   else
15148     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15149 }
15150
15151 /* Helper function for trace_pass_command.  */
15152
15153 static void
15154 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15155 {
15156   tp->pass_count = count;
15157   observer_notify_breakpoint_modified (&tp->base);
15158   if (from_tty)
15159     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15160                      tp->base.number, count);
15161 }
15162
15163 /* Set passcount for tracepoint.
15164
15165    First command argument is passcount, second is tracepoint number.
15166    If tracepoint number omitted, apply to most recently defined.
15167    Also accepts special argument "all".  */
15168
15169 static void
15170 trace_pass_command (char *args, int from_tty)
15171 {
15172   struct tracepoint *t1;
15173   unsigned int count;
15174
15175   if (args == 0 || *args == 0)
15176     error (_("passcount command requires an "
15177              "argument (count + optional TP num)"));
15178
15179   count = strtoul (args, &args, 10);    /* Count comes first, then TP num.  */
15180
15181   args = skip_spaces (args);
15182   if (*args && strncasecmp (args, "all", 3) == 0)
15183     {
15184       struct breakpoint *b;
15185
15186       args += 3;                        /* Skip special argument "all".  */
15187       if (*args)
15188         error (_("Junk at end of arguments."));
15189
15190       ALL_TRACEPOINTS (b)
15191       {
15192         t1 = (struct tracepoint *) b;
15193         trace_pass_set_count (t1, count, from_tty);
15194       }
15195     }
15196   else if (*args == '\0')
15197     {
15198       t1 = get_tracepoint_by_number (&args, NULL);
15199       if (t1)
15200         trace_pass_set_count (t1, count, from_tty);
15201     }
15202   else
15203     {
15204       struct get_number_or_range_state state;
15205
15206       init_number_or_range (&state, args);
15207       while (!state.finished)
15208         {
15209           t1 = get_tracepoint_by_number (&args, &state);
15210           if (t1)
15211             trace_pass_set_count (t1, count, from_tty);
15212         }
15213     }
15214 }
15215
15216 struct tracepoint *
15217 get_tracepoint (int num)
15218 {
15219   struct breakpoint *t;
15220
15221   ALL_TRACEPOINTS (t)
15222     if (t->number == num)
15223       return (struct tracepoint *) t;
15224
15225   return NULL;
15226 }
15227
15228 /* Find the tracepoint with the given target-side number (which may be
15229    different from the tracepoint number after disconnecting and
15230    reconnecting).  */
15231
15232 struct tracepoint *
15233 get_tracepoint_by_number_on_target (int num)
15234 {
15235   struct breakpoint *b;
15236
15237   ALL_TRACEPOINTS (b)
15238     {
15239       struct tracepoint *t = (struct tracepoint *) b;
15240
15241       if (t->number_on_target == num)
15242         return t;
15243     }
15244
15245   return NULL;
15246 }
15247
15248 /* Utility: parse a tracepoint number and look it up in the list.
15249    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15250    If the argument is missing, the most recent tracepoint
15251    (tracepoint_count) is returned.  */
15252
15253 struct tracepoint *
15254 get_tracepoint_by_number (char **arg,
15255                           struct get_number_or_range_state *state)
15256 {
15257   struct breakpoint *t;
15258   int tpnum;
15259   char *instring = arg == NULL ? NULL : *arg;
15260
15261   if (state)
15262     {
15263       gdb_assert (!state->finished);
15264       tpnum = get_number_or_range (state);
15265     }
15266   else if (arg == NULL || *arg == NULL || ! **arg)
15267     tpnum = tracepoint_count;
15268   else
15269     tpnum = get_number (arg);
15270
15271   if (tpnum <= 0)
15272     {
15273       if (instring && *instring)
15274         printf_filtered (_("bad tracepoint number at or near '%s'\n"), 
15275                          instring);
15276       else
15277         printf_filtered (_("No previous tracepoint\n"));
15278       return NULL;
15279     }
15280
15281   ALL_TRACEPOINTS (t)
15282     if (t->number == tpnum)
15283     {
15284       return (struct tracepoint *) t;
15285     }
15286
15287   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15288   return NULL;
15289 }
15290
15291 void
15292 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15293 {
15294   if (b->thread != -1)
15295     fprintf_unfiltered (fp, " thread %d", b->thread);
15296
15297   if (b->task != 0)
15298     fprintf_unfiltered (fp, " task %d", b->task);
15299
15300   fprintf_unfiltered (fp, "\n");
15301 }
15302
15303 /* Save information on user settable breakpoints (watchpoints, etc) to
15304    a new script file named FILENAME.  If FILTER is non-NULL, call it
15305    on each breakpoint and only include the ones for which it returns
15306    non-zero.  */
15307
15308 static void
15309 save_breakpoints (char *filename, int from_tty,
15310                   int (*filter) (const struct breakpoint *))
15311 {
15312   struct breakpoint *tp;
15313   int any = 0;
15314   struct cleanup *cleanup;
15315   struct ui_file *fp;
15316   int extra_trace_bits = 0;
15317
15318   if (filename == 0 || *filename == 0)
15319     error (_("Argument required (file name in which to save)"));
15320
15321   /* See if we have anything to save.  */
15322   ALL_BREAKPOINTS (tp)
15323   {
15324     /* Skip internal and momentary breakpoints.  */
15325     if (!user_breakpoint_p (tp))
15326       continue;
15327
15328     /* If we have a filter, only save the breakpoints it accepts.  */
15329     if (filter && !filter (tp))
15330       continue;
15331
15332     any = 1;
15333
15334     if (is_tracepoint (tp))
15335       {
15336         extra_trace_bits = 1;
15337
15338         /* We can stop searching.  */
15339         break;
15340       }
15341   }
15342
15343   if (!any)
15344     {
15345       warning (_("Nothing to save."));
15346       return;
15347     }
15348
15349   filename = tilde_expand (filename);
15350   cleanup = make_cleanup (xfree, filename);
15351   fp = gdb_fopen (filename, "w");
15352   if (!fp)
15353     error (_("Unable to open file '%s' for saving (%s)"),
15354            filename, safe_strerror (errno));
15355   make_cleanup_ui_file_delete (fp);
15356
15357   if (extra_trace_bits)
15358     save_trace_state_variables (fp);
15359
15360   ALL_BREAKPOINTS (tp)
15361   {
15362     /* Skip internal and momentary breakpoints.  */
15363     if (!user_breakpoint_p (tp))
15364       continue;
15365
15366     /* If we have a filter, only save the breakpoints it accepts.  */
15367     if (filter && !filter (tp))
15368       continue;
15369
15370     tp->ops->print_recreate (tp, fp);
15371
15372     /* Note, we can't rely on tp->number for anything, as we can't
15373        assume the recreated breakpoint numbers will match.  Use $bpnum
15374        instead.  */
15375
15376     if (tp->cond_string)
15377       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15378
15379     if (tp->ignore_count)
15380       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15381
15382     if (tp->type != bp_dprintf && tp->commands)
15383       {
15384         struct gdb_exception exception;
15385
15386         fprintf_unfiltered (fp, "  commands\n");
15387         
15388         ui_out_redirect (current_uiout, fp);
15389         TRY
15390           {
15391             print_command_lines (current_uiout, tp->commands->commands, 2);
15392           }
15393         CATCH (ex, RETURN_MASK_ALL)
15394           {
15395             ui_out_redirect (current_uiout, NULL);
15396             throw_exception (ex);
15397           }
15398         END_CATCH
15399
15400         ui_out_redirect (current_uiout, NULL);
15401         fprintf_unfiltered (fp, "  end\n");
15402       }
15403
15404     if (tp->enable_state == bp_disabled)
15405       fprintf_unfiltered (fp, "disable $bpnum\n");
15406
15407     /* If this is a multi-location breakpoint, check if the locations
15408        should be individually disabled.  Watchpoint locations are
15409        special, and not user visible.  */
15410     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15411       {
15412         struct bp_location *loc;
15413         int n = 1;
15414
15415         for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15416           if (!loc->enabled)
15417             fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15418       }
15419   }
15420
15421   if (extra_trace_bits && *default_collect)
15422     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15423
15424   if (from_tty)
15425     printf_filtered (_("Saved to file '%s'.\n"), filename);
15426   do_cleanups (cleanup);
15427 }
15428
15429 /* The `save breakpoints' command.  */
15430
15431 static void
15432 save_breakpoints_command (char *args, int from_tty)
15433 {
15434   save_breakpoints (args, from_tty, NULL);
15435 }
15436
15437 /* The `save tracepoints' command.  */
15438
15439 static void
15440 save_tracepoints_command (char *args, int from_tty)
15441 {
15442   save_breakpoints (args, from_tty, is_tracepoint);
15443 }
15444
15445 /* Create a vector of all tracepoints.  */
15446
15447 VEC(breakpoint_p) *
15448 all_tracepoints (void)
15449 {
15450   VEC(breakpoint_p) *tp_vec = 0;
15451   struct breakpoint *tp;
15452
15453   ALL_TRACEPOINTS (tp)
15454   {
15455     VEC_safe_push (breakpoint_p, tp_vec, tp);
15456   }
15457
15458   return tp_vec;
15459 }
15460
15461 \f
15462 /* This help string is used for the break, hbreak, tbreak and thbreak
15463    commands.  It is defined as a macro to prevent duplication.
15464    COMMAND should be a string constant containing the name of the
15465    command.  */
15466 #define BREAK_ARGS_HELP(command) \
15467 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15468 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15469 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15470 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15471 `-probe-dtrace' (for a DTrace probe).\n\
15472 LOCATION may be a line number, function name, or \"*\" and an address.\n\
15473 If a line number is specified, break at start of code for that line.\n\
15474 If a function is specified, break at start of code for that function.\n\
15475 If an address is specified, break at that exact address.\n\
15476 With no LOCATION, uses current execution address of the selected\n\
15477 stack frame.  This is useful for breaking on return to a stack frame.\n\
15478 \n\
15479 THREADNUM is the number from \"info threads\".\n\
15480 CONDITION is a boolean expression.\n\
15481 \n\
15482 Multiple breakpoints at one place are permitted, and useful if their\n\
15483 conditions are different.\n\
15484 \n\
15485 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15486
15487 /* List of subcommands for "catch".  */
15488 static struct cmd_list_element *catch_cmdlist;
15489
15490 /* List of subcommands for "tcatch".  */
15491 static struct cmd_list_element *tcatch_cmdlist;
15492
15493 void
15494 add_catch_command (char *name, char *docstring,
15495                    cmd_sfunc_ftype *sfunc,
15496                    completer_ftype *completer,
15497                    void *user_data_catch,
15498                    void *user_data_tcatch)
15499 {
15500   struct cmd_list_element *command;
15501
15502   command = add_cmd (name, class_breakpoint, NULL, docstring,
15503                      &catch_cmdlist);
15504   set_cmd_sfunc (command, sfunc);
15505   set_cmd_context (command, user_data_catch);
15506   set_cmd_completer (command, completer);
15507
15508   command = add_cmd (name, class_breakpoint, NULL, docstring,
15509                      &tcatch_cmdlist);
15510   set_cmd_sfunc (command, sfunc);
15511   set_cmd_context (command, user_data_tcatch);
15512   set_cmd_completer (command, completer);
15513 }
15514
15515 static void
15516 save_command (char *arg, int from_tty)
15517 {
15518   printf_unfiltered (_("\"save\" must be followed by "
15519                        "the name of a save subcommand.\n"));
15520   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15521 }
15522
15523 struct breakpoint *
15524 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15525                           void *data)
15526 {
15527   struct breakpoint *b, *b_tmp;
15528
15529   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15530     {
15531       if ((*callback) (b, data))
15532         return b;
15533     }
15534
15535   return NULL;
15536 }
15537
15538 /* Zero if any of the breakpoint's locations could be a location where
15539    functions have been inlined, nonzero otherwise.  */
15540
15541 static int
15542 is_non_inline_function (struct breakpoint *b)
15543 {
15544   /* The shared library event breakpoint is set on the address of a
15545      non-inline function.  */
15546   if (b->type == bp_shlib_event)
15547     return 1;
15548
15549   return 0;
15550 }
15551
15552 /* Nonzero if the specified PC cannot be a location where functions
15553    have been inlined.  */
15554
15555 int
15556 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15557                            const struct target_waitstatus *ws)
15558 {
15559   struct breakpoint *b;
15560   struct bp_location *bl;
15561
15562   ALL_BREAKPOINTS (b)
15563     {
15564       if (!is_non_inline_function (b))
15565         continue;
15566
15567       for (bl = b->loc; bl != NULL; bl = bl->next)
15568         {
15569           if (!bl->shlib_disabled
15570               && bpstat_check_location (bl, aspace, pc, ws))
15571             return 1;
15572         }
15573     }
15574
15575   return 0;
15576 }
15577
15578 /* Remove any references to OBJFILE which is going to be freed.  */
15579
15580 void
15581 breakpoint_free_objfile (struct objfile *objfile)
15582 {
15583   struct bp_location **locp, *loc;
15584
15585   ALL_BP_LOCATIONS (loc, locp)
15586     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15587       loc->symtab = NULL;
15588 }
15589
15590 void
15591 initialize_breakpoint_ops (void)
15592 {
15593   static int initialized = 0;
15594
15595   struct breakpoint_ops *ops;
15596
15597   if (initialized)
15598     return;
15599   initialized = 1;
15600
15601   /* The breakpoint_ops structure to be inherit by all kinds of
15602      breakpoints (real breakpoints, i.e., user "break" breakpoints,
15603      internal and momentary breakpoints, etc.).  */
15604   ops = &bkpt_base_breakpoint_ops;
15605   *ops = base_breakpoint_ops;
15606   ops->re_set = bkpt_re_set;
15607   ops->insert_location = bkpt_insert_location;
15608   ops->remove_location = bkpt_remove_location;
15609   ops->breakpoint_hit = bkpt_breakpoint_hit;
15610   ops->create_sals_from_address = bkpt_create_sals_from_address;
15611   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
15612   ops->decode_linespec = bkpt_decode_linespec;
15613
15614   /* The breakpoint_ops structure to be used in regular breakpoints.  */
15615   ops = &bkpt_breakpoint_ops;
15616   *ops = bkpt_base_breakpoint_ops;
15617   ops->re_set = bkpt_re_set;
15618   ops->resources_needed = bkpt_resources_needed;
15619   ops->print_it = bkpt_print_it;
15620   ops->print_mention = bkpt_print_mention;
15621   ops->print_recreate = bkpt_print_recreate;
15622
15623   /* Ranged breakpoints.  */
15624   ops = &ranged_breakpoint_ops;
15625   *ops = bkpt_breakpoint_ops;
15626   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
15627   ops->resources_needed = resources_needed_ranged_breakpoint;
15628   ops->print_it = print_it_ranged_breakpoint;
15629   ops->print_one = print_one_ranged_breakpoint;
15630   ops->print_one_detail = print_one_detail_ranged_breakpoint;
15631   ops->print_mention = print_mention_ranged_breakpoint;
15632   ops->print_recreate = print_recreate_ranged_breakpoint;
15633
15634   /* Internal breakpoints.  */
15635   ops = &internal_breakpoint_ops;
15636   *ops = bkpt_base_breakpoint_ops;
15637   ops->re_set = internal_bkpt_re_set;
15638   ops->check_status = internal_bkpt_check_status;
15639   ops->print_it = internal_bkpt_print_it;
15640   ops->print_mention = internal_bkpt_print_mention;
15641
15642   /* Momentary breakpoints.  */
15643   ops = &momentary_breakpoint_ops;
15644   *ops = bkpt_base_breakpoint_ops;
15645   ops->re_set = momentary_bkpt_re_set;
15646   ops->check_status = momentary_bkpt_check_status;
15647   ops->print_it = momentary_bkpt_print_it;
15648   ops->print_mention = momentary_bkpt_print_mention;
15649
15650   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
15651   ops = &longjmp_breakpoint_ops;
15652   *ops = momentary_breakpoint_ops;
15653   ops->dtor = longjmp_bkpt_dtor;
15654
15655   /* Probe breakpoints.  */
15656   ops = &bkpt_probe_breakpoint_ops;
15657   *ops = bkpt_breakpoint_ops;
15658   ops->insert_location = bkpt_probe_insert_location;
15659   ops->remove_location = bkpt_probe_remove_location;
15660   ops->create_sals_from_address = bkpt_probe_create_sals_from_address;
15661   ops->decode_linespec = bkpt_probe_decode_linespec;
15662
15663   /* Watchpoints.  */
15664   ops = &watchpoint_breakpoint_ops;
15665   *ops = base_breakpoint_ops;
15666   ops->dtor = dtor_watchpoint;
15667   ops->re_set = re_set_watchpoint;
15668   ops->insert_location = insert_watchpoint;
15669   ops->remove_location = remove_watchpoint;
15670   ops->breakpoint_hit = breakpoint_hit_watchpoint;
15671   ops->check_status = check_status_watchpoint;
15672   ops->resources_needed = resources_needed_watchpoint;
15673   ops->works_in_software_mode = works_in_software_mode_watchpoint;
15674   ops->print_it = print_it_watchpoint;
15675   ops->print_mention = print_mention_watchpoint;
15676   ops->print_recreate = print_recreate_watchpoint;
15677   ops->explains_signal = explains_signal_watchpoint;
15678
15679   /* Masked watchpoints.  */
15680   ops = &masked_watchpoint_breakpoint_ops;
15681   *ops = watchpoint_breakpoint_ops;
15682   ops->insert_location = insert_masked_watchpoint;
15683   ops->remove_location = remove_masked_watchpoint;
15684   ops->resources_needed = resources_needed_masked_watchpoint;
15685   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
15686   ops->print_it = print_it_masked_watchpoint;
15687   ops->print_one_detail = print_one_detail_masked_watchpoint;
15688   ops->print_mention = print_mention_masked_watchpoint;
15689   ops->print_recreate = print_recreate_masked_watchpoint;
15690
15691   /* Tracepoints.  */
15692   ops = &tracepoint_breakpoint_ops;
15693   *ops = base_breakpoint_ops;
15694   ops->re_set = tracepoint_re_set;
15695   ops->breakpoint_hit = tracepoint_breakpoint_hit;
15696   ops->print_one_detail = tracepoint_print_one_detail;
15697   ops->print_mention = tracepoint_print_mention;
15698   ops->print_recreate = tracepoint_print_recreate;
15699   ops->create_sals_from_address = tracepoint_create_sals_from_address;
15700   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
15701   ops->decode_linespec = tracepoint_decode_linespec;
15702
15703   /* Probe tracepoints.  */
15704   ops = &tracepoint_probe_breakpoint_ops;
15705   *ops = tracepoint_breakpoint_ops;
15706   ops->create_sals_from_address = tracepoint_probe_create_sals_from_address;
15707   ops->decode_linespec = tracepoint_probe_decode_linespec;
15708
15709   /* Static tracepoints with marker (`-m').  */
15710   ops = &strace_marker_breakpoint_ops;
15711   *ops = tracepoint_breakpoint_ops;
15712   ops->create_sals_from_address = strace_marker_create_sals_from_address;
15713   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
15714   ops->decode_linespec = strace_marker_decode_linespec;
15715
15716   /* Fork catchpoints.  */
15717   ops = &catch_fork_breakpoint_ops;
15718   *ops = base_breakpoint_ops;
15719   ops->insert_location = insert_catch_fork;
15720   ops->remove_location = remove_catch_fork;
15721   ops->breakpoint_hit = breakpoint_hit_catch_fork;
15722   ops->print_it = print_it_catch_fork;
15723   ops->print_one = print_one_catch_fork;
15724   ops->print_mention = print_mention_catch_fork;
15725   ops->print_recreate = print_recreate_catch_fork;
15726
15727   /* Vfork catchpoints.  */
15728   ops = &catch_vfork_breakpoint_ops;
15729   *ops = base_breakpoint_ops;
15730   ops->insert_location = insert_catch_vfork;
15731   ops->remove_location = remove_catch_vfork;
15732   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
15733   ops->print_it = print_it_catch_vfork;
15734   ops->print_one = print_one_catch_vfork;
15735   ops->print_mention = print_mention_catch_vfork;
15736   ops->print_recreate = print_recreate_catch_vfork;
15737
15738   /* Exec catchpoints.  */
15739   ops = &catch_exec_breakpoint_ops;
15740   *ops = base_breakpoint_ops;
15741   ops->dtor = dtor_catch_exec;
15742   ops->insert_location = insert_catch_exec;
15743   ops->remove_location = remove_catch_exec;
15744   ops->breakpoint_hit = breakpoint_hit_catch_exec;
15745   ops->print_it = print_it_catch_exec;
15746   ops->print_one = print_one_catch_exec;
15747   ops->print_mention = print_mention_catch_exec;
15748   ops->print_recreate = print_recreate_catch_exec;
15749
15750   /* Solib-related catchpoints.  */
15751   ops = &catch_solib_breakpoint_ops;
15752   *ops = base_breakpoint_ops;
15753   ops->dtor = dtor_catch_solib;
15754   ops->insert_location = insert_catch_solib;
15755   ops->remove_location = remove_catch_solib;
15756   ops->breakpoint_hit = breakpoint_hit_catch_solib;
15757   ops->check_status = check_status_catch_solib;
15758   ops->print_it = print_it_catch_solib;
15759   ops->print_one = print_one_catch_solib;
15760   ops->print_mention = print_mention_catch_solib;
15761   ops->print_recreate = print_recreate_catch_solib;
15762
15763   ops = &dprintf_breakpoint_ops;
15764   *ops = bkpt_base_breakpoint_ops;
15765   ops->re_set = dprintf_re_set;
15766   ops->resources_needed = bkpt_resources_needed;
15767   ops->print_it = bkpt_print_it;
15768   ops->print_mention = bkpt_print_mention;
15769   ops->print_recreate = dprintf_print_recreate;
15770   ops->after_condition_true = dprintf_after_condition_true;
15771   ops->breakpoint_hit = dprintf_breakpoint_hit;
15772 }
15773
15774 /* Chain containing all defined "enable breakpoint" subcommands.  */
15775
15776 static struct cmd_list_element *enablebreaklist = NULL;
15777
15778 void
15779 _initialize_breakpoint (void)
15780 {
15781   struct cmd_list_element *c;
15782
15783   initialize_breakpoint_ops ();
15784
15785   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
15786   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
15787   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
15788
15789   breakpoint_objfile_key
15790     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
15791
15792   breakpoint_chain = 0;
15793   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
15794      before a breakpoint is set.  */
15795   breakpoint_count = 0;
15796
15797   tracepoint_count = 0;
15798
15799   add_com ("ignore", class_breakpoint, ignore_command, _("\
15800 Set ignore-count of breakpoint number N to COUNT.\n\
15801 Usage is `ignore N COUNT'."));
15802   if (xdb_commands)
15803     add_com_alias ("bc", "ignore", class_breakpoint, 1);
15804
15805   add_com ("commands", class_breakpoint, commands_command, _("\
15806 Set commands to be executed when a breakpoint is hit.\n\
15807 Give breakpoint number as argument after \"commands\".\n\
15808 With no argument, the targeted breakpoint is the last one set.\n\
15809 The commands themselves follow starting on the next line.\n\
15810 Type a line containing \"end\" to indicate the end of them.\n\
15811 Give \"silent\" as the first line to make the breakpoint silent;\n\
15812 then no output is printed when it is hit, except what the commands print."));
15813
15814   c = add_com ("condition", class_breakpoint, condition_command, _("\
15815 Specify breakpoint number N to break only if COND is true.\n\
15816 Usage is `condition N COND', where N is an integer and COND is an\n\
15817 expression to be evaluated whenever breakpoint N is reached."));
15818   set_cmd_completer (c, condition_completer);
15819
15820   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
15821 Set a temporary breakpoint.\n\
15822 Like \"break\" except the breakpoint is only temporary,\n\
15823 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
15824 by using \"enable delete\" on the breakpoint number.\n\
15825 \n"
15826 BREAK_ARGS_HELP ("tbreak")));
15827   set_cmd_completer (c, location_completer);
15828
15829   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
15830 Set a hardware assisted breakpoint.\n\
15831 Like \"break\" except the breakpoint requires hardware support,\n\
15832 some target hardware may not have this support.\n\
15833 \n"
15834 BREAK_ARGS_HELP ("hbreak")));
15835   set_cmd_completer (c, location_completer);
15836
15837   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
15838 Set a temporary hardware assisted breakpoint.\n\
15839 Like \"hbreak\" except the breakpoint is only temporary,\n\
15840 so it will be deleted when hit.\n\
15841 \n"
15842 BREAK_ARGS_HELP ("thbreak")));
15843   set_cmd_completer (c, location_completer);
15844
15845   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
15846 Enable some breakpoints.\n\
15847 Give breakpoint numbers (separated by spaces) as arguments.\n\
15848 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15849 This is used to cancel the effect of the \"disable\" command.\n\
15850 With a subcommand you can enable temporarily."),
15851                   &enablelist, "enable ", 1, &cmdlist);
15852   if (xdb_commands)
15853     add_com ("ab", class_breakpoint, enable_command, _("\
15854 Enable some breakpoints.\n\
15855 Give breakpoint numbers (separated by spaces) as arguments.\n\
15856 With no subcommand, breakpoints are enabled until you command otherwise.\n\
15857 This is used to cancel the effect of the \"disable\" command.\n\
15858 With a subcommand you can enable temporarily."));
15859
15860   add_com_alias ("en", "enable", class_breakpoint, 1);
15861
15862   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
15863 Enable some breakpoints.\n\
15864 Give breakpoint numbers (separated by spaces) as arguments.\n\
15865 This is used to cancel the effect of the \"disable\" command.\n\
15866 May be abbreviated to simply \"enable\".\n"),
15867                    &enablebreaklist, "enable breakpoints ", 1, &enablelist);
15868
15869   add_cmd ("once", no_class, enable_once_command, _("\
15870 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15871 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15872            &enablebreaklist);
15873
15874   add_cmd ("delete", no_class, enable_delete_command, _("\
15875 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15876 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15877            &enablebreaklist);
15878
15879   add_cmd ("count", no_class, enable_count_command, _("\
15880 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15881 If a breakpoint is hit while enabled in this fashion,\n\
15882 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15883            &enablebreaklist);
15884
15885   add_cmd ("delete", no_class, enable_delete_command, _("\
15886 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
15887 If a breakpoint is hit while enabled in this fashion, it is deleted."),
15888            &enablelist);
15889
15890   add_cmd ("once", no_class, enable_once_command, _("\
15891 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
15892 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
15893            &enablelist);
15894
15895   add_cmd ("count", no_class, enable_count_command, _("\
15896 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
15897 If a breakpoint is hit while enabled in this fashion,\n\
15898 the count is decremented; when it reaches zero, the breakpoint is disabled."),
15899            &enablelist);
15900
15901   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
15902 Disable some breakpoints.\n\
15903 Arguments are breakpoint numbers with spaces in between.\n\
15904 To disable all breakpoints, give no argument.\n\
15905 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
15906                   &disablelist, "disable ", 1, &cmdlist);
15907   add_com_alias ("dis", "disable", class_breakpoint, 1);
15908   add_com_alias ("disa", "disable", class_breakpoint, 1);
15909   if (xdb_commands)
15910     add_com ("sb", class_breakpoint, disable_command, _("\
15911 Disable some breakpoints.\n\
15912 Arguments are breakpoint numbers with spaces in between.\n\
15913 To disable all breakpoints, give no argument.\n\
15914 A disabled breakpoint is not forgotten, but has no effect until re-enabled."));
15915
15916   add_cmd ("breakpoints", class_alias, disable_command, _("\
15917 Disable some breakpoints.\n\
15918 Arguments are breakpoint numbers with spaces in between.\n\
15919 To disable all breakpoints, give no argument.\n\
15920 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
15921 This command may be abbreviated \"disable\"."),
15922            &disablelist);
15923
15924   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
15925 Delete some breakpoints or auto-display expressions.\n\
15926 Arguments are breakpoint numbers with spaces in between.\n\
15927 To delete all breakpoints, give no argument.\n\
15928 \n\
15929 Also a prefix command for deletion of other GDB objects.\n\
15930 The \"unset\" command is also an alias for \"delete\"."),
15931                   &deletelist, "delete ", 1, &cmdlist);
15932   add_com_alias ("d", "delete", class_breakpoint, 1);
15933   add_com_alias ("del", "delete", class_breakpoint, 1);
15934   if (xdb_commands)
15935     add_com ("db", class_breakpoint, delete_command, _("\
15936 Delete some breakpoints.\n\
15937 Arguments are breakpoint numbers with spaces in between.\n\
15938 To delete all breakpoints, give no argument.\n"));
15939
15940   add_cmd ("breakpoints", class_alias, delete_command, _("\
15941 Delete some breakpoints or auto-display expressions.\n\
15942 Arguments are breakpoint numbers with spaces in between.\n\
15943 To delete all breakpoints, give no argument.\n\
15944 This command may be abbreviated \"delete\"."),
15945            &deletelist);
15946
15947   add_com ("clear", class_breakpoint, clear_command, _("\
15948 Clear breakpoint at specified line or function.\n\
15949 Argument may be line number, function name, or \"*\" and an address.\n\
15950 If line number is specified, all breakpoints in that line are cleared.\n\
15951 If function is specified, breakpoints at beginning of function are cleared.\n\
15952 If an address is specified, breakpoints at that address are cleared.\n\
15953 \n\
15954 With no argument, clears all breakpoints in the line that the selected frame\n\
15955 is executing in.\n\
15956 \n\
15957 See also the \"delete\" command which clears breakpoints by number."));
15958   add_com_alias ("cl", "clear", class_breakpoint, 1);
15959
15960   c = add_com ("break", class_breakpoint, break_command, _("\
15961 Set breakpoint at specified line or function.\n"
15962 BREAK_ARGS_HELP ("break")));
15963   set_cmd_completer (c, location_completer);
15964
15965   add_com_alias ("b", "break", class_run, 1);
15966   add_com_alias ("br", "break", class_run, 1);
15967   add_com_alias ("bre", "break", class_run, 1);
15968   add_com_alias ("brea", "break", class_run, 1);
15969
15970   if (xdb_commands)
15971    add_com_alias ("ba", "break", class_breakpoint, 1);
15972
15973   if (dbx_commands)
15974     {
15975       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
15976 Break in function/address or break at a line in the current file."),
15977                              &stoplist, "stop ", 1, &cmdlist);
15978       add_cmd ("in", class_breakpoint, stopin_command,
15979                _("Break in function or address."), &stoplist);
15980       add_cmd ("at", class_breakpoint, stopat_command,
15981                _("Break at a line in the current file."), &stoplist);
15982       add_com ("status", class_info, breakpoints_info, _("\
15983 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
15984 The \"Type\" column indicates one of:\n\
15985 \tbreakpoint     - normal breakpoint\n\
15986 \twatchpoint     - watchpoint\n\
15987 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
15988 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
15989 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
15990 address and file/line number respectively.\n\
15991 \n\
15992 Convenience variable \"$_\" and default examine address for \"x\"\n\
15993 are set to the address of the last breakpoint listed unless the command\n\
15994 is prefixed with \"server \".\n\n\
15995 Convenience variable \"$bpnum\" contains the number of the last\n\
15996 breakpoint set."));
15997     }
15998
15999   add_info ("breakpoints", breakpoints_info, _("\
16000 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16001 The \"Type\" column indicates one of:\n\
16002 \tbreakpoint     - normal breakpoint\n\
16003 \twatchpoint     - watchpoint\n\
16004 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16005 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16006 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16007 address and file/line number respectively.\n\
16008 \n\
16009 Convenience variable \"$_\" and default examine address for \"x\"\n\
16010 are set to the address of the last breakpoint listed unless the command\n\
16011 is prefixed with \"server \".\n\n\
16012 Convenience variable \"$bpnum\" contains the number of the last\n\
16013 breakpoint set."));
16014
16015   add_info_alias ("b", "breakpoints", 1);
16016
16017   if (xdb_commands)
16018     add_com ("lb", class_breakpoint, breakpoints_info, _("\
16019 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16020 The \"Type\" column indicates one of:\n\
16021 \tbreakpoint     - normal breakpoint\n\
16022 \twatchpoint     - watchpoint\n\
16023 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16024 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16025 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16026 address and file/line number respectively.\n\
16027 \n\
16028 Convenience variable \"$_\" and default examine address for \"x\"\n\
16029 are set to the address of the last breakpoint listed unless the command\n\
16030 is prefixed with \"server \".\n\n\
16031 Convenience variable \"$bpnum\" contains the number of the last\n\
16032 breakpoint set."));
16033
16034   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16035 Status of all breakpoints, or breakpoint number NUMBER.\n\
16036 The \"Type\" column indicates one of:\n\
16037 \tbreakpoint     - normal breakpoint\n\
16038 \twatchpoint     - watchpoint\n\
16039 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16040 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16041 \tuntil          - internal breakpoint used by the \"until\" command\n\
16042 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16043 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16044 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16045 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16046 address and file/line number respectively.\n\
16047 \n\
16048 Convenience variable \"$_\" and default examine address for \"x\"\n\
16049 are set to the address of the last breakpoint listed unless the command\n\
16050 is prefixed with \"server \".\n\n\
16051 Convenience variable \"$bpnum\" contains the number of the last\n\
16052 breakpoint set."),
16053            &maintenanceinfolist);
16054
16055   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16056 Set catchpoints to catch events."),
16057                   &catch_cmdlist, "catch ",
16058                   0/*allow-unknown*/, &cmdlist);
16059
16060   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16061 Set temporary catchpoints to catch events."),
16062                   &tcatch_cmdlist, "tcatch ",
16063                   0/*allow-unknown*/, &cmdlist);
16064
16065   add_catch_command ("fork", _("Catch calls to fork."),
16066                      catch_fork_command_1,
16067                      NULL,
16068                      (void *) (uintptr_t) catch_fork_permanent,
16069                      (void *) (uintptr_t) catch_fork_temporary);
16070   add_catch_command ("vfork", _("Catch calls to vfork."),
16071                      catch_fork_command_1,
16072                      NULL,
16073                      (void *) (uintptr_t) catch_vfork_permanent,
16074                      (void *) (uintptr_t) catch_vfork_temporary);
16075   add_catch_command ("exec", _("Catch calls to exec."),
16076                      catch_exec_command_1,
16077                      NULL,
16078                      CATCH_PERMANENT,
16079                      CATCH_TEMPORARY);
16080   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16081 Usage: catch load [REGEX]\n\
16082 If REGEX is given, only stop for libraries matching the regular expression."),
16083                      catch_load_command_1,
16084                      NULL,
16085                      CATCH_PERMANENT,
16086                      CATCH_TEMPORARY);
16087   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16088 Usage: catch unload [REGEX]\n\
16089 If REGEX is given, only stop for libraries matching the regular expression."),
16090                      catch_unload_command_1,
16091                      NULL,
16092                      CATCH_PERMANENT,
16093                      CATCH_TEMPORARY);
16094
16095   c = add_com ("watch", class_breakpoint, watch_command, _("\
16096 Set a watchpoint for an expression.\n\
16097 Usage: watch [-l|-location] EXPRESSION\n\
16098 A watchpoint stops execution of your program whenever the value of\n\
16099 an expression changes.\n\
16100 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16101 the memory to which it refers."));
16102   set_cmd_completer (c, expression_completer);
16103
16104   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16105 Set a read watchpoint for an expression.\n\
16106 Usage: rwatch [-l|-location] EXPRESSION\n\
16107 A watchpoint stops execution of your program whenever the value of\n\
16108 an expression is read.\n\
16109 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16110 the memory to which it refers."));
16111   set_cmd_completer (c, expression_completer);
16112
16113   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16114 Set a watchpoint for an expression.\n\
16115 Usage: awatch [-l|-location] EXPRESSION\n\
16116 A watchpoint stops execution of your program whenever the value of\n\
16117 an expression is either read or written.\n\
16118 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16119 the memory to which it refers."));
16120   set_cmd_completer (c, expression_completer);
16121
16122   add_info ("watchpoints", watchpoints_info, _("\
16123 Status of specified watchpoints (all watchpoints if no argument)."));
16124
16125   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16126      respond to changes - contrary to the description.  */
16127   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16128                             &can_use_hw_watchpoints, _("\
16129 Set debugger's willingness to use watchpoint hardware."), _("\
16130 Show debugger's willingness to use watchpoint hardware."), _("\
16131 If zero, gdb will not use hardware for new watchpoints, even if\n\
16132 such is available.  (However, any hardware watchpoints that were\n\
16133 created before setting this to nonzero, will continue to use watchpoint\n\
16134 hardware.)"),
16135                             NULL,
16136                             show_can_use_hw_watchpoints,
16137                             &setlist, &showlist);
16138
16139   can_use_hw_watchpoints = 1;
16140
16141   /* Tracepoint manipulation commands.  */
16142
16143   c = add_com ("trace", class_breakpoint, trace_command, _("\
16144 Set a tracepoint at specified line or function.\n\
16145 \n"
16146 BREAK_ARGS_HELP ("trace") "\n\
16147 Do \"help tracepoints\" for info on other tracepoint commands."));
16148   set_cmd_completer (c, location_completer);
16149
16150   add_com_alias ("tp", "trace", class_alias, 0);
16151   add_com_alias ("tr", "trace", class_alias, 1);
16152   add_com_alias ("tra", "trace", class_alias, 1);
16153   add_com_alias ("trac", "trace", class_alias, 1);
16154
16155   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16156 Set a fast tracepoint at specified line or function.\n\
16157 \n"
16158 BREAK_ARGS_HELP ("ftrace") "\n\
16159 Do \"help tracepoints\" for info on other tracepoint commands."));
16160   set_cmd_completer (c, location_completer);
16161
16162   c = add_com ("strace", class_breakpoint, strace_command, _("\
16163 Set a static tracepoint at specified line, function or marker.\n\
16164 \n\
16165 strace [LOCATION] [if CONDITION]\n\
16166 LOCATION may be a line number, function name, \"*\" and an address,\n\
16167 or -m MARKER_ID.\n\
16168 If a line number is specified, probe the marker at start of code\n\
16169 for that line.  If a function is specified, probe the marker at start\n\
16170 of code for that function.  If an address is specified, probe the marker\n\
16171 at that exact address.  If a marker id is specified, probe the marker\n\
16172 with that name.  With no LOCATION, uses current execution address of\n\
16173 the selected stack frame.\n\
16174 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16175 This collects arbitrary user data passed in the probe point call to the\n\
16176 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16177 by printing the $_sdata variable like any other convenience variable.\n\
16178 \n\
16179 CONDITION is a boolean expression.\n\
16180 \n\
16181 Multiple tracepoints at one place are permitted, and useful if their\n\
16182 conditions are different.\n\
16183 \n\
16184 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16185 Do \"help tracepoints\" for info on other tracepoint commands."));
16186   set_cmd_completer (c, location_completer);
16187
16188   add_info ("tracepoints", tracepoints_info, _("\
16189 Status of specified tracepoints (all tracepoints if no argument).\n\
16190 Convenience variable \"$tpnum\" contains the number of the\n\
16191 last tracepoint set."));
16192
16193   add_info_alias ("tp", "tracepoints", 1);
16194
16195   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16196 Delete specified tracepoints.\n\
16197 Arguments are tracepoint numbers, separated by spaces.\n\
16198 No argument means delete all tracepoints."),
16199            &deletelist);
16200   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16201
16202   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16203 Disable specified tracepoints.\n\
16204 Arguments are tracepoint numbers, separated by spaces.\n\
16205 No argument means disable all tracepoints."),
16206            &disablelist);
16207   deprecate_cmd (c, "disable");
16208
16209   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16210 Enable specified tracepoints.\n\
16211 Arguments are tracepoint numbers, separated by spaces.\n\
16212 No argument means enable all tracepoints."),
16213            &enablelist);
16214   deprecate_cmd (c, "enable");
16215
16216   add_com ("passcount", class_trace, trace_pass_command, _("\
16217 Set the passcount for a tracepoint.\n\
16218 The trace will end when the tracepoint has been passed 'count' times.\n\
16219 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16220 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16221
16222   add_prefix_cmd ("save", class_breakpoint, save_command,
16223                   _("Save breakpoint definitions as a script."),
16224                   &save_cmdlist, "save ",
16225                   0/*allow-unknown*/, &cmdlist);
16226
16227   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16228 Save current breakpoint definitions as a script.\n\
16229 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16230 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16231 session to restore them."),
16232                &save_cmdlist);
16233   set_cmd_completer (c, filename_completer);
16234
16235   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16236 Save current tracepoint definitions as a script.\n\
16237 Use the 'source' command in another debug session to restore them."),
16238                &save_cmdlist);
16239   set_cmd_completer (c, filename_completer);
16240
16241   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16242   deprecate_cmd (c, "save tracepoints");
16243
16244   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16245 Breakpoint specific settings\n\
16246 Configure various breakpoint-specific variables such as\n\
16247 pending breakpoint behavior"),
16248                   &breakpoint_set_cmdlist, "set breakpoint ",
16249                   0/*allow-unknown*/, &setlist);
16250   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16251 Breakpoint specific settings\n\
16252 Configure various breakpoint-specific variables such as\n\
16253 pending breakpoint behavior"),
16254                   &breakpoint_show_cmdlist, "show breakpoint ",
16255                   0/*allow-unknown*/, &showlist);
16256
16257   add_setshow_auto_boolean_cmd ("pending", no_class,
16258                                 &pending_break_support, _("\
16259 Set debugger's behavior regarding pending breakpoints."), _("\
16260 Show debugger's behavior regarding pending breakpoints."), _("\
16261 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16262 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16263 an error.  If auto, an unrecognized breakpoint location results in a\n\
16264 user-query to see if a pending breakpoint should be created."),
16265                                 NULL,
16266                                 show_pending_break_support,
16267                                 &breakpoint_set_cmdlist,
16268                                 &breakpoint_show_cmdlist);
16269
16270   pending_break_support = AUTO_BOOLEAN_AUTO;
16271
16272   add_setshow_boolean_cmd ("auto-hw", no_class,
16273                            &automatic_hardware_breakpoints, _("\
16274 Set automatic usage of hardware breakpoints."), _("\
16275 Show automatic usage of hardware breakpoints."), _("\
16276 If set, the debugger will automatically use hardware breakpoints for\n\
16277 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16278 a warning will be emitted for such breakpoints."),
16279                            NULL,
16280                            show_automatic_hardware_breakpoints,
16281                            &breakpoint_set_cmdlist,
16282                            &breakpoint_show_cmdlist);
16283
16284   add_setshow_boolean_cmd ("always-inserted", class_support,
16285                            &always_inserted_mode, _("\
16286 Set mode for inserting breakpoints."), _("\
16287 Show mode for inserting breakpoints."), _("\
16288 When this mode is on, breakpoints are inserted immediately as soon as\n\
16289 they're created, kept inserted even when execution stops, and removed\n\
16290 only when the user deletes them.  When this mode is off (the default),\n\
16291 breakpoints are inserted only when execution continues, and removed\n\
16292 when execution stops."),
16293                                 NULL,
16294                                 &show_always_inserted_mode,
16295                                 &breakpoint_set_cmdlist,
16296                                 &breakpoint_show_cmdlist);
16297
16298   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16299                         condition_evaluation_enums,
16300                         &condition_evaluation_mode_1, _("\
16301 Set mode of breakpoint condition evaluation."), _("\
16302 Show mode of breakpoint condition evaluation."), _("\
16303 When this is set to \"host\", breakpoint conditions will be\n\
16304 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16305 breakpoint conditions will be downloaded to the target (if the target\n\
16306 supports such feature) and conditions will be evaluated on the target's side.\n\
16307 If this is set to \"auto\" (default), this will be automatically set to\n\
16308 \"target\" if it supports condition evaluation, otherwise it will\n\
16309 be set to \"gdb\""),
16310                            &set_condition_evaluation_mode,
16311                            &show_condition_evaluation_mode,
16312                            &breakpoint_set_cmdlist,
16313                            &breakpoint_show_cmdlist);
16314
16315   add_com ("break-range", class_breakpoint, break_range_command, _("\
16316 Set a breakpoint for an address range.\n\
16317 break-range START-LOCATION, END-LOCATION\n\
16318 where START-LOCATION and END-LOCATION can be one of the following:\n\
16319   LINENUM, for that line in the current file,\n\
16320   FILE:LINENUM, for that line in that file,\n\
16321   +OFFSET, for that number of lines after the current line\n\
16322            or the start of the range\n\
16323   FUNCTION, for the first line in that function,\n\
16324   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16325   *ADDRESS, for the instruction at that address.\n\
16326 \n\
16327 The breakpoint will stop execution of the inferior whenever it executes\n\
16328 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16329 range (including START-LOCATION and END-LOCATION)."));
16330
16331   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16332 Set a dynamic printf at specified line or function.\n\
16333 dprintf location,format string,arg1,arg2,...\n\
16334 location may be a line number, function name, or \"*\" and an address.\n\
16335 If a line number is specified, break at start of code for that line.\n\
16336 If a function is specified, break at start of code for that function."));
16337   set_cmd_completer (c, location_completer);
16338
16339   add_setshow_enum_cmd ("dprintf-style", class_support,
16340                         dprintf_style_enums, &dprintf_style, _("\
16341 Set the style of usage for dynamic printf."), _("\
16342 Show the style of usage for dynamic printf."), _("\
16343 This setting chooses how GDB will do a dynamic printf.\n\
16344 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16345 console, as with the \"printf\" command.\n\
16346 If the value is \"call\", the print is done by calling a function in your\n\
16347 program; by default printf(), but you can choose a different function or\n\
16348 output stream by setting dprintf-function and dprintf-channel."),
16349                         update_dprintf_commands, NULL,
16350                         &setlist, &showlist);
16351
16352   dprintf_function = xstrdup ("printf");
16353   add_setshow_string_cmd ("dprintf-function", class_support,
16354                           &dprintf_function, _("\
16355 Set the function to use for dynamic printf"), _("\
16356 Show the function to use for dynamic printf"), NULL,
16357                           update_dprintf_commands, NULL,
16358                           &setlist, &showlist);
16359
16360   dprintf_channel = xstrdup ("");
16361   add_setshow_string_cmd ("dprintf-channel", class_support,
16362                           &dprintf_channel, _("\
16363 Set the channel to use for dynamic printf"), _("\
16364 Show the channel to use for dynamic printf"), NULL,
16365                           update_dprintf_commands, NULL,
16366                           &setlist, &showlist);
16367
16368   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16369                            &disconnected_dprintf, _("\
16370 Set whether dprintf continues after GDB disconnects."), _("\
16371 Show whether dprintf continues after GDB disconnects."), _("\
16372 Use this to let dprintf commands continue to hit and produce output\n\
16373 even if GDB disconnects or detaches from the target."),
16374                            NULL,
16375                            NULL,
16376                            &setlist, &showlist);
16377
16378   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16379 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16380 (target agent only) This is useful for formatted output in user-defined commands."));
16381
16382   automatic_hardware_breakpoints = 1;
16383
16384   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16385   observer_attach_thread_exit (remove_threaded_breakpoints);
16386 }
This page took 0.922925 seconds and 4 git commands to generate.