xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/breakpoint.c (revision bdc22b2e01993381dcefeff2bc9b56ca75a4235c)
1 /* Everything about breakpoints, for GDB.
2 
3    Copyright (C) 1986-2016 Free Software Foundation, Inc.
4 
5    This file is part of GDB.
6 
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation; either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 #include "defs.h"
21 #include "arch-utils.h"
22 #include <ctype.h>
23 #include "hashtab.h"
24 #include "symtab.h"
25 #include "frame.h"
26 #include "breakpoint.h"
27 #include "tracepoint.h"
28 #include "gdbtypes.h"
29 #include "expression.h"
30 #include "gdbcore.h"
31 #include "gdbcmd.h"
32 #include "value.h"
33 #include "command.h"
34 #include "inferior.h"
35 #include "infrun.h"
36 #include "gdbthread.h"
37 #include "target.h"
38 #include "language.h"
39 #include "gdb-demangle.h"
40 #include "filenames.h"
41 #include "annotate.h"
42 #include "symfile.h"
43 #include "objfiles.h"
44 #include "source.h"
45 #include "linespec.h"
46 #include "completer.h"
47 #include "gdb.h"
48 #include "ui-out.h"
49 #include "cli/cli-script.h"
50 #include "block.h"
51 #include "solib.h"
52 #include "solist.h"
53 #include "observer.h"
54 #include "memattr.h"
55 #include "ada-lang.h"
56 #include "top.h"
57 #include "valprint.h"
58 #include "jit.h"
59 #include "parser-defs.h"
60 #include "gdb_regex.h"
61 #include "probe.h"
62 #include "cli/cli-utils.h"
63 #include "continuations.h"
64 #include "stack.h"
65 #include "skip.h"
66 #include "ax-gdb.h"
67 #include "dummy-frame.h"
68 #include "interps.h"
69 #include "format.h"
70 #include "location.h"
71 #include "thread-fsm.h"
72 #include "tid-parse.h"
73 
74 /* readline include files */
75 #include "readline/readline.h"
76 #include "readline/history.h"
77 
78 /* readline defines this.  */
79 #undef savestring
80 
81 #include "mi/mi-common.h"
82 #include "extension.h"
83 
84 /* Enums for exception-handling support.  */
85 enum exception_event_kind
86 {
87   EX_EVENT_THROW,
88   EX_EVENT_RETHROW,
89   EX_EVENT_CATCH
90 };
91 
92 /* Prototypes for local functions.  */
93 
94 static void enable_delete_command (char *, int);
95 
96 static void enable_once_command (char *, int);
97 
98 static void enable_count_command (char *, int);
99 
100 static void disable_command (char *, int);
101 
102 static void enable_command (char *, int);
103 
104 static void map_breakpoint_numbers (char *, void (*) (struct breakpoint *,
105 						      void *),
106 				    void *);
107 
108 static void ignore_command (char *, int);
109 
110 static int breakpoint_re_set_one (void *);
111 
112 static void breakpoint_re_set_default (struct breakpoint *);
113 
114 static void
115   create_sals_from_location_default (const struct event_location *location,
116 				     struct linespec_result *canonical,
117 				     enum bptype type_wanted);
118 
119 static void create_breakpoints_sal_default (struct gdbarch *,
120 					    struct linespec_result *,
121 					    char *, char *, enum bptype,
122 					    enum bpdisp, int, int,
123 					    int,
124 					    const struct breakpoint_ops *,
125 					    int, int, int, unsigned);
126 
127 static void decode_location_default (struct breakpoint *b,
128 				     const struct event_location *location,
129 				     struct program_space *search_pspace,
130 				     struct symtabs_and_lines *sals);
131 
132 static void clear_command (char *, int);
133 
134 static void catch_command (char *, int);
135 
136 static int can_use_hardware_watchpoint (struct value *);
137 
138 static void break_command_1 (char *, int, int);
139 
140 static void mention (struct breakpoint *);
141 
142 static struct breakpoint *set_raw_breakpoint_without_location (struct gdbarch *,
143 							       enum bptype,
144 							       const struct breakpoint_ops *);
145 static struct bp_location *add_location_to_breakpoint (struct breakpoint *,
146 						       const struct symtab_and_line *);
147 
148 /* This function is used in gdbtk sources and thus can not be made
149    static.  */
150 struct breakpoint *set_raw_breakpoint (struct gdbarch *gdbarch,
151 				       struct symtab_and_line,
152 				       enum bptype,
153 				       const struct breakpoint_ops *);
154 
155 static struct breakpoint *
156   momentary_breakpoint_from_master (struct breakpoint *orig,
157 				    enum bptype type,
158 				    const struct breakpoint_ops *ops,
159 				    int loc_enabled);
160 
161 static void breakpoint_adjustment_warning (CORE_ADDR, CORE_ADDR, int, int);
162 
163 static CORE_ADDR adjust_breakpoint_address (struct gdbarch *gdbarch,
164 					    CORE_ADDR bpaddr,
165                                             enum bptype bptype);
166 
167 static void describe_other_breakpoints (struct gdbarch *,
168 					struct program_space *, CORE_ADDR,
169 					struct obj_section *, int);
170 
171 static int watchpoint_locations_match (struct bp_location *loc1,
172 				       struct bp_location *loc2);
173 
174 static int breakpoint_location_address_match (struct bp_location *bl,
175 					      struct address_space *aspace,
176 					      CORE_ADDR addr);
177 
178 static int breakpoint_location_address_range_overlap (struct bp_location *,
179 						      struct address_space *,
180 						      CORE_ADDR, int);
181 
182 static void breakpoints_info (char *, int);
183 
184 static void watchpoints_info (char *, int);
185 
186 static int breakpoint_1 (char *, int,
187 			 int (*) (const struct breakpoint *));
188 
189 static int breakpoint_cond_eval (void *);
190 
191 static void cleanup_executing_breakpoints (void *);
192 
193 static void commands_command (char *, int);
194 
195 static void condition_command (char *, int);
196 
197 static int remove_breakpoint (struct bp_location *);
198 static int remove_breakpoint_1 (struct bp_location *, enum remove_bp_reason);
199 
200 static enum print_stop_action print_bp_stop_message (bpstat bs);
201 
202 static int watchpoint_check (void *);
203 
204 static void maintenance_info_breakpoints (char *, int);
205 
206 static int hw_breakpoint_used_count (void);
207 
208 static int hw_watchpoint_use_count (struct breakpoint *);
209 
210 static int hw_watchpoint_used_count_others (struct breakpoint *except,
211 					    enum bptype type,
212 					    int *other_type_used);
213 
214 static void hbreak_command (char *, int);
215 
216 static void thbreak_command (char *, int);
217 
218 static void enable_breakpoint_disp (struct breakpoint *, enum bpdisp,
219 				    int count);
220 
221 static void stop_command (char *arg, int from_tty);
222 
223 static void stopin_command (char *arg, int from_tty);
224 
225 static void stopat_command (char *arg, int from_tty);
226 
227 static void tcatch_command (char *arg, int from_tty);
228 
229 static void free_bp_location (struct bp_location *loc);
230 static void incref_bp_location (struct bp_location *loc);
231 static void decref_bp_location (struct bp_location **loc);
232 
233 static struct bp_location *allocate_bp_location (struct breakpoint *bpt);
234 
235 /* update_global_location_list's modes of operation wrt to whether to
236    insert locations now.  */
237 enum ugll_insert_mode
238 {
239   /* Don't insert any breakpoint locations into the inferior, only
240      remove already-inserted locations that no longer should be
241      inserted.  Functions that delete a breakpoint or breakpoints
242      should specify this mode, so that deleting a breakpoint doesn't
243      have the side effect of inserting the locations of other
244      breakpoints that are marked not-inserted, but should_be_inserted
245      returns true on them.
246 
247      This behavior is useful is situations close to tear-down -- e.g.,
248      after an exec, while the target still has execution, but
249      breakpoint shadows of the previous executable image should *NOT*
250      be restored to the new image; or before detaching, where the
251      target still has execution and wants to delete breakpoints from
252      GDB's lists, and all breakpoints had already been removed from
253      the inferior.  */
254   UGLL_DONT_INSERT,
255 
256   /* May insert breakpoints iff breakpoints_should_be_inserted_now
257      claims breakpoints should be inserted now.  */
258   UGLL_MAY_INSERT,
259 
260   /* Insert locations now, irrespective of
261      breakpoints_should_be_inserted_now.  E.g., say all threads are
262      stopped right now, and the user did "continue".  We need to
263      insert breakpoints _before_ resuming the target, but
264      UGLL_MAY_INSERT wouldn't insert them, because
265      breakpoints_should_be_inserted_now returns false at that point,
266      as no thread is running yet.  */
267   UGLL_INSERT
268 };
269 
270 static void update_global_location_list (enum ugll_insert_mode);
271 
272 static void update_global_location_list_nothrow (enum ugll_insert_mode);
273 
274 static int is_hardware_watchpoint (const struct breakpoint *bpt);
275 
276 static void insert_breakpoint_locations (void);
277 
278 static void tracepoints_info (char *, int);
279 
280 static void delete_trace_command (char *, int);
281 
282 static void enable_trace_command (char *, int);
283 
284 static void disable_trace_command (char *, int);
285 
286 static void trace_pass_command (char *, int);
287 
288 static void set_tracepoint_count (int num);
289 
290 static int is_masked_watchpoint (const struct breakpoint *b);
291 
292 static struct bp_location **get_first_locp_gte_addr (CORE_ADDR address);
293 
294 /* Return 1 if B refers to a static tracepoint set by marker ("-m"), zero
295    otherwise.  */
296 
297 static int strace_marker_p (struct breakpoint *b);
298 
299 /* The breakpoint_ops structure to be inherited by all breakpoint_ops
300    that are implemented on top of software or hardware breakpoints
301    (user breakpoints, internal and momentary breakpoints, etc.).  */
302 static struct breakpoint_ops bkpt_base_breakpoint_ops;
303 
304 /* Internal breakpoints class type.  */
305 static struct breakpoint_ops internal_breakpoint_ops;
306 
307 /* Momentary breakpoints class type.  */
308 static struct breakpoint_ops momentary_breakpoint_ops;
309 
310 /* Momentary breakpoints for bp_longjmp and bp_exception class type.  */
311 static struct breakpoint_ops longjmp_breakpoint_ops;
312 
313 /* The breakpoint_ops structure to be used in regular user created
314    breakpoints.  */
315 struct breakpoint_ops bkpt_breakpoint_ops;
316 
317 /* Breakpoints set on probes.  */
318 static struct breakpoint_ops bkpt_probe_breakpoint_ops;
319 
320 /* Dynamic printf class type.  */
321 struct breakpoint_ops dprintf_breakpoint_ops;
322 
323 /* The style in which to perform a dynamic printf.  This is a user
324    option because different output options have different tradeoffs;
325    if GDB does the printing, there is better error handling if there
326    is a problem with any of the arguments, but using an inferior
327    function lets you have special-purpose printers and sending of
328    output to the same place as compiled-in print functions.  */
329 
330 static const char dprintf_style_gdb[] = "gdb";
331 static const char dprintf_style_call[] = "call";
332 static const char dprintf_style_agent[] = "agent";
333 static const char *const dprintf_style_enums[] = {
334   dprintf_style_gdb,
335   dprintf_style_call,
336   dprintf_style_agent,
337   NULL
338 };
339 static const char *dprintf_style = dprintf_style_gdb;
340 
341 /* The function to use for dynamic printf if the preferred style is to
342    call into the inferior.  The value is simply a string that is
343    copied into the command, so it can be anything that GDB can
344    evaluate to a callable address, not necessarily a function name.  */
345 
346 static char *dprintf_function = "";
347 
348 /* The channel to use for dynamic printf if the preferred style is to
349    call into the inferior; if a nonempty string, it will be passed to
350    the call as the first argument, with the format string as the
351    second.  As with the dprintf function, this can be anything that
352    GDB knows how to evaluate, so in addition to common choices like
353    "stderr", this could be an app-specific expression like
354    "mystreams[curlogger]".  */
355 
356 static char *dprintf_channel = "";
357 
358 /* True if dprintf commands should continue to operate even if GDB
359    has disconnected.  */
360 static int disconnected_dprintf = 1;
361 
362 /* A reference-counted struct command_line.  This lets multiple
363    breakpoints share a single command list.  */
364 struct counted_command_line
365 {
366   /* The reference count.  */
367   int refc;
368 
369   /* The command list.  */
370   struct command_line *commands;
371 };
372 
373 struct command_line *
374 breakpoint_commands (struct breakpoint *b)
375 {
376   return b->commands ? b->commands->commands : NULL;
377 }
378 
379 /* Flag indicating that a command has proceeded the inferior past the
380    current breakpoint.  */
381 
382 static int breakpoint_proceeded;
383 
384 const char *
385 bpdisp_text (enum bpdisp disp)
386 {
387   /* NOTE: the following values are a part of MI protocol and
388      represent values of 'disp' field returned when inferior stops at
389      a breakpoint.  */
390   static const char * const bpdisps[] = {"del", "dstp", "dis", "keep"};
391 
392   return bpdisps[(int) disp];
393 }
394 
395 /* Prototypes for exported functions.  */
396 /* If FALSE, gdb will not use hardware support for watchpoints, even
397    if such is available.  */
398 static int can_use_hw_watchpoints;
399 
400 static void
401 show_can_use_hw_watchpoints (struct ui_file *file, int from_tty,
402 			     struct cmd_list_element *c,
403 			     const char *value)
404 {
405   fprintf_filtered (file,
406 		    _("Debugger's willingness to use "
407 		      "watchpoint hardware is %s.\n"),
408 		    value);
409 }
410 
411 /* If AUTO_BOOLEAN_FALSE, gdb will not attempt to create pending breakpoints.
412    If AUTO_BOOLEAN_TRUE, gdb will automatically create pending breakpoints
413    for unrecognized breakpoint locations.
414    If AUTO_BOOLEAN_AUTO, gdb will query when breakpoints are unrecognized.  */
415 static enum auto_boolean pending_break_support;
416 static void
417 show_pending_break_support (struct ui_file *file, int from_tty,
418 			    struct cmd_list_element *c,
419 			    const char *value)
420 {
421   fprintf_filtered (file,
422 		    _("Debugger's behavior regarding "
423 		      "pending breakpoints is %s.\n"),
424 		    value);
425 }
426 
427 /* If 1, gdb will automatically use hardware breakpoints for breakpoints
428    set with "break" but falling in read-only memory.
429    If 0, gdb will warn about such breakpoints, but won't automatically
430    use hardware breakpoints.  */
431 static int automatic_hardware_breakpoints;
432 static void
433 show_automatic_hardware_breakpoints (struct ui_file *file, int from_tty,
434 				     struct cmd_list_element *c,
435 				     const char *value)
436 {
437   fprintf_filtered (file,
438 		    _("Automatic usage of hardware breakpoints is %s.\n"),
439 		    value);
440 }
441 
442 /* If on, GDB keeps breakpoints inserted even if the inferior is
443    stopped, and immediately inserts any new breakpoints as soon as
444    they're created.  If off (default), GDB keeps breakpoints off of
445    the target as long as possible.  That is, it delays inserting
446    breakpoints until the next resume, and removes them again when the
447    target fully stops.  This is a bit safer in case GDB crashes while
448    processing user input.  */
449 static int always_inserted_mode = 0;
450 
451 static void
452 show_always_inserted_mode (struct ui_file *file, int from_tty,
453 		     struct cmd_list_element *c, const char *value)
454 {
455   fprintf_filtered (file, _("Always inserted breakpoint mode is %s.\n"),
456 		    value);
457 }
458 
459 /* See breakpoint.h.  */
460 
461 int
462 breakpoints_should_be_inserted_now (void)
463 {
464   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
465     {
466       /* If breakpoints are global, they should be inserted even if no
467 	 thread under gdb's control is running, or even if there are
468 	 no threads under GDB's control yet.  */
469       return 1;
470     }
471   else if (target_has_execution)
472     {
473       struct thread_info *tp;
474 
475       if (always_inserted_mode)
476 	{
477 	  /* The user wants breakpoints inserted even if all threads
478 	     are stopped.  */
479 	  return 1;
480 	}
481 
482       if (threads_are_executing ())
483 	return 1;
484 
485       /* Don't remove breakpoints yet if, even though all threads are
486 	 stopped, we still have events to process.  */
487       ALL_NON_EXITED_THREADS (tp)
488 	if (tp->resumed
489 	    && tp->suspend.waitstatus_pending_p)
490 	  return 1;
491     }
492   return 0;
493 }
494 
495 static const char condition_evaluation_both[] = "host or target";
496 
497 /* Modes for breakpoint condition evaluation.  */
498 static const char condition_evaluation_auto[] = "auto";
499 static const char condition_evaluation_host[] = "host";
500 static const char condition_evaluation_target[] = "target";
501 static const char *const condition_evaluation_enums[] = {
502   condition_evaluation_auto,
503   condition_evaluation_host,
504   condition_evaluation_target,
505   NULL
506 };
507 
508 /* Global that holds the current mode for breakpoint condition evaluation.  */
509 static const char *condition_evaluation_mode_1 = condition_evaluation_auto;
510 
511 /* Global that we use to display information to the user (gets its value from
512    condition_evaluation_mode_1.  */
513 static const char *condition_evaluation_mode = condition_evaluation_auto;
514 
515 /* Translate a condition evaluation mode MODE into either "host"
516    or "target".  This is used mostly to translate from "auto" to the
517    real setting that is being used.  It returns the translated
518    evaluation mode.  */
519 
520 static const char *
521 translate_condition_evaluation_mode (const char *mode)
522 {
523   if (mode == condition_evaluation_auto)
524     {
525       if (target_supports_evaluation_of_breakpoint_conditions ())
526 	return condition_evaluation_target;
527       else
528 	return condition_evaluation_host;
529     }
530   else
531     return mode;
532 }
533 
534 /* Discovers what condition_evaluation_auto translates to.  */
535 
536 static const char *
537 breakpoint_condition_evaluation_mode (void)
538 {
539   return translate_condition_evaluation_mode (condition_evaluation_mode);
540 }
541 
542 /* Return true if GDB should evaluate breakpoint conditions or false
543    otherwise.  */
544 
545 static int
546 gdb_evaluates_breakpoint_condition_p (void)
547 {
548   const char *mode = breakpoint_condition_evaluation_mode ();
549 
550   return (mode == condition_evaluation_host);
551 }
552 
553 void _initialize_breakpoint (void);
554 
555 /* Are we executing breakpoint commands?  */
556 static int executing_breakpoint_commands;
557 
558 /* Are overlay event breakpoints enabled? */
559 static int overlay_events_enabled;
560 
561 /* See description in breakpoint.h. */
562 int target_exact_watchpoints = 0;
563 
564 /* Walk the following statement or block through all breakpoints.
565    ALL_BREAKPOINTS_SAFE does so even if the statement deletes the
566    current breakpoint.  */
567 
568 #define ALL_BREAKPOINTS(B)  for (B = breakpoint_chain; B; B = B->next)
569 
570 #define ALL_BREAKPOINTS_SAFE(B,TMP)	\
571 	for (B = breakpoint_chain;	\
572 	     B ? (TMP=B->next, 1): 0;	\
573 	     B = TMP)
574 
575 /* Similar iterator for the low-level breakpoints.  SAFE variant is
576    not provided so update_global_location_list must not be called
577    while executing the block of ALL_BP_LOCATIONS.  */
578 
579 #define ALL_BP_LOCATIONS(B,BP_TMP)					\
580 	for (BP_TMP = bp_location;					\
581 	     BP_TMP < bp_location + bp_location_count && (B = *BP_TMP);	\
582 	     BP_TMP++)
583 
584 /* Iterates through locations with address ADDRESS for the currently selected
585    program space.  BP_LOCP_TMP points to each object.  BP_LOCP_START points
586    to where the loop should start from.
587    If BP_LOCP_START is a NULL pointer, the macro automatically seeks the
588    appropriate location to start with.  */
589 
590 #define ALL_BP_LOCATIONS_AT_ADDR(BP_LOCP_TMP, BP_LOCP_START, ADDRESS)	\
591 	for (BP_LOCP_START = BP_LOCP_START == NULL ? get_first_locp_gte_addr (ADDRESS) : BP_LOCP_START, \
592 	     BP_LOCP_TMP = BP_LOCP_START;				\
593 	     BP_LOCP_START						\
594 	     && (BP_LOCP_TMP < bp_location + bp_location_count		\
595 	     && (*BP_LOCP_TMP)->address == ADDRESS);			\
596 	     BP_LOCP_TMP++)
597 
598 /* Iterator for tracepoints only.  */
599 
600 #define ALL_TRACEPOINTS(B)  \
601   for (B = breakpoint_chain; B; B = B->next)  \
602     if (is_tracepoint (B))
603 
604 /* Chains of all breakpoints defined.  */
605 
606 struct breakpoint *breakpoint_chain;
607 
608 /* Array is sorted by bp_location_compare - primarily by the ADDRESS.  */
609 
610 static struct bp_location **bp_location;
611 
612 /* Number of elements of BP_LOCATION.  */
613 
614 static unsigned bp_location_count;
615 
616 /* Maximum alignment offset between bp_target_info.PLACED_ADDRESS and
617    ADDRESS for the current elements of BP_LOCATION which get a valid
618    result from bp_location_has_shadow.  You can use it for roughly
619    limiting the subrange of BP_LOCATION to scan for shadow bytes for
620    an address you need to read.  */
621 
622 static CORE_ADDR bp_location_placed_address_before_address_max;
623 
624 /* Maximum offset plus alignment between bp_target_info.PLACED_ADDRESS
625    + bp_target_info.SHADOW_LEN and ADDRESS for the current elements of
626    BP_LOCATION which get a valid result from bp_location_has_shadow.
627    You can use it for roughly limiting the subrange of BP_LOCATION to
628    scan for shadow bytes for an address you need to read.  */
629 
630 static CORE_ADDR bp_location_shadow_len_after_address_max;
631 
632 /* The locations that no longer correspond to any breakpoint, unlinked
633    from bp_location array, but for which a hit may still be reported
634    by a target.  */
635 VEC(bp_location_p) *moribund_locations = NULL;
636 
637 /* Number of last breakpoint made.  */
638 
639 static int breakpoint_count;
640 
641 /* The value of `breakpoint_count' before the last command that
642    created breakpoints.  If the last (break-like) command created more
643    than one breakpoint, then the difference between BREAKPOINT_COUNT
644    and PREV_BREAKPOINT_COUNT is more than one.  */
645 static int prev_breakpoint_count;
646 
647 /* Number of last tracepoint made.  */
648 
649 static int tracepoint_count;
650 
651 static struct cmd_list_element *breakpoint_set_cmdlist;
652 static struct cmd_list_element *breakpoint_show_cmdlist;
653 struct cmd_list_element *save_cmdlist;
654 
655 /* See declaration at breakpoint.h.  */
656 
657 struct breakpoint *
658 breakpoint_find_if (int (*func) (struct breakpoint *b, void *d),
659 		    void *user_data)
660 {
661   struct breakpoint *b = NULL;
662 
663   ALL_BREAKPOINTS (b)
664     {
665       if (func (b, user_data) != 0)
666 	break;
667     }
668 
669   return b;
670 }
671 
672 /* Return whether a breakpoint is an active enabled breakpoint.  */
673 static int
674 breakpoint_enabled (struct breakpoint *b)
675 {
676   return (b->enable_state == bp_enabled);
677 }
678 
679 /* Set breakpoint count to NUM.  */
680 
681 static void
682 set_breakpoint_count (int num)
683 {
684   prev_breakpoint_count = breakpoint_count;
685   breakpoint_count = num;
686   set_internalvar_integer (lookup_internalvar ("bpnum"), num);
687 }
688 
689 /* Used by `start_rbreak_breakpoints' below, to record the current
690    breakpoint count before "rbreak" creates any breakpoint.  */
691 static int rbreak_start_breakpoint_count;
692 
693 /* Called at the start an "rbreak" command to record the first
694    breakpoint made.  */
695 
696 void
697 start_rbreak_breakpoints (void)
698 {
699   rbreak_start_breakpoint_count = breakpoint_count;
700 }
701 
702 /* Called at the end of an "rbreak" command to record the last
703    breakpoint made.  */
704 
705 void
706 end_rbreak_breakpoints (void)
707 {
708   prev_breakpoint_count = rbreak_start_breakpoint_count;
709 }
710 
711 /* Used in run_command to zero the hit count when a new run starts.  */
712 
713 void
714 clear_breakpoint_hit_counts (void)
715 {
716   struct breakpoint *b;
717 
718   ALL_BREAKPOINTS (b)
719     b->hit_count = 0;
720 }
721 
722 /* Allocate a new counted_command_line with reference count of 1.
723    The new structure owns COMMANDS.  */
724 
725 static struct counted_command_line *
726 alloc_counted_command_line (struct command_line *commands)
727 {
728   struct counted_command_line *result = XNEW (struct counted_command_line);
729 
730   result->refc = 1;
731   result->commands = commands;
732 
733   return result;
734 }
735 
736 /* Increment reference count.  This does nothing if CMD is NULL.  */
737 
738 static void
739 incref_counted_command_line (struct counted_command_line *cmd)
740 {
741   if (cmd)
742     ++cmd->refc;
743 }
744 
745 /* Decrement reference count.  If the reference count reaches 0,
746    destroy the counted_command_line.  Sets *CMDP to NULL.  This does
747    nothing if *CMDP is NULL.  */
748 
749 static void
750 decref_counted_command_line (struct counted_command_line **cmdp)
751 {
752   if (*cmdp)
753     {
754       if (--(*cmdp)->refc == 0)
755 	{
756 	  free_command_lines (&(*cmdp)->commands);
757 	  xfree (*cmdp);
758 	}
759       *cmdp = NULL;
760     }
761 }
762 
763 /* A cleanup function that calls decref_counted_command_line.  */
764 
765 static void
766 do_cleanup_counted_command_line (void *arg)
767 {
768   decref_counted_command_line ((struct counted_command_line **) arg);
769 }
770 
771 /* Create a cleanup that calls decref_counted_command_line on the
772    argument.  */
773 
774 static struct cleanup *
775 make_cleanup_decref_counted_command_line (struct counted_command_line **cmdp)
776 {
777   return make_cleanup (do_cleanup_counted_command_line, cmdp);
778 }
779 
780 
781 /* Return the breakpoint with the specified number, or NULL
782    if the number does not refer to an existing breakpoint.  */
783 
784 struct breakpoint *
785 get_breakpoint (int num)
786 {
787   struct breakpoint *b;
788 
789   ALL_BREAKPOINTS (b)
790     if (b->number == num)
791       return b;
792 
793   return NULL;
794 }
795 
796 
797 
798 /* Mark locations as "conditions have changed" in case the target supports
799    evaluating conditions on its side.  */
800 
801 static void
802 mark_breakpoint_modified (struct breakpoint *b)
803 {
804   struct bp_location *loc;
805 
806   /* This is only meaningful if the target is
807      evaluating conditions and if the user has
808      opted for condition evaluation on the target's
809      side.  */
810   if (gdb_evaluates_breakpoint_condition_p ()
811       || !target_supports_evaluation_of_breakpoint_conditions ())
812     return;
813 
814   if (!is_breakpoint (b))
815     return;
816 
817   for (loc = b->loc; loc; loc = loc->next)
818     loc->condition_changed = condition_modified;
819 }
820 
821 /* Mark location as "conditions have changed" in case the target supports
822    evaluating conditions on its side.  */
823 
824 static void
825 mark_breakpoint_location_modified (struct bp_location *loc)
826 {
827   /* This is only meaningful if the target is
828      evaluating conditions and if the user has
829      opted for condition evaluation on the target's
830      side.  */
831   if (gdb_evaluates_breakpoint_condition_p ()
832       || !target_supports_evaluation_of_breakpoint_conditions ())
833 
834     return;
835 
836   if (!is_breakpoint (loc->owner))
837     return;
838 
839   loc->condition_changed = condition_modified;
840 }
841 
842 /* Sets the condition-evaluation mode using the static global
843    condition_evaluation_mode.  */
844 
845 static void
846 set_condition_evaluation_mode (char *args, int from_tty,
847 			       struct cmd_list_element *c)
848 {
849   const char *old_mode, *new_mode;
850 
851   if ((condition_evaluation_mode_1 == condition_evaluation_target)
852       && !target_supports_evaluation_of_breakpoint_conditions ())
853     {
854       condition_evaluation_mode_1 = condition_evaluation_mode;
855       warning (_("Target does not support breakpoint condition evaluation.\n"
856 		 "Using host evaluation mode instead."));
857       return;
858     }
859 
860   new_mode = translate_condition_evaluation_mode (condition_evaluation_mode_1);
861   old_mode = translate_condition_evaluation_mode (condition_evaluation_mode);
862 
863   /* Flip the switch.  Flip it even if OLD_MODE == NEW_MODE as one of the
864      settings was "auto".  */
865   condition_evaluation_mode = condition_evaluation_mode_1;
866 
867   /* Only update the mode if the user picked a different one.  */
868   if (new_mode != old_mode)
869     {
870       struct bp_location *loc, **loc_tmp;
871       /* If the user switched to a different evaluation mode, we
872 	 need to synch the changes with the target as follows:
873 
874 	 "host" -> "target": Send all (valid) conditions to the target.
875 	 "target" -> "host": Remove all the conditions from the target.
876       */
877 
878       if (new_mode == condition_evaluation_target)
879 	{
880 	  /* Mark everything modified and synch conditions with the
881 	     target.  */
882 	  ALL_BP_LOCATIONS (loc, loc_tmp)
883 	    mark_breakpoint_location_modified (loc);
884   	}
885       else
886 	{
887 	  /* Manually mark non-duplicate locations to synch conditions
888 	     with the target.  We do this to remove all the conditions the
889 	     target knows about.  */
890 	  ALL_BP_LOCATIONS (loc, loc_tmp)
891 	    if (is_breakpoint (loc->owner) && loc->inserted)
892 	      loc->needs_update = 1;
893 	}
894 
895       /* Do the update.  */
896       update_global_location_list (UGLL_MAY_INSERT);
897     }
898 
899   return;
900 }
901 
902 /* Shows the current mode of breakpoint condition evaluation.  Explicitly shows
903    what "auto" is translating to.  */
904 
905 static void
906 show_condition_evaluation_mode (struct ui_file *file, int from_tty,
907 				struct cmd_list_element *c, const char *value)
908 {
909   if (condition_evaluation_mode == condition_evaluation_auto)
910     fprintf_filtered (file,
911 		      _("Breakpoint condition evaluation "
912 			"mode is %s (currently %s).\n"),
913 		      value,
914 		      breakpoint_condition_evaluation_mode ());
915   else
916     fprintf_filtered (file, _("Breakpoint condition evaluation mode is %s.\n"),
917 		      value);
918 }
919 
920 /* A comparison function for bp_location AP and BP that is used by
921    bsearch.  This comparison function only cares about addresses, unlike
922    the more general bp_location_compare function.  */
923 
924 static int
925 bp_location_compare_addrs (const void *ap, const void *bp)
926 {
927   const struct bp_location *a = *(const struct bp_location **) ap;
928   const struct bp_location *b = *(const struct bp_location **) bp;
929 
930   if (a->address == b->address)
931     return 0;
932   else
933     return ((a->address > b->address) - (a->address < b->address));
934 }
935 
936 /* Helper function to skip all bp_locations with addresses
937    less than ADDRESS.  It returns the first bp_location that
938    is greater than or equal to ADDRESS.  If none is found, just
939    return NULL.  */
940 
941 static struct bp_location **
942 get_first_locp_gte_addr (CORE_ADDR address)
943 {
944   struct bp_location dummy_loc;
945   struct bp_location *dummy_locp = &dummy_loc;
946   struct bp_location **locp_found = NULL;
947 
948   /* Initialize the dummy location's address field.  */
949   memset (&dummy_loc, 0, sizeof (struct bp_location));
950   dummy_loc.address = address;
951 
952   /* Find a close match to the first location at ADDRESS.  */
953   locp_found = ((struct bp_location **)
954 		bsearch (&dummy_locp, bp_location, bp_location_count,
955 			 sizeof (struct bp_location **),
956 			 bp_location_compare_addrs));
957 
958   /* Nothing was found, nothing left to do.  */
959   if (locp_found == NULL)
960     return NULL;
961 
962   /* We may have found a location that is at ADDRESS but is not the first in the
963      location's list.  Go backwards (if possible) and locate the first one.  */
964   while ((locp_found - 1) >= bp_location
965 	 && (*(locp_found - 1))->address == address)
966     locp_found--;
967 
968   return locp_found;
969 }
970 
971 void
972 set_breakpoint_condition (struct breakpoint *b, const char *exp,
973 			  int from_tty)
974 {
975   xfree (b->cond_string);
976   b->cond_string = NULL;
977 
978   if (is_watchpoint (b))
979     {
980       struct watchpoint *w = (struct watchpoint *) b;
981 
982       xfree (w->cond_exp);
983       w->cond_exp = NULL;
984     }
985   else
986     {
987       struct bp_location *loc;
988 
989       for (loc = b->loc; loc; loc = loc->next)
990 	{
991 	  xfree (loc->cond);
992 	  loc->cond = NULL;
993 
994 	  /* No need to free the condition agent expression
995 	     bytecode (if we have one).  We will handle this
996 	     when we go through update_global_location_list.  */
997 	}
998     }
999 
1000   if (*exp == 0)
1001     {
1002       if (from_tty)
1003 	printf_filtered (_("Breakpoint %d now unconditional.\n"), b->number);
1004     }
1005   else
1006     {
1007       const char *arg = exp;
1008 
1009       /* I don't know if it matters whether this is the string the user
1010 	 typed in or the decompiled expression.  */
1011       b->cond_string = xstrdup (arg);
1012       b->condition_not_parsed = 0;
1013 
1014       if (is_watchpoint (b))
1015 	{
1016 	  struct watchpoint *w = (struct watchpoint *) b;
1017 
1018 	  innermost_block = NULL;
1019 	  arg = exp;
1020 	  w->cond_exp = parse_exp_1 (&arg, 0, 0, 0);
1021 	  if (*arg)
1022 	    error (_("Junk at end of expression"));
1023 	  w->cond_exp_valid_block = innermost_block;
1024 	}
1025       else
1026 	{
1027 	  struct bp_location *loc;
1028 
1029 	  for (loc = b->loc; loc; loc = loc->next)
1030 	    {
1031 	      arg = exp;
1032 	      loc->cond =
1033 		parse_exp_1 (&arg, loc->address,
1034 			     block_for_pc (loc->address), 0);
1035 	      if (*arg)
1036 		error (_("Junk at end of expression"));
1037 	    }
1038 	}
1039     }
1040   mark_breakpoint_modified (b);
1041 
1042   observer_notify_breakpoint_modified (b);
1043 }
1044 
1045 /* Completion for the "condition" command.  */
1046 
1047 static VEC (char_ptr) *
1048 condition_completer (struct cmd_list_element *cmd,
1049 		     const char *text, const char *word)
1050 {
1051   const char *space;
1052 
1053   text = skip_spaces_const (text);
1054   space = skip_to_space_const (text);
1055   if (*space == '\0')
1056     {
1057       int len;
1058       struct breakpoint *b;
1059       VEC (char_ptr) *result = NULL;
1060 
1061       if (text[0] == '$')
1062 	{
1063 	  /* We don't support completion of history indices.  */
1064 	  if (isdigit (text[1]))
1065 	    return NULL;
1066 	  return complete_internalvar (&text[1]);
1067 	}
1068 
1069       /* We're completing the breakpoint number.  */
1070       len = strlen (text);
1071 
1072       ALL_BREAKPOINTS (b)
1073 	{
1074 	  char number[50];
1075 
1076 	  xsnprintf (number, sizeof (number), "%d", b->number);
1077 
1078 	  if (strncmp (number, text, len) == 0)
1079 	    VEC_safe_push (char_ptr, result, xstrdup (number));
1080 	}
1081 
1082       return result;
1083     }
1084 
1085   /* We're completing the expression part.  */
1086   text = skip_spaces_const (space);
1087   return expression_completer (cmd, text, word);
1088 }
1089 
1090 /* condition N EXP -- set break condition of breakpoint N to EXP.  */
1091 
1092 static void
1093 condition_command (char *arg, int from_tty)
1094 {
1095   struct breakpoint *b;
1096   char *p;
1097   int bnum;
1098 
1099   if (arg == 0)
1100     error_no_arg (_("breakpoint number"));
1101 
1102   p = arg;
1103   bnum = get_number (&p);
1104   if (bnum == 0)
1105     error (_("Bad breakpoint argument: '%s'"), arg);
1106 
1107   ALL_BREAKPOINTS (b)
1108     if (b->number == bnum)
1109       {
1110 	/* Check if this breakpoint has a "stop" method implemented in an
1111 	   extension language.  This method and conditions entered into GDB
1112 	   from the CLI are mutually exclusive.  */
1113 	const struct extension_language_defn *extlang
1114 	  = get_breakpoint_cond_ext_lang (b, EXT_LANG_NONE);
1115 
1116 	if (extlang != NULL)
1117 	  {
1118 	    error (_("Only one stop condition allowed.  There is currently"
1119 		     " a %s stop condition defined for this breakpoint."),
1120 		   ext_lang_capitalized_name (extlang));
1121 	  }
1122 	set_breakpoint_condition (b, p, from_tty);
1123 
1124 	if (is_breakpoint (b))
1125 	  update_global_location_list (UGLL_MAY_INSERT);
1126 
1127 	return;
1128       }
1129 
1130   error (_("No breakpoint number %d."), bnum);
1131 }
1132 
1133 /* Check that COMMAND do not contain commands that are suitable
1134    only for tracepoints and not suitable for ordinary breakpoints.
1135    Throw if any such commands is found.  */
1136 
1137 static void
1138 check_no_tracepoint_commands (struct command_line *commands)
1139 {
1140   struct command_line *c;
1141 
1142   for (c = commands; c; c = c->next)
1143     {
1144       int i;
1145 
1146       if (c->control_type == while_stepping_control)
1147 	error (_("The 'while-stepping' command can "
1148 		 "only be used for tracepoints"));
1149 
1150       for (i = 0; i < c->body_count; ++i)
1151 	check_no_tracepoint_commands ((c->body_list)[i]);
1152 
1153       /* Not that command parsing removes leading whitespace and comment
1154 	 lines and also empty lines.  So, we only need to check for
1155 	 command directly.  */
1156       if (strstr (c->line, "collect ") == c->line)
1157 	error (_("The 'collect' command can only be used for tracepoints"));
1158 
1159       if (strstr (c->line, "teval ") == c->line)
1160 	error (_("The 'teval' command can only be used for tracepoints"));
1161     }
1162 }
1163 
1164 /* Encapsulate tests for different types of tracepoints.  */
1165 
1166 static int
1167 is_tracepoint_type (enum bptype type)
1168 {
1169   return (type == bp_tracepoint
1170 	  || type == bp_fast_tracepoint
1171 	  || type == bp_static_tracepoint);
1172 }
1173 
1174 int
1175 is_tracepoint (const struct breakpoint *b)
1176 {
1177   return is_tracepoint_type (b->type);
1178 }
1179 
1180 /* A helper function that validates that COMMANDS are valid for a
1181    breakpoint.  This function will throw an exception if a problem is
1182    found.  */
1183 
1184 static void
1185 validate_commands_for_breakpoint (struct breakpoint *b,
1186 				  struct command_line *commands)
1187 {
1188   if (is_tracepoint (b))
1189     {
1190       struct tracepoint *t = (struct tracepoint *) b;
1191       struct command_line *c;
1192       struct command_line *while_stepping = 0;
1193 
1194       /* Reset the while-stepping step count.  The previous commands
1195          might have included a while-stepping action, while the new
1196          ones might not.  */
1197       t->step_count = 0;
1198 
1199       /* We need to verify that each top-level element of commands is
1200 	 valid for tracepoints, that there's at most one
1201 	 while-stepping element, and that the while-stepping's body
1202 	 has valid tracing commands excluding nested while-stepping.
1203 	 We also need to validate the tracepoint action line in the
1204 	 context of the tracepoint --- validate_actionline actually
1205 	 has side effects, like setting the tracepoint's
1206 	 while-stepping STEP_COUNT, in addition to checking if the
1207 	 collect/teval actions parse and make sense in the
1208 	 tracepoint's context.  */
1209       for (c = commands; c; c = c->next)
1210 	{
1211 	  if (c->control_type == while_stepping_control)
1212 	    {
1213 	      if (b->type == bp_fast_tracepoint)
1214 		error (_("The 'while-stepping' command "
1215 			 "cannot be used for fast tracepoint"));
1216 	      else if (b->type == bp_static_tracepoint)
1217 		error (_("The 'while-stepping' command "
1218 			 "cannot be used for static tracepoint"));
1219 
1220 	      if (while_stepping)
1221 		error (_("The 'while-stepping' command "
1222 			 "can be used only once"));
1223 	      else
1224 		while_stepping = c;
1225 	    }
1226 
1227 	  validate_actionline (c->line, b);
1228 	}
1229       if (while_stepping)
1230 	{
1231 	  struct command_line *c2;
1232 
1233 	  gdb_assert (while_stepping->body_count == 1);
1234 	  c2 = while_stepping->body_list[0];
1235 	  for (; c2; c2 = c2->next)
1236 	    {
1237 	      if (c2->control_type == while_stepping_control)
1238 		error (_("The 'while-stepping' command cannot be nested"));
1239 	    }
1240 	}
1241     }
1242   else
1243     {
1244       check_no_tracepoint_commands (commands);
1245     }
1246 }
1247 
1248 /* Return a vector of all the static tracepoints set at ADDR.  The
1249    caller is responsible for releasing the vector.  */
1250 
1251 VEC(breakpoint_p) *
1252 static_tracepoints_here (CORE_ADDR addr)
1253 {
1254   struct breakpoint *b;
1255   VEC(breakpoint_p) *found = 0;
1256   struct bp_location *loc;
1257 
1258   ALL_BREAKPOINTS (b)
1259     if (b->type == bp_static_tracepoint)
1260       {
1261 	for (loc = b->loc; loc; loc = loc->next)
1262 	  if (loc->address == addr)
1263 	    VEC_safe_push(breakpoint_p, found, b);
1264       }
1265 
1266   return found;
1267 }
1268 
1269 /* Set the command list of B to COMMANDS.  If breakpoint is tracepoint,
1270    validate that only allowed commands are included.  */
1271 
1272 void
1273 breakpoint_set_commands (struct breakpoint *b,
1274 			 struct command_line *commands)
1275 {
1276   validate_commands_for_breakpoint (b, commands);
1277 
1278   decref_counted_command_line (&b->commands);
1279   b->commands = alloc_counted_command_line (commands);
1280   observer_notify_breakpoint_modified (b);
1281 }
1282 
1283 /* Set the internal `silent' flag on the breakpoint.  Note that this
1284    is not the same as the "silent" that may appear in the breakpoint's
1285    commands.  */
1286 
1287 void
1288 breakpoint_set_silent (struct breakpoint *b, int silent)
1289 {
1290   int old_silent = b->silent;
1291 
1292   b->silent = silent;
1293   if (old_silent != silent)
1294     observer_notify_breakpoint_modified (b);
1295 }
1296 
1297 /* Set the thread for this breakpoint.  If THREAD is -1, make the
1298    breakpoint work for any thread.  */
1299 
1300 void
1301 breakpoint_set_thread (struct breakpoint *b, int thread)
1302 {
1303   int old_thread = b->thread;
1304 
1305   b->thread = thread;
1306   if (old_thread != thread)
1307     observer_notify_breakpoint_modified (b);
1308 }
1309 
1310 /* Set the task for this breakpoint.  If TASK is 0, make the
1311    breakpoint work for any task.  */
1312 
1313 void
1314 breakpoint_set_task (struct breakpoint *b, int task)
1315 {
1316   int old_task = b->task;
1317 
1318   b->task = task;
1319   if (old_task != task)
1320     observer_notify_breakpoint_modified (b);
1321 }
1322 
1323 void
1324 check_tracepoint_command (char *line, void *closure)
1325 {
1326   struct breakpoint *b = (struct breakpoint *) closure;
1327 
1328   validate_actionline (line, b);
1329 }
1330 
1331 /* A structure used to pass information through
1332    map_breakpoint_numbers.  */
1333 
1334 struct commands_info
1335 {
1336   /* True if the command was typed at a tty.  */
1337   int from_tty;
1338 
1339   /* The breakpoint range spec.  */
1340   char *arg;
1341 
1342   /* Non-NULL if the body of the commands are being read from this
1343      already-parsed command.  */
1344   struct command_line *control;
1345 
1346   /* The command lines read from the user, or NULL if they have not
1347      yet been read.  */
1348   struct counted_command_line *cmd;
1349 };
1350 
1351 /* A callback for map_breakpoint_numbers that sets the commands for
1352    commands_command.  */
1353 
1354 static void
1355 do_map_commands_command (struct breakpoint *b, void *data)
1356 {
1357   struct commands_info *info = (struct commands_info *) data;
1358 
1359   if (info->cmd == NULL)
1360     {
1361       struct command_line *l;
1362 
1363       if (info->control != NULL)
1364 	l = copy_command_lines (info->control->body_list[0]);
1365       else
1366 	{
1367 	  struct cleanup *old_chain;
1368 	  char *str;
1369 
1370 	  str = xstrprintf (_("Type commands for breakpoint(s) "
1371 			      "%s, one per line."),
1372 			    info->arg);
1373 
1374 	  old_chain = make_cleanup (xfree, str);
1375 
1376 	  l = read_command_lines (str,
1377 				  info->from_tty, 1,
1378 				  (is_tracepoint (b)
1379 				   ? check_tracepoint_command : 0),
1380 				  b);
1381 
1382 	  do_cleanups (old_chain);
1383 	}
1384 
1385       info->cmd = alloc_counted_command_line (l);
1386     }
1387 
1388   /* If a breakpoint was on the list more than once, we don't need to
1389      do anything.  */
1390   if (b->commands != info->cmd)
1391     {
1392       validate_commands_for_breakpoint (b, info->cmd->commands);
1393       incref_counted_command_line (info->cmd);
1394       decref_counted_command_line (&b->commands);
1395       b->commands = info->cmd;
1396       observer_notify_breakpoint_modified (b);
1397     }
1398 }
1399 
1400 static void
1401 commands_command_1 (char *arg, int from_tty,
1402 		    struct command_line *control)
1403 {
1404   struct cleanup *cleanups;
1405   struct commands_info info;
1406 
1407   info.from_tty = from_tty;
1408   info.control = control;
1409   info.cmd = NULL;
1410   /* If we read command lines from the user, then `info' will hold an
1411      extra reference to the commands that we must clean up.  */
1412   cleanups = make_cleanup_decref_counted_command_line (&info.cmd);
1413 
1414   if (arg == NULL || !*arg)
1415     {
1416       if (breakpoint_count - prev_breakpoint_count > 1)
1417 	arg = xstrprintf ("%d-%d", prev_breakpoint_count + 1,
1418 			  breakpoint_count);
1419       else if (breakpoint_count > 0)
1420 	arg = xstrprintf ("%d", breakpoint_count);
1421       else
1422 	{
1423 	  /* So that we don't try to free the incoming non-NULL
1424 	     argument in the cleanup below.  Mapping breakpoint
1425 	     numbers will fail in this case.  */
1426 	  arg = NULL;
1427 	}
1428     }
1429   else
1430     /* The command loop has some static state, so we need to preserve
1431        our argument.  */
1432     arg = xstrdup (arg);
1433 
1434   if (arg != NULL)
1435     make_cleanup (xfree, arg);
1436 
1437   info.arg = arg;
1438 
1439   map_breakpoint_numbers (arg, do_map_commands_command, &info);
1440 
1441   if (info.cmd == NULL)
1442     error (_("No breakpoints specified."));
1443 
1444   do_cleanups (cleanups);
1445 }
1446 
1447 static void
1448 commands_command (char *arg, int from_tty)
1449 {
1450   commands_command_1 (arg, from_tty, NULL);
1451 }
1452 
1453 /* Like commands_command, but instead of reading the commands from
1454    input stream, takes them from an already parsed command structure.
1455 
1456    This is used by cli-script.c to DTRT with breakpoint commands
1457    that are part of if and while bodies.  */
1458 enum command_control_type
1459 commands_from_control_command (char *arg, struct command_line *cmd)
1460 {
1461   commands_command_1 (arg, 0, cmd);
1462   return simple_control;
1463 }
1464 
1465 /* Return non-zero if BL->TARGET_INFO contains valid information.  */
1466 
1467 static int
1468 bp_location_has_shadow (struct bp_location *bl)
1469 {
1470   if (bl->loc_type != bp_loc_software_breakpoint)
1471     return 0;
1472   if (!bl->inserted)
1473     return 0;
1474   if (bl->target_info.shadow_len == 0)
1475     /* BL isn't valid, or doesn't shadow memory.  */
1476     return 0;
1477   return 1;
1478 }
1479 
1480 /* Update BUF, which is LEN bytes read from the target address
1481    MEMADDR, by replacing a memory breakpoint with its shadowed
1482    contents.
1483 
1484    If READBUF is not NULL, this buffer must not overlap with the of
1485    the breakpoint location's shadow_contents buffer.  Otherwise, a
1486    failed assertion internal error will be raised.  */
1487 
1488 static void
1489 one_breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1490 			    const gdb_byte *writebuf_org,
1491 			    ULONGEST memaddr, LONGEST len,
1492 			    struct bp_target_info *target_info,
1493 			    struct gdbarch *gdbarch)
1494 {
1495   /* Now do full processing of the found relevant range of elements.  */
1496   CORE_ADDR bp_addr = 0;
1497   int bp_size = 0;
1498   int bptoffset = 0;
1499 
1500   if (!breakpoint_address_match (target_info->placed_address_space, 0,
1501 				 current_program_space->aspace, 0))
1502     {
1503       /* The breakpoint is inserted in a different address space.  */
1504       return;
1505     }
1506 
1507   /* Addresses and length of the part of the breakpoint that
1508      we need to copy.  */
1509   bp_addr = target_info->placed_address;
1510   bp_size = target_info->shadow_len;
1511 
1512   if (bp_addr + bp_size <= memaddr)
1513     {
1514       /* The breakpoint is entirely before the chunk of memory we are
1515 	 reading.  */
1516       return;
1517     }
1518 
1519   if (bp_addr >= memaddr + len)
1520     {
1521       /* The breakpoint is entirely after the chunk of memory we are
1522 	 reading.  */
1523       return;
1524     }
1525 
1526   /* Offset within shadow_contents.  */
1527   if (bp_addr < memaddr)
1528     {
1529       /* Only copy the second part of the breakpoint.  */
1530       bp_size -= memaddr - bp_addr;
1531       bptoffset = memaddr - bp_addr;
1532       bp_addr = memaddr;
1533     }
1534 
1535   if (bp_addr + bp_size > memaddr + len)
1536     {
1537       /* Only copy the first part of the breakpoint.  */
1538       bp_size -= (bp_addr + bp_size) - (memaddr + len);
1539     }
1540 
1541   if (readbuf != NULL)
1542     {
1543       /* Verify that the readbuf buffer does not overlap with the
1544 	 shadow_contents buffer.  */
1545       gdb_assert (target_info->shadow_contents >= readbuf + len
1546 		  || readbuf >= (target_info->shadow_contents
1547 				 + target_info->shadow_len));
1548 
1549       /* Update the read buffer with this inserted breakpoint's
1550 	 shadow.  */
1551       memcpy (readbuf + bp_addr - memaddr,
1552 	      target_info->shadow_contents + bptoffset, bp_size);
1553     }
1554   else
1555     {
1556       const unsigned char *bp;
1557       CORE_ADDR addr = target_info->reqstd_address;
1558       int placed_size;
1559 
1560       /* Update the shadow with what we want to write to memory.  */
1561       memcpy (target_info->shadow_contents + bptoffset,
1562 	      writebuf_org + bp_addr - memaddr, bp_size);
1563 
1564       /* Determine appropriate breakpoint contents and size for this
1565 	 address.  */
1566       bp = gdbarch_breakpoint_from_pc (gdbarch, &addr, &placed_size);
1567 
1568       /* Update the final write buffer with this inserted
1569 	 breakpoint's INSN.  */
1570       memcpy (writebuf + bp_addr - memaddr, bp + bptoffset, bp_size);
1571     }
1572 }
1573 
1574 /* Update BUF, which is LEN bytes read from the target address MEMADDR,
1575    by replacing any memory breakpoints with their shadowed contents.
1576 
1577    If READBUF is not NULL, this buffer must not overlap with any of
1578    the breakpoint location's shadow_contents buffers.  Otherwise,
1579    a failed assertion internal error will be raised.
1580 
1581    The range of shadowed area by each bp_location is:
1582      bl->address - bp_location_placed_address_before_address_max
1583      up to bl->address + bp_location_shadow_len_after_address_max
1584    The range we were requested to resolve shadows for is:
1585      memaddr ... memaddr + len
1586    Thus the safe cutoff boundaries for performance optimization are
1587      memaddr + len <= (bl->address
1588 		       - bp_location_placed_address_before_address_max)
1589    and:
1590      bl->address + bp_location_shadow_len_after_address_max <= memaddr  */
1591 
1592 void
1593 breakpoint_xfer_memory (gdb_byte *readbuf, gdb_byte *writebuf,
1594 			const gdb_byte *writebuf_org,
1595 			ULONGEST memaddr, LONGEST len)
1596 {
1597   /* Left boundary, right boundary and median element of our binary
1598      search.  */
1599   unsigned bc_l, bc_r, bc;
1600 
1601   /* Find BC_L which is a leftmost element which may affect BUF
1602      content.  It is safe to report lower value but a failure to
1603      report higher one.  */
1604 
1605   bc_l = 0;
1606   bc_r = bp_location_count;
1607   while (bc_l + 1 < bc_r)
1608     {
1609       struct bp_location *bl;
1610 
1611       bc = (bc_l + bc_r) / 2;
1612       bl = bp_location[bc];
1613 
1614       /* Check first BL->ADDRESS will not overflow due to the added
1615 	 constant.  Then advance the left boundary only if we are sure
1616 	 the BC element can in no way affect the BUF content (MEMADDR
1617 	 to MEMADDR + LEN range).
1618 
1619 	 Use the BP_LOCATION_SHADOW_LEN_AFTER_ADDRESS_MAX safety
1620 	 offset so that we cannot miss a breakpoint with its shadow
1621 	 range tail still reaching MEMADDR.  */
1622 
1623       if ((bl->address + bp_location_shadow_len_after_address_max
1624 	   >= bl->address)
1625 	  && (bl->address + bp_location_shadow_len_after_address_max
1626 	      <= memaddr))
1627 	bc_l = bc;
1628       else
1629 	bc_r = bc;
1630     }
1631 
1632   /* Due to the binary search above, we need to make sure we pick the
1633      first location that's at BC_L's address.  E.g., if there are
1634      multiple locations at the same address, BC_L may end up pointing
1635      at a duplicate location, and miss the "master"/"inserted"
1636      location.  Say, given locations L1, L2 and L3 at addresses A and
1637      B:
1638 
1639       L1@A, L2@A, L3@B, ...
1640 
1641      BC_L could end up pointing at location L2, while the "master"
1642      location could be L1.  Since the `loc->inserted' flag is only set
1643      on "master" locations, we'd forget to restore the shadow of L1
1644      and L2.  */
1645   while (bc_l > 0
1646 	 && bp_location[bc_l]->address == bp_location[bc_l - 1]->address)
1647     bc_l--;
1648 
1649   /* Now do full processing of the found relevant range of elements.  */
1650 
1651   for (bc = bc_l; bc < bp_location_count; bc++)
1652   {
1653     struct bp_location *bl = bp_location[bc];
1654 
1655     /* bp_location array has BL->OWNER always non-NULL.  */
1656     if (bl->owner->type == bp_none)
1657       warning (_("reading through apparently deleted breakpoint #%d?"),
1658 	       bl->owner->number);
1659 
1660     /* Performance optimization: any further element can no longer affect BUF
1661        content.  */
1662 
1663     if (bl->address >= bp_location_placed_address_before_address_max
1664         && memaddr + len <= (bl->address
1665 			     - bp_location_placed_address_before_address_max))
1666       break;
1667 
1668     if (!bp_location_has_shadow (bl))
1669       continue;
1670 
1671     one_breakpoint_xfer_memory (readbuf, writebuf, writebuf_org,
1672 				memaddr, len, &bl->target_info, bl->gdbarch);
1673   }
1674 }
1675 
1676 
1677 
1678 /* Return true if BPT is either a software breakpoint or a hardware
1679    breakpoint.  */
1680 
1681 int
1682 is_breakpoint (const struct breakpoint *bpt)
1683 {
1684   return (bpt->type == bp_breakpoint
1685 	  || bpt->type == bp_hardware_breakpoint
1686 	  || bpt->type == bp_dprintf);
1687 }
1688 
1689 /* Return true if BPT is of any hardware watchpoint kind.  */
1690 
1691 static int
1692 is_hardware_watchpoint (const struct breakpoint *bpt)
1693 {
1694   return (bpt->type == bp_hardware_watchpoint
1695 	  || bpt->type == bp_read_watchpoint
1696 	  || bpt->type == bp_access_watchpoint);
1697 }
1698 
1699 /* Return true if BPT is of any watchpoint kind, hardware or
1700    software.  */
1701 
1702 int
1703 is_watchpoint (const struct breakpoint *bpt)
1704 {
1705   return (is_hardware_watchpoint (bpt)
1706 	  || bpt->type == bp_watchpoint);
1707 }
1708 
1709 /* Returns true if the current thread and its running state are safe
1710    to evaluate or update watchpoint B.  Watchpoints on local
1711    expressions need to be evaluated in the context of the thread that
1712    was current when the watchpoint was created, and, that thread needs
1713    to be stopped to be able to select the correct frame context.
1714    Watchpoints on global expressions can be evaluated on any thread,
1715    and in any state.  It is presently left to the target allowing
1716    memory accesses when threads are running.  */
1717 
1718 static int
1719 watchpoint_in_thread_scope (struct watchpoint *b)
1720 {
1721   return (b->base.pspace == current_program_space
1722 	  && (ptid_equal (b->watchpoint_thread, null_ptid)
1723 	      || (ptid_equal (inferior_ptid, b->watchpoint_thread)
1724 		  && !is_executing (inferior_ptid))));
1725 }
1726 
1727 /* Set watchpoint B to disp_del_at_next_stop, even including its possible
1728    associated bp_watchpoint_scope breakpoint.  */
1729 
1730 static void
1731 watchpoint_del_at_next_stop (struct watchpoint *w)
1732 {
1733   struct breakpoint *b = &w->base;
1734 
1735   if (b->related_breakpoint != b)
1736     {
1737       gdb_assert (b->related_breakpoint->type == bp_watchpoint_scope);
1738       gdb_assert (b->related_breakpoint->related_breakpoint == b);
1739       b->related_breakpoint->disposition = disp_del_at_next_stop;
1740       b->related_breakpoint->related_breakpoint = b->related_breakpoint;
1741       b->related_breakpoint = b;
1742     }
1743   b->disposition = disp_del_at_next_stop;
1744 }
1745 
1746 /* Extract a bitfield value from value VAL using the bit parameters contained in
1747    watchpoint W.  */
1748 
1749 static struct value *
1750 extract_bitfield_from_watchpoint_value (struct watchpoint *w, struct value *val)
1751 {
1752   struct value *bit_val;
1753 
1754   if (val == NULL)
1755     return NULL;
1756 
1757   bit_val = allocate_value (value_type (val));
1758 
1759   unpack_value_bitfield (bit_val,
1760 			 w->val_bitpos,
1761 			 w->val_bitsize,
1762 			 value_contents_for_printing (val),
1763 			 value_offset (val),
1764 			 val);
1765 
1766   return bit_val;
1767 }
1768 
1769 /* Allocate a dummy location and add it to B, which must be a software
1770    watchpoint.  This is required because even if a software watchpoint
1771    is not watching any memory, bpstat_stop_status requires a location
1772    to be able to report stops.  */
1773 
1774 static void
1775 software_watchpoint_add_no_memory_location (struct breakpoint *b,
1776 					    struct program_space *pspace)
1777 {
1778   gdb_assert (b->type == bp_watchpoint && b->loc == NULL);
1779 
1780   b->loc = allocate_bp_location (b);
1781   b->loc->pspace = pspace;
1782   b->loc->address = -1;
1783   b->loc->length = -1;
1784 }
1785 
1786 /* Returns true if B is a software watchpoint that is not watching any
1787    memory (e.g., "watch $pc").  */
1788 
1789 static int
1790 is_no_memory_software_watchpoint (struct breakpoint *b)
1791 {
1792   return (b->type == bp_watchpoint
1793 	  && b->loc != NULL
1794 	  && b->loc->next == NULL
1795 	  && b->loc->address == -1
1796 	  && b->loc->length == -1);
1797 }
1798 
1799 /* Assuming that B is a watchpoint:
1800    - Reparse watchpoint expression, if REPARSE is non-zero
1801    - Evaluate expression and store the result in B->val
1802    - Evaluate the condition if there is one, and store the result
1803      in b->loc->cond.
1804    - Update the list of values that must be watched in B->loc.
1805 
1806    If the watchpoint disposition is disp_del_at_next_stop, then do
1807    nothing.  If this is local watchpoint that is out of scope, delete
1808    it.
1809 
1810    Even with `set breakpoint always-inserted on' the watchpoints are
1811    removed + inserted on each stop here.  Normal breakpoints must
1812    never be removed because they might be missed by a running thread
1813    when debugging in non-stop mode.  On the other hand, hardware
1814    watchpoints (is_hardware_watchpoint; processed here) are specific
1815    to each LWP since they are stored in each LWP's hardware debug
1816    registers.  Therefore, such LWP must be stopped first in order to
1817    be able to modify its hardware watchpoints.
1818 
1819    Hardware watchpoints must be reset exactly once after being
1820    presented to the user.  It cannot be done sooner, because it would
1821    reset the data used to present the watchpoint hit to the user.  And
1822    it must not be done later because it could display the same single
1823    watchpoint hit during multiple GDB stops.  Note that the latter is
1824    relevant only to the hardware watchpoint types bp_read_watchpoint
1825    and bp_access_watchpoint.  False hit by bp_hardware_watchpoint is
1826    not user-visible - its hit is suppressed if the memory content has
1827    not changed.
1828 
1829    The following constraints influence the location where we can reset
1830    hardware watchpoints:
1831 
1832    * target_stopped_by_watchpoint and target_stopped_data_address are
1833      called several times when GDB stops.
1834 
1835    [linux]
1836    * Multiple hardware watchpoints can be hit at the same time,
1837      causing GDB to stop.  GDB only presents one hardware watchpoint
1838      hit at a time as the reason for stopping, and all the other hits
1839      are presented later, one after the other, each time the user
1840      requests the execution to be resumed.  Execution is not resumed
1841      for the threads still having pending hit event stored in
1842      LWP_INFO->STATUS.  While the watchpoint is already removed from
1843      the inferior on the first stop the thread hit event is kept being
1844      reported from its cached value by linux_nat_stopped_data_address
1845      until the real thread resume happens after the watchpoint gets
1846      presented and thus its LWP_INFO->STATUS gets reset.
1847 
1848    Therefore the hardware watchpoint hit can get safely reset on the
1849    watchpoint removal from inferior.  */
1850 
1851 static void
1852 update_watchpoint (struct watchpoint *b, int reparse)
1853 {
1854   int within_current_scope;
1855   struct frame_id saved_frame_id;
1856   int frame_saved;
1857 
1858   /* If this is a local watchpoint, we only want to check if the
1859      watchpoint frame is in scope if the current thread is the thread
1860      that was used to create the watchpoint.  */
1861   if (!watchpoint_in_thread_scope (b))
1862     return;
1863 
1864   if (b->base.disposition == disp_del_at_next_stop)
1865     return;
1866 
1867   frame_saved = 0;
1868 
1869   /* Determine if the watchpoint is within scope.  */
1870   if (b->exp_valid_block == NULL)
1871     within_current_scope = 1;
1872   else
1873     {
1874       struct frame_info *fi = get_current_frame ();
1875       struct gdbarch *frame_arch = get_frame_arch (fi);
1876       CORE_ADDR frame_pc = get_frame_pc (fi);
1877 
1878       /* If we're at a point where the stack has been destroyed
1879 	 (e.g. in a function epilogue), unwinding may not work
1880 	 properly. Do not attempt to recreate locations at this
1881 	 point.  See similar comments in watchpoint_check.  */
1882       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
1883 	return;
1884 
1885       /* Save the current frame's ID so we can restore it after
1886          evaluating the watchpoint expression on its own frame.  */
1887       /* FIXME drow/2003-09-09: It would be nice if evaluate_expression
1888          took a frame parameter, so that we didn't have to change the
1889          selected frame.  */
1890       frame_saved = 1;
1891       saved_frame_id = get_frame_id (get_selected_frame (NULL));
1892 
1893       fi = frame_find_by_id (b->watchpoint_frame);
1894       within_current_scope = (fi != NULL);
1895       if (within_current_scope)
1896 	select_frame (fi);
1897     }
1898 
1899   /* We don't free locations.  They are stored in the bp_location array
1900      and update_global_location_list will eventually delete them and
1901      remove breakpoints if needed.  */
1902   b->base.loc = NULL;
1903 
1904   if (within_current_scope && reparse)
1905     {
1906       const char *s;
1907 
1908       if (b->exp)
1909 	{
1910 	  xfree (b->exp);
1911 	  b->exp = NULL;
1912 	}
1913       s = b->exp_string_reparse ? b->exp_string_reparse : b->exp_string;
1914       b->exp = parse_exp_1 (&s, 0, b->exp_valid_block, 0);
1915       /* If the meaning of expression itself changed, the old value is
1916 	 no longer relevant.  We don't want to report a watchpoint hit
1917 	 to the user when the old value and the new value may actually
1918 	 be completely different objects.  */
1919       value_free (b->val);
1920       b->val = NULL;
1921       b->val_valid = 0;
1922 
1923       /* Note that unlike with breakpoints, the watchpoint's condition
1924 	 expression is stored in the breakpoint object, not in the
1925 	 locations (re)created below.  */
1926       if (b->base.cond_string != NULL)
1927 	{
1928 	  if (b->cond_exp != NULL)
1929 	    {
1930 	      xfree (b->cond_exp);
1931 	      b->cond_exp = NULL;
1932 	    }
1933 
1934 	  s = b->base.cond_string;
1935 	  b->cond_exp = parse_exp_1 (&s, 0, b->cond_exp_valid_block, 0);
1936 	}
1937     }
1938 
1939   /* If we failed to parse the expression, for example because
1940      it refers to a global variable in a not-yet-loaded shared library,
1941      don't try to insert watchpoint.  We don't automatically delete
1942      such watchpoint, though, since failure to parse expression
1943      is different from out-of-scope watchpoint.  */
1944   if (!target_has_execution)
1945     {
1946       /* Without execution, memory can't change.  No use to try and
1947 	 set watchpoint locations.  The watchpoint will be reset when
1948 	 the target gains execution, through breakpoint_re_set.  */
1949       if (!can_use_hw_watchpoints)
1950 	{
1951 	  if (b->base.ops->works_in_software_mode (&b->base))
1952 	    b->base.type = bp_watchpoint;
1953 	  else
1954 	    error (_("Can't set read/access watchpoint when "
1955 		     "hardware watchpoints are disabled."));
1956 	}
1957     }
1958   else if (within_current_scope && b->exp)
1959     {
1960       int pc = 0;
1961       struct value *val_chain, *v, *result, *next;
1962       struct program_space *frame_pspace;
1963 
1964       fetch_subexp_value (b->exp, &pc, &v, &result, &val_chain, 0);
1965 
1966       /* Avoid setting b->val if it's already set.  The meaning of
1967 	 b->val is 'the last value' user saw, and we should update
1968 	 it only if we reported that last value to user.  As it
1969 	 happens, the code that reports it updates b->val directly.
1970 	 We don't keep track of the memory value for masked
1971 	 watchpoints.  */
1972       if (!b->val_valid && !is_masked_watchpoint (&b->base))
1973 	{
1974 	  if (b->val_bitsize != 0)
1975 	    {
1976 	      v = extract_bitfield_from_watchpoint_value (b, v);
1977 	      if (v != NULL)
1978 		release_value (v);
1979 	    }
1980 	  b->val = v;
1981 	  b->val_valid = 1;
1982 	}
1983 
1984       frame_pspace = get_frame_program_space (get_selected_frame (NULL));
1985 
1986       /* Look at each value on the value chain.  */
1987       for (v = val_chain; v; v = value_next (v))
1988 	{
1989 	  /* If it's a memory location, and GDB actually needed
1990 	     its contents to evaluate the expression, then we
1991 	     must watch it.  If the first value returned is
1992 	     still lazy, that means an error occurred reading it;
1993 	     watch it anyway in case it becomes readable.  */
1994 	  if (VALUE_LVAL (v) == lval_memory
1995 	      && (v == val_chain || ! value_lazy (v)))
1996 	    {
1997 	      struct type *vtype = check_typedef (value_type (v));
1998 
1999 	      /* We only watch structs and arrays if user asked
2000 		 for it explicitly, never if they just happen to
2001 		 appear in the middle of some value chain.  */
2002 	      if (v == result
2003 		  || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
2004 		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
2005 		{
2006 		  CORE_ADDR addr;
2007 		  enum target_hw_bp_type type;
2008 		  struct bp_location *loc, **tmp;
2009 		  int bitpos = 0, bitsize = 0;
2010 
2011 		  if (value_bitsize (v) != 0)
2012 		    {
2013 		      /* Extract the bit parameters out from the bitfield
2014 			 sub-expression.  */
2015 		      bitpos = value_bitpos (v);
2016 		      bitsize = value_bitsize (v);
2017 		    }
2018 		  else if (v == result && b->val_bitsize != 0)
2019 		    {
2020 		     /* If VAL_BITSIZE != 0 then RESULT is actually a bitfield
2021 			lvalue whose bit parameters are saved in the fields
2022 			VAL_BITPOS and VAL_BITSIZE.  */
2023 		      bitpos = b->val_bitpos;
2024 		      bitsize = b->val_bitsize;
2025 		    }
2026 
2027 		  addr = value_address (v);
2028 		  if (bitsize != 0)
2029 		    {
2030 		      /* Skip the bytes that don't contain the bitfield.  */
2031 		      addr += bitpos / 8;
2032 		    }
2033 
2034 		  type = hw_write;
2035 		  if (b->base.type == bp_read_watchpoint)
2036 		    type = hw_read;
2037 		  else if (b->base.type == bp_access_watchpoint)
2038 		    type = hw_access;
2039 
2040 		  loc = allocate_bp_location (&b->base);
2041 		  for (tmp = &(b->base.loc); *tmp != NULL; tmp = &((*tmp)->next))
2042 		    ;
2043 		  *tmp = loc;
2044 		  loc->gdbarch = get_type_arch (value_type (v));
2045 
2046 		  loc->pspace = frame_pspace;
2047 		  loc->address = addr;
2048 
2049 		  if (bitsize != 0)
2050 		    {
2051 		      /* Just cover the bytes that make up the bitfield.  */
2052 		      loc->length = ((bitpos % 8) + bitsize + 7) / 8;
2053 		    }
2054 		  else
2055 		    loc->length = TYPE_LENGTH (value_type (v));
2056 
2057 		  loc->watchpoint_type = type;
2058 		}
2059 	    }
2060 	}
2061 
2062       /* Change the type of breakpoint between hardware assisted or
2063 	 an ordinary watchpoint depending on the hardware support
2064 	 and free hardware slots.  REPARSE is set when the inferior
2065 	 is started.  */
2066       if (reparse)
2067 	{
2068 	  int reg_cnt;
2069 	  enum bp_loc_type loc_type;
2070 	  struct bp_location *bl;
2071 
2072 	  reg_cnt = can_use_hardware_watchpoint (val_chain);
2073 
2074 	  if (reg_cnt)
2075 	    {
2076 	      int i, target_resources_ok, other_type_used;
2077 	      enum bptype type;
2078 
2079 	      /* Use an exact watchpoint when there's only one memory region to be
2080 		 watched, and only one debug register is needed to watch it.  */
2081 	      b->exact = target_exact_watchpoints && reg_cnt == 1;
2082 
2083 	      /* We need to determine how many resources are already
2084 		 used for all other hardware watchpoints plus this one
2085 		 to see if we still have enough resources to also fit
2086 		 this watchpoint in as well.  */
2087 
2088 	      /* If this is a software watchpoint, we try to turn it
2089 		 to a hardware one -- count resources as if B was of
2090 		 hardware watchpoint type.  */
2091 	      type = b->base.type;
2092 	      if (type == bp_watchpoint)
2093 		type = bp_hardware_watchpoint;
2094 
2095 	      /* This watchpoint may or may not have been placed on
2096 		 the list yet at this point (it won't be in the list
2097 		 if we're trying to create it for the first time,
2098 		 through watch_command), so always account for it
2099 		 manually.  */
2100 
2101 	      /* Count resources used by all watchpoints except B.  */
2102 	      i = hw_watchpoint_used_count_others (&b->base, type, &other_type_used);
2103 
2104 	      /* Add in the resources needed for B.  */
2105 	      i += hw_watchpoint_use_count (&b->base);
2106 
2107 	      target_resources_ok
2108 		= target_can_use_hardware_watchpoint (type, i, other_type_used);
2109 	      if (target_resources_ok <= 0)
2110 		{
2111 		  int sw_mode = b->base.ops->works_in_software_mode (&b->base);
2112 
2113 		  if (target_resources_ok == 0 && !sw_mode)
2114 		    error (_("Target does not support this type of "
2115 			     "hardware watchpoint."));
2116 		  else if (target_resources_ok < 0 && !sw_mode)
2117 		    error (_("There are not enough available hardware "
2118 			     "resources for this watchpoint."));
2119 
2120 		  /* Downgrade to software watchpoint.  */
2121 		  b->base.type = bp_watchpoint;
2122 		}
2123 	      else
2124 		{
2125 		  /* If this was a software watchpoint, we've just
2126 		     found we have enough resources to turn it to a
2127 		     hardware watchpoint.  Otherwise, this is a
2128 		     nop.  */
2129 		  b->base.type = type;
2130 		}
2131 	    }
2132 	  else if (!b->base.ops->works_in_software_mode (&b->base))
2133 	    {
2134 	      if (!can_use_hw_watchpoints)
2135 		error (_("Can't set read/access watchpoint when "
2136 			 "hardware watchpoints are disabled."));
2137 	      else
2138 		error (_("Expression cannot be implemented with "
2139 			 "read/access watchpoint."));
2140 	    }
2141 	  else
2142 	    b->base.type = bp_watchpoint;
2143 
2144 	  loc_type = (b->base.type == bp_watchpoint? bp_loc_other
2145 		      : bp_loc_hardware_watchpoint);
2146 	  for (bl = b->base.loc; bl; bl = bl->next)
2147 	    bl->loc_type = loc_type;
2148 	}
2149 
2150       for (v = val_chain; v; v = next)
2151 	{
2152 	  next = value_next (v);
2153 	  if (v != b->val)
2154 	    value_free (v);
2155 	}
2156 
2157       /* If a software watchpoint is not watching any memory, then the
2158 	 above left it without any location set up.  But,
2159 	 bpstat_stop_status requires a location to be able to report
2160 	 stops, so make sure there's at least a dummy one.  */
2161       if (b->base.type == bp_watchpoint && b->base.loc == NULL)
2162 	software_watchpoint_add_no_memory_location (&b->base, frame_pspace);
2163     }
2164   else if (!within_current_scope)
2165     {
2166       printf_filtered (_("\
2167 Watchpoint %d deleted because the program has left the block\n\
2168 in which its expression is valid.\n"),
2169 		       b->base.number);
2170       watchpoint_del_at_next_stop (b);
2171     }
2172 
2173   /* Restore the selected frame.  */
2174   if (frame_saved)
2175     select_frame (frame_find_by_id (saved_frame_id));
2176 }
2177 
2178 
2179 /* Returns 1 iff breakpoint location should be
2180    inserted in the inferior.  We don't differentiate the type of BL's owner
2181    (breakpoint vs. tracepoint), although insert_location in tracepoint's
2182    breakpoint_ops is not defined, because in insert_bp_location,
2183    tracepoint's insert_location will not be called.  */
2184 static int
2185 should_be_inserted (struct bp_location *bl)
2186 {
2187   if (bl->owner == NULL || !breakpoint_enabled (bl->owner))
2188     return 0;
2189 
2190   if (bl->owner->disposition == disp_del_at_next_stop)
2191     return 0;
2192 
2193   if (!bl->enabled || bl->shlib_disabled || bl->duplicate)
2194     return 0;
2195 
2196   if (user_breakpoint_p (bl->owner) && bl->pspace->executing_startup)
2197     return 0;
2198 
2199   /* This is set for example, when we're attached to the parent of a
2200      vfork, and have detached from the child.  The child is running
2201      free, and we expect it to do an exec or exit, at which point the
2202      OS makes the parent schedulable again (and the target reports
2203      that the vfork is done).  Until the child is done with the shared
2204      memory region, do not insert breakpoints in the parent, otherwise
2205      the child could still trip on the parent's breakpoints.  Since
2206      the parent is blocked anyway, it won't miss any breakpoint.  */
2207   if (bl->pspace->breakpoints_not_allowed)
2208     return 0;
2209 
2210   /* Don't insert a breakpoint if we're trying to step past its
2211      location, except if the breakpoint is a single-step breakpoint,
2212      and the breakpoint's thread is the thread which is stepping past
2213      a breakpoint.  */
2214   if ((bl->loc_type == bp_loc_software_breakpoint
2215        || bl->loc_type == bp_loc_hardware_breakpoint)
2216       && stepping_past_instruction_at (bl->pspace->aspace,
2217 				       bl->address)
2218       /* The single-step breakpoint may be inserted at the location
2219 	 we're trying to step if the instruction branches to itself.
2220 	 However, the instruction won't be executed at all and it may
2221 	 break the semantics of the instruction, for example, the
2222 	 instruction is a conditional branch or updates some flags.
2223 	 We can't fix it unless GDB is able to emulate the instruction
2224 	 or switch to displaced stepping.  */
2225       && !(bl->owner->type == bp_single_step
2226 	   && thread_is_stepping_over_breakpoint (bl->owner->thread)))
2227     {
2228       if (debug_infrun)
2229 	{
2230 	  fprintf_unfiltered (gdb_stdlog,
2231 			      "infrun: skipping breakpoint: "
2232 			      "stepping past insn at: %s\n",
2233 			      paddress (bl->gdbarch, bl->address));
2234 	}
2235       return 0;
2236     }
2237 
2238   /* Don't insert watchpoints if we're trying to step past the
2239      instruction that triggered one.  */
2240   if ((bl->loc_type == bp_loc_hardware_watchpoint)
2241       && stepping_past_nonsteppable_watchpoint ())
2242     {
2243       if (debug_infrun)
2244 	{
2245 	  fprintf_unfiltered (gdb_stdlog,
2246 			      "infrun: stepping past non-steppable watchpoint. "
2247 			      "skipping watchpoint at %s:%d\n",
2248 			      paddress (bl->gdbarch, bl->address),
2249 			      bl->length);
2250 	}
2251       return 0;
2252     }
2253 
2254   return 1;
2255 }
2256 
2257 /* Same as should_be_inserted but does the check assuming
2258    that the location is not duplicated.  */
2259 
2260 static int
2261 unduplicated_should_be_inserted (struct bp_location *bl)
2262 {
2263   int result;
2264   const int save_duplicate = bl->duplicate;
2265 
2266   bl->duplicate = 0;
2267   result = should_be_inserted (bl);
2268   bl->duplicate = save_duplicate;
2269   return result;
2270 }
2271 
2272 /* Parses a conditional described by an expression COND into an
2273    agent expression bytecode suitable for evaluation
2274    by the bytecode interpreter.  Return NULL if there was
2275    any error during parsing.  */
2276 
2277 static struct agent_expr *
2278 parse_cond_to_aexpr (CORE_ADDR scope, struct expression *cond)
2279 {
2280   struct agent_expr *aexpr = NULL;
2281 
2282   if (!cond)
2283     return NULL;
2284 
2285   /* We don't want to stop processing, so catch any errors
2286      that may show up.  */
2287   TRY
2288     {
2289       aexpr = gen_eval_for_expr (scope, cond);
2290     }
2291 
2292   CATCH (ex, RETURN_MASK_ERROR)
2293     {
2294       /* If we got here, it means the condition could not be parsed to a valid
2295 	 bytecode expression and thus can't be evaluated on the target's side.
2296 	 It's no use iterating through the conditions.  */
2297       return NULL;
2298     }
2299   END_CATCH
2300 
2301   /* We have a valid agent expression.  */
2302   return aexpr;
2303 }
2304 
2305 /* Based on location BL, create a list of breakpoint conditions to be
2306    passed on to the target.  If we have duplicated locations with different
2307    conditions, we will add such conditions to the list.  The idea is that the
2308    target will evaluate the list of conditions and will only notify GDB when
2309    one of them is true.  */
2310 
2311 static void
2312 build_target_condition_list (struct bp_location *bl)
2313 {
2314   struct bp_location **locp = NULL, **loc2p;
2315   int null_condition_or_parse_error = 0;
2316   int modified = bl->needs_update;
2317   struct bp_location *loc;
2318 
2319   /* Release conditions left over from a previous insert.  */
2320   VEC_free (agent_expr_p, bl->target_info.conditions);
2321 
2322   /* This is only meaningful if the target is
2323      evaluating conditions and if the user has
2324      opted for condition evaluation on the target's
2325      side.  */
2326   if (gdb_evaluates_breakpoint_condition_p ()
2327       || !target_supports_evaluation_of_breakpoint_conditions ())
2328     return;
2329 
2330   /* Do a first pass to check for locations with no assigned
2331      conditions or conditions that fail to parse to a valid agent expression
2332      bytecode.  If any of these happen, then it's no use to send conditions
2333      to the target since this location will always trigger and generate a
2334      response back to GDB.  */
2335   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2336     {
2337       loc = (*loc2p);
2338       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2339 	{
2340 	  if (modified)
2341 	    {
2342 	      struct agent_expr *aexpr;
2343 
2344 	      /* Re-parse the conditions since something changed.  In that
2345 		 case we already freed the condition bytecodes (see
2346 		 force_breakpoint_reinsertion).  We just
2347 		 need to parse the condition to bytecodes again.  */
2348 	      aexpr = parse_cond_to_aexpr (bl->address, loc->cond);
2349 	      loc->cond_bytecode = aexpr;
2350 	    }
2351 
2352 	  /* If we have a NULL bytecode expression, it means something
2353 	     went wrong or we have a null condition expression.  */
2354 	  if (!loc->cond_bytecode)
2355 	    {
2356 	      null_condition_or_parse_error = 1;
2357 	      break;
2358 	    }
2359 	}
2360     }
2361 
2362   /* If any of these happened, it means we will have to evaluate the conditions
2363      for the location's address on gdb's side.  It is no use keeping bytecodes
2364      for all the other duplicate locations, thus we free all of them here.
2365 
2366      This is so we have a finer control over which locations' conditions are
2367      being evaluated by GDB or the remote stub.  */
2368   if (null_condition_or_parse_error)
2369     {
2370       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2371 	{
2372 	  loc = (*loc2p);
2373 	  if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2374 	    {
2375 	      /* Only go as far as the first NULL bytecode is
2376 		 located.  */
2377 	      if (!loc->cond_bytecode)
2378 		return;
2379 
2380 	      free_agent_expr (loc->cond_bytecode);
2381 	      loc->cond_bytecode = NULL;
2382 	    }
2383 	}
2384     }
2385 
2386   /* No NULL conditions or failed bytecode generation.  Build a condition list
2387      for this location's address.  */
2388   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2389     {
2390       loc = (*loc2p);
2391       if (loc->cond
2392 	  && is_breakpoint (loc->owner)
2393 	  && loc->pspace->num == bl->pspace->num
2394 	  && loc->owner->enable_state == bp_enabled
2395 	  && loc->enabled)
2396 	/* Add the condition to the vector.  This will be used later to send the
2397 	   conditions to the target.  */
2398 	VEC_safe_push (agent_expr_p, bl->target_info.conditions,
2399 		       loc->cond_bytecode);
2400     }
2401 
2402   return;
2403 }
2404 
2405 /* Parses a command described by string CMD into an agent expression
2406    bytecode suitable for evaluation by the bytecode interpreter.
2407    Return NULL if there was any error during parsing.  */
2408 
2409 static struct agent_expr *
2410 parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd)
2411 {
2412   struct cleanup *old_cleanups = 0;
2413   struct expression *expr, **argvec;
2414   struct agent_expr *aexpr = NULL;
2415   const char *cmdrest;
2416   const char *format_start, *format_end;
2417   struct format_piece *fpieces;
2418   int nargs;
2419   struct gdbarch *gdbarch = get_current_arch ();
2420 
2421   if (!cmd)
2422     return NULL;
2423 
2424   cmdrest = cmd;
2425 
2426   if (*cmdrest == ',')
2427     ++cmdrest;
2428   cmdrest = skip_spaces_const (cmdrest);
2429 
2430   if (*cmdrest++ != '"')
2431     error (_("No format string following the location"));
2432 
2433   format_start = cmdrest;
2434 
2435   fpieces = parse_format_string (&cmdrest);
2436 
2437   old_cleanups = make_cleanup (free_format_pieces_cleanup, &fpieces);
2438 
2439   format_end = cmdrest;
2440 
2441   if (*cmdrest++ != '"')
2442     error (_("Bad format string, non-terminated '\"'."));
2443 
2444   cmdrest = skip_spaces_const (cmdrest);
2445 
2446   if (!(*cmdrest == ',' || *cmdrest == '\0'))
2447     error (_("Invalid argument syntax"));
2448 
2449   if (*cmdrest == ',')
2450     cmdrest++;
2451   cmdrest = skip_spaces_const (cmdrest);
2452 
2453   /* For each argument, make an expression.  */
2454 
2455   argvec = (struct expression **) alloca (strlen (cmd)
2456 					 * sizeof (struct expression *));
2457 
2458   nargs = 0;
2459   while (*cmdrest != '\0')
2460     {
2461       const char *cmd1;
2462 
2463       cmd1 = cmdrest;
2464       expr = parse_exp_1 (&cmd1, scope, block_for_pc (scope), 1);
2465       argvec[nargs++] = expr;
2466       cmdrest = cmd1;
2467       if (*cmdrest == ',')
2468 	++cmdrest;
2469     }
2470 
2471   /* We don't want to stop processing, so catch any errors
2472      that may show up.  */
2473   TRY
2474     {
2475       aexpr = gen_printf (scope, gdbarch, 0, 0,
2476 			  format_start, format_end - format_start,
2477 			  fpieces, nargs, argvec);
2478     }
2479   CATCH (ex, RETURN_MASK_ERROR)
2480     {
2481       /* If we got here, it means the command could not be parsed to a valid
2482 	 bytecode expression and thus can't be evaluated on the target's side.
2483 	 It's no use iterating through the other commands.  */
2484       aexpr = NULL;
2485     }
2486   END_CATCH
2487 
2488   do_cleanups (old_cleanups);
2489 
2490   /* We have a valid agent expression, return it.  */
2491   return aexpr;
2492 }
2493 
2494 /* Based on location BL, create a list of breakpoint commands to be
2495    passed on to the target.  If we have duplicated locations with
2496    different commands, we will add any such to the list.  */
2497 
2498 static void
2499 build_target_command_list (struct bp_location *bl)
2500 {
2501   struct bp_location **locp = NULL, **loc2p;
2502   int null_command_or_parse_error = 0;
2503   int modified = bl->needs_update;
2504   struct bp_location *loc;
2505 
2506   /* Release commands left over from a previous insert.  */
2507   VEC_free (agent_expr_p, bl->target_info.tcommands);
2508 
2509   if (!target_can_run_breakpoint_commands ())
2510     return;
2511 
2512   /* For now, limit to agent-style dprintf breakpoints.  */
2513   if (dprintf_style != dprintf_style_agent)
2514     return;
2515 
2516   /* For now, if we have any duplicate location that isn't a dprintf,
2517      don't install the target-side commands, as that would make the
2518      breakpoint not be reported to the core, and we'd lose
2519      control.  */
2520   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2521     {
2522       loc = (*loc2p);
2523       if (is_breakpoint (loc->owner)
2524 	  && loc->pspace->num == bl->pspace->num
2525 	  && loc->owner->type != bp_dprintf)
2526 	return;
2527     }
2528 
2529   /* Do a first pass to check for locations with no assigned
2530      conditions or conditions that fail to parse to a valid agent expression
2531      bytecode.  If any of these happen, then it's no use to send conditions
2532      to the target since this location will always trigger and generate a
2533      response back to GDB.  */
2534   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2535     {
2536       loc = (*loc2p);
2537       if (is_breakpoint (loc->owner) && loc->pspace->num == bl->pspace->num)
2538 	{
2539 	  if (modified)
2540 	    {
2541 	      struct agent_expr *aexpr;
2542 
2543 	      /* Re-parse the commands since something changed.  In that
2544 		 case we already freed the command bytecodes (see
2545 		 force_breakpoint_reinsertion).  We just
2546 		 need to parse the command to bytecodes again.  */
2547 	      aexpr = parse_cmd_to_aexpr (bl->address,
2548 					  loc->owner->extra_string);
2549 	      loc->cmd_bytecode = aexpr;
2550 	    }
2551 
2552 	  /* If we have a NULL bytecode expression, it means something
2553 	     went wrong or we have a null command expression.  */
2554 	  if (!loc->cmd_bytecode)
2555 	    {
2556 	      null_command_or_parse_error = 1;
2557 	      break;
2558 	    }
2559 	}
2560     }
2561 
2562   /* If anything failed, then we're not doing target-side commands,
2563      and so clean up.  */
2564   if (null_command_or_parse_error)
2565     {
2566       ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2567 	{
2568 	  loc = (*loc2p);
2569 	  if (is_breakpoint (loc->owner)
2570 	      && loc->pspace->num == bl->pspace->num)
2571 	    {
2572 	      /* Only go as far as the first NULL bytecode is
2573 		 located.  */
2574 	      if (loc->cmd_bytecode == NULL)
2575 		return;
2576 
2577 	      free_agent_expr (loc->cmd_bytecode);
2578 	      loc->cmd_bytecode = NULL;
2579 	    }
2580 	}
2581     }
2582 
2583   /* No NULL commands or failed bytecode generation.  Build a command list
2584      for this location's address.  */
2585   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, bl->address)
2586     {
2587       loc = (*loc2p);
2588       if (loc->owner->extra_string
2589 	  && is_breakpoint (loc->owner)
2590 	  && loc->pspace->num == bl->pspace->num
2591 	  && loc->owner->enable_state == bp_enabled
2592 	  && loc->enabled)
2593 	/* Add the command to the vector.  This will be used later
2594 	   to send the commands to the target.  */
2595 	VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
2596 		       loc->cmd_bytecode);
2597     }
2598 
2599   bl->target_info.persist = 0;
2600   /* Maybe flag this location as persistent.  */
2601   if (bl->owner->type == bp_dprintf && disconnected_dprintf)
2602     bl->target_info.persist = 1;
2603 }
2604 
2605 /* Insert a low-level "breakpoint" of some type.  BL is the breakpoint
2606    location.  Any error messages are printed to TMP_ERROR_STREAM; and
2607    DISABLED_BREAKS, and HW_BREAKPOINT_ERROR are used to report problems.
2608    Returns 0 for success, 1 if the bp_location type is not supported or
2609    -1 for failure.
2610 
2611    NOTE drow/2003-09-09: This routine could be broken down to an
2612    object-style method for each breakpoint or catchpoint type.  */
2613 static int
2614 insert_bp_location (struct bp_location *bl,
2615 		    struct ui_file *tmp_error_stream,
2616 		    int *disabled_breaks,
2617 		    int *hw_breakpoint_error,
2618 		    int *hw_bp_error_explained_already)
2619 {
2620   enum errors bp_err = GDB_NO_ERROR;
2621   const char *bp_err_message = NULL;
2622 
2623   if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
2624     return 0;
2625 
2626   /* Note we don't initialize bl->target_info, as that wipes out
2627      the breakpoint location's shadow_contents if the breakpoint
2628      is still inserted at that location.  This in turn breaks
2629      target_read_memory which depends on these buffers when
2630      a memory read is requested at the breakpoint location:
2631      Once the target_info has been wiped, we fail to see that
2632      we have a breakpoint inserted at that address and thus
2633      read the breakpoint instead of returning the data saved in
2634      the breakpoint location's shadow contents.  */
2635   bl->target_info.reqstd_address = bl->address;
2636   bl->target_info.placed_address_space = bl->pspace->aspace;
2637   bl->target_info.length = bl->length;
2638 
2639   /* When working with target-side conditions, we must pass all the conditions
2640      for the same breakpoint address down to the target since GDB will not
2641      insert those locations.  With a list of breakpoint conditions, the target
2642      can decide when to stop and notify GDB.  */
2643 
2644   if (is_breakpoint (bl->owner))
2645     {
2646       build_target_condition_list (bl);
2647       build_target_command_list (bl);
2648       /* Reset the modification marker.  */
2649       bl->needs_update = 0;
2650     }
2651 
2652   if (bl->loc_type == bp_loc_software_breakpoint
2653       || bl->loc_type == bp_loc_hardware_breakpoint)
2654     {
2655       if (bl->owner->type != bp_hardware_breakpoint)
2656 	{
2657 	  /* If the explicitly specified breakpoint type
2658 	     is not hardware breakpoint, check the memory map to see
2659 	     if the breakpoint address is in read only memory or not.
2660 
2661 	     Two important cases are:
2662 	     - location type is not hardware breakpoint, memory
2663 	     is readonly.  We change the type of the location to
2664 	     hardware breakpoint.
2665 	     - location type is hardware breakpoint, memory is
2666 	     read-write.  This means we've previously made the
2667 	     location hardware one, but then the memory map changed,
2668 	     so we undo.
2669 
2670 	     When breakpoints are removed, remove_breakpoints will use
2671 	     location types we've just set here, the only possible
2672 	     problem is that memory map has changed during running
2673 	     program, but it's not going to work anyway with current
2674 	     gdb.  */
2675 	  struct mem_region *mr
2676 	    = lookup_mem_region (bl->target_info.reqstd_address);
2677 
2678 	  if (mr)
2679 	    {
2680 	      if (automatic_hardware_breakpoints)
2681 		{
2682 		  enum bp_loc_type new_type;
2683 
2684 		  if (mr->attrib.mode != MEM_RW)
2685 		    new_type = bp_loc_hardware_breakpoint;
2686 		  else
2687 		    new_type = bp_loc_software_breakpoint;
2688 
2689 		  if (new_type != bl->loc_type)
2690 		    {
2691 		      static int said = 0;
2692 
2693 		      bl->loc_type = new_type;
2694 		      if (!said)
2695 			{
2696 			  fprintf_filtered (gdb_stdout,
2697 					    _("Note: automatically using "
2698 					      "hardware breakpoints for "
2699 					      "read-only addresses.\n"));
2700 			  said = 1;
2701 			}
2702 		    }
2703 		}
2704 	      else if (bl->loc_type == bp_loc_software_breakpoint
2705 		       && mr->attrib.mode != MEM_RW)
2706 		{
2707 		  fprintf_unfiltered (tmp_error_stream,
2708 				      _("Cannot insert breakpoint %d.\n"
2709 					"Cannot set software breakpoint "
2710 					"at read-only address %s\n"),
2711 				      bl->owner->number,
2712 				      paddress (bl->gdbarch, bl->address));
2713 		  return 1;
2714 		}
2715 	    }
2716 	}
2717 
2718       /* First check to see if we have to handle an overlay.  */
2719       if (overlay_debugging == ovly_off
2720 	  || bl->section == NULL
2721 	  || !(section_is_overlay (bl->section)))
2722 	{
2723 	  /* No overlay handling: just set the breakpoint.  */
2724 	  TRY
2725 	    {
2726 	      int val;
2727 
2728 	      val = bl->owner->ops->insert_location (bl);
2729 	      if (val)
2730 		bp_err = GENERIC_ERROR;
2731 	    }
2732 	  CATCH (e, RETURN_MASK_ALL)
2733 	    {
2734 	      bp_err = e.error;
2735 	      bp_err_message = e.message;
2736 	    }
2737 	  END_CATCH
2738 	}
2739       else
2740 	{
2741 	  /* This breakpoint is in an overlay section.
2742 	     Shall we set a breakpoint at the LMA?  */
2743 	  if (!overlay_events_enabled)
2744 	    {
2745 	      /* Yes -- overlay event support is not active,
2746 		 so we must try to set a breakpoint at the LMA.
2747 		 This will not work for a hardware breakpoint.  */
2748 	      if (bl->loc_type == bp_loc_hardware_breakpoint)
2749 		warning (_("hardware breakpoint %d not supported in overlay!"),
2750 			 bl->owner->number);
2751 	      else
2752 		{
2753 		  CORE_ADDR addr = overlay_unmapped_address (bl->address,
2754 							     bl->section);
2755 		  /* Set a software (trap) breakpoint at the LMA.  */
2756 		  bl->overlay_target_info = bl->target_info;
2757 		  bl->overlay_target_info.reqstd_address = addr;
2758 
2759 		  /* No overlay handling: just set the breakpoint.  */
2760 		  TRY
2761 		    {
2762 		      int val;
2763 
2764 		      val = target_insert_breakpoint (bl->gdbarch,
2765 						      &bl->overlay_target_info);
2766 		      if (val)
2767 			bp_err = GENERIC_ERROR;
2768 		    }
2769 		  CATCH (e, RETURN_MASK_ALL)
2770 		    {
2771 		      bp_err = e.error;
2772 		      bp_err_message = e.message;
2773 		    }
2774 		  END_CATCH
2775 
2776 		  if (bp_err != GDB_NO_ERROR)
2777 		    fprintf_unfiltered (tmp_error_stream,
2778 					"Overlay breakpoint %d "
2779 					"failed: in ROM?\n",
2780 					bl->owner->number);
2781 		}
2782 	    }
2783 	  /* Shall we set a breakpoint at the VMA? */
2784 	  if (section_is_mapped (bl->section))
2785 	    {
2786 	      /* Yes.  This overlay section is mapped into memory.  */
2787 	      TRY
2788 	        {
2789 		  int val;
2790 
2791 	          val = bl->owner->ops->insert_location (bl);
2792 		  if (val)
2793 		    bp_err = GENERIC_ERROR;
2794 	        }
2795 	      CATCH (e, RETURN_MASK_ALL)
2796 	        {
2797 		  bp_err = e.error;
2798 		  bp_err_message = e.message;
2799 	        }
2800 	      END_CATCH
2801 	    }
2802 	  else
2803 	    {
2804 	      /* No.  This breakpoint will not be inserted.
2805 		 No error, but do not mark the bp as 'inserted'.  */
2806 	      return 0;
2807 	    }
2808 	}
2809 
2810       if (bp_err != GDB_NO_ERROR)
2811 	{
2812 	  /* Can't set the breakpoint.  */
2813 
2814 	  /* In some cases, we might not be able to insert a
2815 	     breakpoint in a shared library that has already been
2816 	     removed, but we have not yet processed the shlib unload
2817 	     event.  Unfortunately, some targets that implement
2818 	     breakpoint insertion themselves can't tell why the
2819 	     breakpoint insertion failed (e.g., the remote target
2820 	     doesn't define error codes), so we must treat generic
2821 	     errors as memory errors.  */
2822 	  if ((bp_err == GENERIC_ERROR || bp_err == MEMORY_ERROR)
2823 	      && bl->loc_type == bp_loc_software_breakpoint
2824 	      && (solib_name_from_address (bl->pspace, bl->address)
2825 		  || shared_objfile_contains_address_p (bl->pspace,
2826 							bl->address)))
2827 	    {
2828 	      /* See also: disable_breakpoints_in_shlibs.  */
2829 	      bl->shlib_disabled = 1;
2830 	      observer_notify_breakpoint_modified (bl->owner);
2831 	      if (!*disabled_breaks)
2832 		{
2833 		  fprintf_unfiltered (tmp_error_stream,
2834 				      "Cannot insert breakpoint %d.\n",
2835 				      bl->owner->number);
2836 		  fprintf_unfiltered (tmp_error_stream,
2837 				      "Temporarily disabling shared "
2838 				      "library breakpoints:\n");
2839 		}
2840 	      *disabled_breaks = 1;
2841 	      fprintf_unfiltered (tmp_error_stream,
2842 				  "breakpoint #%d\n", bl->owner->number);
2843 	      return 0;
2844 	    }
2845 	  else
2846 	    {
2847 	      if (bl->loc_type == bp_loc_hardware_breakpoint)
2848 		{
2849 		  *hw_breakpoint_error = 1;
2850 		  *hw_bp_error_explained_already = bp_err_message != NULL;
2851                   fprintf_unfiltered (tmp_error_stream,
2852                                       "Cannot insert hardware breakpoint %d%s",
2853                                       bl->owner->number, bp_err_message ? ":" : ".\n");
2854                   if (bp_err_message != NULL)
2855                     fprintf_unfiltered (tmp_error_stream, "%s.\n", bp_err_message);
2856 		}
2857 	      else
2858 		{
2859 		  if (bp_err_message == NULL)
2860 		    {
2861 		      char *message
2862 			= memory_error_message (TARGET_XFER_E_IO,
2863 						bl->gdbarch, bl->address);
2864 		      struct cleanup *old_chain = make_cleanup (xfree, message);
2865 
2866 		      fprintf_unfiltered (tmp_error_stream,
2867 					  "Cannot insert breakpoint %d.\n"
2868 					  "%s\n",
2869 					  bl->owner->number, message);
2870 		      do_cleanups (old_chain);
2871 		    }
2872 		  else
2873 		    {
2874 		      fprintf_unfiltered (tmp_error_stream,
2875 					  "Cannot insert breakpoint %d: %s\n",
2876 					  bl->owner->number,
2877 					  bp_err_message);
2878 		    }
2879 		}
2880 	      return 1;
2881 
2882 	    }
2883 	}
2884       else
2885 	bl->inserted = 1;
2886 
2887       return 0;
2888     }
2889 
2890   else if (bl->loc_type == bp_loc_hardware_watchpoint
2891 	   /* NOTE drow/2003-09-08: This state only exists for removing
2892 	      watchpoints.  It's not clear that it's necessary...  */
2893 	   && bl->owner->disposition != disp_del_at_next_stop)
2894     {
2895       int val;
2896 
2897       gdb_assert (bl->owner->ops != NULL
2898 		  && bl->owner->ops->insert_location != NULL);
2899 
2900       val = bl->owner->ops->insert_location (bl);
2901 
2902       /* If trying to set a read-watchpoint, and it turns out it's not
2903 	 supported, try emulating one with an access watchpoint.  */
2904       if (val == 1 && bl->watchpoint_type == hw_read)
2905 	{
2906 	  struct bp_location *loc, **loc_temp;
2907 
2908 	  /* But don't try to insert it, if there's already another
2909 	     hw_access location that would be considered a duplicate
2910 	     of this one.  */
2911 	  ALL_BP_LOCATIONS (loc, loc_temp)
2912 	    if (loc != bl
2913 		&& loc->watchpoint_type == hw_access
2914 		&& watchpoint_locations_match (bl, loc))
2915 	      {
2916 		bl->duplicate = 1;
2917 		bl->inserted = 1;
2918 		bl->target_info = loc->target_info;
2919 		bl->watchpoint_type = hw_access;
2920 		val = 0;
2921 		break;
2922 	      }
2923 
2924 	  if (val == 1)
2925 	    {
2926 	      bl->watchpoint_type = hw_access;
2927 	      val = bl->owner->ops->insert_location (bl);
2928 
2929 	      if (val)
2930 		/* Back to the original value.  */
2931 		bl->watchpoint_type = hw_read;
2932 	    }
2933 	}
2934 
2935       bl->inserted = (val == 0);
2936     }
2937 
2938   else if (bl->owner->type == bp_catchpoint)
2939     {
2940       int val;
2941 
2942       gdb_assert (bl->owner->ops != NULL
2943 		  && bl->owner->ops->insert_location != NULL);
2944 
2945       val = bl->owner->ops->insert_location (bl);
2946       if (val)
2947 	{
2948 	  bl->owner->enable_state = bp_disabled;
2949 
2950 	  if (val == 1)
2951 	    warning (_("\
2952 Error inserting catchpoint %d: Your system does not support this type\n\
2953 of catchpoint."), bl->owner->number);
2954 	  else
2955 	    warning (_("Error inserting catchpoint %d."), bl->owner->number);
2956 	}
2957 
2958       bl->inserted = (val == 0);
2959 
2960       /* We've already printed an error message if there was a problem
2961 	 inserting this catchpoint, and we've disabled the catchpoint,
2962 	 so just return success.  */
2963       return 0;
2964     }
2965 
2966   return 0;
2967 }
2968 
2969 /* This function is called when program space PSPACE is about to be
2970    deleted.  It takes care of updating breakpoints to not reference
2971    PSPACE anymore.  */
2972 
2973 void
2974 breakpoint_program_space_exit (struct program_space *pspace)
2975 {
2976   struct breakpoint *b, *b_temp;
2977   struct bp_location *loc, **loc_temp;
2978 
2979   /* Remove any breakpoint that was set through this program space.  */
2980   ALL_BREAKPOINTS_SAFE (b, b_temp)
2981     {
2982       if (b->pspace == pspace)
2983 	delete_breakpoint (b);
2984     }
2985 
2986   /* Breakpoints set through other program spaces could have locations
2987      bound to PSPACE as well.  Remove those.  */
2988   ALL_BP_LOCATIONS (loc, loc_temp)
2989     {
2990       struct bp_location *tmp;
2991 
2992       if (loc->pspace == pspace)
2993 	{
2994 	  /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
2995 	  if (loc->owner->loc == loc)
2996 	    loc->owner->loc = loc->next;
2997 	  else
2998 	    for (tmp = loc->owner->loc; tmp->next != NULL; tmp = tmp->next)
2999 	      if (tmp->next == loc)
3000 		{
3001 		  tmp->next = loc->next;
3002 		  break;
3003 		}
3004 	}
3005     }
3006 
3007   /* Now update the global location list to permanently delete the
3008      removed locations above.  */
3009   update_global_location_list (UGLL_DONT_INSERT);
3010 }
3011 
3012 /* Make sure all breakpoints are inserted in inferior.
3013    Throws exception on any error.
3014    A breakpoint that is already inserted won't be inserted
3015    again, so calling this function twice is safe.  */
3016 void
3017 insert_breakpoints (void)
3018 {
3019   struct breakpoint *bpt;
3020 
3021   ALL_BREAKPOINTS (bpt)
3022     if (is_hardware_watchpoint (bpt))
3023       {
3024 	struct watchpoint *w = (struct watchpoint *) bpt;
3025 
3026 	update_watchpoint (w, 0 /* don't reparse.  */);
3027       }
3028 
3029   /* Updating watchpoints creates new locations, so update the global
3030      location list.  Explicitly tell ugll to insert locations and
3031      ignore breakpoints_always_inserted_mode.  */
3032   update_global_location_list (UGLL_INSERT);
3033 }
3034 
3035 /* Invoke CALLBACK for each of bp_location.  */
3036 
3037 void
3038 iterate_over_bp_locations (walk_bp_location_callback callback)
3039 {
3040   struct bp_location *loc, **loc_tmp;
3041 
3042   ALL_BP_LOCATIONS (loc, loc_tmp)
3043     {
3044       callback (loc, NULL);
3045     }
3046 }
3047 
3048 /* This is used when we need to synch breakpoint conditions between GDB and the
3049    target.  It is the case with deleting and disabling of breakpoints when using
3050    always-inserted mode.  */
3051 
3052 static void
3053 update_inserted_breakpoint_locations (void)
3054 {
3055   struct bp_location *bl, **blp_tmp;
3056   int error_flag = 0;
3057   int val = 0;
3058   int disabled_breaks = 0;
3059   int hw_breakpoint_error = 0;
3060   int hw_bp_details_reported = 0;
3061 
3062   struct ui_file *tmp_error_stream = mem_fileopen ();
3063   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3064 
3065   /* Explicitly mark the warning -- this will only be printed if
3066      there was an error.  */
3067   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3068 
3069   save_current_space_and_thread ();
3070 
3071   ALL_BP_LOCATIONS (bl, blp_tmp)
3072     {
3073       /* We only want to update software breakpoints and hardware
3074 	 breakpoints.  */
3075       if (!is_breakpoint (bl->owner))
3076 	continue;
3077 
3078       /* We only want to update locations that are already inserted
3079 	 and need updating.  This is to avoid unwanted insertion during
3080 	 deletion of breakpoints.  */
3081       if (!bl->inserted || (bl->inserted && !bl->needs_update))
3082 	continue;
3083 
3084       switch_to_program_space_and_thread (bl->pspace);
3085 
3086       /* For targets that support global breakpoints, there's no need
3087 	 to select an inferior to insert breakpoint to.  In fact, even
3088 	 if we aren't attached to any process yet, we should still
3089 	 insert breakpoints.  */
3090       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3091 	  && ptid_equal (inferior_ptid, null_ptid))
3092 	continue;
3093 
3094       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3095 				    &hw_breakpoint_error, &hw_bp_details_reported);
3096       if (val)
3097 	error_flag = val;
3098     }
3099 
3100   if (error_flag)
3101     {
3102       target_terminal_ours_for_output ();
3103       error_stream (tmp_error_stream);
3104     }
3105 
3106   do_cleanups (cleanups);
3107 }
3108 
3109 /* Used when starting or continuing the program.  */
3110 
3111 static void
3112 insert_breakpoint_locations (void)
3113 {
3114   struct breakpoint *bpt;
3115   struct bp_location *bl, **blp_tmp;
3116   int error_flag = 0;
3117   int val = 0;
3118   int disabled_breaks = 0;
3119   int hw_breakpoint_error = 0;
3120   int hw_bp_error_explained_already = 0;
3121 
3122   struct ui_file *tmp_error_stream = mem_fileopen ();
3123   struct cleanup *cleanups = make_cleanup_ui_file_delete (tmp_error_stream);
3124 
3125   /* Explicitly mark the warning -- this will only be printed if
3126      there was an error.  */
3127   fprintf_unfiltered (tmp_error_stream, "Warning:\n");
3128 
3129   save_current_space_and_thread ();
3130 
3131   ALL_BP_LOCATIONS (bl, blp_tmp)
3132     {
3133       if (!should_be_inserted (bl) || (bl->inserted && !bl->needs_update))
3134 	continue;
3135 
3136       /* There is no point inserting thread-specific breakpoints if
3137 	 the thread no longer exists.  ALL_BP_LOCATIONS bp_location
3138 	 has BL->OWNER always non-NULL.  */
3139       if (bl->owner->thread != -1
3140 	  && !valid_global_thread_id (bl->owner->thread))
3141 	continue;
3142 
3143       switch_to_program_space_and_thread (bl->pspace);
3144 
3145       /* For targets that support global breakpoints, there's no need
3146 	 to select an inferior to insert breakpoint to.  In fact, even
3147 	 if we aren't attached to any process yet, we should still
3148 	 insert breakpoints.  */
3149       if (!gdbarch_has_global_breakpoints (target_gdbarch ())
3150 	  && ptid_equal (inferior_ptid, null_ptid))
3151 	continue;
3152 
3153       val = insert_bp_location (bl, tmp_error_stream, &disabled_breaks,
3154 				    &hw_breakpoint_error, &hw_bp_error_explained_already);
3155       if (val)
3156 	error_flag = val;
3157     }
3158 
3159   /* If we failed to insert all locations of a watchpoint, remove
3160      them, as half-inserted watchpoint is of limited use.  */
3161   ALL_BREAKPOINTS (bpt)
3162     {
3163       int some_failed = 0;
3164       struct bp_location *loc;
3165 
3166       if (!is_hardware_watchpoint (bpt))
3167 	continue;
3168 
3169       if (!breakpoint_enabled (bpt))
3170 	continue;
3171 
3172       if (bpt->disposition == disp_del_at_next_stop)
3173 	continue;
3174 
3175       for (loc = bpt->loc; loc; loc = loc->next)
3176 	if (!loc->inserted && should_be_inserted (loc))
3177 	  {
3178 	    some_failed = 1;
3179 	    break;
3180 	  }
3181       if (some_failed)
3182 	{
3183 	  for (loc = bpt->loc; loc; loc = loc->next)
3184 	    if (loc->inserted)
3185 	      remove_breakpoint (loc);
3186 
3187 	  hw_breakpoint_error = 1;
3188 	  fprintf_unfiltered (tmp_error_stream,
3189 			      "Could not insert hardware watchpoint %d.\n",
3190 			      bpt->number);
3191 	  error_flag = -1;
3192 	}
3193     }
3194 
3195   if (error_flag)
3196     {
3197       /* If a hardware breakpoint or watchpoint was inserted, add a
3198          message about possibly exhausted resources.  */
3199       if (hw_breakpoint_error && !hw_bp_error_explained_already)
3200 	{
3201 	  fprintf_unfiltered (tmp_error_stream,
3202 			      "Could not insert hardware breakpoints:\n\
3203 You may have requested too many hardware breakpoints/watchpoints.\n");
3204 	}
3205       target_terminal_ours_for_output ();
3206       error_stream (tmp_error_stream);
3207     }
3208 
3209   do_cleanups (cleanups);
3210 }
3211 
3212 /* Used when the program stops.
3213    Returns zero if successful, or non-zero if there was a problem
3214    removing a breakpoint location.  */
3215 
3216 int
3217 remove_breakpoints (void)
3218 {
3219   struct bp_location *bl, **blp_tmp;
3220   int val = 0;
3221 
3222   ALL_BP_LOCATIONS (bl, blp_tmp)
3223   {
3224     if (bl->inserted && !is_tracepoint (bl->owner))
3225       val |= remove_breakpoint (bl);
3226   }
3227   return val;
3228 }
3229 
3230 /* When a thread exits, remove breakpoints that are related to
3231    that thread.  */
3232 
3233 static void
3234 remove_threaded_breakpoints (struct thread_info *tp, int silent)
3235 {
3236   struct breakpoint *b, *b_tmp;
3237 
3238   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3239     {
3240       if (b->thread == tp->global_num && user_breakpoint_p (b))
3241 	{
3242 	  b->disposition = disp_del_at_next_stop;
3243 
3244 	  printf_filtered (_("\
3245 Thread-specific breakpoint %d deleted - thread %s no longer in the thread list.\n"),
3246 			   b->number, print_thread_id (tp));
3247 
3248 	  /* Hide it from the user.  */
3249 	  b->number = 0;
3250        }
3251     }
3252 }
3253 
3254 /* Remove breakpoints of process PID.  */
3255 
3256 int
3257 remove_breakpoints_pid (int pid)
3258 {
3259   struct bp_location *bl, **blp_tmp;
3260   int val;
3261   struct inferior *inf = find_inferior_pid (pid);
3262 
3263   ALL_BP_LOCATIONS (bl, blp_tmp)
3264   {
3265     if (bl->pspace != inf->pspace)
3266       continue;
3267 
3268     if (bl->inserted && !bl->target_info.persist)
3269       {
3270 	val = remove_breakpoint (bl);
3271 	if (val != 0)
3272 	  return val;
3273       }
3274   }
3275   return 0;
3276 }
3277 
3278 int
3279 reattach_breakpoints (int pid)
3280 {
3281   struct cleanup *old_chain;
3282   struct bp_location *bl, **blp_tmp;
3283   int val;
3284   struct ui_file *tmp_error_stream;
3285   int dummy1 = 0, dummy2 = 0, dummy3 = 0;
3286   struct inferior *inf;
3287   struct thread_info *tp;
3288 
3289   tp = any_live_thread_of_process (pid);
3290   if (tp == NULL)
3291     return 1;
3292 
3293   inf = find_inferior_pid (pid);
3294   old_chain = save_inferior_ptid ();
3295 
3296   inferior_ptid = tp->ptid;
3297 
3298   tmp_error_stream = mem_fileopen ();
3299   make_cleanup_ui_file_delete (tmp_error_stream);
3300 
3301   ALL_BP_LOCATIONS (bl, blp_tmp)
3302   {
3303     if (bl->pspace != inf->pspace)
3304       continue;
3305 
3306     if (bl->inserted)
3307       {
3308 	bl->inserted = 0;
3309 	val = insert_bp_location (bl, tmp_error_stream, &dummy1, &dummy2, &dummy3);
3310 	if (val != 0)
3311 	  {
3312 	    do_cleanups (old_chain);
3313 	    return val;
3314 	  }
3315       }
3316   }
3317   do_cleanups (old_chain);
3318   return 0;
3319 }
3320 
3321 static int internal_breakpoint_number = -1;
3322 
3323 /* Set the breakpoint number of B, depending on the value of INTERNAL.
3324    If INTERNAL is non-zero, the breakpoint number will be populated
3325    from internal_breakpoint_number and that variable decremented.
3326    Otherwise the breakpoint number will be populated from
3327    breakpoint_count and that value incremented.  Internal breakpoints
3328    do not set the internal var bpnum.  */
3329 static void
3330 set_breakpoint_number (int internal, struct breakpoint *b)
3331 {
3332   if (internal)
3333     b->number = internal_breakpoint_number--;
3334   else
3335     {
3336       set_breakpoint_count (breakpoint_count + 1);
3337       b->number = breakpoint_count;
3338     }
3339 }
3340 
3341 static struct breakpoint *
3342 create_internal_breakpoint (struct gdbarch *gdbarch,
3343 			    CORE_ADDR address, enum bptype type,
3344 			    const struct breakpoint_ops *ops)
3345 {
3346   struct symtab_and_line sal;
3347   struct breakpoint *b;
3348 
3349   init_sal (&sal);		/* Initialize to zeroes.  */
3350 
3351   sal.pc = address;
3352   sal.section = find_pc_overlay (sal.pc);
3353   sal.pspace = current_program_space;
3354 
3355   b = set_raw_breakpoint (gdbarch, sal, type, ops);
3356   b->number = internal_breakpoint_number--;
3357   b->disposition = disp_donttouch;
3358 
3359   return b;
3360 }
3361 
3362 static const char *const longjmp_names[] =
3363   {
3364     "longjmp", "_longjmp", "siglongjmp", "_siglongjmp"
3365   };
3366 #define NUM_LONGJMP_NAMES ARRAY_SIZE(longjmp_names)
3367 
3368 /* Per-objfile data private to breakpoint.c.  */
3369 struct breakpoint_objfile_data
3370 {
3371   /* Minimal symbol for "_ovly_debug_event" (if any).  */
3372   struct bound_minimal_symbol overlay_msym;
3373 
3374   /* Minimal symbol(s) for "longjmp", "siglongjmp", etc. (if any).  */
3375   struct bound_minimal_symbol longjmp_msym[NUM_LONGJMP_NAMES];
3376 
3377   /* True if we have looked for longjmp probes.  */
3378   int longjmp_searched;
3379 
3380   /* SystemTap probe points for longjmp (if any).  */
3381   VEC (probe_p) *longjmp_probes;
3382 
3383   /* Minimal symbol for "std::terminate()" (if any).  */
3384   struct bound_minimal_symbol terminate_msym;
3385 
3386   /* Minimal symbol for "_Unwind_DebugHook" (if any).  */
3387   struct bound_minimal_symbol exception_msym;
3388 
3389   /* True if we have looked for exception probes.  */
3390   int exception_searched;
3391 
3392   /* SystemTap probe points for unwinding (if any).  */
3393   VEC (probe_p) *exception_probes;
3394 };
3395 
3396 static const struct objfile_data *breakpoint_objfile_key;
3397 
3398 /* Minimal symbol not found sentinel.  */
3399 static struct minimal_symbol msym_not_found;
3400 
3401 /* Returns TRUE if MSYM point to the "not found" sentinel.  */
3402 
3403 static int
3404 msym_not_found_p (const struct minimal_symbol *msym)
3405 {
3406   return msym == &msym_not_found;
3407 }
3408 
3409 /* Return per-objfile data needed by breakpoint.c.
3410    Allocate the data if necessary.  */
3411 
3412 static struct breakpoint_objfile_data *
3413 get_breakpoint_objfile_data (struct objfile *objfile)
3414 {
3415   struct breakpoint_objfile_data *bp_objfile_data;
3416 
3417   bp_objfile_data = ((struct breakpoint_objfile_data *)
3418 		     objfile_data (objfile, breakpoint_objfile_key));
3419   if (bp_objfile_data == NULL)
3420     {
3421       bp_objfile_data =
3422 	XOBNEW (&objfile->objfile_obstack, struct breakpoint_objfile_data);
3423 
3424       memset (bp_objfile_data, 0, sizeof (*bp_objfile_data));
3425       set_objfile_data (objfile, breakpoint_objfile_key, bp_objfile_data);
3426     }
3427   return bp_objfile_data;
3428 }
3429 
3430 static void
3431 free_breakpoint_probes (struct objfile *obj, void *data)
3432 {
3433   struct breakpoint_objfile_data *bp_objfile_data
3434     = (struct breakpoint_objfile_data *) data;
3435 
3436   VEC_free (probe_p, bp_objfile_data->longjmp_probes);
3437   VEC_free (probe_p, bp_objfile_data->exception_probes);
3438 }
3439 
3440 static void
3441 create_overlay_event_breakpoint (void)
3442 {
3443   struct objfile *objfile;
3444   const char *const func_name = "_ovly_debug_event";
3445 
3446   ALL_OBJFILES (objfile)
3447     {
3448       struct breakpoint *b;
3449       struct breakpoint_objfile_data *bp_objfile_data;
3450       CORE_ADDR addr;
3451       struct explicit_location explicit_loc;
3452 
3453       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3454 
3455       if (msym_not_found_p (bp_objfile_data->overlay_msym.minsym))
3456 	continue;
3457 
3458       if (bp_objfile_data->overlay_msym.minsym == NULL)
3459 	{
3460 	  struct bound_minimal_symbol m;
3461 
3462 	  m = lookup_minimal_symbol_text (func_name, objfile);
3463 	  if (m.minsym == NULL)
3464 	    {
3465 	      /* Avoid future lookups in this objfile.  */
3466 	      bp_objfile_data->overlay_msym.minsym = &msym_not_found;
3467 	      continue;
3468 	    }
3469 	  bp_objfile_data->overlay_msym = m;
3470 	}
3471 
3472       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->overlay_msym);
3473       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3474                                       bp_overlay_event,
3475 				      &internal_breakpoint_ops);
3476       initialize_explicit_location (&explicit_loc);
3477       explicit_loc.function_name = ASTRDUP (func_name);
3478       b->location = new_explicit_location (&explicit_loc);
3479 
3480       if (overlay_debugging == ovly_auto)
3481         {
3482           b->enable_state = bp_enabled;
3483           overlay_events_enabled = 1;
3484         }
3485       else
3486        {
3487          b->enable_state = bp_disabled;
3488          overlay_events_enabled = 0;
3489        }
3490     }
3491 }
3492 
3493 static void
3494 create_longjmp_master_breakpoint (void)
3495 {
3496   struct program_space *pspace;
3497   struct cleanup *old_chain;
3498 
3499   old_chain = save_current_program_space ();
3500 
3501   ALL_PSPACES (pspace)
3502   {
3503     struct objfile *objfile;
3504 
3505     set_current_program_space (pspace);
3506 
3507     ALL_OBJFILES (objfile)
3508     {
3509       int i;
3510       struct gdbarch *gdbarch;
3511       struct breakpoint_objfile_data *bp_objfile_data;
3512 
3513       gdbarch = get_objfile_arch (objfile);
3514 
3515       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3516 
3517       if (!bp_objfile_data->longjmp_searched)
3518 	{
3519 	  VEC (probe_p) *ret;
3520 
3521 	  ret = find_probes_in_objfile (objfile, "libc", "longjmp");
3522 	  if (ret != NULL)
3523 	    {
3524 	      /* We are only interested in checking one element.  */
3525 	      struct probe *p = VEC_index (probe_p, ret, 0);
3526 
3527 	      if (!can_evaluate_probe_arguments (p))
3528 		{
3529 		  /* We cannot use the probe interface here, because it does
3530 		     not know how to evaluate arguments.  */
3531 		  VEC_free (probe_p, ret);
3532 		  ret = NULL;
3533 		}
3534 	    }
3535 	  bp_objfile_data->longjmp_probes = ret;
3536 	  bp_objfile_data->longjmp_searched = 1;
3537 	}
3538 
3539       if (bp_objfile_data->longjmp_probes != NULL)
3540 	{
3541 	  int i;
3542 	  struct probe *probe;
3543 	  struct gdbarch *gdbarch = get_objfile_arch (objfile);
3544 
3545 	  for (i = 0;
3546 	       VEC_iterate (probe_p,
3547 			    bp_objfile_data->longjmp_probes,
3548 			    i, probe);
3549 	       ++i)
3550 	    {
3551 	      struct breakpoint *b;
3552 
3553 	      b = create_internal_breakpoint (gdbarch,
3554 					      get_probe_address (probe,
3555 								 objfile),
3556 					      bp_longjmp_master,
3557 					      &internal_breakpoint_ops);
3558 	      b->location
3559 		= new_probe_location ("-probe-stap libc:longjmp");
3560 	      b->enable_state = bp_disabled;
3561 	    }
3562 
3563 	  continue;
3564 	}
3565 
3566       if (!gdbarch_get_longjmp_target_p (gdbarch))
3567 	continue;
3568 
3569       for (i = 0; i < NUM_LONGJMP_NAMES; i++)
3570 	{
3571 	  struct breakpoint *b;
3572 	  const char *func_name;
3573 	  CORE_ADDR addr;
3574 	  struct explicit_location explicit_loc;
3575 
3576 	  if (msym_not_found_p (bp_objfile_data->longjmp_msym[i].minsym))
3577 	    continue;
3578 
3579 	  func_name = longjmp_names[i];
3580 	  if (bp_objfile_data->longjmp_msym[i].minsym == NULL)
3581 	    {
3582 	      struct bound_minimal_symbol m;
3583 
3584 	      m = lookup_minimal_symbol_text (func_name, objfile);
3585 	      if (m.minsym == NULL)
3586 		{
3587 		  /* Prevent future lookups in this objfile.  */
3588 		  bp_objfile_data->longjmp_msym[i].minsym = &msym_not_found;
3589 		  continue;
3590 		}
3591 	      bp_objfile_data->longjmp_msym[i] = m;
3592 	    }
3593 
3594 	  addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->longjmp_msym[i]);
3595 	  b = create_internal_breakpoint (gdbarch, addr, bp_longjmp_master,
3596 					  &internal_breakpoint_ops);
3597 	  initialize_explicit_location (&explicit_loc);
3598 	  explicit_loc.function_name = ASTRDUP (func_name);
3599 	  b->location = new_explicit_location (&explicit_loc);
3600 	  b->enable_state = bp_disabled;
3601 	}
3602     }
3603   }
3604 
3605   do_cleanups (old_chain);
3606 }
3607 
3608 /* Create a master std::terminate breakpoint.  */
3609 static void
3610 create_std_terminate_master_breakpoint (void)
3611 {
3612   struct program_space *pspace;
3613   struct cleanup *old_chain;
3614   const char *const func_name = "std::terminate()";
3615 
3616   old_chain = save_current_program_space ();
3617 
3618   ALL_PSPACES (pspace)
3619   {
3620     struct objfile *objfile;
3621     CORE_ADDR addr;
3622 
3623     set_current_program_space (pspace);
3624 
3625     ALL_OBJFILES (objfile)
3626     {
3627       struct breakpoint *b;
3628       struct breakpoint_objfile_data *bp_objfile_data;
3629       struct explicit_location explicit_loc;
3630 
3631       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3632 
3633       if (msym_not_found_p (bp_objfile_data->terminate_msym.minsym))
3634 	continue;
3635 
3636       if (bp_objfile_data->terminate_msym.minsym == NULL)
3637 	{
3638 	  struct bound_minimal_symbol m;
3639 
3640 	  m = lookup_minimal_symbol (func_name, NULL, objfile);
3641 	  if (m.minsym == NULL || (MSYMBOL_TYPE (m.minsym) != mst_text
3642 				   && MSYMBOL_TYPE (m.minsym) != mst_file_text))
3643 	    {
3644 	      /* Prevent future lookups in this objfile.  */
3645 	      bp_objfile_data->terminate_msym.minsym = &msym_not_found;
3646 	      continue;
3647 	    }
3648 	  bp_objfile_data->terminate_msym = m;
3649 	}
3650 
3651       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->terminate_msym);
3652       b = create_internal_breakpoint (get_objfile_arch (objfile), addr,
3653                                       bp_std_terminate_master,
3654 				      &internal_breakpoint_ops);
3655       initialize_explicit_location (&explicit_loc);
3656       explicit_loc.function_name = ASTRDUP (func_name);
3657       b->location = new_explicit_location (&explicit_loc);
3658       b->enable_state = bp_disabled;
3659     }
3660   }
3661 
3662   do_cleanups (old_chain);
3663 }
3664 
3665 /* Install a master breakpoint on the unwinder's debug hook.  */
3666 
3667 static void
3668 create_exception_master_breakpoint (void)
3669 {
3670   struct objfile *objfile;
3671   const char *const func_name = "_Unwind_DebugHook";
3672 
3673   ALL_OBJFILES (objfile)
3674     {
3675       struct breakpoint *b;
3676       struct gdbarch *gdbarch;
3677       struct breakpoint_objfile_data *bp_objfile_data;
3678       CORE_ADDR addr;
3679       struct explicit_location explicit_loc;
3680 
3681       bp_objfile_data = get_breakpoint_objfile_data (objfile);
3682 
3683       /* We prefer the SystemTap probe point if it exists.  */
3684       if (!bp_objfile_data->exception_searched)
3685 	{
3686 	  VEC (probe_p) *ret;
3687 
3688 	  ret = find_probes_in_objfile (objfile, "libgcc", "unwind");
3689 
3690 	  if (ret != NULL)
3691 	    {
3692 	      /* We are only interested in checking one element.  */
3693 	      struct probe *p = VEC_index (probe_p, ret, 0);
3694 
3695 	      if (!can_evaluate_probe_arguments (p))
3696 		{
3697 		  /* We cannot use the probe interface here, because it does
3698 		     not know how to evaluate arguments.  */
3699 		  VEC_free (probe_p, ret);
3700 		  ret = NULL;
3701 		}
3702 	    }
3703 	  bp_objfile_data->exception_probes = ret;
3704 	  bp_objfile_data->exception_searched = 1;
3705 	}
3706 
3707       if (bp_objfile_data->exception_probes != NULL)
3708 	{
3709 	  struct gdbarch *gdbarch = get_objfile_arch (objfile);
3710 	  int i;
3711 	  struct probe *probe;
3712 
3713 	  for (i = 0;
3714 	       VEC_iterate (probe_p,
3715 			    bp_objfile_data->exception_probes,
3716 			    i, probe);
3717 	       ++i)
3718 	    {
3719 	      struct breakpoint *b;
3720 
3721 	      b = create_internal_breakpoint (gdbarch,
3722 					      get_probe_address (probe,
3723 								 objfile),
3724 					      bp_exception_master,
3725 					      &internal_breakpoint_ops);
3726 	      b->location
3727 		= new_probe_location ("-probe-stap libgcc:unwind");
3728 	      b->enable_state = bp_disabled;
3729 	    }
3730 
3731 	  continue;
3732 	}
3733 
3734       /* Otherwise, try the hook function.  */
3735 
3736       if (msym_not_found_p (bp_objfile_data->exception_msym.minsym))
3737 	continue;
3738 
3739       gdbarch = get_objfile_arch (objfile);
3740 
3741       if (bp_objfile_data->exception_msym.minsym == NULL)
3742 	{
3743 	  struct bound_minimal_symbol debug_hook;
3744 
3745 	  debug_hook = lookup_minimal_symbol (func_name, NULL, objfile);
3746 	  if (debug_hook.minsym == NULL)
3747 	    {
3748 	      bp_objfile_data->exception_msym.minsym = &msym_not_found;
3749 	      continue;
3750 	    }
3751 
3752 	  bp_objfile_data->exception_msym = debug_hook;
3753 	}
3754 
3755       addr = BMSYMBOL_VALUE_ADDRESS (bp_objfile_data->exception_msym);
3756       addr = gdbarch_convert_from_func_ptr_addr (gdbarch, addr,
3757 						 &current_target);
3758       b = create_internal_breakpoint (gdbarch, addr, bp_exception_master,
3759 				      &internal_breakpoint_ops);
3760       initialize_explicit_location (&explicit_loc);
3761       explicit_loc.function_name = ASTRDUP (func_name);
3762       b->location = new_explicit_location (&explicit_loc);
3763       b->enable_state = bp_disabled;
3764     }
3765 }
3766 
3767 /* Does B have a location spec?  */
3768 
3769 static int
3770 breakpoint_event_location_empty_p (const struct breakpoint *b)
3771 {
3772   return b->location != NULL && event_location_empty_p (b->location);
3773 }
3774 
3775 void
3776 update_breakpoints_after_exec (void)
3777 {
3778   struct breakpoint *b, *b_tmp;
3779   struct bp_location *bploc, **bplocp_tmp;
3780 
3781   /* We're about to delete breakpoints from GDB's lists.  If the
3782      INSERTED flag is true, GDB will try to lift the breakpoints by
3783      writing the breakpoints' "shadow contents" back into memory.  The
3784      "shadow contents" are NOT valid after an exec, so GDB should not
3785      do that.  Instead, the target is responsible from marking
3786      breakpoints out as soon as it detects an exec.  We don't do that
3787      here instead, because there may be other attempts to delete
3788      breakpoints after detecting an exec and before reaching here.  */
3789   ALL_BP_LOCATIONS (bploc, bplocp_tmp)
3790     if (bploc->pspace == current_program_space)
3791       gdb_assert (!bploc->inserted);
3792 
3793   ALL_BREAKPOINTS_SAFE (b, b_tmp)
3794   {
3795     if (b->pspace != current_program_space)
3796       continue;
3797 
3798     /* Solib breakpoints must be explicitly reset after an exec().  */
3799     if (b->type == bp_shlib_event)
3800       {
3801 	delete_breakpoint (b);
3802 	continue;
3803       }
3804 
3805     /* JIT breakpoints must be explicitly reset after an exec().  */
3806     if (b->type == bp_jit_event)
3807       {
3808 	delete_breakpoint (b);
3809 	continue;
3810       }
3811 
3812     /* Thread event breakpoints must be set anew after an exec(),
3813        as must overlay event and longjmp master breakpoints.  */
3814     if (b->type == bp_thread_event || b->type == bp_overlay_event
3815 	|| b->type == bp_longjmp_master || b->type == bp_std_terminate_master
3816 	|| b->type == bp_exception_master)
3817       {
3818 	delete_breakpoint (b);
3819 	continue;
3820       }
3821 
3822     /* Step-resume breakpoints are meaningless after an exec().  */
3823     if (b->type == bp_step_resume || b->type == bp_hp_step_resume)
3824       {
3825 	delete_breakpoint (b);
3826 	continue;
3827       }
3828 
3829     /* Just like single-step breakpoints.  */
3830     if (b->type == bp_single_step)
3831       {
3832 	delete_breakpoint (b);
3833 	continue;
3834       }
3835 
3836     /* Longjmp and longjmp-resume breakpoints are also meaningless
3837        after an exec.  */
3838     if (b->type == bp_longjmp || b->type == bp_longjmp_resume
3839 	|| b->type == bp_longjmp_call_dummy
3840 	|| b->type == bp_exception || b->type == bp_exception_resume)
3841       {
3842 	delete_breakpoint (b);
3843 	continue;
3844       }
3845 
3846     if (b->type == bp_catchpoint)
3847       {
3848         /* For now, none of the bp_catchpoint breakpoints need to
3849            do anything at this point.  In the future, if some of
3850            the catchpoints need to something, we will need to add
3851            a new method, and call this method from here.  */
3852         continue;
3853       }
3854 
3855     /* bp_finish is a special case.  The only way we ought to be able
3856        to see one of these when an exec() has happened, is if the user
3857        caught a vfork, and then said "finish".  Ordinarily a finish just
3858        carries them to the call-site of the current callee, by setting
3859        a temporary bp there and resuming.  But in this case, the finish
3860        will carry them entirely through the vfork & exec.
3861 
3862        We don't want to allow a bp_finish to remain inserted now.  But
3863        we can't safely delete it, 'cause finish_command has a handle to
3864        the bp on a bpstat, and will later want to delete it.  There's a
3865        chance (and I've seen it happen) that if we delete the bp_finish
3866        here, that its storage will get reused by the time finish_command
3867        gets 'round to deleting the "use to be a bp_finish" breakpoint.
3868        We really must allow finish_command to delete a bp_finish.
3869 
3870        In the absence of a general solution for the "how do we know
3871        it's safe to delete something others may have handles to?"
3872        problem, what we'll do here is just uninsert the bp_finish, and
3873        let finish_command delete it.
3874 
3875        (We know the bp_finish is "doomed" in the sense that it's
3876        momentary, and will be deleted as soon as finish_command sees
3877        the inferior stopped.  So it doesn't matter that the bp's
3878        address is probably bogus in the new a.out, unlike e.g., the
3879        solib breakpoints.)  */
3880 
3881     if (b->type == bp_finish)
3882       {
3883 	continue;
3884       }
3885 
3886     /* Without a symbolic address, we have little hope of the
3887        pre-exec() address meaning the same thing in the post-exec()
3888        a.out.  */
3889     if (breakpoint_event_location_empty_p (b))
3890       {
3891 	delete_breakpoint (b);
3892 	continue;
3893       }
3894   }
3895 }
3896 
3897 int
3898 detach_breakpoints (ptid_t ptid)
3899 {
3900   struct bp_location *bl, **blp_tmp;
3901   int val = 0;
3902   struct cleanup *old_chain = save_inferior_ptid ();
3903   struct inferior *inf = current_inferior ();
3904 
3905   if (ptid_get_pid (ptid) == ptid_get_pid (inferior_ptid))
3906     error (_("Cannot detach breakpoints of inferior_ptid"));
3907 
3908   /* Set inferior_ptid; remove_breakpoint_1 uses this global.  */
3909   inferior_ptid = ptid;
3910   ALL_BP_LOCATIONS (bl, blp_tmp)
3911   {
3912     if (bl->pspace != inf->pspace)
3913       continue;
3914 
3915     /* This function must physically remove breakpoints locations
3916        from the specified ptid, without modifying the breakpoint
3917        package's state.  Locations of type bp_loc_other are only
3918        maintained at GDB side.  So, there is no need to remove
3919        these bp_loc_other locations.  Moreover, removing these
3920        would modify the breakpoint package's state.  */
3921     if (bl->loc_type == bp_loc_other)
3922       continue;
3923 
3924     if (bl->inserted)
3925       val |= remove_breakpoint_1 (bl, DETACH_BREAKPOINT);
3926   }
3927 
3928   do_cleanups (old_chain);
3929   return val;
3930 }
3931 
3932 /* Remove the breakpoint location BL from the current address space.
3933    Note that this is used to detach breakpoints from a child fork.
3934    When we get here, the child isn't in the inferior list, and neither
3935    do we have objects to represent its address space --- we should
3936    *not* look at bl->pspace->aspace here.  */
3937 
3938 static int
3939 remove_breakpoint_1 (struct bp_location *bl, enum remove_bp_reason reason)
3940 {
3941   int val;
3942 
3943   /* BL is never in moribund_locations by our callers.  */
3944   gdb_assert (bl->owner != NULL);
3945 
3946   /* The type of none suggests that owner is actually deleted.
3947      This should not ever happen.  */
3948   gdb_assert (bl->owner->type != bp_none);
3949 
3950   if (bl->loc_type == bp_loc_software_breakpoint
3951       || bl->loc_type == bp_loc_hardware_breakpoint)
3952     {
3953       /* "Normal" instruction breakpoint: either the standard
3954 	 trap-instruction bp (bp_breakpoint), or a
3955 	 bp_hardware_breakpoint.  */
3956 
3957       /* First check to see if we have to handle an overlay.  */
3958       if (overlay_debugging == ovly_off
3959 	  || bl->section == NULL
3960 	  || !(section_is_overlay (bl->section)))
3961 	{
3962 	  /* No overlay handling: just remove the breakpoint.  */
3963 
3964 	  /* If we're trying to uninsert a memory breakpoint that we
3965 	     know is set in a dynamic object that is marked
3966 	     shlib_disabled, then either the dynamic object was
3967 	     removed with "remove-symbol-file" or with
3968 	     "nosharedlibrary".  In the former case, we don't know
3969 	     whether another dynamic object might have loaded over the
3970 	     breakpoint's address -- the user might well let us know
3971 	     about it next with add-symbol-file (the whole point of
3972 	     add-symbol-file is letting the user manually maintain a
3973 	     list of dynamically loaded objects).  If we have the
3974 	     breakpoint's shadow memory, that is, this is a software
3975 	     breakpoint managed by GDB, check whether the breakpoint
3976 	     is still inserted in memory, to avoid overwriting wrong
3977 	     code with stale saved shadow contents.  Note that HW
3978 	     breakpoints don't have shadow memory, as they're
3979 	     implemented using a mechanism that is not dependent on
3980 	     being able to modify the target's memory, and as such
3981 	     they should always be removed.  */
3982 	  if (bl->shlib_disabled
3983 	      && bl->target_info.shadow_len != 0
3984 	      && !memory_validate_breakpoint (bl->gdbarch, &bl->target_info))
3985 	    val = 0;
3986 	  else
3987 	    val = bl->owner->ops->remove_location (bl, reason);
3988 	}
3989       else
3990 	{
3991 	  /* This breakpoint is in an overlay section.
3992 	     Did we set a breakpoint at the LMA?  */
3993 	  if (!overlay_events_enabled)
3994 	      {
3995 		/* Yes -- overlay event support is not active, so we
3996 		   should have set a breakpoint at the LMA.  Remove it.
3997 		*/
3998 		/* Ignore any failures: if the LMA is in ROM, we will
3999 		   have already warned when we failed to insert it.  */
4000 		if (bl->loc_type == bp_loc_hardware_breakpoint)
4001 		  target_remove_hw_breakpoint (bl->gdbarch,
4002 					       &bl->overlay_target_info);
4003 		else
4004 		  target_remove_breakpoint (bl->gdbarch,
4005 					    &bl->overlay_target_info,
4006 					    reason);
4007 	      }
4008 	  /* Did we set a breakpoint at the VMA?
4009 	     If so, we will have marked the breakpoint 'inserted'.  */
4010 	  if (bl->inserted)
4011 	    {
4012 	      /* Yes -- remove it.  Previously we did not bother to
4013 		 remove the breakpoint if the section had been
4014 		 unmapped, but let's not rely on that being safe.  We
4015 		 don't know what the overlay manager might do.  */
4016 
4017 	      /* However, we should remove *software* breakpoints only
4018 		 if the section is still mapped, or else we overwrite
4019 		 wrong code with the saved shadow contents.  */
4020 	      if (bl->loc_type == bp_loc_hardware_breakpoint
4021 		  || section_is_mapped (bl->section))
4022 		val = bl->owner->ops->remove_location (bl, reason);
4023 	      else
4024 		val = 0;
4025 	    }
4026 	  else
4027 	    {
4028 	      /* No -- not inserted, so no need to remove.  No error.  */
4029 	      val = 0;
4030 	    }
4031 	}
4032 
4033       /* In some cases, we might not be able to remove a breakpoint in
4034 	 a shared library that has already been removed, but we have
4035 	 not yet processed the shlib unload event.  Similarly for an
4036 	 unloaded add-symbol-file object - the user might not yet have
4037 	 had the chance to remove-symbol-file it.  shlib_disabled will
4038 	 be set if the library/object has already been removed, but
4039 	 the breakpoint hasn't been uninserted yet, e.g., after
4040 	 "nosharedlibrary" or "remove-symbol-file" with breakpoints
4041 	 always-inserted mode.  */
4042       if (val
4043 	  && (bl->loc_type == bp_loc_software_breakpoint
4044 	      && (bl->shlib_disabled
4045 		  || solib_name_from_address (bl->pspace, bl->address)
4046 		  || shared_objfile_contains_address_p (bl->pspace,
4047 							bl->address))))
4048 	val = 0;
4049 
4050       if (val)
4051 	return val;
4052       bl->inserted = (reason == DETACH_BREAKPOINT);
4053     }
4054   else if (bl->loc_type == bp_loc_hardware_watchpoint)
4055     {
4056       gdb_assert (bl->owner->ops != NULL
4057 		  && bl->owner->ops->remove_location != NULL);
4058 
4059       bl->inserted = (reason == DETACH_BREAKPOINT);
4060       bl->owner->ops->remove_location (bl, reason);
4061 
4062       /* Failure to remove any of the hardware watchpoints comes here.  */
4063       if (reason == REMOVE_BREAKPOINT && bl->inserted)
4064 	warning (_("Could not remove hardware watchpoint %d."),
4065 		 bl->owner->number);
4066     }
4067   else if (bl->owner->type == bp_catchpoint
4068            && breakpoint_enabled (bl->owner)
4069            && !bl->duplicate)
4070     {
4071       gdb_assert (bl->owner->ops != NULL
4072 		  && bl->owner->ops->remove_location != NULL);
4073 
4074       val = bl->owner->ops->remove_location (bl, reason);
4075       if (val)
4076 	return val;
4077 
4078       bl->inserted = (reason == DETACH_BREAKPOINT);
4079     }
4080 
4081   return 0;
4082 }
4083 
4084 static int
4085 remove_breakpoint (struct bp_location *bl)
4086 {
4087   int ret;
4088   struct cleanup *old_chain;
4089 
4090   /* BL is never in moribund_locations by our callers.  */
4091   gdb_assert (bl->owner != NULL);
4092 
4093   /* The type of none suggests that owner is actually deleted.
4094      This should not ever happen.  */
4095   gdb_assert (bl->owner->type != bp_none);
4096 
4097   old_chain = save_current_space_and_thread ();
4098 
4099   switch_to_program_space_and_thread (bl->pspace);
4100 
4101   ret = remove_breakpoint_1 (bl, REMOVE_BREAKPOINT);
4102 
4103   do_cleanups (old_chain);
4104   return ret;
4105 }
4106 
4107 /* Clear the "inserted" flag in all breakpoints.  */
4108 
4109 void
4110 mark_breakpoints_out (void)
4111 {
4112   struct bp_location *bl, **blp_tmp;
4113 
4114   ALL_BP_LOCATIONS (bl, blp_tmp)
4115     if (bl->pspace == current_program_space)
4116       bl->inserted = 0;
4117 }
4118 
4119 /* Clear the "inserted" flag in all breakpoints and delete any
4120    breakpoints which should go away between runs of the program.
4121 
4122    Plus other such housekeeping that has to be done for breakpoints
4123    between runs.
4124 
4125    Note: this function gets called at the end of a run (by
4126    generic_mourn_inferior) and when a run begins (by
4127    init_wait_for_inferior).  */
4128 
4129 
4130 
4131 void
4132 breakpoint_init_inferior (enum inf_context context)
4133 {
4134   struct breakpoint *b, *b_tmp;
4135   struct bp_location *bl;
4136   int ix;
4137   struct program_space *pspace = current_program_space;
4138 
4139   /* If breakpoint locations are shared across processes, then there's
4140      nothing to do.  */
4141   if (gdbarch_has_global_breakpoints (target_gdbarch ()))
4142     return;
4143 
4144   mark_breakpoints_out ();
4145 
4146   ALL_BREAKPOINTS_SAFE (b, b_tmp)
4147   {
4148     if (b->loc && b->loc->pspace != pspace)
4149       continue;
4150 
4151     switch (b->type)
4152       {
4153       case bp_call_dummy:
4154       case bp_longjmp_call_dummy:
4155 
4156 	/* If the call dummy breakpoint is at the entry point it will
4157 	   cause problems when the inferior is rerun, so we better get
4158 	   rid of it.  */
4159 
4160       case bp_watchpoint_scope:
4161 
4162 	/* Also get rid of scope breakpoints.  */
4163 
4164       case bp_shlib_event:
4165 
4166 	/* Also remove solib event breakpoints.  Their addresses may
4167 	   have changed since the last time we ran the program.
4168 	   Actually we may now be debugging against different target;
4169 	   and so the solib backend that installed this breakpoint may
4170 	   not be used in by the target.  E.g.,
4171 
4172 	   (gdb) file prog-linux
4173 	   (gdb) run               # native linux target
4174 	   ...
4175 	   (gdb) kill
4176 	   (gdb) file prog-win.exe
4177 	   (gdb) tar rem :9999     # remote Windows gdbserver.
4178 	*/
4179 
4180       case bp_step_resume:
4181 
4182 	/* Also remove step-resume breakpoints.  */
4183 
4184       case bp_single_step:
4185 
4186 	/* Also remove single-step breakpoints.  */
4187 
4188 	delete_breakpoint (b);
4189 	break;
4190 
4191       case bp_watchpoint:
4192       case bp_hardware_watchpoint:
4193       case bp_read_watchpoint:
4194       case bp_access_watchpoint:
4195 	{
4196 	  struct watchpoint *w = (struct watchpoint *) b;
4197 
4198 	  /* Likewise for watchpoints on local expressions.  */
4199 	  if (w->exp_valid_block != NULL)
4200 	    delete_breakpoint (b);
4201 	  else
4202 	    {
4203 	      /* Get rid of existing locations, which are no longer
4204 		 valid.  New ones will be created in
4205 		 update_watchpoint, when the inferior is restarted.
4206 		 The next update_global_location_list call will
4207 		 garbage collect them.  */
4208 	      b->loc = NULL;
4209 
4210 	      if (context == inf_starting)
4211 		{
4212 		  /* Reset val field to force reread of starting value in
4213 		     insert_breakpoints.  */
4214 		  if (w->val)
4215 		    value_free (w->val);
4216 		  w->val = NULL;
4217 		  w->val_valid = 0;
4218 		}
4219 	    }
4220 	}
4221 	break;
4222       default:
4223 	break;
4224       }
4225   }
4226 
4227   /* Get rid of the moribund locations.  */
4228   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, bl); ++ix)
4229     decref_bp_location (&bl);
4230   VEC_free (bp_location_p, moribund_locations);
4231 }
4232 
4233 /* These functions concern about actual breakpoints inserted in the
4234    target --- to e.g. check if we need to do decr_pc adjustment or if
4235    we need to hop over the bkpt --- so we check for address space
4236    match, not program space.  */
4237 
4238 /* breakpoint_here_p (PC) returns non-zero if an enabled breakpoint
4239    exists at PC.  It returns ordinary_breakpoint_here if it's an
4240    ordinary breakpoint, or permanent_breakpoint_here if it's a
4241    permanent breakpoint.
4242    - When continuing from a location with an ordinary breakpoint, we
4243      actually single step once before calling insert_breakpoints.
4244    - When continuing from a location with a permanent breakpoint, we
4245      need to use the `SKIP_PERMANENT_BREAKPOINT' macro, provided by
4246      the target, to advance the PC past the breakpoint.  */
4247 
4248 enum breakpoint_here
4249 breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4250 {
4251   struct bp_location *bl, **blp_tmp;
4252   int any_breakpoint_here = 0;
4253 
4254   ALL_BP_LOCATIONS (bl, blp_tmp)
4255     {
4256       if (bl->loc_type != bp_loc_software_breakpoint
4257 	  && bl->loc_type != bp_loc_hardware_breakpoint)
4258 	continue;
4259 
4260       /* ALL_BP_LOCATIONS bp_location has BL->OWNER always non-NULL.  */
4261       if ((breakpoint_enabled (bl->owner)
4262 	   || bl->permanent)
4263 	  && breakpoint_location_address_match (bl, aspace, pc))
4264 	{
4265 	  if (overlay_debugging
4266 	      && section_is_overlay (bl->section)
4267 	      && !section_is_mapped (bl->section))
4268 	    continue;		/* unmapped overlay -- can't be a match */
4269 	  else if (bl->permanent)
4270 	    return permanent_breakpoint_here;
4271 	  else
4272 	    any_breakpoint_here = 1;
4273 	}
4274     }
4275 
4276   return any_breakpoint_here ? ordinary_breakpoint_here : no_breakpoint_here;
4277 }
4278 
4279 /* See breakpoint.h.  */
4280 
4281 int
4282 breakpoint_in_range_p (struct address_space *aspace,
4283 		       CORE_ADDR addr, ULONGEST len)
4284 {
4285   struct bp_location *bl, **blp_tmp;
4286 
4287   ALL_BP_LOCATIONS (bl, blp_tmp)
4288     {
4289       if (bl->loc_type != bp_loc_software_breakpoint
4290 	  && bl->loc_type != bp_loc_hardware_breakpoint)
4291 	continue;
4292 
4293       if ((breakpoint_enabled (bl->owner)
4294 	   || bl->permanent)
4295 	  && breakpoint_location_address_range_overlap (bl, aspace,
4296 							addr, len))
4297 	{
4298 	  if (overlay_debugging
4299 	      && section_is_overlay (bl->section)
4300 	      && !section_is_mapped (bl->section))
4301 	    {
4302 	      /* Unmapped overlay -- can't be a match.  */
4303 	      continue;
4304 	    }
4305 
4306 	  return 1;
4307 	}
4308     }
4309 
4310   return 0;
4311 }
4312 
4313 /* Return true if there's a moribund breakpoint at PC.  */
4314 
4315 int
4316 moribund_breakpoint_here_p (struct address_space *aspace, CORE_ADDR pc)
4317 {
4318   struct bp_location *loc;
4319   int ix;
4320 
4321   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
4322     if (breakpoint_location_address_match (loc, aspace, pc))
4323       return 1;
4324 
4325   return 0;
4326 }
4327 
4328 /* Returns non-zero iff BL is inserted at PC, in address space
4329    ASPACE.  */
4330 
4331 static int
4332 bp_location_inserted_here_p (struct bp_location *bl,
4333 			     struct address_space *aspace, CORE_ADDR pc)
4334 {
4335   if (bl->inserted
4336       && breakpoint_address_match (bl->pspace->aspace, bl->address,
4337 				   aspace, pc))
4338     {
4339       if (overlay_debugging
4340 	  && section_is_overlay (bl->section)
4341 	  && !section_is_mapped (bl->section))
4342 	return 0;		/* unmapped overlay -- can't be a match */
4343       else
4344 	return 1;
4345     }
4346   return 0;
4347 }
4348 
4349 /* Returns non-zero iff there's a breakpoint inserted at PC.  */
4350 
4351 int
4352 breakpoint_inserted_here_p (struct address_space *aspace, CORE_ADDR pc)
4353 {
4354   struct bp_location **blp, **blp_tmp = NULL;
4355 
4356   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4357     {
4358       struct bp_location *bl = *blp;
4359 
4360       if (bl->loc_type != bp_loc_software_breakpoint
4361 	  && bl->loc_type != bp_loc_hardware_breakpoint)
4362 	continue;
4363 
4364       if (bp_location_inserted_here_p (bl, aspace, pc))
4365 	return 1;
4366     }
4367   return 0;
4368 }
4369 
4370 /* This function returns non-zero iff there is a software breakpoint
4371    inserted at PC.  */
4372 
4373 int
4374 software_breakpoint_inserted_here_p (struct address_space *aspace,
4375 				     CORE_ADDR pc)
4376 {
4377   struct bp_location **blp, **blp_tmp = NULL;
4378 
4379   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4380     {
4381       struct bp_location *bl = *blp;
4382 
4383       if (bl->loc_type != bp_loc_software_breakpoint)
4384 	continue;
4385 
4386       if (bp_location_inserted_here_p (bl, aspace, pc))
4387 	return 1;
4388     }
4389 
4390   return 0;
4391 }
4392 
4393 /* See breakpoint.h.  */
4394 
4395 int
4396 hardware_breakpoint_inserted_here_p (struct address_space *aspace,
4397 				     CORE_ADDR pc)
4398 {
4399   struct bp_location **blp, **blp_tmp = NULL;
4400 
4401   ALL_BP_LOCATIONS_AT_ADDR (blp, blp_tmp, pc)
4402     {
4403       struct bp_location *bl = *blp;
4404 
4405       if (bl->loc_type != bp_loc_hardware_breakpoint)
4406 	continue;
4407 
4408       if (bp_location_inserted_here_p (bl, aspace, pc))
4409 	return 1;
4410     }
4411 
4412   return 0;
4413 }
4414 
4415 int
4416 hardware_watchpoint_inserted_in_range (struct address_space *aspace,
4417 				       CORE_ADDR addr, ULONGEST len)
4418 {
4419   struct breakpoint *bpt;
4420 
4421   ALL_BREAKPOINTS (bpt)
4422     {
4423       struct bp_location *loc;
4424 
4425       if (bpt->type != bp_hardware_watchpoint
4426 	  && bpt->type != bp_access_watchpoint)
4427 	continue;
4428 
4429       if (!breakpoint_enabled (bpt))
4430 	continue;
4431 
4432       for (loc = bpt->loc; loc; loc = loc->next)
4433 	if (loc->pspace->aspace == aspace && loc->inserted)
4434 	  {
4435 	    CORE_ADDR l, h;
4436 
4437 	    /* Check for intersection.  */
4438 	    l = max (loc->address, addr);
4439 	    h = min (loc->address + loc->length, addr + len);
4440 	    if (l < h)
4441 	      return 1;
4442 	  }
4443     }
4444   return 0;
4445 }
4446 
4447 
4448 /* bpstat stuff.  External routines' interfaces are documented
4449    in breakpoint.h.  */
4450 
4451 int
4452 is_catchpoint (struct breakpoint *ep)
4453 {
4454   return (ep->type == bp_catchpoint);
4455 }
4456 
4457 /* Frees any storage that is part of a bpstat.  Does not walk the
4458    'next' chain.  */
4459 
4460 static void
4461 bpstat_free (bpstat bs)
4462 {
4463   if (bs->old_val != NULL)
4464     value_free (bs->old_val);
4465   decref_counted_command_line (&bs->commands);
4466   decref_bp_location (&bs->bp_location_at);
4467   xfree (bs);
4468 }
4469 
4470 /* Clear a bpstat so that it says we are not at any breakpoint.
4471    Also free any storage that is part of a bpstat.  */
4472 
4473 void
4474 bpstat_clear (bpstat *bsp)
4475 {
4476   bpstat p;
4477   bpstat q;
4478 
4479   if (bsp == 0)
4480     return;
4481   p = *bsp;
4482   while (p != NULL)
4483     {
4484       q = p->next;
4485       bpstat_free (p);
4486       p = q;
4487     }
4488   *bsp = NULL;
4489 }
4490 
4491 /* Return a copy of a bpstat.  Like "bs1 = bs2" but all storage that
4492    is part of the bpstat is copied as well.  */
4493 
4494 bpstat
4495 bpstat_copy (bpstat bs)
4496 {
4497   bpstat p = NULL;
4498   bpstat tmp;
4499   bpstat retval = NULL;
4500 
4501   if (bs == NULL)
4502     return bs;
4503 
4504   for (; bs != NULL; bs = bs->next)
4505     {
4506       tmp = (bpstat) xmalloc (sizeof (*tmp));
4507       memcpy (tmp, bs, sizeof (*tmp));
4508       incref_counted_command_line (tmp->commands);
4509       incref_bp_location (tmp->bp_location_at);
4510       if (bs->old_val != NULL)
4511 	{
4512 	  tmp->old_val = value_copy (bs->old_val);
4513 	  release_value (tmp->old_val);
4514 	}
4515 
4516       if (p == NULL)
4517 	/* This is the first thing in the chain.  */
4518 	retval = tmp;
4519       else
4520 	p->next = tmp;
4521       p = tmp;
4522     }
4523   p->next = NULL;
4524   return retval;
4525 }
4526 
4527 /* Find the bpstat associated with this breakpoint.  */
4528 
4529 bpstat
4530 bpstat_find_breakpoint (bpstat bsp, struct breakpoint *breakpoint)
4531 {
4532   if (bsp == NULL)
4533     return NULL;
4534 
4535   for (; bsp != NULL; bsp = bsp->next)
4536     {
4537       if (bsp->breakpoint_at == breakpoint)
4538 	return bsp;
4539     }
4540   return NULL;
4541 }
4542 
4543 /* See breakpoint.h.  */
4544 
4545 int
4546 bpstat_explains_signal (bpstat bsp, enum gdb_signal sig)
4547 {
4548   for (; bsp != NULL; bsp = bsp->next)
4549     {
4550       if (bsp->breakpoint_at == NULL)
4551 	{
4552 	  /* A moribund location can never explain a signal other than
4553 	     GDB_SIGNAL_TRAP.  */
4554 	  if (sig == GDB_SIGNAL_TRAP)
4555 	    return 1;
4556 	}
4557       else
4558 	{
4559 	  if (bsp->breakpoint_at->ops->explains_signal (bsp->breakpoint_at,
4560 							sig))
4561 	    return 1;
4562 	}
4563     }
4564 
4565   return 0;
4566 }
4567 
4568 /* Put in *NUM the breakpoint number of the first breakpoint we are
4569    stopped at.  *BSP upon return is a bpstat which points to the
4570    remaining breakpoints stopped at (but which is not guaranteed to be
4571    good for anything but further calls to bpstat_num).
4572 
4573    Return 0 if passed a bpstat which does not indicate any breakpoints.
4574    Return -1 if stopped at a breakpoint that has been deleted since
4575    we set it.
4576    Return 1 otherwise.  */
4577 
4578 int
4579 bpstat_num (bpstat *bsp, int *num)
4580 {
4581   struct breakpoint *b;
4582 
4583   if ((*bsp) == NULL)
4584     return 0;			/* No more breakpoint values */
4585 
4586   /* We assume we'll never have several bpstats that correspond to a
4587      single breakpoint -- otherwise, this function might return the
4588      same number more than once and this will look ugly.  */
4589   b = (*bsp)->breakpoint_at;
4590   *bsp = (*bsp)->next;
4591   if (b == NULL)
4592     return -1;			/* breakpoint that's been deleted since */
4593 
4594   *num = b->number;		/* We have its number */
4595   return 1;
4596 }
4597 
4598 /* See breakpoint.h.  */
4599 
4600 void
4601 bpstat_clear_actions (void)
4602 {
4603   struct thread_info *tp;
4604   bpstat bs;
4605 
4606   if (ptid_equal (inferior_ptid, null_ptid))
4607     return;
4608 
4609   tp = find_thread_ptid (inferior_ptid);
4610   if (tp == NULL)
4611     return;
4612 
4613   for (bs = tp->control.stop_bpstat; bs != NULL; bs = bs->next)
4614     {
4615       decref_counted_command_line (&bs->commands);
4616 
4617       if (bs->old_val != NULL)
4618 	{
4619 	  value_free (bs->old_val);
4620 	  bs->old_val = NULL;
4621 	}
4622     }
4623 }
4624 
4625 /* Called when a command is about to proceed the inferior.  */
4626 
4627 static void
4628 breakpoint_about_to_proceed (void)
4629 {
4630   if (!ptid_equal (inferior_ptid, null_ptid))
4631     {
4632       struct thread_info *tp = inferior_thread ();
4633 
4634       /* Allow inferior function calls in breakpoint commands to not
4635 	 interrupt the command list.  When the call finishes
4636 	 successfully, the inferior will be standing at the same
4637 	 breakpoint as if nothing happened.  */
4638       if (tp->control.in_infcall)
4639 	return;
4640     }
4641 
4642   breakpoint_proceeded = 1;
4643 }
4644 
4645 /* Stub for cleaning up our state if we error-out of a breakpoint
4646    command.  */
4647 static void
4648 cleanup_executing_breakpoints (void *ignore)
4649 {
4650   executing_breakpoint_commands = 0;
4651 }
4652 
4653 /* Return non-zero iff CMD as the first line of a command sequence is `silent'
4654    or its equivalent.  */
4655 
4656 static int
4657 command_line_is_silent (struct command_line *cmd)
4658 {
4659   return cmd && (strcmp ("silent", cmd->line) == 0);
4660 }
4661 
4662 /* Execute all the commands associated with all the breakpoints at
4663    this location.  Any of these commands could cause the process to
4664    proceed beyond this point, etc.  We look out for such changes by
4665    checking the global "breakpoint_proceeded" after each command.
4666 
4667    Returns true if a breakpoint command resumed the inferior.  In that
4668    case, it is the caller's responsibility to recall it again with the
4669    bpstat of the current thread.  */
4670 
4671 static int
4672 bpstat_do_actions_1 (bpstat *bsp)
4673 {
4674   bpstat bs;
4675   struct cleanup *old_chain;
4676   int again = 0;
4677 
4678   /* Avoid endless recursion if a `source' command is contained
4679      in bs->commands.  */
4680   if (executing_breakpoint_commands)
4681     return 0;
4682 
4683   executing_breakpoint_commands = 1;
4684   old_chain = make_cleanup (cleanup_executing_breakpoints, 0);
4685 
4686   prevent_dont_repeat ();
4687 
4688   /* This pointer will iterate over the list of bpstat's.  */
4689   bs = *bsp;
4690 
4691   breakpoint_proceeded = 0;
4692   for (; bs != NULL; bs = bs->next)
4693     {
4694       struct counted_command_line *ccmd;
4695       struct command_line *cmd;
4696       struct cleanup *this_cmd_tree_chain;
4697 
4698       /* Take ownership of the BSP's command tree, if it has one.
4699 
4700          The command tree could legitimately contain commands like
4701          'step' and 'next', which call clear_proceed_status, which
4702          frees stop_bpstat's command tree.  To make sure this doesn't
4703          free the tree we're executing out from under us, we need to
4704          take ownership of the tree ourselves.  Since a given bpstat's
4705          commands are only executed once, we don't need to copy it; we
4706          can clear the pointer in the bpstat, and make sure we free
4707          the tree when we're done.  */
4708       ccmd = bs->commands;
4709       bs->commands = NULL;
4710       this_cmd_tree_chain = make_cleanup_decref_counted_command_line (&ccmd);
4711       cmd = ccmd ? ccmd->commands : NULL;
4712       if (command_line_is_silent (cmd))
4713 	{
4714 	  /* The action has been already done by bpstat_stop_status.  */
4715 	  cmd = cmd->next;
4716 	}
4717 
4718       while (cmd != NULL)
4719 	{
4720 	  execute_control_command (cmd);
4721 
4722 	  if (breakpoint_proceeded)
4723 	    break;
4724 	  else
4725 	    cmd = cmd->next;
4726 	}
4727 
4728       /* We can free this command tree now.  */
4729       do_cleanups (this_cmd_tree_chain);
4730 
4731       if (breakpoint_proceeded)
4732 	{
4733 	  if (current_ui->async)
4734 	    /* If we are in async mode, then the target might be still
4735 	       running, not stopped at any breakpoint, so nothing for
4736 	       us to do here -- just return to the event loop.  */
4737 	    ;
4738 	  else
4739 	    /* In sync mode, when execute_control_command returns
4740 	       we're already standing on the next breakpoint.
4741 	       Breakpoint commands for that stop were not run, since
4742 	       execute_command does not run breakpoint commands --
4743 	       only command_line_handler does, but that one is not
4744 	       involved in execution of breakpoint commands.  So, we
4745 	       can now execute breakpoint commands.  It should be
4746 	       noted that making execute_command do bpstat actions is
4747 	       not an option -- in this case we'll have recursive
4748 	       invocation of bpstat for each breakpoint with a
4749 	       command, and can easily blow up GDB stack.  Instead, we
4750 	       return true, which will trigger the caller to recall us
4751 	       with the new stop_bpstat.  */
4752 	    again = 1;
4753 	  break;
4754 	}
4755     }
4756   do_cleanups (old_chain);
4757   return again;
4758 }
4759 
4760 void
4761 bpstat_do_actions (void)
4762 {
4763   struct cleanup *cleanup_if_error = make_bpstat_clear_actions_cleanup ();
4764 
4765   /* Do any commands attached to breakpoint we are stopped at.  */
4766   while (!ptid_equal (inferior_ptid, null_ptid)
4767 	 && target_has_execution
4768 	 && !is_exited (inferior_ptid)
4769 	 && !is_executing (inferior_ptid))
4770     /* Since in sync mode, bpstat_do_actions may resume the inferior,
4771        and only return when it is stopped at the next breakpoint, we
4772        keep doing breakpoint actions until it returns false to
4773        indicate the inferior was not resumed.  */
4774     if (!bpstat_do_actions_1 (&inferior_thread ()->control.stop_bpstat))
4775       break;
4776 
4777   discard_cleanups (cleanup_if_error);
4778 }
4779 
4780 /* Print out the (old or new) value associated with a watchpoint.  */
4781 
4782 static void
4783 watchpoint_value_print (struct value *val, struct ui_file *stream)
4784 {
4785   if (val == NULL)
4786     fprintf_unfiltered (stream, _("<unreadable>"));
4787   else
4788     {
4789       struct value_print_options opts;
4790       get_user_print_options (&opts);
4791       value_print (val, stream, &opts);
4792     }
4793 }
4794 
4795 /* Print the "Thread ID hit" part of "Thread ID hit Breakpoint N" if
4796    debugging multiple threads.  */
4797 
4798 void
4799 maybe_print_thread_hit_breakpoint (struct ui_out *uiout)
4800 {
4801   if (ui_out_is_mi_like_p (uiout))
4802     return;
4803 
4804   ui_out_text (uiout, "\n");
4805 
4806   if (show_thread_that_caused_stop ())
4807     {
4808       const char *name;
4809       struct thread_info *thr = inferior_thread ();
4810 
4811       ui_out_text (uiout, "Thread ");
4812       ui_out_field_fmt (uiout, "thread-id", "%s", print_thread_id (thr));
4813 
4814       name = thr->name != NULL ? thr->name : target_thread_name (thr);
4815       if (name != NULL)
4816 	{
4817 	  ui_out_text (uiout, " \"");
4818 	  ui_out_field_fmt (uiout, "name", "%s", name);
4819 	  ui_out_text (uiout, "\"");
4820 	}
4821 
4822       ui_out_text (uiout, " hit ");
4823     }
4824 }
4825 
4826 /* Generic routine for printing messages indicating why we
4827    stopped.  The behavior of this function depends on the value
4828    'print_it' in the bpstat structure.  Under some circumstances we
4829    may decide not to print anything here and delegate the task to
4830    normal_stop().  */
4831 
4832 static enum print_stop_action
4833 print_bp_stop_message (bpstat bs)
4834 {
4835   switch (bs->print_it)
4836     {
4837     case print_it_noop:
4838       /* Nothing should be printed for this bpstat entry.  */
4839       return PRINT_UNKNOWN;
4840       break;
4841 
4842     case print_it_done:
4843       /* We still want to print the frame, but we already printed the
4844          relevant messages.  */
4845       return PRINT_SRC_AND_LOC;
4846       break;
4847 
4848     case print_it_normal:
4849       {
4850 	struct breakpoint *b = bs->breakpoint_at;
4851 
4852 	/* bs->breakpoint_at can be NULL if it was a momentary breakpoint
4853 	   which has since been deleted.  */
4854 	if (b == NULL)
4855 	  return PRINT_UNKNOWN;
4856 
4857 	/* Normal case.  Call the breakpoint's print_it method.  */
4858 	return b->ops->print_it (bs);
4859       }
4860       break;
4861 
4862     default:
4863       internal_error (__FILE__, __LINE__,
4864 		      _("print_bp_stop_message: unrecognized enum value"));
4865       break;
4866     }
4867 }
4868 
4869 /* A helper function that prints a shared library stopped event.  */
4870 
4871 static void
4872 print_solib_event (int is_catchpoint)
4873 {
4874   int any_deleted
4875     = !VEC_empty (char_ptr, current_program_space->deleted_solibs);
4876   int any_added
4877     = !VEC_empty (so_list_ptr, current_program_space->added_solibs);
4878 
4879   if (!is_catchpoint)
4880     {
4881       if (any_added || any_deleted)
4882 	ui_out_text (current_uiout,
4883 		     _("Stopped due to shared library event:\n"));
4884       else
4885 	ui_out_text (current_uiout,
4886 		     _("Stopped due to shared library event (no "
4887 		       "libraries added or removed)\n"));
4888     }
4889 
4890   if (ui_out_is_mi_like_p (current_uiout))
4891     ui_out_field_string (current_uiout, "reason",
4892 			 async_reason_lookup (EXEC_ASYNC_SOLIB_EVENT));
4893 
4894   if (any_deleted)
4895     {
4896       struct cleanup *cleanup;
4897       char *name;
4898       int ix;
4899 
4900       ui_out_text (current_uiout, _("  Inferior unloaded "));
4901       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4902 						    "removed");
4903       for (ix = 0;
4904 	   VEC_iterate (char_ptr, current_program_space->deleted_solibs,
4905 			ix, name);
4906 	   ++ix)
4907 	{
4908 	  if (ix > 0)
4909 	    ui_out_text (current_uiout, "    ");
4910 	  ui_out_field_string (current_uiout, "library", name);
4911 	  ui_out_text (current_uiout, "\n");
4912 	}
4913 
4914       do_cleanups (cleanup);
4915     }
4916 
4917   if (any_added)
4918     {
4919       struct so_list *iter;
4920       int ix;
4921       struct cleanup *cleanup;
4922 
4923       ui_out_text (current_uiout, _("  Inferior loaded "));
4924       cleanup = make_cleanup_ui_out_list_begin_end (current_uiout,
4925 						    "added");
4926       for (ix = 0;
4927 	   VEC_iterate (so_list_ptr, current_program_space->added_solibs,
4928 			ix, iter);
4929 	   ++ix)
4930 	{
4931 	  if (ix > 0)
4932 	    ui_out_text (current_uiout, "    ");
4933 	  ui_out_field_string (current_uiout, "library", iter->so_name);
4934 	  ui_out_text (current_uiout, "\n");
4935 	}
4936 
4937       do_cleanups (cleanup);
4938     }
4939 }
4940 
4941 /* Print a message indicating what happened.  This is called from
4942    normal_stop().  The input to this routine is the head of the bpstat
4943    list - a list of the eventpoints that caused this stop.  KIND is
4944    the target_waitkind for the stopping event.  This
4945    routine calls the generic print routine for printing a message
4946    about reasons for stopping.  This will print (for example) the
4947    "Breakpoint n," part of the output.  The return value of this
4948    routine is one of:
4949 
4950    PRINT_UNKNOWN: Means we printed nothing.
4951    PRINT_SRC_AND_LOC: Means we printed something, and expect subsequent
4952    code to print the location.  An example is
4953    "Breakpoint 1, " which should be followed by
4954    the location.
4955    PRINT_SRC_ONLY: Means we printed something, but there is no need
4956    to also print the location part of the message.
4957    An example is the catch/throw messages, which
4958    don't require a location appended to the end.
4959    PRINT_NOTHING: We have done some printing and we don't need any
4960    further info to be printed.  */
4961 
4962 enum print_stop_action
4963 bpstat_print (bpstat bs, int kind)
4964 {
4965   enum print_stop_action val;
4966 
4967   /* Maybe another breakpoint in the chain caused us to stop.
4968      (Currently all watchpoints go on the bpstat whether hit or not.
4969      That probably could (should) be changed, provided care is taken
4970      with respect to bpstat_explains_signal).  */
4971   for (; bs; bs = bs->next)
4972     {
4973       val = print_bp_stop_message (bs);
4974       if (val == PRINT_SRC_ONLY
4975 	  || val == PRINT_SRC_AND_LOC
4976 	  || val == PRINT_NOTHING)
4977 	return val;
4978     }
4979 
4980   /* If we had hit a shared library event breakpoint,
4981      print_bp_stop_message would print out this message.  If we hit an
4982      OS-level shared library event, do the same thing.  */
4983   if (kind == TARGET_WAITKIND_LOADED)
4984     {
4985       print_solib_event (0);
4986       return PRINT_NOTHING;
4987     }
4988 
4989   /* We reached the end of the chain, or we got a null BS to start
4990      with and nothing was printed.  */
4991   return PRINT_UNKNOWN;
4992 }
4993 
4994 /* Evaluate the expression EXP and return 1 if value is zero.
4995    This returns the inverse of the condition because it is called
4996    from catch_errors which returns 0 if an exception happened, and if an
4997    exception happens we want execution to stop.
4998    The argument is a "struct expression *" that has been cast to a
4999    "void *" to make it pass through catch_errors.  */
5000 
5001 static int
5002 breakpoint_cond_eval (void *exp)
5003 {
5004   struct value *mark = value_mark ();
5005   int i = !value_true (evaluate_expression ((struct expression *) exp));
5006 
5007   value_free_to_mark (mark);
5008   return i;
5009 }
5010 
5011 /* Allocate a new bpstat.  Link it to the FIFO list by BS_LINK_POINTER.  */
5012 
5013 static bpstat
5014 bpstat_alloc (struct bp_location *bl, bpstat **bs_link_pointer)
5015 {
5016   bpstat bs;
5017 
5018   bs = (bpstat) xmalloc (sizeof (*bs));
5019   bs->next = NULL;
5020   **bs_link_pointer = bs;
5021   *bs_link_pointer = &bs->next;
5022   bs->breakpoint_at = bl->owner;
5023   bs->bp_location_at = bl;
5024   incref_bp_location (bl);
5025   /* If the condition is false, etc., don't do the commands.  */
5026   bs->commands = NULL;
5027   bs->old_val = NULL;
5028   bs->print_it = print_it_normal;
5029   return bs;
5030 }
5031 
5032 /* The target has stopped with waitstatus WS.  Check if any hardware
5033    watchpoints have triggered, according to the target.  */
5034 
5035 int
5036 watchpoints_triggered (struct target_waitstatus *ws)
5037 {
5038   int stopped_by_watchpoint = target_stopped_by_watchpoint ();
5039   CORE_ADDR addr;
5040   struct breakpoint *b;
5041 
5042   if (!stopped_by_watchpoint)
5043     {
5044       /* We were not stopped by a watchpoint.  Mark all watchpoints
5045 	 as not triggered.  */
5046       ALL_BREAKPOINTS (b)
5047 	if (is_hardware_watchpoint (b))
5048 	  {
5049 	    struct watchpoint *w = (struct watchpoint *) b;
5050 
5051 	    w->watchpoint_triggered = watch_triggered_no;
5052 	  }
5053 
5054       return 0;
5055     }
5056 
5057   if (!target_stopped_data_address (&current_target, &addr))
5058     {
5059       /* We were stopped by a watchpoint, but we don't know where.
5060 	 Mark all watchpoints as unknown.  */
5061       ALL_BREAKPOINTS (b)
5062 	if (is_hardware_watchpoint (b))
5063 	  {
5064 	    struct watchpoint *w = (struct watchpoint *) b;
5065 
5066 	    w->watchpoint_triggered = watch_triggered_unknown;
5067 	  }
5068 
5069       return 1;
5070     }
5071 
5072   /* The target could report the data address.  Mark watchpoints
5073      affected by this data address as triggered, and all others as not
5074      triggered.  */
5075 
5076   ALL_BREAKPOINTS (b)
5077     if (is_hardware_watchpoint (b))
5078       {
5079 	struct watchpoint *w = (struct watchpoint *) b;
5080 	struct bp_location *loc;
5081 
5082 	w->watchpoint_triggered = watch_triggered_no;
5083 	for (loc = b->loc; loc; loc = loc->next)
5084 	  {
5085 	    if (is_masked_watchpoint (b))
5086 	      {
5087 		CORE_ADDR newaddr = addr & w->hw_wp_mask;
5088 		CORE_ADDR start = loc->address & w->hw_wp_mask;
5089 
5090 		if (newaddr == start)
5091 		  {
5092 		    w->watchpoint_triggered = watch_triggered_yes;
5093 		    break;
5094 		  }
5095 	      }
5096 	    /* Exact match not required.  Within range is sufficient.  */
5097 	    else if (target_watchpoint_addr_within_range (&current_target,
5098 							 addr, loc->address,
5099 							 loc->length))
5100 	      {
5101 		w->watchpoint_triggered = watch_triggered_yes;
5102 		break;
5103 	      }
5104 	  }
5105       }
5106 
5107   return 1;
5108 }
5109 
5110 /* Possible return values for watchpoint_check (this can't be an enum
5111    because of check_errors).  */
5112 /* The watchpoint has been deleted.  */
5113 #define WP_DELETED 1
5114 /* The value has changed.  */
5115 #define WP_VALUE_CHANGED 2
5116 /* The value has not changed.  */
5117 #define WP_VALUE_NOT_CHANGED 3
5118 /* Ignore this watchpoint, no matter if the value changed or not.  */
5119 #define WP_IGNORE 4
5120 
5121 #define BP_TEMPFLAG 1
5122 #define BP_HARDWAREFLAG 2
5123 
5124 /* Evaluate watchpoint condition expression and check if its value
5125    changed.
5126 
5127    P should be a pointer to struct bpstat, but is defined as a void *
5128    in order for this function to be usable with catch_errors.  */
5129 
5130 static int
5131 watchpoint_check (void *p)
5132 {
5133   bpstat bs = (bpstat) p;
5134   struct watchpoint *b;
5135   struct frame_info *fr;
5136   int within_current_scope;
5137 
5138   /* BS is built from an existing struct breakpoint.  */
5139   gdb_assert (bs->breakpoint_at != NULL);
5140   b = (struct watchpoint *) bs->breakpoint_at;
5141 
5142   /* If this is a local watchpoint, we only want to check if the
5143      watchpoint frame is in scope if the current thread is the thread
5144      that was used to create the watchpoint.  */
5145   if (!watchpoint_in_thread_scope (b))
5146     return WP_IGNORE;
5147 
5148   if (b->exp_valid_block == NULL)
5149     within_current_scope = 1;
5150   else
5151     {
5152       struct frame_info *frame = get_current_frame ();
5153       struct gdbarch *frame_arch = get_frame_arch (frame);
5154       CORE_ADDR frame_pc = get_frame_pc (frame);
5155 
5156       /* stack_frame_destroyed_p() returns a non-zero value if we're
5157 	 still in the function but the stack frame has already been
5158 	 invalidated.  Since we can't rely on the values of local
5159 	 variables after the stack has been destroyed, we are treating
5160 	 the watchpoint in that state as `not changed' without further
5161 	 checking.  Don't mark watchpoints as changed if the current
5162 	 frame is in an epilogue - even if they are in some other
5163 	 frame, our view of the stack is likely to be wrong and
5164 	 frame_find_by_id could error out.  */
5165       if (gdbarch_stack_frame_destroyed_p (frame_arch, frame_pc))
5166 	return WP_IGNORE;
5167 
5168       fr = frame_find_by_id (b->watchpoint_frame);
5169       within_current_scope = (fr != NULL);
5170 
5171       /* If we've gotten confused in the unwinder, we might have
5172 	 returned a frame that can't describe this variable.  */
5173       if (within_current_scope)
5174 	{
5175 	  struct symbol *function;
5176 
5177 	  function = get_frame_function (fr);
5178 	  if (function == NULL
5179 	      || !contained_in (b->exp_valid_block,
5180 				SYMBOL_BLOCK_VALUE (function)))
5181 	    within_current_scope = 0;
5182 	}
5183 
5184       if (within_current_scope)
5185 	/* If we end up stopping, the current frame will get selected
5186 	   in normal_stop.  So this call to select_frame won't affect
5187 	   the user.  */
5188 	select_frame (fr);
5189     }
5190 
5191   if (within_current_scope)
5192     {
5193       /* We use value_{,free_to_}mark because it could be a *long*
5194          time before we return to the command level and call
5195          free_all_values.  We can't call free_all_values because we
5196          might be in the middle of evaluating a function call.  */
5197 
5198       int pc = 0;
5199       struct value *mark;
5200       struct value *new_val;
5201 
5202       if (is_masked_watchpoint (&b->base))
5203 	/* Since we don't know the exact trigger address (from
5204 	   stopped_data_address), just tell the user we've triggered
5205 	   a mask watchpoint.  */
5206 	return WP_VALUE_CHANGED;
5207 
5208       mark = value_mark ();
5209       fetch_subexp_value (b->exp, &pc, &new_val, NULL, NULL, 0);
5210 
5211       if (b->val_bitsize != 0)
5212 	new_val = extract_bitfield_from_watchpoint_value (b, new_val);
5213 
5214       /* We use value_equal_contents instead of value_equal because
5215 	 the latter coerces an array to a pointer, thus comparing just
5216 	 the address of the array instead of its contents.  This is
5217 	 not what we want.  */
5218       if ((b->val != NULL) != (new_val != NULL)
5219 	  || (b->val != NULL && !value_equal_contents (b->val, new_val)))
5220 	{
5221 	  if (new_val != NULL)
5222 	    {
5223 	      release_value (new_val);
5224 	      value_free_to_mark (mark);
5225 	    }
5226 	  bs->old_val = b->val;
5227 	  b->val = new_val;
5228 	  b->val_valid = 1;
5229 	  return WP_VALUE_CHANGED;
5230 	}
5231       else
5232 	{
5233 	  /* Nothing changed.  */
5234 	  value_free_to_mark (mark);
5235 	  return WP_VALUE_NOT_CHANGED;
5236 	}
5237     }
5238   else
5239     {
5240       struct switch_thru_all_uis state;
5241 
5242       /* This seems like the only logical thing to do because
5243          if we temporarily ignored the watchpoint, then when
5244          we reenter the block in which it is valid it contains
5245          garbage (in the case of a function, it may have two
5246          garbage values, one before and one after the prologue).
5247          So we can't even detect the first assignment to it and
5248          watch after that (since the garbage may or may not equal
5249          the first value assigned).  */
5250       /* We print all the stop information in
5251 	 breakpoint_ops->print_it, but in this case, by the time we
5252 	 call breakpoint_ops->print_it this bp will be deleted
5253 	 already.  So we have no choice but print the information
5254 	 here.  */
5255 
5256       SWITCH_THRU_ALL_UIS (state)
5257         {
5258 	  struct ui_out *uiout = current_uiout;
5259 
5260 	  if (ui_out_is_mi_like_p (uiout))
5261 	    ui_out_field_string
5262 	      (uiout, "reason", async_reason_lookup (EXEC_ASYNC_WATCHPOINT_SCOPE));
5263 	  ui_out_text (uiout, "\nWatchpoint ");
5264 	  ui_out_field_int (uiout, "wpnum", b->base.number);
5265 	  ui_out_text (uiout,
5266 		       " deleted because the program has left the block in\n"
5267 		       "which its expression is valid.\n");
5268 	}
5269 
5270       /* Make sure the watchpoint's commands aren't executed.  */
5271       decref_counted_command_line (&b->base.commands);
5272       watchpoint_del_at_next_stop (b);
5273 
5274       return WP_DELETED;
5275     }
5276 }
5277 
5278 /* Return true if it looks like target has stopped due to hitting
5279    breakpoint location BL.  This function does not check if we should
5280    stop, only if BL explains the stop.  */
5281 
5282 static int
5283 bpstat_check_location (const struct bp_location *bl,
5284 		       struct address_space *aspace, CORE_ADDR bp_addr,
5285 		       const struct target_waitstatus *ws)
5286 {
5287   struct breakpoint *b = bl->owner;
5288 
5289   /* BL is from an existing breakpoint.  */
5290   gdb_assert (b != NULL);
5291 
5292   return b->ops->breakpoint_hit (bl, aspace, bp_addr, ws);
5293 }
5294 
5295 /* Determine if the watched values have actually changed, and we
5296    should stop.  If not, set BS->stop to 0.  */
5297 
5298 static void
5299 bpstat_check_watchpoint (bpstat bs)
5300 {
5301   const struct bp_location *bl;
5302   struct watchpoint *b;
5303 
5304   /* BS is built for existing struct breakpoint.  */
5305   bl = bs->bp_location_at;
5306   gdb_assert (bl != NULL);
5307   b = (struct watchpoint *) bs->breakpoint_at;
5308   gdb_assert (b != NULL);
5309 
5310     {
5311       int must_check_value = 0;
5312 
5313       if (b->base.type == bp_watchpoint)
5314 	/* For a software watchpoint, we must always check the
5315 	   watched value.  */
5316 	must_check_value = 1;
5317       else if (b->watchpoint_triggered == watch_triggered_yes)
5318 	/* We have a hardware watchpoint (read, write, or access)
5319 	   and the target earlier reported an address watched by
5320 	   this watchpoint.  */
5321 	must_check_value = 1;
5322       else if (b->watchpoint_triggered == watch_triggered_unknown
5323 	       && b->base.type == bp_hardware_watchpoint)
5324 	/* We were stopped by a hardware watchpoint, but the target could
5325 	   not report the data address.  We must check the watchpoint's
5326 	   value.  Access and read watchpoints are out of luck; without
5327 	   a data address, we can't figure it out.  */
5328 	must_check_value = 1;
5329 
5330       if (must_check_value)
5331 	{
5332 	  char *message
5333 	    = xstrprintf ("Error evaluating expression for watchpoint %d\n",
5334 			  b->base.number);
5335 	  struct cleanup *cleanups = make_cleanup (xfree, message);
5336 	  int e = catch_errors (watchpoint_check, bs, message,
5337 				RETURN_MASK_ALL);
5338 	  do_cleanups (cleanups);
5339 	  switch (e)
5340 	    {
5341 	    case WP_DELETED:
5342 	      /* We've already printed what needs to be printed.  */
5343 	      bs->print_it = print_it_done;
5344 	      /* Stop.  */
5345 	      break;
5346 	    case WP_IGNORE:
5347 	      bs->print_it = print_it_noop;
5348 	      bs->stop = 0;
5349 	      break;
5350 	    case WP_VALUE_CHANGED:
5351 	      if (b->base.type == bp_read_watchpoint)
5352 		{
5353 		  /* There are two cases to consider here:
5354 
5355 		     1. We're watching the triggered memory for reads.
5356 		     In that case, trust the target, and always report
5357 		     the watchpoint hit to the user.  Even though
5358 		     reads don't cause value changes, the value may
5359 		     have changed since the last time it was read, and
5360 		     since we're not trapping writes, we will not see
5361 		     those, and as such we should ignore our notion of
5362 		     old value.
5363 
5364 		     2. We're watching the triggered memory for both
5365 		     reads and writes.  There are two ways this may
5366 		     happen:
5367 
5368 		     2.1. This is a target that can't break on data
5369 		     reads only, but can break on accesses (reads or
5370 		     writes), such as e.g., x86.  We detect this case
5371 		     at the time we try to insert read watchpoints.
5372 
5373 		     2.2. Otherwise, the target supports read
5374 		     watchpoints, but, the user set an access or write
5375 		     watchpoint watching the same memory as this read
5376 		     watchpoint.
5377 
5378 		     If we're watching memory writes as well as reads,
5379 		     ignore watchpoint hits when we find that the
5380 		     value hasn't changed, as reads don't cause
5381 		     changes.  This still gives false positives when
5382 		     the program writes the same value to memory as
5383 		     what there was already in memory (we will confuse
5384 		     it for a read), but it's much better than
5385 		     nothing.  */
5386 
5387 		  int other_write_watchpoint = 0;
5388 
5389 		  if (bl->watchpoint_type == hw_read)
5390 		    {
5391 		      struct breakpoint *other_b;
5392 
5393 		      ALL_BREAKPOINTS (other_b)
5394 			if (other_b->type == bp_hardware_watchpoint
5395 			    || other_b->type == bp_access_watchpoint)
5396 			  {
5397 			    struct watchpoint *other_w =
5398 			      (struct watchpoint *) other_b;
5399 
5400 			    if (other_w->watchpoint_triggered
5401 				== watch_triggered_yes)
5402 			      {
5403 				other_write_watchpoint = 1;
5404 				break;
5405 			      }
5406 			  }
5407 		    }
5408 
5409 		  if (other_write_watchpoint
5410 		      || bl->watchpoint_type == hw_access)
5411 		    {
5412 		      /* We're watching the same memory for writes,
5413 			 and the value changed since the last time we
5414 			 updated it, so this trap must be for a write.
5415 			 Ignore it.  */
5416 		      bs->print_it = print_it_noop;
5417 		      bs->stop = 0;
5418 		    }
5419 		}
5420 	      break;
5421 	    case WP_VALUE_NOT_CHANGED:
5422 	      if (b->base.type == bp_hardware_watchpoint
5423 		  || b->base.type == bp_watchpoint)
5424 		{
5425 		  /* Don't stop: write watchpoints shouldn't fire if
5426 		     the value hasn't changed.  */
5427 		  bs->print_it = print_it_noop;
5428 		  bs->stop = 0;
5429 		}
5430 	      /* Stop.  */
5431 	      break;
5432 	    default:
5433 	      /* Can't happen.  */
5434 	    case 0:
5435 	      /* Error from catch_errors.  */
5436 	      {
5437 		struct switch_thru_all_uis state;
5438 
5439 		SWITCH_THRU_ALL_UIS (state)
5440 	          {
5441 		    printf_filtered (_("Watchpoint %d deleted.\n"),
5442 				     b->base.number);
5443 		  }
5444 		watchpoint_del_at_next_stop (b);
5445 		/* We've already printed what needs to be printed.  */
5446 		bs->print_it = print_it_done;
5447 	      }
5448 	      break;
5449 	    }
5450 	}
5451       else	/* must_check_value == 0 */
5452 	{
5453 	  /* This is a case where some watchpoint(s) triggered, but
5454 	     not at the address of this watchpoint, or else no
5455 	     watchpoint triggered after all.  So don't print
5456 	     anything for this watchpoint.  */
5457 	  bs->print_it = print_it_noop;
5458 	  bs->stop = 0;
5459 	}
5460     }
5461 }
5462 
5463 /* For breakpoints that are currently marked as telling gdb to stop,
5464    check conditions (condition proper, frame, thread and ignore count)
5465    of breakpoint referred to by BS.  If we should not stop for this
5466    breakpoint, set BS->stop to 0.  */
5467 
5468 static void
5469 bpstat_check_breakpoint_conditions (bpstat bs, ptid_t ptid)
5470 {
5471   const struct bp_location *bl;
5472   struct breakpoint *b;
5473   int value_is_zero = 0;
5474   struct expression *cond;
5475 
5476   gdb_assert (bs->stop);
5477 
5478   /* BS is built for existing struct breakpoint.  */
5479   bl = bs->bp_location_at;
5480   gdb_assert (bl != NULL);
5481   b = bs->breakpoint_at;
5482   gdb_assert (b != NULL);
5483 
5484   /* Even if the target evaluated the condition on its end and notified GDB, we
5485      need to do so again since GDB does not know if we stopped due to a
5486      breakpoint or a single step breakpoint.  */
5487 
5488   if (frame_id_p (b->frame_id)
5489       && !frame_id_eq (b->frame_id, get_stack_frame_id (get_current_frame ())))
5490     {
5491       bs->stop = 0;
5492       return;
5493     }
5494 
5495   /* If this is a thread/task-specific breakpoint, don't waste cpu
5496      evaluating the condition if this isn't the specified
5497      thread/task.  */
5498   if ((b->thread != -1 && b->thread != ptid_to_global_thread_id (ptid))
5499       || (b->task != 0 && b->task != ada_get_task_number (ptid)))
5500 
5501     {
5502       bs->stop = 0;
5503       return;
5504     }
5505 
5506   /* Evaluate extension language breakpoints that have a "stop" method
5507      implemented.  */
5508   bs->stop = breakpoint_ext_lang_cond_says_stop (b);
5509 
5510   if (is_watchpoint (b))
5511     {
5512       struct watchpoint *w = (struct watchpoint *) b;
5513 
5514       cond = w->cond_exp;
5515     }
5516   else
5517     cond = bl->cond;
5518 
5519   if (cond && b->disposition != disp_del_at_next_stop)
5520     {
5521       int within_current_scope = 1;
5522       struct watchpoint * w;
5523 
5524       /* We use value_mark and value_free_to_mark because it could
5525 	 be a long time before we return to the command level and
5526 	 call free_all_values.  We can't call free_all_values
5527 	 because we might be in the middle of evaluating a
5528 	 function call.  */
5529       struct value *mark = value_mark ();
5530 
5531       if (is_watchpoint (b))
5532 	w = (struct watchpoint *) b;
5533       else
5534 	w = NULL;
5535 
5536       /* Need to select the frame, with all that implies so that
5537 	 the conditions will have the right context.  Because we
5538 	 use the frame, we will not see an inlined function's
5539 	 variables when we arrive at a breakpoint at the start
5540 	 of the inlined function; the current frame will be the
5541 	 call site.  */
5542       if (w == NULL || w->cond_exp_valid_block == NULL)
5543 	select_frame (get_current_frame ());
5544       else
5545 	{
5546 	  struct frame_info *frame;
5547 
5548 	  /* For local watchpoint expressions, which particular
5549 	     instance of a local is being watched matters, so we
5550 	     keep track of the frame to evaluate the expression
5551 	     in.  To evaluate the condition however, it doesn't
5552 	     really matter which instantiation of the function
5553 	     where the condition makes sense triggers the
5554 	     watchpoint.  This allows an expression like "watch
5555 	     global if q > 10" set in `func', catch writes to
5556 	     global on all threads that call `func', or catch
5557 	     writes on all recursive calls of `func' by a single
5558 	     thread.  We simply always evaluate the condition in
5559 	     the innermost frame that's executing where it makes
5560 	     sense to evaluate the condition.  It seems
5561 	     intuitive.  */
5562 	  frame = block_innermost_frame (w->cond_exp_valid_block);
5563 	  if (frame != NULL)
5564 	    select_frame (frame);
5565 	  else
5566 	    within_current_scope = 0;
5567 	}
5568       if (within_current_scope)
5569 	value_is_zero
5570 	  = catch_errors (breakpoint_cond_eval, cond,
5571 			  "Error in testing breakpoint condition:\n",
5572 			  RETURN_MASK_ALL);
5573       else
5574 	{
5575 	  warning (_("Watchpoint condition cannot be tested "
5576 		     "in the current scope"));
5577 	  /* If we failed to set the right context for this
5578 	     watchpoint, unconditionally report it.  */
5579 	  value_is_zero = 0;
5580 	}
5581       /* FIXME-someday, should give breakpoint #.  */
5582       value_free_to_mark (mark);
5583     }
5584 
5585   if (cond && value_is_zero)
5586     {
5587       bs->stop = 0;
5588     }
5589   else if (b->ignore_count > 0)
5590     {
5591       b->ignore_count--;
5592       bs->stop = 0;
5593       /* Increase the hit count even though we don't stop.  */
5594       ++(b->hit_count);
5595       observer_notify_breakpoint_modified (b);
5596     }
5597 }
5598 
5599 /* Returns true if we need to track moribund locations of LOC's type
5600    on the current target.  */
5601 
5602 static int
5603 need_moribund_for_location_type (struct bp_location *loc)
5604 {
5605   return ((loc->loc_type == bp_loc_software_breakpoint
5606 	   && !target_supports_stopped_by_sw_breakpoint ())
5607 	  || (loc->loc_type == bp_loc_hardware_breakpoint
5608 	      && !target_supports_stopped_by_hw_breakpoint ()));
5609 }
5610 
5611 
5612 /* Get a bpstat associated with having just stopped at address
5613    BP_ADDR in thread PTID.
5614 
5615    Determine whether we stopped at a breakpoint, etc, or whether we
5616    don't understand this stop.  Result is a chain of bpstat's such
5617    that:
5618 
5619    if we don't understand the stop, the result is a null pointer.
5620 
5621    if we understand why we stopped, the result is not null.
5622 
5623    Each element of the chain refers to a particular breakpoint or
5624    watchpoint at which we have stopped.  (We may have stopped for
5625    several reasons concurrently.)
5626 
5627    Each element of the chain has valid next, breakpoint_at,
5628    commands, FIXME??? fields.  */
5629 
5630 bpstat
5631 bpstat_stop_status (struct address_space *aspace,
5632 		    CORE_ADDR bp_addr, ptid_t ptid,
5633 		    const struct target_waitstatus *ws)
5634 {
5635   struct breakpoint *b = NULL;
5636   struct bp_location *bl;
5637   struct bp_location *loc;
5638   /* First item of allocated bpstat's.  */
5639   bpstat bs_head = NULL, *bs_link = &bs_head;
5640   /* Pointer to the last thing in the chain currently.  */
5641   bpstat bs;
5642   int ix;
5643   int need_remove_insert;
5644   int removed_any;
5645 
5646   /* First, build the bpstat chain with locations that explain a
5647      target stop, while being careful to not set the target running,
5648      as that may invalidate locations (in particular watchpoint
5649      locations are recreated).  Resuming will happen here with
5650      breakpoint conditions or watchpoint expressions that include
5651      inferior function calls.  */
5652 
5653   ALL_BREAKPOINTS (b)
5654     {
5655       if (!breakpoint_enabled (b))
5656 	continue;
5657 
5658       for (bl = b->loc; bl != NULL; bl = bl->next)
5659 	{
5660 	  /* For hardware watchpoints, we look only at the first
5661 	     location.  The watchpoint_check function will work on the
5662 	     entire expression, not the individual locations.  For
5663 	     read watchpoints, the watchpoints_triggered function has
5664 	     checked all locations already.  */
5665 	  if (b->type == bp_hardware_watchpoint && bl != b->loc)
5666 	    break;
5667 
5668 	  if (!bl->enabled || bl->shlib_disabled)
5669 	    continue;
5670 
5671 	  if (!bpstat_check_location (bl, aspace, bp_addr, ws))
5672 	    continue;
5673 
5674 	  /* Come here if it's a watchpoint, or if the break address
5675 	     matches.  */
5676 
5677 	  bs = bpstat_alloc (bl, &bs_link);	/* Alloc a bpstat to
5678 						   explain stop.  */
5679 
5680 	  /* Assume we stop.  Should we find a watchpoint that is not
5681 	     actually triggered, or if the condition of the breakpoint
5682 	     evaluates as false, we'll reset 'stop' to 0.  */
5683 	  bs->stop = 1;
5684 	  bs->print = 1;
5685 
5686 	  /* If this is a scope breakpoint, mark the associated
5687 	     watchpoint as triggered so that we will handle the
5688 	     out-of-scope event.  We'll get to the watchpoint next
5689 	     iteration.  */
5690 	  if (b->type == bp_watchpoint_scope && b->related_breakpoint != b)
5691 	    {
5692 	      struct watchpoint *w = (struct watchpoint *) b->related_breakpoint;
5693 
5694 	      w->watchpoint_triggered = watch_triggered_yes;
5695 	    }
5696 	}
5697     }
5698 
5699   /* Check if a moribund breakpoint explains the stop.  */
5700   if (!target_supports_stopped_by_sw_breakpoint ()
5701       || !target_supports_stopped_by_hw_breakpoint ())
5702     {
5703       for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
5704 	{
5705 	  if (breakpoint_location_address_match (loc, aspace, bp_addr)
5706 	      && need_moribund_for_location_type (loc))
5707 	    {
5708 	      bs = bpstat_alloc (loc, &bs_link);
5709 	      /* For hits of moribund locations, we should just proceed.  */
5710 	      bs->stop = 0;
5711 	      bs->print = 0;
5712 	      bs->print_it = print_it_noop;
5713 	    }
5714 	}
5715     }
5716 
5717   /* A bit of special processing for shlib breakpoints.  We need to
5718      process solib loading here, so that the lists of loaded and
5719      unloaded libraries are correct before we handle "catch load" and
5720      "catch unload".  */
5721   for (bs = bs_head; bs != NULL; bs = bs->next)
5722     {
5723       if (bs->breakpoint_at && bs->breakpoint_at->type == bp_shlib_event)
5724 	{
5725 	  handle_solib_event ();
5726 	  break;
5727 	}
5728     }
5729 
5730   /* Now go through the locations that caused the target to stop, and
5731      check whether we're interested in reporting this stop to higher
5732      layers, or whether we should resume the target transparently.  */
5733 
5734   removed_any = 0;
5735 
5736   for (bs = bs_head; bs != NULL; bs = bs->next)
5737     {
5738       if (!bs->stop)
5739 	continue;
5740 
5741       b = bs->breakpoint_at;
5742       b->ops->check_status (bs);
5743       if (bs->stop)
5744 	{
5745 	  bpstat_check_breakpoint_conditions (bs, ptid);
5746 
5747 	  if (bs->stop)
5748 	    {
5749 	      ++(b->hit_count);
5750 	      observer_notify_breakpoint_modified (b);
5751 
5752 	      /* We will stop here.  */
5753 	      if (b->disposition == disp_disable)
5754 		{
5755 		  --(b->enable_count);
5756 		  if (b->enable_count <= 0)
5757 		    b->enable_state = bp_disabled;
5758 		  removed_any = 1;
5759 		}
5760 	      if (b->silent)
5761 		bs->print = 0;
5762 	      bs->commands = b->commands;
5763 	      incref_counted_command_line (bs->commands);
5764 	      if (command_line_is_silent (bs->commands
5765 					  ? bs->commands->commands : NULL))
5766 		bs->print = 0;
5767 
5768 	      b->ops->after_condition_true (bs);
5769 	    }
5770 
5771 	}
5772 
5773       /* Print nothing for this entry if we don't stop or don't
5774 	 print.  */
5775       if (!bs->stop || !bs->print)
5776 	bs->print_it = print_it_noop;
5777     }
5778 
5779   /* If we aren't stopping, the value of some hardware watchpoint may
5780      not have changed, but the intermediate memory locations we are
5781      watching may have.  Don't bother if we're stopping; this will get
5782      done later.  */
5783   need_remove_insert = 0;
5784   if (! bpstat_causes_stop (bs_head))
5785     for (bs = bs_head; bs != NULL; bs = bs->next)
5786       if (!bs->stop
5787 	  && bs->breakpoint_at
5788 	  && is_hardware_watchpoint (bs->breakpoint_at))
5789 	{
5790 	  struct watchpoint *w = (struct watchpoint *) bs->breakpoint_at;
5791 
5792 	  update_watchpoint (w, 0 /* don't reparse.  */);
5793 	  need_remove_insert = 1;
5794 	}
5795 
5796   if (need_remove_insert)
5797     update_global_location_list (UGLL_MAY_INSERT);
5798   else if (removed_any)
5799     update_global_location_list (UGLL_DONT_INSERT);
5800 
5801   return bs_head;
5802 }
5803 
5804 static void
5805 handle_jit_event (void)
5806 {
5807   struct frame_info *frame;
5808   struct gdbarch *gdbarch;
5809 
5810   if (debug_infrun)
5811     fprintf_unfiltered (gdb_stdlog, "handling bp_jit_event\n");
5812 
5813   /* Switch terminal for any messages produced by
5814      breakpoint_re_set.  */
5815   target_terminal_ours_for_output ();
5816 
5817   frame = get_current_frame ();
5818   gdbarch = get_frame_arch (frame);
5819 
5820   jit_event_handler (gdbarch);
5821 
5822   target_terminal_inferior ();
5823 }
5824 
5825 /* Prepare WHAT final decision for infrun.  */
5826 
5827 /* Decide what infrun needs to do with this bpstat.  */
5828 
5829 struct bpstat_what
5830 bpstat_what (bpstat bs_head)
5831 {
5832   struct bpstat_what retval;
5833   bpstat bs;
5834 
5835   retval.main_action = BPSTAT_WHAT_KEEP_CHECKING;
5836   retval.call_dummy = STOP_NONE;
5837   retval.is_longjmp = 0;
5838 
5839   for (bs = bs_head; bs != NULL; bs = bs->next)
5840     {
5841       /* Extract this BS's action.  After processing each BS, we check
5842 	 if its action overrides all we've seem so far.  */
5843       enum bpstat_what_main_action this_action = BPSTAT_WHAT_KEEP_CHECKING;
5844       enum bptype bptype;
5845 
5846       if (bs->breakpoint_at == NULL)
5847 	{
5848 	  /* I suspect this can happen if it was a momentary
5849 	     breakpoint which has since been deleted.  */
5850 	  bptype = bp_none;
5851 	}
5852       else
5853 	bptype = bs->breakpoint_at->type;
5854 
5855       switch (bptype)
5856 	{
5857 	case bp_none:
5858 	  break;
5859 	case bp_breakpoint:
5860 	case bp_hardware_breakpoint:
5861 	case bp_single_step:
5862 	case bp_until:
5863 	case bp_finish:
5864 	case bp_shlib_event:
5865 	  if (bs->stop)
5866 	    {
5867 	      if (bs->print)
5868 		this_action = BPSTAT_WHAT_STOP_NOISY;
5869 	      else
5870 		this_action = BPSTAT_WHAT_STOP_SILENT;
5871 	    }
5872 	  else
5873 	    this_action = BPSTAT_WHAT_SINGLE;
5874 	  break;
5875 	case bp_watchpoint:
5876 	case bp_hardware_watchpoint:
5877 	case bp_read_watchpoint:
5878 	case bp_access_watchpoint:
5879 	  if (bs->stop)
5880 	    {
5881 	      if (bs->print)
5882 		this_action = BPSTAT_WHAT_STOP_NOISY;
5883 	      else
5884 		this_action = BPSTAT_WHAT_STOP_SILENT;
5885 	    }
5886 	  else
5887 	    {
5888 	      /* There was a watchpoint, but we're not stopping.
5889 		 This requires no further action.  */
5890 	    }
5891 	  break;
5892 	case bp_longjmp:
5893 	case bp_longjmp_call_dummy:
5894 	case bp_exception:
5895 	  if (bs->stop)
5896 	    {
5897 	      this_action = BPSTAT_WHAT_SET_LONGJMP_RESUME;
5898 	      retval.is_longjmp = bptype != bp_exception;
5899 	    }
5900 	  else
5901 	    this_action = BPSTAT_WHAT_SINGLE;
5902 	  break;
5903 	case bp_longjmp_resume:
5904 	case bp_exception_resume:
5905 	  if (bs->stop)
5906 	    {
5907 	      this_action = BPSTAT_WHAT_CLEAR_LONGJMP_RESUME;
5908 	      retval.is_longjmp = bptype == bp_longjmp_resume;
5909 	    }
5910 	  else
5911 	    this_action = BPSTAT_WHAT_SINGLE;
5912 	  break;
5913 	case bp_step_resume:
5914 	  if (bs->stop)
5915 	    this_action = BPSTAT_WHAT_STEP_RESUME;
5916 	  else
5917 	    {
5918 	      /* It is for the wrong frame.  */
5919 	      this_action = BPSTAT_WHAT_SINGLE;
5920 	    }
5921 	  break;
5922 	case bp_hp_step_resume:
5923 	  if (bs->stop)
5924 	    this_action = BPSTAT_WHAT_HP_STEP_RESUME;
5925 	  else
5926 	    {
5927 	      /* It is for the wrong frame.  */
5928 	      this_action = BPSTAT_WHAT_SINGLE;
5929 	    }
5930 	  break;
5931 	case bp_watchpoint_scope:
5932 	case bp_thread_event:
5933 	case bp_overlay_event:
5934 	case bp_longjmp_master:
5935 	case bp_std_terminate_master:
5936 	case bp_exception_master:
5937 	  this_action = BPSTAT_WHAT_SINGLE;
5938 	  break;
5939 	case bp_catchpoint:
5940 	  if (bs->stop)
5941 	    {
5942 	      if (bs->print)
5943 		this_action = BPSTAT_WHAT_STOP_NOISY;
5944 	      else
5945 		this_action = BPSTAT_WHAT_STOP_SILENT;
5946 	    }
5947 	  else
5948 	    {
5949 	      /* There was a catchpoint, but we're not stopping.
5950 		 This requires no further action.  */
5951 	    }
5952 	  break;
5953 	case bp_jit_event:
5954 	  this_action = BPSTAT_WHAT_SINGLE;
5955 	  break;
5956 	case bp_call_dummy:
5957 	  /* Make sure the action is stop (silent or noisy),
5958 	     so infrun.c pops the dummy frame.  */
5959 	  retval.call_dummy = STOP_STACK_DUMMY;
5960 	  this_action = BPSTAT_WHAT_STOP_SILENT;
5961 	  break;
5962 	case bp_std_terminate:
5963 	  /* Make sure the action is stop (silent or noisy),
5964 	     so infrun.c pops the dummy frame.  */
5965 	  retval.call_dummy = STOP_STD_TERMINATE;
5966 	  this_action = BPSTAT_WHAT_STOP_SILENT;
5967 	  break;
5968 	case bp_tracepoint:
5969 	case bp_fast_tracepoint:
5970 	case bp_static_tracepoint:
5971 	  /* Tracepoint hits should not be reported back to GDB, and
5972 	     if one got through somehow, it should have been filtered
5973 	     out already.  */
5974 	  internal_error (__FILE__, __LINE__,
5975 			  _("bpstat_what: tracepoint encountered"));
5976 	  break;
5977 	case bp_gnu_ifunc_resolver:
5978 	  /* Step over it (and insert bp_gnu_ifunc_resolver_return).  */
5979 	  this_action = BPSTAT_WHAT_SINGLE;
5980 	  break;
5981 	case bp_gnu_ifunc_resolver_return:
5982 	  /* The breakpoint will be removed, execution will restart from the
5983 	     PC of the former breakpoint.  */
5984 	  this_action = BPSTAT_WHAT_KEEP_CHECKING;
5985 	  break;
5986 
5987 	case bp_dprintf:
5988 	  if (bs->stop)
5989 	    this_action = BPSTAT_WHAT_STOP_SILENT;
5990 	  else
5991 	    this_action = BPSTAT_WHAT_SINGLE;
5992 	  break;
5993 
5994 	default:
5995 	  internal_error (__FILE__, __LINE__,
5996 			  _("bpstat_what: unhandled bptype %d"), (int) bptype);
5997 	}
5998 
5999       retval.main_action = max (retval.main_action, this_action);
6000     }
6001 
6002   return retval;
6003 }
6004 
6005 void
6006 bpstat_run_callbacks (bpstat bs_head)
6007 {
6008   bpstat bs;
6009 
6010   for (bs = bs_head; bs != NULL; bs = bs->next)
6011     {
6012       struct breakpoint *b = bs->breakpoint_at;
6013 
6014       if (b == NULL)
6015 	continue;
6016       switch (b->type)
6017 	{
6018 	case bp_jit_event:
6019 	  handle_jit_event ();
6020 	  break;
6021 	case bp_gnu_ifunc_resolver:
6022 	  gnu_ifunc_resolver_stop (b);
6023 	  break;
6024 	case bp_gnu_ifunc_resolver_return:
6025 	  gnu_ifunc_resolver_return_stop (b);
6026 	  break;
6027 	}
6028     }
6029 }
6030 
6031 /* Nonzero if we should step constantly (e.g. watchpoints on machines
6032    without hardware support).  This isn't related to a specific bpstat,
6033    just to things like whether watchpoints are set.  */
6034 
6035 int
6036 bpstat_should_step (void)
6037 {
6038   struct breakpoint *b;
6039 
6040   ALL_BREAKPOINTS (b)
6041     if (breakpoint_enabled (b) && b->type == bp_watchpoint && b->loc != NULL)
6042       return 1;
6043   return 0;
6044 }
6045 
6046 int
6047 bpstat_causes_stop (bpstat bs)
6048 {
6049   for (; bs != NULL; bs = bs->next)
6050     if (bs->stop)
6051       return 1;
6052 
6053   return 0;
6054 }
6055 
6056 
6057 
6058 /* Compute a string of spaces suitable to indent the next line
6059    so it starts at the position corresponding to the table column
6060    named COL_NAME in the currently active table of UIOUT.  */
6061 
6062 static char *
6063 wrap_indent_at_field (struct ui_out *uiout, const char *col_name)
6064 {
6065   static char wrap_indent[80];
6066   int i, total_width, width, align;
6067   char *text;
6068 
6069   total_width = 0;
6070   for (i = 1; ui_out_query_field (uiout, i, &width, &align, &text); i++)
6071     {
6072       if (strcmp (text, col_name) == 0)
6073 	{
6074 	  gdb_assert (total_width < sizeof wrap_indent);
6075 	  memset (wrap_indent, ' ', total_width);
6076 	  wrap_indent[total_width] = 0;
6077 
6078 	  return wrap_indent;
6079 	}
6080 
6081       total_width += width + 1;
6082     }
6083 
6084   return NULL;
6085 }
6086 
6087 /* Determine if the locations of this breakpoint will have their conditions
6088    evaluated by the target, host or a mix of both.  Returns the following:
6089 
6090     "host": Host evals condition.
6091     "host or target": Host or Target evals condition.
6092     "target": Target evals condition.
6093 */
6094 
6095 static const char *
6096 bp_condition_evaluator (struct breakpoint *b)
6097 {
6098   struct bp_location *bl;
6099   char host_evals = 0;
6100   char target_evals = 0;
6101 
6102   if (!b)
6103     return NULL;
6104 
6105   if (!is_breakpoint (b))
6106     return NULL;
6107 
6108   if (gdb_evaluates_breakpoint_condition_p ()
6109       || !target_supports_evaluation_of_breakpoint_conditions ())
6110     return condition_evaluation_host;
6111 
6112   for (bl = b->loc; bl; bl = bl->next)
6113     {
6114       if (bl->cond_bytecode)
6115 	target_evals++;
6116       else
6117 	host_evals++;
6118     }
6119 
6120   if (host_evals && target_evals)
6121     return condition_evaluation_both;
6122   else if (target_evals)
6123     return condition_evaluation_target;
6124   else
6125     return condition_evaluation_host;
6126 }
6127 
6128 /* Determine the breakpoint location's condition evaluator.  This is
6129    similar to bp_condition_evaluator, but for locations.  */
6130 
6131 static const char *
6132 bp_location_condition_evaluator (struct bp_location *bl)
6133 {
6134   if (bl && !is_breakpoint (bl->owner))
6135     return NULL;
6136 
6137   if (gdb_evaluates_breakpoint_condition_p ()
6138       || !target_supports_evaluation_of_breakpoint_conditions ())
6139     return condition_evaluation_host;
6140 
6141   if (bl && bl->cond_bytecode)
6142     return condition_evaluation_target;
6143   else
6144     return condition_evaluation_host;
6145 }
6146 
6147 /* Print the LOC location out of the list of B->LOC locations.  */
6148 
6149 static void
6150 print_breakpoint_location (struct breakpoint *b,
6151 			   struct bp_location *loc)
6152 {
6153   struct ui_out *uiout = current_uiout;
6154   struct cleanup *old_chain = save_current_program_space ();
6155 
6156   if (loc != NULL && loc->shlib_disabled)
6157     loc = NULL;
6158 
6159   if (loc != NULL)
6160     set_current_program_space (loc->pspace);
6161 
6162   if (b->display_canonical)
6163     ui_out_field_string (uiout, "what",
6164 			 event_location_to_string (b->location));
6165   else if (loc && loc->symtab)
6166     {
6167       struct symbol *sym
6168 	= find_pc_sect_function (loc->address, loc->section);
6169       if (sym)
6170 	{
6171 	  ui_out_text (uiout, "in ");
6172 	  ui_out_field_string (uiout, "func",
6173 			       SYMBOL_PRINT_NAME (sym));
6174 	  ui_out_text (uiout, " ");
6175 	  ui_out_wrap_hint (uiout, wrap_indent_at_field (uiout, "what"));
6176 	  ui_out_text (uiout, "at ");
6177 	}
6178       ui_out_field_string (uiout, "file",
6179 			   symtab_to_filename_for_display (loc->symtab));
6180       ui_out_text (uiout, ":");
6181 
6182       if (ui_out_is_mi_like_p (uiout))
6183 	ui_out_field_string (uiout, "fullname",
6184 			     symtab_to_fullname (loc->symtab));
6185 
6186       ui_out_field_int (uiout, "line", loc->line_number);
6187     }
6188   else if (loc)
6189     {
6190       struct ui_file *stb = mem_fileopen ();
6191       struct cleanup *stb_chain = make_cleanup_ui_file_delete (stb);
6192 
6193       print_address_symbolic (loc->gdbarch, loc->address, stb,
6194 			      demangle, "");
6195       ui_out_field_stream (uiout, "at", stb);
6196 
6197       do_cleanups (stb_chain);
6198     }
6199   else
6200     {
6201       ui_out_field_string (uiout, "pending",
6202 			   event_location_to_string (b->location));
6203       /* If extra_string is available, it could be holding a condition
6204 	 or dprintf arguments.  In either case, make sure it is printed,
6205 	 too, but only for non-MI streams.  */
6206       if (!ui_out_is_mi_like_p (uiout) && b->extra_string != NULL)
6207 	{
6208 	  if (b->type == bp_dprintf)
6209 	    ui_out_text (uiout, ",");
6210 	  else
6211 	    ui_out_text (uiout, " ");
6212 	  ui_out_text (uiout, b->extra_string);
6213 	}
6214     }
6215 
6216   if (loc && is_breakpoint (b)
6217       && breakpoint_condition_evaluation_mode () == condition_evaluation_target
6218       && bp_condition_evaluator (b) == condition_evaluation_both)
6219     {
6220       ui_out_text (uiout, " (");
6221       ui_out_field_string (uiout, "evaluated-by",
6222 			   bp_location_condition_evaluator (loc));
6223       ui_out_text (uiout, ")");
6224     }
6225 
6226   do_cleanups (old_chain);
6227 }
6228 
6229 static const char *
6230 bptype_string (enum bptype type)
6231 {
6232   struct ep_type_description
6233     {
6234       enum bptype type;
6235       char *description;
6236     };
6237   static struct ep_type_description bptypes[] =
6238   {
6239     {bp_none, "?deleted?"},
6240     {bp_breakpoint, "breakpoint"},
6241     {bp_hardware_breakpoint, "hw breakpoint"},
6242     {bp_single_step, "sw single-step"},
6243     {bp_until, "until"},
6244     {bp_finish, "finish"},
6245     {bp_watchpoint, "watchpoint"},
6246     {bp_hardware_watchpoint, "hw watchpoint"},
6247     {bp_read_watchpoint, "read watchpoint"},
6248     {bp_access_watchpoint, "acc watchpoint"},
6249     {bp_longjmp, "longjmp"},
6250     {bp_longjmp_resume, "longjmp resume"},
6251     {bp_longjmp_call_dummy, "longjmp for call dummy"},
6252     {bp_exception, "exception"},
6253     {bp_exception_resume, "exception resume"},
6254     {bp_step_resume, "step resume"},
6255     {bp_hp_step_resume, "high-priority step resume"},
6256     {bp_watchpoint_scope, "watchpoint scope"},
6257     {bp_call_dummy, "call dummy"},
6258     {bp_std_terminate, "std::terminate"},
6259     {bp_shlib_event, "shlib events"},
6260     {bp_thread_event, "thread events"},
6261     {bp_overlay_event, "overlay events"},
6262     {bp_longjmp_master, "longjmp master"},
6263     {bp_std_terminate_master, "std::terminate master"},
6264     {bp_exception_master, "exception master"},
6265     {bp_catchpoint, "catchpoint"},
6266     {bp_tracepoint, "tracepoint"},
6267     {bp_fast_tracepoint, "fast tracepoint"},
6268     {bp_static_tracepoint, "static tracepoint"},
6269     {bp_dprintf, "dprintf"},
6270     {bp_jit_event, "jit events"},
6271     {bp_gnu_ifunc_resolver, "STT_GNU_IFUNC resolver"},
6272     {bp_gnu_ifunc_resolver_return, "STT_GNU_IFUNC resolver return"},
6273   };
6274 
6275   if (((int) type >= (sizeof (bptypes) / sizeof (bptypes[0])))
6276       || ((int) type != bptypes[(int) type].type))
6277     internal_error (__FILE__, __LINE__,
6278 		    _("bptypes table does not describe type #%d."),
6279 		    (int) type);
6280 
6281   return bptypes[(int) type].description;
6282 }
6283 
6284 /* For MI, output a field named 'thread-groups' with a list as the value.
6285    For CLI, prefix the list with the string 'inf'. */
6286 
6287 static void
6288 output_thread_groups (struct ui_out *uiout,
6289 		      const char *field_name,
6290 		      VEC(int) *inf_num,
6291 		      int mi_only)
6292 {
6293   struct cleanup *back_to;
6294   int is_mi = ui_out_is_mi_like_p (uiout);
6295   int inf;
6296   int i;
6297 
6298   /* For backward compatibility, don't display inferiors in CLI unless
6299      there are several.  Always display them for MI. */
6300   if (!is_mi && mi_only)
6301     return;
6302 
6303   back_to = make_cleanup_ui_out_list_begin_end (uiout, field_name);
6304 
6305   for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i)
6306     {
6307       if (is_mi)
6308 	{
6309 	  char mi_group[10];
6310 
6311 	  xsnprintf (mi_group, sizeof (mi_group), "i%d", inf);
6312 	  ui_out_field_string (uiout, NULL, mi_group);
6313 	}
6314       else
6315 	{
6316 	  if (i == 0)
6317 	    ui_out_text (uiout, " inf ");
6318 	  else
6319 	    ui_out_text (uiout, ", ");
6320 
6321 	  ui_out_text (uiout, plongest (inf));
6322 	}
6323     }
6324 
6325   do_cleanups (back_to);
6326 }
6327 
6328 /* Print B to gdb_stdout.  */
6329 
6330 static void
6331 print_one_breakpoint_location (struct breakpoint *b,
6332 			       struct bp_location *loc,
6333 			       int loc_number,
6334 			       struct bp_location **last_loc,
6335 			       int allflag)
6336 {
6337   struct command_line *l;
6338   static char bpenables[] = "nynny";
6339 
6340   struct ui_out *uiout = current_uiout;
6341   int header_of_multiple = 0;
6342   int part_of_multiple = (loc != NULL);
6343   struct value_print_options opts;
6344 
6345   get_user_print_options (&opts);
6346 
6347   gdb_assert (!loc || loc_number != 0);
6348   /* See comment in print_one_breakpoint concerning treatment of
6349      breakpoints with single disabled location.  */
6350   if (loc == NULL
6351       && (b->loc != NULL
6352 	  && (b->loc->next != NULL || !b->loc->enabled)))
6353     header_of_multiple = 1;
6354   if (loc == NULL)
6355     loc = b->loc;
6356 
6357   annotate_record ();
6358 
6359   /* 1 */
6360   annotate_field (0);
6361   if (part_of_multiple)
6362     {
6363       char *formatted;
6364       formatted = xstrprintf ("%d.%d", b->number, loc_number);
6365       ui_out_field_string (uiout, "number", formatted);
6366       xfree (formatted);
6367     }
6368   else
6369     {
6370       ui_out_field_int (uiout, "number", b->number);
6371     }
6372 
6373   /* 2 */
6374   annotate_field (1);
6375   if (part_of_multiple)
6376     ui_out_field_skip (uiout, "type");
6377   else
6378     ui_out_field_string (uiout, "type", bptype_string (b->type));
6379 
6380   /* 3 */
6381   annotate_field (2);
6382   if (part_of_multiple)
6383     ui_out_field_skip (uiout, "disp");
6384   else
6385     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
6386 
6387 
6388   /* 4 */
6389   annotate_field (3);
6390   if (part_of_multiple)
6391     ui_out_field_string (uiout, "enabled", loc->enabled ? "y" : "n");
6392   else
6393     ui_out_field_fmt (uiout, "enabled", "%c",
6394 		      bpenables[(int) b->enable_state]);
6395   ui_out_spaces (uiout, 2);
6396 
6397 
6398   /* 5 and 6 */
6399   if (b->ops != NULL && b->ops->print_one != NULL)
6400     {
6401       /* Although the print_one can possibly print all locations,
6402 	 calling it here is not likely to get any nice result.  So,
6403 	 make sure there's just one location.  */
6404       gdb_assert (b->loc == NULL || b->loc->next == NULL);
6405       b->ops->print_one (b, last_loc);
6406     }
6407   else
6408     switch (b->type)
6409       {
6410       case bp_none:
6411 	internal_error (__FILE__, __LINE__,
6412 			_("print_one_breakpoint: bp_none encountered\n"));
6413 	break;
6414 
6415       case bp_watchpoint:
6416       case bp_hardware_watchpoint:
6417       case bp_read_watchpoint:
6418       case bp_access_watchpoint:
6419 	{
6420 	  struct watchpoint *w = (struct watchpoint *) b;
6421 
6422 	  /* Field 4, the address, is omitted (which makes the columns
6423 	     not line up too nicely with the headers, but the effect
6424 	     is relatively readable).  */
6425 	  if (opts.addressprint)
6426 	    ui_out_field_skip (uiout, "addr");
6427 	  annotate_field (5);
6428 	  ui_out_field_string (uiout, "what", w->exp_string);
6429 	}
6430 	break;
6431 
6432       case bp_breakpoint:
6433       case bp_hardware_breakpoint:
6434       case bp_single_step:
6435       case bp_until:
6436       case bp_finish:
6437       case bp_longjmp:
6438       case bp_longjmp_resume:
6439       case bp_longjmp_call_dummy:
6440       case bp_exception:
6441       case bp_exception_resume:
6442       case bp_step_resume:
6443       case bp_hp_step_resume:
6444       case bp_watchpoint_scope:
6445       case bp_call_dummy:
6446       case bp_std_terminate:
6447       case bp_shlib_event:
6448       case bp_thread_event:
6449       case bp_overlay_event:
6450       case bp_longjmp_master:
6451       case bp_std_terminate_master:
6452       case bp_exception_master:
6453       case bp_tracepoint:
6454       case bp_fast_tracepoint:
6455       case bp_static_tracepoint:
6456       case bp_dprintf:
6457       case bp_jit_event:
6458       case bp_gnu_ifunc_resolver:
6459       case bp_gnu_ifunc_resolver_return:
6460 	if (opts.addressprint)
6461 	  {
6462 	    annotate_field (4);
6463 	    if (header_of_multiple)
6464 	      ui_out_field_string (uiout, "addr", "<MULTIPLE>");
6465 	    else if (b->loc == NULL || loc->shlib_disabled)
6466 	      ui_out_field_string (uiout, "addr", "<PENDING>");
6467 	    else
6468 	      ui_out_field_core_addr (uiout, "addr",
6469 				      loc->gdbarch, loc->address);
6470 	  }
6471 	annotate_field (5);
6472 	if (!header_of_multiple)
6473 	  print_breakpoint_location (b, loc);
6474 	if (b->loc)
6475 	  *last_loc = b->loc;
6476 	break;
6477       }
6478 
6479 
6480   if (loc != NULL && !header_of_multiple)
6481     {
6482       struct inferior *inf;
6483       VEC(int) *inf_num = NULL;
6484       int mi_only = 1;
6485 
6486       ALL_INFERIORS (inf)
6487 	{
6488 	  if (inf->pspace == loc->pspace)
6489 	    VEC_safe_push (int, inf_num, inf->num);
6490 	}
6491 
6492         /* For backward compatibility, don't display inferiors in CLI unless
6493 	   there are several.  Always display for MI. */
6494 	if (allflag
6495 	    || (!gdbarch_has_global_breakpoints (target_gdbarch ())
6496 		&& (number_of_program_spaces () > 1
6497 		    || number_of_inferiors () > 1)
6498 		/* LOC is for existing B, it cannot be in
6499 		   moribund_locations and thus having NULL OWNER.  */
6500 		&& loc->owner->type != bp_catchpoint))
6501 	mi_only = 0;
6502       output_thread_groups (uiout, "thread-groups", inf_num, mi_only);
6503       VEC_free (int, inf_num);
6504     }
6505 
6506   if (!part_of_multiple)
6507     {
6508       if (b->thread != -1)
6509 	{
6510 	  /* FIXME: This seems to be redundant and lost here; see the
6511 	     "stop only in" line a little further down.  */
6512 	  ui_out_text (uiout, " thread ");
6513 	  ui_out_field_int (uiout, "thread", b->thread);
6514 	}
6515       else if (b->task != 0)
6516 	{
6517 	  ui_out_text (uiout, " task ");
6518 	  ui_out_field_int (uiout, "task", b->task);
6519 	}
6520     }
6521 
6522   ui_out_text (uiout, "\n");
6523 
6524   if (!part_of_multiple)
6525     b->ops->print_one_detail (b, uiout);
6526 
6527   if (part_of_multiple && frame_id_p (b->frame_id))
6528     {
6529       annotate_field (6);
6530       ui_out_text (uiout, "\tstop only in stack frame at ");
6531       /* FIXME: cagney/2002-12-01: Shouldn't be poking around inside
6532          the frame ID.  */
6533       ui_out_field_core_addr (uiout, "frame",
6534 			      b->gdbarch, b->frame_id.stack_addr);
6535       ui_out_text (uiout, "\n");
6536     }
6537 
6538   if (!part_of_multiple && b->cond_string)
6539     {
6540       annotate_field (7);
6541       if (is_tracepoint (b))
6542 	ui_out_text (uiout, "\ttrace only if ");
6543       else
6544 	ui_out_text (uiout, "\tstop only if ");
6545       ui_out_field_string (uiout, "cond", b->cond_string);
6546 
6547       /* Print whether the target is doing the breakpoint's condition
6548 	 evaluation.  If GDB is doing the evaluation, don't print anything.  */
6549       if (is_breakpoint (b)
6550 	  && breakpoint_condition_evaluation_mode ()
6551 	  == condition_evaluation_target)
6552 	{
6553 	  ui_out_text (uiout, " (");
6554 	  ui_out_field_string (uiout, "evaluated-by",
6555 			       bp_condition_evaluator (b));
6556 	  ui_out_text (uiout, " evals)");
6557 	}
6558       ui_out_text (uiout, "\n");
6559     }
6560 
6561   if (!part_of_multiple && b->thread != -1)
6562     {
6563       /* FIXME should make an annotation for this.  */
6564       ui_out_text (uiout, "\tstop only in thread ");
6565       if (ui_out_is_mi_like_p (uiout))
6566 	ui_out_field_int (uiout, "thread", b->thread);
6567       else
6568 	{
6569 	  struct thread_info *thr = find_thread_global_id (b->thread);
6570 
6571 	  ui_out_field_string (uiout, "thread", print_thread_id (thr));
6572 	}
6573       ui_out_text (uiout, "\n");
6574     }
6575 
6576   if (!part_of_multiple)
6577     {
6578       if (b->hit_count)
6579 	{
6580 	  /* FIXME should make an annotation for this.  */
6581 	  if (is_catchpoint (b))
6582 	    ui_out_text (uiout, "\tcatchpoint");
6583 	  else if (is_tracepoint (b))
6584 	    ui_out_text (uiout, "\ttracepoint");
6585 	  else
6586 	    ui_out_text (uiout, "\tbreakpoint");
6587 	  ui_out_text (uiout, " already hit ");
6588 	  ui_out_field_int (uiout, "times", b->hit_count);
6589 	  if (b->hit_count == 1)
6590 	    ui_out_text (uiout, " time\n");
6591 	  else
6592 	    ui_out_text (uiout, " times\n");
6593 	}
6594       else
6595 	{
6596 	  /* Output the count also if it is zero, but only if this is mi.  */
6597 	  if (ui_out_is_mi_like_p (uiout))
6598 	    ui_out_field_int (uiout, "times", b->hit_count);
6599 	}
6600     }
6601 
6602   if (!part_of_multiple && b->ignore_count)
6603     {
6604       annotate_field (8);
6605       ui_out_text (uiout, "\tignore next ");
6606       ui_out_field_int (uiout, "ignore", b->ignore_count);
6607       ui_out_text (uiout, " hits\n");
6608     }
6609 
6610   /* Note that an enable count of 1 corresponds to "enable once"
6611      behavior, which is reported by the combination of enablement and
6612      disposition, so we don't need to mention it here.  */
6613   if (!part_of_multiple && b->enable_count > 1)
6614     {
6615       annotate_field (8);
6616       ui_out_text (uiout, "\tdisable after ");
6617       /* Tweak the wording to clarify that ignore and enable counts
6618 	 are distinct, and have additive effect.  */
6619       if (b->ignore_count)
6620 	ui_out_text (uiout, "additional ");
6621       else
6622 	ui_out_text (uiout, "next ");
6623       ui_out_field_int (uiout, "enable", b->enable_count);
6624       ui_out_text (uiout, " hits\n");
6625     }
6626 
6627   if (!part_of_multiple && is_tracepoint (b))
6628     {
6629       struct tracepoint *tp = (struct tracepoint *) b;
6630 
6631       if (tp->traceframe_usage)
6632 	{
6633 	  ui_out_text (uiout, "\ttrace buffer usage ");
6634 	  ui_out_field_int (uiout, "traceframe-usage", tp->traceframe_usage);
6635 	  ui_out_text (uiout, " bytes\n");
6636 	}
6637     }
6638 
6639   l = b->commands ? b->commands->commands : NULL;
6640   if (!part_of_multiple && l)
6641     {
6642       struct cleanup *script_chain;
6643 
6644       annotate_field (9);
6645       script_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "script");
6646       print_command_lines (uiout, l, 4);
6647       do_cleanups (script_chain);
6648     }
6649 
6650   if (is_tracepoint (b))
6651     {
6652       struct tracepoint *t = (struct tracepoint *) b;
6653 
6654       if (!part_of_multiple && t->pass_count)
6655 	{
6656 	  annotate_field (10);
6657 	  ui_out_text (uiout, "\tpass count ");
6658 	  ui_out_field_int (uiout, "pass", t->pass_count);
6659 	  ui_out_text (uiout, " \n");
6660 	}
6661 
6662       /* Don't display it when tracepoint or tracepoint location is
6663 	 pending.   */
6664       if (!header_of_multiple && loc != NULL && !loc->shlib_disabled)
6665 	{
6666 	  annotate_field (11);
6667 
6668 	  if (ui_out_is_mi_like_p (uiout))
6669 	    ui_out_field_string (uiout, "installed",
6670 				 loc->inserted ? "y" : "n");
6671 	  else
6672 	    {
6673 	      if (loc->inserted)
6674 		ui_out_text (uiout, "\t");
6675 	      else
6676 		ui_out_text (uiout, "\tnot ");
6677 	      ui_out_text (uiout, "installed on target\n");
6678 	    }
6679 	}
6680     }
6681 
6682   if (ui_out_is_mi_like_p (uiout) && !part_of_multiple)
6683     {
6684       if (is_watchpoint (b))
6685 	{
6686 	  struct watchpoint *w = (struct watchpoint *) b;
6687 
6688 	  ui_out_field_string (uiout, "original-location", w->exp_string);
6689 	}
6690       else if (b->location != NULL
6691 	       && event_location_to_string (b->location) != NULL)
6692 	ui_out_field_string (uiout, "original-location",
6693 			     event_location_to_string (b->location));
6694     }
6695 }
6696 
6697 static void
6698 print_one_breakpoint (struct breakpoint *b,
6699 		      struct bp_location **last_loc,
6700 		      int allflag)
6701 {
6702   struct cleanup *bkpt_chain;
6703   struct ui_out *uiout = current_uiout;
6704 
6705   bkpt_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "bkpt");
6706 
6707   print_one_breakpoint_location (b, NULL, 0, last_loc, allflag);
6708   do_cleanups (bkpt_chain);
6709 
6710   /* If this breakpoint has custom print function,
6711      it's already printed.  Otherwise, print individual
6712      locations, if any.  */
6713   if (b->ops == NULL || b->ops->print_one == NULL)
6714     {
6715       /* If breakpoint has a single location that is disabled, we
6716 	 print it as if it had several locations, since otherwise it's
6717 	 hard to represent "breakpoint enabled, location disabled"
6718 	 situation.
6719 
6720 	 Note that while hardware watchpoints have several locations
6721 	 internally, that's not a property exposed to user.  */
6722       if (b->loc
6723 	  && !is_hardware_watchpoint (b)
6724 	  && (b->loc->next || !b->loc->enabled))
6725 	{
6726 	  struct bp_location *loc;
6727 	  int n = 1;
6728 
6729 	  for (loc = b->loc; loc; loc = loc->next, ++n)
6730 	    {
6731 	      struct cleanup *inner2 =
6732 		make_cleanup_ui_out_tuple_begin_end (uiout, NULL);
6733 	      print_one_breakpoint_location (b, loc, n, last_loc, allflag);
6734 	      do_cleanups (inner2);
6735 	    }
6736 	}
6737     }
6738 }
6739 
6740 static int
6741 breakpoint_address_bits (struct breakpoint *b)
6742 {
6743   int print_address_bits = 0;
6744   struct bp_location *loc;
6745 
6746   /* Software watchpoints that aren't watching memory don't have an
6747      address to print.  */
6748   if (is_no_memory_software_watchpoint (b))
6749     return 0;
6750 
6751   for (loc = b->loc; loc; loc = loc->next)
6752     {
6753       int addr_bit;
6754 
6755       addr_bit = gdbarch_addr_bit (loc->gdbarch);
6756       if (addr_bit > print_address_bits)
6757 	print_address_bits = addr_bit;
6758     }
6759 
6760   return print_address_bits;
6761 }
6762 
6763 struct captured_breakpoint_query_args
6764   {
6765     int bnum;
6766   };
6767 
6768 static int
6769 do_captured_breakpoint_query (struct ui_out *uiout, void *data)
6770 {
6771   struct captured_breakpoint_query_args *args
6772     = (struct captured_breakpoint_query_args *) data;
6773   struct breakpoint *b;
6774   struct bp_location *dummy_loc = NULL;
6775 
6776   ALL_BREAKPOINTS (b)
6777     {
6778       if (args->bnum == b->number)
6779 	{
6780 	  print_one_breakpoint (b, &dummy_loc, 0);
6781 	  return GDB_RC_OK;
6782 	}
6783     }
6784   return GDB_RC_NONE;
6785 }
6786 
6787 enum gdb_rc
6788 gdb_breakpoint_query (struct ui_out *uiout, int bnum,
6789 		      char **error_message)
6790 {
6791   struct captured_breakpoint_query_args args;
6792 
6793   args.bnum = bnum;
6794   /* For the moment we don't trust print_one_breakpoint() to not throw
6795      an error.  */
6796   if (catch_exceptions_with_msg (uiout, do_captured_breakpoint_query, &args,
6797 				 error_message, RETURN_MASK_ALL) < 0)
6798     return GDB_RC_FAIL;
6799   else
6800     return GDB_RC_OK;
6801 }
6802 
6803 /* Return true if this breakpoint was set by the user, false if it is
6804    internal or momentary.  */
6805 
6806 int
6807 user_breakpoint_p (struct breakpoint *b)
6808 {
6809   return b->number > 0;
6810 }
6811 
6812 /* See breakpoint.h.  */
6813 
6814 int
6815 pending_breakpoint_p (struct breakpoint *b)
6816 {
6817   return b->loc == NULL;
6818 }
6819 
6820 /* Print information on user settable breakpoint (watchpoint, etc)
6821    number BNUM.  If BNUM is -1 print all user-settable breakpoints.
6822    If ALLFLAG is non-zero, include non-user-settable breakpoints.  If
6823    FILTER is non-NULL, call it on each breakpoint and only include the
6824    ones for which it returns non-zero.  Return the total number of
6825    breakpoints listed.  */
6826 
6827 static int
6828 breakpoint_1 (char *args, int allflag,
6829 	      int (*filter) (const struct breakpoint *))
6830 {
6831   struct breakpoint *b;
6832   struct bp_location *last_loc = NULL;
6833   int nr_printable_breakpoints;
6834   struct cleanup *bkpttbl_chain;
6835   struct value_print_options opts;
6836   int print_address_bits = 0;
6837   int print_type_col_width = 14;
6838   struct ui_out *uiout = current_uiout;
6839 
6840   get_user_print_options (&opts);
6841 
6842   /* Compute the number of rows in the table, as well as the size
6843      required for address fields.  */
6844   nr_printable_breakpoints = 0;
6845   ALL_BREAKPOINTS (b)
6846     {
6847       /* If we have a filter, only list the breakpoints it accepts.  */
6848       if (filter && !filter (b))
6849 	continue;
6850 
6851       /* If we have an "args" string, it is a list of breakpoints to
6852 	 accept.  Skip the others.  */
6853       if (args != NULL && *args != '\0')
6854 	{
6855 	  if (allflag && parse_and_eval_long (args) != b->number)
6856 	    continue;
6857 	  if (!allflag && !number_is_in_list (args, b->number))
6858 	    continue;
6859 	}
6860 
6861       if (allflag || user_breakpoint_p (b))
6862 	{
6863 	  int addr_bit, type_len;
6864 
6865 	  addr_bit = breakpoint_address_bits (b);
6866 	  if (addr_bit > print_address_bits)
6867 	    print_address_bits = addr_bit;
6868 
6869 	  type_len = strlen (bptype_string (b->type));
6870 	  if (type_len > print_type_col_width)
6871 	    print_type_col_width = type_len;
6872 
6873 	  nr_printable_breakpoints++;
6874 	}
6875     }
6876 
6877   if (opts.addressprint)
6878     bkpttbl_chain
6879       = make_cleanup_ui_out_table_begin_end (uiout, 6,
6880 					     nr_printable_breakpoints,
6881                                              "BreakpointTable");
6882   else
6883     bkpttbl_chain
6884       = make_cleanup_ui_out_table_begin_end (uiout, 5,
6885 					     nr_printable_breakpoints,
6886                                              "BreakpointTable");
6887 
6888   if (nr_printable_breakpoints > 0)
6889     annotate_breakpoints_headers ();
6890   if (nr_printable_breakpoints > 0)
6891     annotate_field (0);
6892   ui_out_table_header (uiout, 7, ui_left, "number", "Num");	/* 1 */
6893   if (nr_printable_breakpoints > 0)
6894     annotate_field (1);
6895   ui_out_table_header (uiout, print_type_col_width, ui_left,
6896 		       "type", "Type");				/* 2 */
6897   if (nr_printable_breakpoints > 0)
6898     annotate_field (2);
6899   ui_out_table_header (uiout, 4, ui_left, "disp", "Disp");	/* 3 */
6900   if (nr_printable_breakpoints > 0)
6901     annotate_field (3);
6902   ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");	/* 4 */
6903   if (opts.addressprint)
6904     {
6905       if (nr_printable_breakpoints > 0)
6906 	annotate_field (4);
6907       if (print_address_bits <= 32)
6908 	ui_out_table_header (uiout, 10, ui_left,
6909 			     "addr", "Address");		/* 5 */
6910       else
6911 	ui_out_table_header (uiout, 18, ui_left,
6912 			     "addr", "Address");		/* 5 */
6913     }
6914   if (nr_printable_breakpoints > 0)
6915     annotate_field (5);
6916   ui_out_table_header (uiout, 40, ui_noalign, "what", "What");	/* 6 */
6917   ui_out_table_body (uiout);
6918   if (nr_printable_breakpoints > 0)
6919     annotate_breakpoints_table ();
6920 
6921   ALL_BREAKPOINTS (b)
6922     {
6923       QUIT;
6924       /* If we have a filter, only list the breakpoints it accepts.  */
6925       if (filter && !filter (b))
6926 	continue;
6927 
6928       /* If we have an "args" string, it is a list of breakpoints to
6929 	 accept.  Skip the others.  */
6930 
6931       if (args != NULL && *args != '\0')
6932 	{
6933 	  if (allflag)	/* maintenance info breakpoint */
6934 	    {
6935 	      if (parse_and_eval_long (args) != b->number)
6936 		continue;
6937 	    }
6938 	  else		/* all others */
6939 	    {
6940 	      if (!number_is_in_list (args, b->number))
6941 		continue;
6942 	    }
6943 	}
6944       /* We only print out user settable breakpoints unless the
6945 	 allflag is set.  */
6946       if (allflag || user_breakpoint_p (b))
6947 	print_one_breakpoint (b, &last_loc, allflag);
6948     }
6949 
6950   do_cleanups (bkpttbl_chain);
6951 
6952   if (nr_printable_breakpoints == 0)
6953     {
6954       /* If there's a filter, let the caller decide how to report
6955 	 empty list.  */
6956       if (!filter)
6957 	{
6958 	  if (args == NULL || *args == '\0')
6959 	    ui_out_message (uiout, 0, "No breakpoints or watchpoints.\n");
6960 	  else
6961 	    ui_out_message (uiout, 0,
6962 			    "No breakpoint or watchpoint matching '%s'.\n",
6963 			    args);
6964 	}
6965     }
6966   else
6967     {
6968       if (last_loc && !server_command)
6969 	set_next_address (last_loc->gdbarch, last_loc->address);
6970     }
6971 
6972   /* FIXME?  Should this be moved up so that it is only called when
6973      there have been breakpoints? */
6974   annotate_breakpoints_table_end ();
6975 
6976   return nr_printable_breakpoints;
6977 }
6978 
6979 /* Display the value of default-collect in a way that is generally
6980    compatible with the breakpoint list.  */
6981 
6982 static void
6983 default_collect_info (void)
6984 {
6985   struct ui_out *uiout = current_uiout;
6986 
6987   /* If it has no value (which is frequently the case), say nothing; a
6988      message like "No default-collect." gets in user's face when it's
6989      not wanted.  */
6990   if (!*default_collect)
6991     return;
6992 
6993   /* The following phrase lines up nicely with per-tracepoint collect
6994      actions.  */
6995   ui_out_text (uiout, "default collect ");
6996   ui_out_field_string (uiout, "default-collect", default_collect);
6997   ui_out_text (uiout, " \n");
6998 }
6999 
7000 static void
7001 breakpoints_info (char *args, int from_tty)
7002 {
7003   breakpoint_1 (args, 0, NULL);
7004 
7005   default_collect_info ();
7006 }
7007 
7008 static void
7009 watchpoints_info (char *args, int from_tty)
7010 {
7011   int num_printed = breakpoint_1 (args, 0, is_watchpoint);
7012   struct ui_out *uiout = current_uiout;
7013 
7014   if (num_printed == 0)
7015     {
7016       if (args == NULL || *args == '\0')
7017 	ui_out_message (uiout, 0, "No watchpoints.\n");
7018       else
7019 	ui_out_message (uiout, 0, "No watchpoint matching '%s'.\n", args);
7020     }
7021 }
7022 
7023 static void
7024 maintenance_info_breakpoints (char *args, int from_tty)
7025 {
7026   breakpoint_1 (args, 1, NULL);
7027 
7028   default_collect_info ();
7029 }
7030 
7031 static int
7032 breakpoint_has_pc (struct breakpoint *b,
7033 		   struct program_space *pspace,
7034 		   CORE_ADDR pc, struct obj_section *section)
7035 {
7036   struct bp_location *bl = b->loc;
7037 
7038   for (; bl; bl = bl->next)
7039     {
7040       if (bl->pspace == pspace
7041 	  && bl->address == pc
7042 	  && (!overlay_debugging || bl->section == section))
7043 	return 1;
7044     }
7045   return 0;
7046 }
7047 
7048 /* Print a message describing any user-breakpoints set at PC.  This
7049    concerns with logical breakpoints, so we match program spaces, not
7050    address spaces.  */
7051 
7052 static void
7053 describe_other_breakpoints (struct gdbarch *gdbarch,
7054 			    struct program_space *pspace, CORE_ADDR pc,
7055 			    struct obj_section *section, int thread)
7056 {
7057   int others = 0;
7058   struct breakpoint *b;
7059 
7060   ALL_BREAKPOINTS (b)
7061     others += (user_breakpoint_p (b)
7062                && breakpoint_has_pc (b, pspace, pc, section));
7063   if (others > 0)
7064     {
7065       if (others == 1)
7066 	printf_filtered (_("Note: breakpoint "));
7067       else /* if (others == ???) */
7068 	printf_filtered (_("Note: breakpoints "));
7069       ALL_BREAKPOINTS (b)
7070 	if (user_breakpoint_p (b) && breakpoint_has_pc (b, pspace, pc, section))
7071 	  {
7072 	    others--;
7073 	    printf_filtered ("%d", b->number);
7074 	    if (b->thread == -1 && thread != -1)
7075 	      printf_filtered (" (all threads)");
7076 	    else if (b->thread != -1)
7077 	      printf_filtered (" (thread %d)", b->thread);
7078 	    printf_filtered ("%s%s ",
7079 			     ((b->enable_state == bp_disabled
7080 			       || b->enable_state == bp_call_disabled)
7081 			      ? " (disabled)"
7082 			      : ""),
7083 			     (others > 1) ? ","
7084 			     : ((others == 1) ? " and" : ""));
7085 	  }
7086       printf_filtered (_("also set at pc "));
7087       fputs_filtered (paddress (gdbarch, pc), gdb_stdout);
7088       printf_filtered (".\n");
7089     }
7090 }
7091 
7092 
7093 /* Return true iff it is meaningful to use the address member of
7094    BPT locations.  For some breakpoint types, the locations' address members
7095    are irrelevant and it makes no sense to attempt to compare them to other
7096    addresses (or use them for any other purpose either).
7097 
7098    More specifically, each of the following breakpoint types will
7099    always have a zero valued location address and we don't want to mark
7100    breakpoints of any of these types to be a duplicate of an actual
7101    breakpoint location at address zero:
7102 
7103       bp_watchpoint
7104       bp_catchpoint
7105 
7106 */
7107 
7108 static int
7109 breakpoint_address_is_meaningful (struct breakpoint *bpt)
7110 {
7111   enum bptype type = bpt->type;
7112 
7113   return (type != bp_watchpoint && type != bp_catchpoint);
7114 }
7115 
7116 /* Assuming LOC1 and LOC2's owners are hardware watchpoints, returns
7117    true if LOC1 and LOC2 represent the same watchpoint location.  */
7118 
7119 static int
7120 watchpoint_locations_match (struct bp_location *loc1,
7121 			    struct bp_location *loc2)
7122 {
7123   struct watchpoint *w1 = (struct watchpoint *) loc1->owner;
7124   struct watchpoint *w2 = (struct watchpoint *) loc2->owner;
7125 
7126   /* Both of them must exist.  */
7127   gdb_assert (w1 != NULL);
7128   gdb_assert (w2 != NULL);
7129 
7130   /* If the target can evaluate the condition expression in hardware,
7131      then we we need to insert both watchpoints even if they are at
7132      the same place.  Otherwise the watchpoint will only trigger when
7133      the condition of whichever watchpoint was inserted evaluates to
7134      true, not giving a chance for GDB to check the condition of the
7135      other watchpoint.  */
7136   if ((w1->cond_exp
7137        && target_can_accel_watchpoint_condition (loc1->address,
7138 						 loc1->length,
7139 						 loc1->watchpoint_type,
7140 						 w1->cond_exp))
7141       || (w2->cond_exp
7142 	  && target_can_accel_watchpoint_condition (loc2->address,
7143 						    loc2->length,
7144 						    loc2->watchpoint_type,
7145 						    w2->cond_exp)))
7146     return 0;
7147 
7148   /* Note that this checks the owner's type, not the location's.  In
7149      case the target does not support read watchpoints, but does
7150      support access watchpoints, we'll have bp_read_watchpoint
7151      watchpoints with hw_access locations.  Those should be considered
7152      duplicates of hw_read locations.  The hw_read locations will
7153      become hw_access locations later.  */
7154   return (loc1->owner->type == loc2->owner->type
7155 	  && loc1->pspace->aspace == loc2->pspace->aspace
7156 	  && loc1->address == loc2->address
7157 	  && loc1->length == loc2->length);
7158 }
7159 
7160 /* See breakpoint.h.  */
7161 
7162 int
7163 breakpoint_address_match (struct address_space *aspace1, CORE_ADDR addr1,
7164 			  struct address_space *aspace2, CORE_ADDR addr2)
7165 {
7166   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7167 	   || aspace1 == aspace2)
7168 	  && addr1 == addr2);
7169 }
7170 
7171 /* Returns true if {ASPACE2,ADDR2} falls within the range determined by
7172    {ASPACE1,ADDR1,LEN1}.  In most targets, this can only be true if ASPACE1
7173    matches ASPACE2.  On targets that have global breakpoints, the address
7174    space doesn't really matter.  */
7175 
7176 static int
7177 breakpoint_address_match_range (struct address_space *aspace1, CORE_ADDR addr1,
7178 				int len1, struct address_space *aspace2,
7179 				CORE_ADDR addr2)
7180 {
7181   return ((gdbarch_has_global_breakpoints (target_gdbarch ())
7182 	   || aspace1 == aspace2)
7183 	  && addr2 >= addr1 && addr2 < addr1 + len1);
7184 }
7185 
7186 /* Returns true if {ASPACE,ADDR} matches the breakpoint BL.  BL may be
7187    a ranged breakpoint.  In most targets, a match happens only if ASPACE
7188    matches the breakpoint's address space.  On targets that have global
7189    breakpoints, the address space doesn't really matter.  */
7190 
7191 static int
7192 breakpoint_location_address_match (struct bp_location *bl,
7193 				   struct address_space *aspace,
7194 				   CORE_ADDR addr)
7195 {
7196   return (breakpoint_address_match (bl->pspace->aspace, bl->address,
7197 				    aspace, addr)
7198 	  || (bl->length
7199 	      && breakpoint_address_match_range (bl->pspace->aspace,
7200 						 bl->address, bl->length,
7201 						 aspace, addr)));
7202 }
7203 
7204 /* Returns true if the [ADDR,ADDR+LEN) range in ASPACE overlaps
7205    breakpoint BL.  BL may be a ranged breakpoint.  In most targets, a
7206    match happens only if ASPACE matches the breakpoint's address
7207    space.  On targets that have global breakpoints, the address space
7208    doesn't really matter.  */
7209 
7210 static int
7211 breakpoint_location_address_range_overlap (struct bp_location *bl,
7212 					   struct address_space *aspace,
7213 					   CORE_ADDR addr, int len)
7214 {
7215   if (gdbarch_has_global_breakpoints (target_gdbarch ())
7216       || bl->pspace->aspace == aspace)
7217     {
7218       int bl_len = bl->length != 0 ? bl->length : 1;
7219 
7220       if (mem_ranges_overlap (addr, len, bl->address, bl_len))
7221 	return 1;
7222     }
7223   return 0;
7224 }
7225 
7226 /* If LOC1 and LOC2's owners are not tracepoints, returns false directly.
7227    Then, if LOC1 and LOC2 represent the same tracepoint location, returns
7228    true, otherwise returns false.  */
7229 
7230 static int
7231 tracepoint_locations_match (struct bp_location *loc1,
7232 			    struct bp_location *loc2)
7233 {
7234   if (is_tracepoint (loc1->owner) && is_tracepoint (loc2->owner))
7235     /* Since tracepoint locations are never duplicated with others', tracepoint
7236        locations at the same address of different tracepoints are regarded as
7237        different locations.  */
7238     return (loc1->address == loc2->address && loc1->owner == loc2->owner);
7239   else
7240     return 0;
7241 }
7242 
7243 /* Assuming LOC1 and LOC2's types' have meaningful target addresses
7244    (breakpoint_address_is_meaningful), returns true if LOC1 and LOC2
7245    represent the same location.  */
7246 
7247 static int
7248 breakpoint_locations_match (struct bp_location *loc1,
7249 			    struct bp_location *loc2)
7250 {
7251   int hw_point1, hw_point2;
7252 
7253   /* Both of them must not be in moribund_locations.  */
7254   gdb_assert (loc1->owner != NULL);
7255   gdb_assert (loc2->owner != NULL);
7256 
7257   hw_point1 = is_hardware_watchpoint (loc1->owner);
7258   hw_point2 = is_hardware_watchpoint (loc2->owner);
7259 
7260   if (hw_point1 != hw_point2)
7261     return 0;
7262   else if (hw_point1)
7263     return watchpoint_locations_match (loc1, loc2);
7264   else if (is_tracepoint (loc1->owner) || is_tracepoint (loc2->owner))
7265     return tracepoint_locations_match (loc1, loc2);
7266   else
7267     /* We compare bp_location.length in order to cover ranged breakpoints.  */
7268     return (breakpoint_address_match (loc1->pspace->aspace, loc1->address,
7269 				     loc2->pspace->aspace, loc2->address)
7270 	    && loc1->length == loc2->length);
7271 }
7272 
7273 static void
7274 breakpoint_adjustment_warning (CORE_ADDR from_addr, CORE_ADDR to_addr,
7275                                int bnum, int have_bnum)
7276 {
7277   /* The longest string possibly returned by hex_string_custom
7278      is 50 chars.  These must be at least that big for safety.  */
7279   char astr1[64];
7280   char astr2[64];
7281 
7282   strcpy (astr1, hex_string_custom ((unsigned long) from_addr, 8));
7283   strcpy (astr2, hex_string_custom ((unsigned long) to_addr, 8));
7284   if (have_bnum)
7285     warning (_("Breakpoint %d address previously adjusted from %s to %s."),
7286              bnum, astr1, astr2);
7287   else
7288     warning (_("Breakpoint address adjusted from %s to %s."), astr1, astr2);
7289 }
7290 
7291 /* Adjust a breakpoint's address to account for architectural
7292    constraints on breakpoint placement.  Return the adjusted address.
7293    Note: Very few targets require this kind of adjustment.  For most
7294    targets, this function is simply the identity function.  */
7295 
7296 static CORE_ADDR
7297 adjust_breakpoint_address (struct gdbarch *gdbarch,
7298 			   CORE_ADDR bpaddr, enum bptype bptype)
7299 {
7300   if (!gdbarch_adjust_breakpoint_address_p (gdbarch))
7301     {
7302       /* Very few targets need any kind of breakpoint adjustment.  */
7303       return bpaddr;
7304     }
7305   else if (bptype == bp_watchpoint
7306            || bptype == bp_hardware_watchpoint
7307            || bptype == bp_read_watchpoint
7308            || bptype == bp_access_watchpoint
7309            || bptype == bp_catchpoint)
7310     {
7311       /* Watchpoints and the various bp_catch_* eventpoints should not
7312          have their addresses modified.  */
7313       return bpaddr;
7314     }
7315   else if (bptype == bp_single_step)
7316     {
7317       /* Single-step breakpoints should not have their addresses
7318 	 modified.  If there's any architectural constrain that
7319 	 applies to this address, then it should have already been
7320 	 taken into account when the breakpoint was created in the
7321 	 first place.  If we didn't do this, stepping through e.g.,
7322 	 Thumb-2 IT blocks would break.  */
7323       return bpaddr;
7324     }
7325   else
7326     {
7327       CORE_ADDR adjusted_bpaddr;
7328 
7329       /* Some targets have architectural constraints on the placement
7330          of breakpoint instructions.  Obtain the adjusted address.  */
7331       adjusted_bpaddr = gdbarch_adjust_breakpoint_address (gdbarch, bpaddr);
7332 
7333       /* An adjusted breakpoint address can significantly alter
7334          a user's expectations.  Print a warning if an adjustment
7335 	 is required.  */
7336       if (adjusted_bpaddr != bpaddr)
7337 	breakpoint_adjustment_warning (bpaddr, adjusted_bpaddr, 0, 0);
7338 
7339       return adjusted_bpaddr;
7340     }
7341 }
7342 
7343 void
7344 init_bp_location (struct bp_location *loc, const struct bp_location_ops *ops,
7345 		  struct breakpoint *owner)
7346 {
7347   memset (loc, 0, sizeof (*loc));
7348 
7349   gdb_assert (ops != NULL);
7350 
7351   loc->ops = ops;
7352   loc->owner = owner;
7353   loc->cond = NULL;
7354   loc->cond_bytecode = NULL;
7355   loc->shlib_disabled = 0;
7356   loc->enabled = 1;
7357 
7358   switch (owner->type)
7359     {
7360     case bp_breakpoint:
7361     case bp_single_step:
7362     case bp_until:
7363     case bp_finish:
7364     case bp_longjmp:
7365     case bp_longjmp_resume:
7366     case bp_longjmp_call_dummy:
7367     case bp_exception:
7368     case bp_exception_resume:
7369     case bp_step_resume:
7370     case bp_hp_step_resume:
7371     case bp_watchpoint_scope:
7372     case bp_call_dummy:
7373     case bp_std_terminate:
7374     case bp_shlib_event:
7375     case bp_thread_event:
7376     case bp_overlay_event:
7377     case bp_jit_event:
7378     case bp_longjmp_master:
7379     case bp_std_terminate_master:
7380     case bp_exception_master:
7381     case bp_gnu_ifunc_resolver:
7382     case bp_gnu_ifunc_resolver_return:
7383     case bp_dprintf:
7384       loc->loc_type = bp_loc_software_breakpoint;
7385       mark_breakpoint_location_modified (loc);
7386       break;
7387     case bp_hardware_breakpoint:
7388       loc->loc_type = bp_loc_hardware_breakpoint;
7389       mark_breakpoint_location_modified (loc);
7390       break;
7391     case bp_hardware_watchpoint:
7392     case bp_read_watchpoint:
7393     case bp_access_watchpoint:
7394       loc->loc_type = bp_loc_hardware_watchpoint;
7395       break;
7396     case bp_watchpoint:
7397     case bp_catchpoint:
7398     case bp_tracepoint:
7399     case bp_fast_tracepoint:
7400     case bp_static_tracepoint:
7401       loc->loc_type = bp_loc_other;
7402       break;
7403     default:
7404       internal_error (__FILE__, __LINE__, _("unknown breakpoint type"));
7405     }
7406 
7407   loc->refc = 1;
7408 }
7409 
7410 /* Allocate a struct bp_location.  */
7411 
7412 static struct bp_location *
7413 allocate_bp_location (struct breakpoint *bpt)
7414 {
7415   return bpt->ops->allocate_location (bpt);
7416 }
7417 
7418 static void
7419 free_bp_location (struct bp_location *loc)
7420 {
7421   loc->ops->dtor (loc);
7422   xfree (loc);
7423 }
7424 
7425 /* Increment reference count.  */
7426 
7427 static void
7428 incref_bp_location (struct bp_location *bl)
7429 {
7430   ++bl->refc;
7431 }
7432 
7433 /* Decrement reference count.  If the reference count reaches 0,
7434    destroy the bp_location.  Sets *BLP to NULL.  */
7435 
7436 static void
7437 decref_bp_location (struct bp_location **blp)
7438 {
7439   gdb_assert ((*blp)->refc > 0);
7440 
7441   if (--(*blp)->refc == 0)
7442     free_bp_location (*blp);
7443   *blp = NULL;
7444 }
7445 
7446 /* Add breakpoint B at the end of the global breakpoint chain.  */
7447 
7448 static void
7449 add_to_breakpoint_chain (struct breakpoint *b)
7450 {
7451   struct breakpoint *b1;
7452 
7453   /* Add this breakpoint to the end of the chain so that a list of
7454      breakpoints will come out in order of increasing numbers.  */
7455 
7456   b1 = breakpoint_chain;
7457   if (b1 == 0)
7458     breakpoint_chain = b;
7459   else
7460     {
7461       while (b1->next)
7462 	b1 = b1->next;
7463       b1->next = b;
7464     }
7465 }
7466 
7467 /* Initializes breakpoint B with type BPTYPE and no locations yet.  */
7468 
7469 static void
7470 init_raw_breakpoint_without_location (struct breakpoint *b,
7471 				      struct gdbarch *gdbarch,
7472 				      enum bptype bptype,
7473 				      const struct breakpoint_ops *ops)
7474 {
7475   memset (b, 0, sizeof (*b));
7476 
7477   gdb_assert (ops != NULL);
7478 
7479   b->ops = ops;
7480   b->type = bptype;
7481   b->gdbarch = gdbarch;
7482   b->language = current_language->la_language;
7483   b->input_radix = input_radix;
7484   b->thread = -1;
7485   b->enable_state = bp_enabled;
7486   b->next = 0;
7487   b->silent = 0;
7488   b->ignore_count = 0;
7489   b->commands = NULL;
7490   b->frame_id = null_frame_id;
7491   b->condition_not_parsed = 0;
7492   b->py_bp_object = NULL;
7493   b->related_breakpoint = b;
7494   b->location = NULL;
7495 }
7496 
7497 /* Helper to set_raw_breakpoint below.  Creates a breakpoint
7498    that has type BPTYPE and has no locations as yet.  */
7499 
7500 static struct breakpoint *
7501 set_raw_breakpoint_without_location (struct gdbarch *gdbarch,
7502 				     enum bptype bptype,
7503 				     const struct breakpoint_ops *ops)
7504 {
7505   struct breakpoint *b = XNEW (struct breakpoint);
7506 
7507   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7508   add_to_breakpoint_chain (b);
7509   return b;
7510 }
7511 
7512 /* Initialize loc->function_name.  EXPLICIT_LOC says no indirect function
7513    resolutions should be made as the user specified the location explicitly
7514    enough.  */
7515 
7516 static void
7517 set_breakpoint_location_function (struct bp_location *loc, int explicit_loc)
7518 {
7519   gdb_assert (loc->owner != NULL);
7520 
7521   if (loc->owner->type == bp_breakpoint
7522       || loc->owner->type == bp_hardware_breakpoint
7523       || is_tracepoint (loc->owner))
7524     {
7525       int is_gnu_ifunc;
7526       const char *function_name;
7527       CORE_ADDR func_addr;
7528 
7529       find_pc_partial_function_gnu_ifunc (loc->address, &function_name,
7530 					  &func_addr, NULL, &is_gnu_ifunc);
7531 
7532       if (is_gnu_ifunc && !explicit_loc)
7533 	{
7534 	  struct breakpoint *b = loc->owner;
7535 
7536 	  gdb_assert (loc->pspace == current_program_space);
7537 	  if (gnu_ifunc_resolve_name (function_name,
7538 				      &loc->requested_address))
7539 	    {
7540 	      /* Recalculate ADDRESS based on new REQUESTED_ADDRESS.  */
7541 	      loc->address = adjust_breakpoint_address (loc->gdbarch,
7542 							loc->requested_address,
7543 							b->type);
7544 	    }
7545 	  else if (b->type == bp_breakpoint && b->loc == loc
7546 	           && loc->next == NULL && b->related_breakpoint == b)
7547 	    {
7548 	      /* Create only the whole new breakpoint of this type but do not
7549 		 mess more complicated breakpoints with multiple locations.  */
7550 	      b->type = bp_gnu_ifunc_resolver;
7551 	      /* Remember the resolver's address for use by the return
7552 	         breakpoint.  */
7553 	      loc->related_address = func_addr;
7554 	    }
7555 	}
7556 
7557       if (function_name)
7558 	loc->function_name = xstrdup (function_name);
7559     }
7560 }
7561 
7562 /* Attempt to determine architecture of location identified by SAL.  */
7563 struct gdbarch *
7564 get_sal_arch (struct symtab_and_line sal)
7565 {
7566   if (sal.section)
7567     return get_objfile_arch (sal.section->objfile);
7568   if (sal.symtab)
7569     return get_objfile_arch (SYMTAB_OBJFILE (sal.symtab));
7570 
7571   return NULL;
7572 }
7573 
7574 /* Low level routine for partially initializing a breakpoint of type
7575    BPTYPE.  The newly created breakpoint's address, section, source
7576    file name, and line number are provided by SAL.
7577 
7578    It is expected that the caller will complete the initialization of
7579    the newly created breakpoint struct as well as output any status
7580    information regarding the creation of a new breakpoint.  */
7581 
7582 static void
7583 init_raw_breakpoint (struct breakpoint *b, struct gdbarch *gdbarch,
7584 		     struct symtab_and_line sal, enum bptype bptype,
7585 		     const struct breakpoint_ops *ops)
7586 {
7587   init_raw_breakpoint_without_location (b, gdbarch, bptype, ops);
7588 
7589   add_location_to_breakpoint (b, &sal);
7590 
7591   if (bptype != bp_catchpoint)
7592     gdb_assert (sal.pspace != NULL);
7593 
7594   /* Store the program space that was used to set the breakpoint,
7595      except for ordinary breakpoints, which are independent of the
7596      program space.  */
7597   if (bptype != bp_breakpoint && bptype != bp_hardware_breakpoint)
7598     b->pspace = sal.pspace;
7599 }
7600 
7601 /* set_raw_breakpoint is a low level routine for allocating and
7602    partially initializing a breakpoint of type BPTYPE.  The newly
7603    created breakpoint's address, section, source file name, and line
7604    number are provided by SAL.  The newly created and partially
7605    initialized breakpoint is added to the breakpoint chain and
7606    is also returned as the value of this function.
7607 
7608    It is expected that the caller will complete the initialization of
7609    the newly created breakpoint struct as well as output any status
7610    information regarding the creation of a new breakpoint.  In
7611    particular, set_raw_breakpoint does NOT set the breakpoint
7612    number!  Care should be taken to not allow an error to occur
7613    prior to completing the initialization of the breakpoint.  If this
7614    should happen, a bogus breakpoint will be left on the chain.  */
7615 
7616 struct breakpoint *
7617 set_raw_breakpoint (struct gdbarch *gdbarch,
7618 		    struct symtab_and_line sal, enum bptype bptype,
7619 		    const struct breakpoint_ops *ops)
7620 {
7621   struct breakpoint *b = XNEW (struct breakpoint);
7622 
7623   init_raw_breakpoint (b, gdbarch, sal, bptype, ops);
7624   add_to_breakpoint_chain (b);
7625   return b;
7626 }
7627 
7628 /* Call this routine when stepping and nexting to enable a breakpoint
7629    if we do a longjmp() or 'throw' in TP.  FRAME is the frame which
7630    initiated the operation.  */
7631 
7632 void
7633 set_longjmp_breakpoint (struct thread_info *tp, struct frame_id frame)
7634 {
7635   struct breakpoint *b, *b_tmp;
7636   int thread = tp->global_num;
7637 
7638   /* To avoid having to rescan all objfile symbols at every step,
7639      we maintain a list of continually-inserted but always disabled
7640      longjmp "master" breakpoints.  Here, we simply create momentary
7641      clones of those and enable them for the requested thread.  */
7642   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7643     if (b->pspace == current_program_space
7644 	&& (b->type == bp_longjmp_master
7645 	    || b->type == bp_exception_master))
7646       {
7647 	enum bptype type = b->type == bp_longjmp_master ? bp_longjmp : bp_exception;
7648 	struct breakpoint *clone;
7649 
7650 	/* longjmp_breakpoint_ops ensures INITIATING_FRAME is cleared again
7651 	   after their removal.  */
7652 	clone = momentary_breakpoint_from_master (b, type,
7653 						  &longjmp_breakpoint_ops, 1);
7654 	clone->thread = thread;
7655       }
7656 
7657   tp->initiating_frame = frame;
7658 }
7659 
7660 /* Delete all longjmp breakpoints from THREAD.  */
7661 void
7662 delete_longjmp_breakpoint (int thread)
7663 {
7664   struct breakpoint *b, *b_tmp;
7665 
7666   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7667     if (b->type == bp_longjmp || b->type == bp_exception)
7668       {
7669 	if (b->thread == thread)
7670 	  delete_breakpoint (b);
7671       }
7672 }
7673 
7674 void
7675 delete_longjmp_breakpoint_at_next_stop (int thread)
7676 {
7677   struct breakpoint *b, *b_tmp;
7678 
7679   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7680     if (b->type == bp_longjmp || b->type == bp_exception)
7681       {
7682 	if (b->thread == thread)
7683 	  b->disposition = disp_del_at_next_stop;
7684       }
7685 }
7686 
7687 /* Place breakpoints of type bp_longjmp_call_dummy to catch longjmp for
7688    INFERIOR_PTID thread.  Chain them all by RELATED_BREAKPOINT and return
7689    pointer to any of them.  Return NULL if this system cannot place longjmp
7690    breakpoints.  */
7691 
7692 struct breakpoint *
7693 set_longjmp_breakpoint_for_call_dummy (void)
7694 {
7695   struct breakpoint *b, *retval = NULL;
7696 
7697   ALL_BREAKPOINTS (b)
7698     if (b->pspace == current_program_space && b->type == bp_longjmp_master)
7699       {
7700 	struct breakpoint *new_b;
7701 
7702 	new_b = momentary_breakpoint_from_master (b, bp_longjmp_call_dummy,
7703 						  &momentary_breakpoint_ops,
7704 						  1);
7705 	new_b->thread = ptid_to_global_thread_id (inferior_ptid);
7706 
7707 	/* Link NEW_B into the chain of RETVAL breakpoints.  */
7708 
7709 	gdb_assert (new_b->related_breakpoint == new_b);
7710 	if (retval == NULL)
7711 	  retval = new_b;
7712 	new_b->related_breakpoint = retval;
7713 	while (retval->related_breakpoint != new_b->related_breakpoint)
7714 	  retval = retval->related_breakpoint;
7715 	retval->related_breakpoint = new_b;
7716       }
7717 
7718   return retval;
7719 }
7720 
7721 /* Verify all existing dummy frames and their associated breakpoints for
7722    TP.  Remove those which can no longer be found in the current frame
7723    stack.
7724 
7725    You should call this function only at places where it is safe to currently
7726    unwind the whole stack.  Failed stack unwind would discard live dummy
7727    frames.  */
7728 
7729 void
7730 check_longjmp_breakpoint_for_call_dummy (struct thread_info *tp)
7731 {
7732   struct breakpoint *b, *b_tmp;
7733 
7734   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7735     if (b->type == bp_longjmp_call_dummy && b->thread == tp->global_num)
7736       {
7737 	struct breakpoint *dummy_b = b->related_breakpoint;
7738 
7739 	while (dummy_b != b && dummy_b->type != bp_call_dummy)
7740 	  dummy_b = dummy_b->related_breakpoint;
7741 	if (dummy_b->type != bp_call_dummy
7742 	    || frame_find_by_id (dummy_b->frame_id) != NULL)
7743 	  continue;
7744 
7745 	dummy_frame_discard (dummy_b->frame_id, tp->ptid);
7746 
7747 	while (b->related_breakpoint != b)
7748 	  {
7749 	    if (b_tmp == b->related_breakpoint)
7750 	      b_tmp = b->related_breakpoint->next;
7751 	    delete_breakpoint (b->related_breakpoint);
7752 	  }
7753 	delete_breakpoint (b);
7754       }
7755 }
7756 
7757 void
7758 enable_overlay_breakpoints (void)
7759 {
7760   struct breakpoint *b;
7761 
7762   ALL_BREAKPOINTS (b)
7763     if (b->type == bp_overlay_event)
7764     {
7765       b->enable_state = bp_enabled;
7766       update_global_location_list (UGLL_MAY_INSERT);
7767       overlay_events_enabled = 1;
7768     }
7769 }
7770 
7771 void
7772 disable_overlay_breakpoints (void)
7773 {
7774   struct breakpoint *b;
7775 
7776   ALL_BREAKPOINTS (b)
7777     if (b->type == bp_overlay_event)
7778     {
7779       b->enable_state = bp_disabled;
7780       update_global_location_list (UGLL_DONT_INSERT);
7781       overlay_events_enabled = 0;
7782     }
7783 }
7784 
7785 /* Set an active std::terminate breakpoint for each std::terminate
7786    master breakpoint.  */
7787 void
7788 set_std_terminate_breakpoint (void)
7789 {
7790   struct breakpoint *b, *b_tmp;
7791 
7792   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7793     if (b->pspace == current_program_space
7794 	&& b->type == bp_std_terminate_master)
7795       {
7796 	momentary_breakpoint_from_master (b, bp_std_terminate,
7797 					  &momentary_breakpoint_ops, 1);
7798       }
7799 }
7800 
7801 /* Delete all the std::terminate breakpoints.  */
7802 void
7803 delete_std_terminate_breakpoint (void)
7804 {
7805   struct breakpoint *b, *b_tmp;
7806 
7807   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7808     if (b->type == bp_std_terminate)
7809       delete_breakpoint (b);
7810 }
7811 
7812 struct breakpoint *
7813 create_thread_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7814 {
7815   struct breakpoint *b;
7816 
7817   b = create_internal_breakpoint (gdbarch, address, bp_thread_event,
7818 				  &internal_breakpoint_ops);
7819 
7820   b->enable_state = bp_enabled;
7821   /* location has to be used or breakpoint_re_set will delete me.  */
7822   b->location = new_address_location (b->loc->address, NULL, 0);
7823 
7824   update_global_location_list_nothrow (UGLL_MAY_INSERT);
7825 
7826   return b;
7827 }
7828 
7829 struct lang_and_radix
7830   {
7831     enum language lang;
7832     int radix;
7833   };
7834 
7835 /* Create a breakpoint for JIT code registration and unregistration.  */
7836 
7837 struct breakpoint *
7838 create_jit_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7839 {
7840   return create_internal_breakpoint (gdbarch, address, bp_jit_event,
7841 				     &internal_breakpoint_ops);
7842 }
7843 
7844 /* Remove JIT code registration and unregistration breakpoint(s).  */
7845 
7846 void
7847 remove_jit_event_breakpoints (void)
7848 {
7849   struct breakpoint *b, *b_tmp;
7850 
7851   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7852     if (b->type == bp_jit_event
7853 	&& b->loc->pspace == current_program_space)
7854       delete_breakpoint (b);
7855 }
7856 
7857 void
7858 remove_solib_event_breakpoints (void)
7859 {
7860   struct breakpoint *b, *b_tmp;
7861 
7862   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7863     if (b->type == bp_shlib_event
7864 	&& b->loc->pspace == current_program_space)
7865       delete_breakpoint (b);
7866 }
7867 
7868 /* See breakpoint.h.  */
7869 
7870 void
7871 remove_solib_event_breakpoints_at_next_stop (void)
7872 {
7873   struct breakpoint *b, *b_tmp;
7874 
7875   ALL_BREAKPOINTS_SAFE (b, b_tmp)
7876     if (b->type == bp_shlib_event
7877 	&& b->loc->pspace == current_program_space)
7878       b->disposition = disp_del_at_next_stop;
7879 }
7880 
7881 /* Helper for create_solib_event_breakpoint /
7882    create_and_insert_solib_event_breakpoint.  Allows specifying which
7883    INSERT_MODE to pass through to update_global_location_list.  */
7884 
7885 static struct breakpoint *
7886 create_solib_event_breakpoint_1 (struct gdbarch *gdbarch, CORE_ADDR address,
7887 				 enum ugll_insert_mode insert_mode)
7888 {
7889   struct breakpoint *b;
7890 
7891   b = create_internal_breakpoint (gdbarch, address, bp_shlib_event,
7892 				  &internal_breakpoint_ops);
7893   update_global_location_list_nothrow (insert_mode);
7894   return b;
7895 }
7896 
7897 struct breakpoint *
7898 create_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7899 {
7900   return create_solib_event_breakpoint_1 (gdbarch, address, UGLL_MAY_INSERT);
7901 }
7902 
7903 /* See breakpoint.h.  */
7904 
7905 struct breakpoint *
7906 create_and_insert_solib_event_breakpoint (struct gdbarch *gdbarch, CORE_ADDR address)
7907 {
7908   struct breakpoint *b;
7909 
7910   /* Explicitly tell update_global_location_list to insert
7911      locations.  */
7912   b = create_solib_event_breakpoint_1 (gdbarch, address, UGLL_INSERT);
7913   if (!b->loc->inserted)
7914     {
7915       delete_breakpoint (b);
7916       return NULL;
7917     }
7918   return b;
7919 }
7920 
7921 /* Disable any breakpoints that are on code in shared libraries.  Only
7922    apply to enabled breakpoints, disabled ones can just stay disabled.  */
7923 
7924 void
7925 disable_breakpoints_in_shlibs (void)
7926 {
7927   struct bp_location *loc, **locp_tmp;
7928 
7929   ALL_BP_LOCATIONS (loc, locp_tmp)
7930   {
7931     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7932     struct breakpoint *b = loc->owner;
7933 
7934     /* We apply the check to all breakpoints, including disabled for
7935        those with loc->duplicate set.  This is so that when breakpoint
7936        becomes enabled, or the duplicate is removed, gdb will try to
7937        insert all breakpoints.  If we don't set shlib_disabled here,
7938        we'll try to insert those breakpoints and fail.  */
7939     if (((b->type == bp_breakpoint)
7940 	 || (b->type == bp_jit_event)
7941 	 || (b->type == bp_hardware_breakpoint)
7942 	 || (is_tracepoint (b)))
7943 	&& loc->pspace == current_program_space
7944 	&& !loc->shlib_disabled
7945 	&& solib_name_from_address (loc->pspace, loc->address)
7946 	)
7947       {
7948 	loc->shlib_disabled = 1;
7949       }
7950   }
7951 }
7952 
7953 /* Disable any breakpoints and tracepoints that are in SOLIB upon
7954    notification of unloaded_shlib.  Only apply to enabled breakpoints,
7955    disabled ones can just stay disabled.  */
7956 
7957 static void
7958 disable_breakpoints_in_unloaded_shlib (struct so_list *solib)
7959 {
7960   struct bp_location *loc, **locp_tmp;
7961   int disabled_shlib_breaks = 0;
7962 
7963   /* SunOS a.out shared libraries are always mapped, so do not
7964      disable breakpoints; they will only be reported as unloaded
7965      through clear_solib when GDB discards its shared library
7966      list.  See clear_solib for more information.  */
7967   if (exec_bfd != NULL
7968       && bfd_get_flavour (exec_bfd) == bfd_target_aout_flavour)
7969     return;
7970 
7971   ALL_BP_LOCATIONS (loc, locp_tmp)
7972   {
7973     /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always non-NULL.  */
7974     struct breakpoint *b = loc->owner;
7975 
7976     if (solib->pspace == loc->pspace
7977 	&& !loc->shlib_disabled
7978 	&& (((b->type == bp_breakpoint
7979 	      || b->type == bp_jit_event
7980 	      || b->type == bp_hardware_breakpoint)
7981 	     && (loc->loc_type == bp_loc_hardware_breakpoint
7982 		 || loc->loc_type == bp_loc_software_breakpoint))
7983 	    || is_tracepoint (b))
7984 	&& solib_contains_address_p (solib, loc->address))
7985       {
7986 	loc->shlib_disabled = 1;
7987 	/* At this point, we cannot rely on remove_breakpoint
7988 	   succeeding so we must mark the breakpoint as not inserted
7989 	   to prevent future errors occurring in remove_breakpoints.  */
7990 	loc->inserted = 0;
7991 
7992 	/* This may cause duplicate notifications for the same breakpoint.  */
7993 	observer_notify_breakpoint_modified (b);
7994 
7995 	if (!disabled_shlib_breaks)
7996 	  {
7997 	    target_terminal_ours_for_output ();
7998 	    warning (_("Temporarily disabling breakpoints "
7999 		       "for unloaded shared library \"%s\""),
8000 		     solib->so_name);
8001 	  }
8002 	disabled_shlib_breaks = 1;
8003       }
8004   }
8005 }
8006 
8007 /* Disable any breakpoints and tracepoints in OBJFILE upon
8008    notification of free_objfile.  Only apply to enabled breakpoints,
8009    disabled ones can just stay disabled.  */
8010 
8011 static void
8012 disable_breakpoints_in_freed_objfile (struct objfile *objfile)
8013 {
8014   struct breakpoint *b;
8015 
8016   if (objfile == NULL)
8017     return;
8018 
8019   /* OBJF_SHARED|OBJF_USERLOADED objfiles are dynamic modules manually
8020      managed by the user with add-symbol-file/remove-symbol-file.
8021      Similarly to how breakpoints in shared libraries are handled in
8022      response to "nosharedlibrary", mark breakpoints in such modules
8023      shlib_disabled so they end up uninserted on the next global
8024      location list update.  Shared libraries not loaded by the user
8025      aren't handled here -- they're already handled in
8026      disable_breakpoints_in_unloaded_shlib, called by solib.c's
8027      solib_unloaded observer.  We skip objfiles that are not
8028      OBJF_SHARED as those aren't considered dynamic objects (e.g. the
8029      main objfile).  */
8030   if ((objfile->flags & OBJF_SHARED) == 0
8031       || (objfile->flags & OBJF_USERLOADED) == 0)
8032     return;
8033 
8034   ALL_BREAKPOINTS (b)
8035     {
8036       struct bp_location *loc;
8037       int bp_modified = 0;
8038 
8039       if (!is_breakpoint (b) && !is_tracepoint (b))
8040 	continue;
8041 
8042       for (loc = b->loc; loc != NULL; loc = loc->next)
8043 	{
8044 	  CORE_ADDR loc_addr = loc->address;
8045 
8046 	  if (loc->loc_type != bp_loc_hardware_breakpoint
8047 	      && loc->loc_type != bp_loc_software_breakpoint)
8048 	    continue;
8049 
8050 	  if (loc->shlib_disabled != 0)
8051 	    continue;
8052 
8053 	  if (objfile->pspace != loc->pspace)
8054 	    continue;
8055 
8056 	  if (loc->loc_type != bp_loc_hardware_breakpoint
8057 	      && loc->loc_type != bp_loc_software_breakpoint)
8058 	    continue;
8059 
8060 	  if (is_addr_in_objfile (loc_addr, objfile))
8061 	    {
8062 	      loc->shlib_disabled = 1;
8063 	      /* At this point, we don't know whether the object was
8064 		 unmapped from the inferior or not, so leave the
8065 		 inserted flag alone.  We'll handle failure to
8066 		 uninsert quietly, in case the object was indeed
8067 		 unmapped.  */
8068 
8069 	      mark_breakpoint_location_modified (loc);
8070 
8071 	      bp_modified = 1;
8072 	    }
8073 	}
8074 
8075       if (bp_modified)
8076 	observer_notify_breakpoint_modified (b);
8077     }
8078 }
8079 
8080 /* FORK & VFORK catchpoints.  */
8081 
8082 /* An instance of this type is used to represent a fork or vfork
8083    catchpoint.  It includes a "struct breakpoint" as a kind of base
8084    class; users downcast to "struct breakpoint *" when needed.  A
8085    breakpoint is really of this type iff its ops pointer points to
8086    CATCH_FORK_BREAKPOINT_OPS.  */
8087 
8088 struct fork_catchpoint
8089 {
8090   /* The base class.  */
8091   struct breakpoint base;
8092 
8093   /* Process id of a child process whose forking triggered this
8094      catchpoint.  This field is only valid immediately after this
8095      catchpoint has triggered.  */
8096   ptid_t forked_inferior_pid;
8097 };
8098 
8099 /* Implement the "insert" breakpoint_ops method for fork
8100    catchpoints.  */
8101 
8102 static int
8103 insert_catch_fork (struct bp_location *bl)
8104 {
8105   return target_insert_fork_catchpoint (ptid_get_pid (inferior_ptid));
8106 }
8107 
8108 /* Implement the "remove" breakpoint_ops method for fork
8109    catchpoints.  */
8110 
8111 static int
8112 remove_catch_fork (struct bp_location *bl, enum remove_bp_reason reason)
8113 {
8114   return target_remove_fork_catchpoint (ptid_get_pid (inferior_ptid));
8115 }
8116 
8117 /* Implement the "breakpoint_hit" breakpoint_ops method for fork
8118    catchpoints.  */
8119 
8120 static int
8121 breakpoint_hit_catch_fork (const struct bp_location *bl,
8122 			   struct address_space *aspace, CORE_ADDR bp_addr,
8123 			   const struct target_waitstatus *ws)
8124 {
8125   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8126 
8127   if (ws->kind != TARGET_WAITKIND_FORKED)
8128     return 0;
8129 
8130   c->forked_inferior_pid = ws->value.related_pid;
8131   return 1;
8132 }
8133 
8134 /* Implement the "print_it" breakpoint_ops method for fork
8135    catchpoints.  */
8136 
8137 static enum print_stop_action
8138 print_it_catch_fork (bpstat bs)
8139 {
8140   struct ui_out *uiout = current_uiout;
8141   struct breakpoint *b = bs->breakpoint_at;
8142   struct fork_catchpoint *c = (struct fork_catchpoint *) bs->breakpoint_at;
8143 
8144   annotate_catchpoint (b->number);
8145   maybe_print_thread_hit_breakpoint (uiout);
8146   if (b->disposition == disp_del)
8147     ui_out_text (uiout, "Temporary catchpoint ");
8148   else
8149     ui_out_text (uiout, "Catchpoint ");
8150   if (ui_out_is_mi_like_p (uiout))
8151     {
8152       ui_out_field_string (uiout, "reason",
8153 			   async_reason_lookup (EXEC_ASYNC_FORK));
8154       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8155     }
8156   ui_out_field_int (uiout, "bkptno", b->number);
8157   ui_out_text (uiout, " (forked process ");
8158   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8159   ui_out_text (uiout, "), ");
8160   return PRINT_SRC_AND_LOC;
8161 }
8162 
8163 /* Implement the "print_one" breakpoint_ops method for fork
8164    catchpoints.  */
8165 
8166 static void
8167 print_one_catch_fork (struct breakpoint *b, struct bp_location **last_loc)
8168 {
8169   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8170   struct value_print_options opts;
8171   struct ui_out *uiout = current_uiout;
8172 
8173   get_user_print_options (&opts);
8174 
8175   /* Field 4, the address, is omitted (which makes the columns not
8176      line up too nicely with the headers, but the effect is relatively
8177      readable).  */
8178   if (opts.addressprint)
8179     ui_out_field_skip (uiout, "addr");
8180   annotate_field (5);
8181   ui_out_text (uiout, "fork");
8182   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8183     {
8184       ui_out_text (uiout, ", process ");
8185       ui_out_field_int (uiout, "what",
8186                         ptid_get_pid (c->forked_inferior_pid));
8187       ui_out_spaces (uiout, 1);
8188     }
8189 
8190   if (ui_out_is_mi_like_p (uiout))
8191     ui_out_field_string (uiout, "catch-type", "fork");
8192 }
8193 
8194 /* Implement the "print_mention" breakpoint_ops method for fork
8195    catchpoints.  */
8196 
8197 static void
8198 print_mention_catch_fork (struct breakpoint *b)
8199 {
8200   printf_filtered (_("Catchpoint %d (fork)"), b->number);
8201 }
8202 
8203 /* Implement the "print_recreate" breakpoint_ops method for fork
8204    catchpoints.  */
8205 
8206 static void
8207 print_recreate_catch_fork (struct breakpoint *b, struct ui_file *fp)
8208 {
8209   fprintf_unfiltered (fp, "catch fork");
8210   print_recreate_thread (b, fp);
8211 }
8212 
8213 /* The breakpoint_ops structure to be used in fork catchpoints.  */
8214 
8215 static struct breakpoint_ops catch_fork_breakpoint_ops;
8216 
8217 /* Implement the "insert" breakpoint_ops method for vfork
8218    catchpoints.  */
8219 
8220 static int
8221 insert_catch_vfork (struct bp_location *bl)
8222 {
8223   return target_insert_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8224 }
8225 
8226 /* Implement the "remove" breakpoint_ops method for vfork
8227    catchpoints.  */
8228 
8229 static int
8230 remove_catch_vfork (struct bp_location *bl, enum remove_bp_reason reason)
8231 {
8232   return target_remove_vfork_catchpoint (ptid_get_pid (inferior_ptid));
8233 }
8234 
8235 /* Implement the "breakpoint_hit" breakpoint_ops method for vfork
8236    catchpoints.  */
8237 
8238 static int
8239 breakpoint_hit_catch_vfork (const struct bp_location *bl,
8240 			    struct address_space *aspace, CORE_ADDR bp_addr,
8241 			    const struct target_waitstatus *ws)
8242 {
8243   struct fork_catchpoint *c = (struct fork_catchpoint *) bl->owner;
8244 
8245   if (ws->kind != TARGET_WAITKIND_VFORKED)
8246     return 0;
8247 
8248   c->forked_inferior_pid = ws->value.related_pid;
8249   return 1;
8250 }
8251 
8252 /* Implement the "print_it" breakpoint_ops method for vfork
8253    catchpoints.  */
8254 
8255 static enum print_stop_action
8256 print_it_catch_vfork (bpstat bs)
8257 {
8258   struct ui_out *uiout = current_uiout;
8259   struct breakpoint *b = bs->breakpoint_at;
8260   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8261 
8262   annotate_catchpoint (b->number);
8263   maybe_print_thread_hit_breakpoint (uiout);
8264   if (b->disposition == disp_del)
8265     ui_out_text (uiout, "Temporary catchpoint ");
8266   else
8267     ui_out_text (uiout, "Catchpoint ");
8268   if (ui_out_is_mi_like_p (uiout))
8269     {
8270       ui_out_field_string (uiout, "reason",
8271 			   async_reason_lookup (EXEC_ASYNC_VFORK));
8272       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8273     }
8274   ui_out_field_int (uiout, "bkptno", b->number);
8275   ui_out_text (uiout, " (vforked process ");
8276   ui_out_field_int (uiout, "newpid", ptid_get_pid (c->forked_inferior_pid));
8277   ui_out_text (uiout, "), ");
8278   return PRINT_SRC_AND_LOC;
8279 }
8280 
8281 /* Implement the "print_one" breakpoint_ops method for vfork
8282    catchpoints.  */
8283 
8284 static void
8285 print_one_catch_vfork (struct breakpoint *b, struct bp_location **last_loc)
8286 {
8287   struct fork_catchpoint *c = (struct fork_catchpoint *) b;
8288   struct value_print_options opts;
8289   struct ui_out *uiout = current_uiout;
8290 
8291   get_user_print_options (&opts);
8292   /* Field 4, the address, is omitted (which makes the columns not
8293      line up too nicely with the headers, but the effect is relatively
8294      readable).  */
8295   if (opts.addressprint)
8296     ui_out_field_skip (uiout, "addr");
8297   annotate_field (5);
8298   ui_out_text (uiout, "vfork");
8299   if (!ptid_equal (c->forked_inferior_pid, null_ptid))
8300     {
8301       ui_out_text (uiout, ", process ");
8302       ui_out_field_int (uiout, "what",
8303                         ptid_get_pid (c->forked_inferior_pid));
8304       ui_out_spaces (uiout, 1);
8305     }
8306 
8307   if (ui_out_is_mi_like_p (uiout))
8308     ui_out_field_string (uiout, "catch-type", "vfork");
8309 }
8310 
8311 /* Implement the "print_mention" breakpoint_ops method for vfork
8312    catchpoints.  */
8313 
8314 static void
8315 print_mention_catch_vfork (struct breakpoint *b)
8316 {
8317   printf_filtered (_("Catchpoint %d (vfork)"), b->number);
8318 }
8319 
8320 /* Implement the "print_recreate" breakpoint_ops method for vfork
8321    catchpoints.  */
8322 
8323 static void
8324 print_recreate_catch_vfork (struct breakpoint *b, struct ui_file *fp)
8325 {
8326   fprintf_unfiltered (fp, "catch vfork");
8327   print_recreate_thread (b, fp);
8328 }
8329 
8330 /* The breakpoint_ops structure to be used in vfork catchpoints.  */
8331 
8332 static struct breakpoint_ops catch_vfork_breakpoint_ops;
8333 
8334 /* An instance of this type is used to represent an solib catchpoint.
8335    It includes a "struct breakpoint" as a kind of base class; users
8336    downcast to "struct breakpoint *" when needed.  A breakpoint is
8337    really of this type iff its ops pointer points to
8338    CATCH_SOLIB_BREAKPOINT_OPS.  */
8339 
8340 struct solib_catchpoint
8341 {
8342   /* The base class.  */
8343   struct breakpoint base;
8344 
8345   /* True for "catch load", false for "catch unload".  */
8346   unsigned char is_load;
8347 
8348   /* Regular expression to match, if any.  COMPILED is only valid when
8349      REGEX is non-NULL.  */
8350   char *regex;
8351   regex_t compiled;
8352 };
8353 
8354 static void
8355 dtor_catch_solib (struct breakpoint *b)
8356 {
8357   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8358 
8359   if (self->regex)
8360     regfree (&self->compiled);
8361   xfree (self->regex);
8362 
8363   base_breakpoint_ops.dtor (b);
8364 }
8365 
8366 static int
8367 insert_catch_solib (struct bp_location *ignore)
8368 {
8369   return 0;
8370 }
8371 
8372 static int
8373 remove_catch_solib (struct bp_location *ignore, enum remove_bp_reason reason)
8374 {
8375   return 0;
8376 }
8377 
8378 static int
8379 breakpoint_hit_catch_solib (const struct bp_location *bl,
8380 			    struct address_space *aspace,
8381 			    CORE_ADDR bp_addr,
8382 			    const struct target_waitstatus *ws)
8383 {
8384   struct solib_catchpoint *self = (struct solib_catchpoint *) bl->owner;
8385   struct breakpoint *other;
8386 
8387   if (ws->kind == TARGET_WAITKIND_LOADED)
8388     return 1;
8389 
8390   ALL_BREAKPOINTS (other)
8391   {
8392     struct bp_location *other_bl;
8393 
8394     if (other == bl->owner)
8395       continue;
8396 
8397     if (other->type != bp_shlib_event)
8398       continue;
8399 
8400     if (self->base.pspace != NULL && other->pspace != self->base.pspace)
8401       continue;
8402 
8403     for (other_bl = other->loc; other_bl != NULL; other_bl = other_bl->next)
8404       {
8405 	if (other->ops->breakpoint_hit (other_bl, aspace, bp_addr, ws))
8406 	  return 1;
8407       }
8408   }
8409 
8410   return 0;
8411 }
8412 
8413 static void
8414 check_status_catch_solib (struct bpstats *bs)
8415 {
8416   struct solib_catchpoint *self
8417     = (struct solib_catchpoint *) bs->breakpoint_at;
8418   int ix;
8419 
8420   if (self->is_load)
8421     {
8422       struct so_list *iter;
8423 
8424       for (ix = 0;
8425 	   VEC_iterate (so_list_ptr, current_program_space->added_solibs,
8426 			ix, iter);
8427 	   ++ix)
8428 	{
8429 	  if (!self->regex
8430 	      || regexec (&self->compiled, iter->so_name, 0, NULL, 0) == 0)
8431 	    return;
8432 	}
8433     }
8434   else
8435     {
8436       char *iter;
8437 
8438       for (ix = 0;
8439 	   VEC_iterate (char_ptr, current_program_space->deleted_solibs,
8440 			ix, iter);
8441 	   ++ix)
8442 	{
8443 	  if (!self->regex
8444 	      || regexec (&self->compiled, iter, 0, NULL, 0) == 0)
8445 	    return;
8446 	}
8447     }
8448 
8449   bs->stop = 0;
8450   bs->print_it = print_it_noop;
8451 }
8452 
8453 static enum print_stop_action
8454 print_it_catch_solib (bpstat bs)
8455 {
8456   struct breakpoint *b = bs->breakpoint_at;
8457   struct ui_out *uiout = current_uiout;
8458 
8459   annotate_catchpoint (b->number);
8460   maybe_print_thread_hit_breakpoint (uiout);
8461   if (b->disposition == disp_del)
8462     ui_out_text (uiout, "Temporary catchpoint ");
8463   else
8464     ui_out_text (uiout, "Catchpoint ");
8465   ui_out_field_int (uiout, "bkptno", b->number);
8466   ui_out_text (uiout, "\n");
8467   if (ui_out_is_mi_like_p (uiout))
8468     ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8469   print_solib_event (1);
8470   return PRINT_SRC_AND_LOC;
8471 }
8472 
8473 static void
8474 print_one_catch_solib (struct breakpoint *b, struct bp_location **locs)
8475 {
8476   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8477   struct value_print_options opts;
8478   struct ui_out *uiout = current_uiout;
8479   char *msg;
8480 
8481   get_user_print_options (&opts);
8482   /* Field 4, the address, is omitted (which makes the columns not
8483      line up too nicely with the headers, but the effect is relatively
8484      readable).  */
8485   if (opts.addressprint)
8486     {
8487       annotate_field (4);
8488       ui_out_field_skip (uiout, "addr");
8489     }
8490 
8491   annotate_field (5);
8492   if (self->is_load)
8493     {
8494       if (self->regex)
8495 	msg = xstrprintf (_("load of library matching %s"), self->regex);
8496       else
8497 	msg = xstrdup (_("load of library"));
8498     }
8499   else
8500     {
8501       if (self->regex)
8502 	msg = xstrprintf (_("unload of library matching %s"), self->regex);
8503       else
8504 	msg = xstrdup (_("unload of library"));
8505     }
8506   ui_out_field_string (uiout, "what", msg);
8507   xfree (msg);
8508 
8509   if (ui_out_is_mi_like_p (uiout))
8510     ui_out_field_string (uiout, "catch-type",
8511 			 self->is_load ? "load" : "unload");
8512 }
8513 
8514 static void
8515 print_mention_catch_solib (struct breakpoint *b)
8516 {
8517   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8518 
8519   printf_filtered (_("Catchpoint %d (%s)"), b->number,
8520 		   self->is_load ? "load" : "unload");
8521 }
8522 
8523 static void
8524 print_recreate_catch_solib (struct breakpoint *b, struct ui_file *fp)
8525 {
8526   struct solib_catchpoint *self = (struct solib_catchpoint *) b;
8527 
8528   fprintf_unfiltered (fp, "%s %s",
8529 		      b->disposition == disp_del ? "tcatch" : "catch",
8530 		      self->is_load ? "load" : "unload");
8531   if (self->regex)
8532     fprintf_unfiltered (fp, " %s", self->regex);
8533   fprintf_unfiltered (fp, "\n");
8534 }
8535 
8536 static struct breakpoint_ops catch_solib_breakpoint_ops;
8537 
8538 /* Shared helper function (MI and CLI) for creating and installing
8539    a shared object event catchpoint.  If IS_LOAD is non-zero then
8540    the events to be caught are load events, otherwise they are
8541    unload events.  If IS_TEMP is non-zero the catchpoint is a
8542    temporary one.  If ENABLED is non-zero the catchpoint is
8543    created in an enabled state.  */
8544 
8545 void
8546 add_solib_catchpoint (char *arg, int is_load, int is_temp, int enabled)
8547 {
8548   struct solib_catchpoint *c;
8549   struct gdbarch *gdbarch = get_current_arch ();
8550   struct cleanup *cleanup;
8551 
8552   if (!arg)
8553     arg = "";
8554   arg = skip_spaces (arg);
8555 
8556   c = XCNEW (struct solib_catchpoint);
8557   cleanup = make_cleanup (xfree, c);
8558 
8559   if (*arg != '\0')
8560     {
8561       int errcode;
8562 
8563       errcode = regcomp (&c->compiled, arg, REG_NOSUB);
8564       if (errcode != 0)
8565 	{
8566 	  char *err = get_regcomp_error (errcode, &c->compiled);
8567 
8568 	  make_cleanup (xfree, err);
8569 	  error (_("Invalid regexp (%s): %s"), err, arg);
8570 	}
8571       c->regex = xstrdup (arg);
8572     }
8573 
8574   c->is_load = is_load;
8575   init_catchpoint (&c->base, gdbarch, is_temp, NULL,
8576 		   &catch_solib_breakpoint_ops);
8577 
8578   c->base.enable_state = enabled ? bp_enabled : bp_disabled;
8579 
8580   discard_cleanups (cleanup);
8581   install_breakpoint (0, &c->base, 1);
8582 }
8583 
8584 /* A helper function that does all the work for "catch load" and
8585    "catch unload".  */
8586 
8587 static void
8588 catch_load_or_unload (char *arg, int from_tty, int is_load,
8589 		      struct cmd_list_element *command)
8590 {
8591   int tempflag;
8592   const int enabled = 1;
8593 
8594   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
8595 
8596   add_solib_catchpoint (arg, is_load, tempflag, enabled);
8597 }
8598 
8599 static void
8600 catch_load_command_1 (char *arg, int from_tty,
8601 		      struct cmd_list_element *command)
8602 {
8603   catch_load_or_unload (arg, from_tty, 1, command);
8604 }
8605 
8606 static void
8607 catch_unload_command_1 (char *arg, int from_tty,
8608 			struct cmd_list_element *command)
8609 {
8610   catch_load_or_unload (arg, from_tty, 0, command);
8611 }
8612 
8613 /* Initialize a new breakpoint of the bp_catchpoint kind.  If TEMPFLAG
8614    is non-zero, then make the breakpoint temporary.  If COND_STRING is
8615    not NULL, then store it in the breakpoint.  OPS, if not NULL, is
8616    the breakpoint_ops structure associated to the catchpoint.  */
8617 
8618 void
8619 init_catchpoint (struct breakpoint *b,
8620 		 struct gdbarch *gdbarch, int tempflag,
8621 		 char *cond_string,
8622 		 const struct breakpoint_ops *ops)
8623 {
8624   struct symtab_and_line sal;
8625 
8626   init_sal (&sal);
8627   sal.pspace = current_program_space;
8628 
8629   init_raw_breakpoint (b, gdbarch, sal, bp_catchpoint, ops);
8630 
8631   b->cond_string = (cond_string == NULL) ? NULL : xstrdup (cond_string);
8632   b->disposition = tempflag ? disp_del : disp_donttouch;
8633 }
8634 
8635 void
8636 install_breakpoint (int internal, struct breakpoint *b, int update_gll)
8637 {
8638   add_to_breakpoint_chain (b);
8639   set_breakpoint_number (internal, b);
8640   if (is_tracepoint (b))
8641     set_tracepoint_count (breakpoint_count);
8642   if (!internal)
8643     mention (b);
8644   observer_notify_breakpoint_created (b);
8645 
8646   if (update_gll)
8647     update_global_location_list (UGLL_MAY_INSERT);
8648 }
8649 
8650 static void
8651 create_fork_vfork_event_catchpoint (struct gdbarch *gdbarch,
8652 				    int tempflag, char *cond_string,
8653                                     const struct breakpoint_ops *ops)
8654 {
8655   struct fork_catchpoint *c = XNEW (struct fork_catchpoint);
8656 
8657   init_catchpoint (&c->base, gdbarch, tempflag, cond_string, ops);
8658 
8659   c->forked_inferior_pid = null_ptid;
8660 
8661   install_breakpoint (0, &c->base, 1);
8662 }
8663 
8664 /* Exec catchpoints.  */
8665 
8666 /* An instance of this type is used to represent an exec catchpoint.
8667    It includes a "struct breakpoint" as a kind of base class; users
8668    downcast to "struct breakpoint *" when needed.  A breakpoint is
8669    really of this type iff its ops pointer points to
8670    CATCH_EXEC_BREAKPOINT_OPS.  */
8671 
8672 struct exec_catchpoint
8673 {
8674   /* The base class.  */
8675   struct breakpoint base;
8676 
8677   /* Filename of a program whose exec triggered this catchpoint.
8678      This field is only valid immediately after this catchpoint has
8679      triggered.  */
8680   char *exec_pathname;
8681 };
8682 
8683 /* Implement the "dtor" breakpoint_ops method for exec
8684    catchpoints.  */
8685 
8686 static void
8687 dtor_catch_exec (struct breakpoint *b)
8688 {
8689   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8690 
8691   xfree (c->exec_pathname);
8692 
8693   base_breakpoint_ops.dtor (b);
8694 }
8695 
8696 static int
8697 insert_catch_exec (struct bp_location *bl)
8698 {
8699   return target_insert_exec_catchpoint (ptid_get_pid (inferior_ptid));
8700 }
8701 
8702 static int
8703 remove_catch_exec (struct bp_location *bl, enum remove_bp_reason reason)
8704 {
8705   return target_remove_exec_catchpoint (ptid_get_pid (inferior_ptid));
8706 }
8707 
8708 static int
8709 breakpoint_hit_catch_exec (const struct bp_location *bl,
8710 			   struct address_space *aspace, CORE_ADDR bp_addr,
8711 			   const struct target_waitstatus *ws)
8712 {
8713   struct exec_catchpoint *c = (struct exec_catchpoint *) bl->owner;
8714 
8715   if (ws->kind != TARGET_WAITKIND_EXECD)
8716     return 0;
8717 
8718   c->exec_pathname = xstrdup (ws->value.execd_pathname);
8719   return 1;
8720 }
8721 
8722 static enum print_stop_action
8723 print_it_catch_exec (bpstat bs)
8724 {
8725   struct ui_out *uiout = current_uiout;
8726   struct breakpoint *b = bs->breakpoint_at;
8727   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8728 
8729   annotate_catchpoint (b->number);
8730   maybe_print_thread_hit_breakpoint (uiout);
8731   if (b->disposition == disp_del)
8732     ui_out_text (uiout, "Temporary catchpoint ");
8733   else
8734     ui_out_text (uiout, "Catchpoint ");
8735   if (ui_out_is_mi_like_p (uiout))
8736     {
8737       ui_out_field_string (uiout, "reason",
8738 			   async_reason_lookup (EXEC_ASYNC_EXEC));
8739       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
8740     }
8741   ui_out_field_int (uiout, "bkptno", b->number);
8742   ui_out_text (uiout, " (exec'd ");
8743   ui_out_field_string (uiout, "new-exec", c->exec_pathname);
8744   ui_out_text (uiout, "), ");
8745 
8746   return PRINT_SRC_AND_LOC;
8747 }
8748 
8749 static void
8750 print_one_catch_exec (struct breakpoint *b, struct bp_location **last_loc)
8751 {
8752   struct exec_catchpoint *c = (struct exec_catchpoint *) b;
8753   struct value_print_options opts;
8754   struct ui_out *uiout = current_uiout;
8755 
8756   get_user_print_options (&opts);
8757 
8758   /* Field 4, the address, is omitted (which makes the columns
8759      not line up too nicely with the headers, but the effect
8760      is relatively readable).  */
8761   if (opts.addressprint)
8762     ui_out_field_skip (uiout, "addr");
8763   annotate_field (5);
8764   ui_out_text (uiout, "exec");
8765   if (c->exec_pathname != NULL)
8766     {
8767       ui_out_text (uiout, ", program \"");
8768       ui_out_field_string (uiout, "what", c->exec_pathname);
8769       ui_out_text (uiout, "\" ");
8770     }
8771 
8772   if (ui_out_is_mi_like_p (uiout))
8773     ui_out_field_string (uiout, "catch-type", "exec");
8774 }
8775 
8776 static void
8777 print_mention_catch_exec (struct breakpoint *b)
8778 {
8779   printf_filtered (_("Catchpoint %d (exec)"), b->number);
8780 }
8781 
8782 /* Implement the "print_recreate" breakpoint_ops method for exec
8783    catchpoints.  */
8784 
8785 static void
8786 print_recreate_catch_exec (struct breakpoint *b, struct ui_file *fp)
8787 {
8788   fprintf_unfiltered (fp, "catch exec");
8789   print_recreate_thread (b, fp);
8790 }
8791 
8792 static struct breakpoint_ops catch_exec_breakpoint_ops;
8793 
8794 static int
8795 hw_breakpoint_used_count (void)
8796 {
8797   int i = 0;
8798   struct breakpoint *b;
8799   struct bp_location *bl;
8800 
8801   ALL_BREAKPOINTS (b)
8802   {
8803     if (b->type == bp_hardware_breakpoint && breakpoint_enabled (b))
8804       for (bl = b->loc; bl; bl = bl->next)
8805 	{
8806 	  /* Special types of hardware breakpoints may use more than
8807 	     one register.  */
8808 	  i += b->ops->resources_needed (bl);
8809 	}
8810   }
8811 
8812   return i;
8813 }
8814 
8815 /* Returns the resources B would use if it were a hardware
8816    watchpoint.  */
8817 
8818 static int
8819 hw_watchpoint_use_count (struct breakpoint *b)
8820 {
8821   int i = 0;
8822   struct bp_location *bl;
8823 
8824   if (!breakpoint_enabled (b))
8825     return 0;
8826 
8827   for (bl = b->loc; bl; bl = bl->next)
8828     {
8829       /* Special types of hardware watchpoints may use more than
8830 	 one register.  */
8831       i += b->ops->resources_needed (bl);
8832     }
8833 
8834   return i;
8835 }
8836 
8837 /* Returns the sum the used resources of all hardware watchpoints of
8838    type TYPE in the breakpoints list.  Also returns in OTHER_TYPE_USED
8839    the sum of the used resources of all hardware watchpoints of other
8840    types _not_ TYPE.  */
8841 
8842 static int
8843 hw_watchpoint_used_count_others (struct breakpoint *except,
8844 				 enum bptype type, int *other_type_used)
8845 {
8846   int i = 0;
8847   struct breakpoint *b;
8848 
8849   *other_type_used = 0;
8850   ALL_BREAKPOINTS (b)
8851     {
8852       if (b == except)
8853 	continue;
8854       if (!breakpoint_enabled (b))
8855 	continue;
8856 
8857       if (b->type == type)
8858 	i += hw_watchpoint_use_count (b);
8859       else if (is_hardware_watchpoint (b))
8860 	*other_type_used = 1;
8861     }
8862 
8863   return i;
8864 }
8865 
8866 void
8867 disable_watchpoints_before_interactive_call_start (void)
8868 {
8869   struct breakpoint *b;
8870 
8871   ALL_BREAKPOINTS (b)
8872   {
8873     if (is_watchpoint (b) && breakpoint_enabled (b))
8874       {
8875 	b->enable_state = bp_call_disabled;
8876 	update_global_location_list (UGLL_DONT_INSERT);
8877       }
8878   }
8879 }
8880 
8881 void
8882 enable_watchpoints_after_interactive_call_stop (void)
8883 {
8884   struct breakpoint *b;
8885 
8886   ALL_BREAKPOINTS (b)
8887   {
8888     if (is_watchpoint (b) && b->enable_state == bp_call_disabled)
8889       {
8890 	b->enable_state = bp_enabled;
8891 	update_global_location_list (UGLL_MAY_INSERT);
8892       }
8893   }
8894 }
8895 
8896 void
8897 disable_breakpoints_before_startup (void)
8898 {
8899   current_program_space->executing_startup = 1;
8900   update_global_location_list (UGLL_DONT_INSERT);
8901 }
8902 
8903 void
8904 enable_breakpoints_after_startup (void)
8905 {
8906   current_program_space->executing_startup = 0;
8907   breakpoint_re_set ();
8908 }
8909 
8910 /* Create a new single-step breakpoint for thread THREAD, with no
8911    locations.  */
8912 
8913 static struct breakpoint *
8914 new_single_step_breakpoint (int thread, struct gdbarch *gdbarch)
8915 {
8916   struct breakpoint *b = XNEW (struct breakpoint);
8917 
8918   init_raw_breakpoint_without_location (b, gdbarch, bp_single_step,
8919 					&momentary_breakpoint_ops);
8920 
8921   b->disposition = disp_donttouch;
8922   b->frame_id = null_frame_id;
8923 
8924   b->thread = thread;
8925   gdb_assert (b->thread != 0);
8926 
8927   add_to_breakpoint_chain (b);
8928 
8929   return b;
8930 }
8931 
8932 /* Set a momentary breakpoint of type TYPE at address specified by
8933    SAL.  If FRAME_ID is valid, the breakpoint is restricted to that
8934    frame.  */
8935 
8936 struct breakpoint *
8937 set_momentary_breakpoint (struct gdbarch *gdbarch, struct symtab_and_line sal,
8938 			  struct frame_id frame_id, enum bptype type)
8939 {
8940   struct breakpoint *b;
8941 
8942   /* If FRAME_ID is valid, it should be a real frame, not an inlined or
8943      tail-called one.  */
8944   gdb_assert (!frame_id_artificial_p (frame_id));
8945 
8946   b = set_raw_breakpoint (gdbarch, sal, type, &momentary_breakpoint_ops);
8947   b->enable_state = bp_enabled;
8948   b->disposition = disp_donttouch;
8949   b->frame_id = frame_id;
8950 
8951   /* If we're debugging a multi-threaded program, then we want
8952      momentary breakpoints to be active in only a single thread of
8953      control.  */
8954   if (in_thread_list (inferior_ptid))
8955     b->thread = ptid_to_global_thread_id (inferior_ptid);
8956 
8957   update_global_location_list_nothrow (UGLL_MAY_INSERT);
8958 
8959   return b;
8960 }
8961 
8962 /* Make a momentary breakpoint based on the master breakpoint ORIG.
8963    The new breakpoint will have type TYPE, use OPS as its
8964    breakpoint_ops, and will set enabled to LOC_ENABLED.  */
8965 
8966 static struct breakpoint *
8967 momentary_breakpoint_from_master (struct breakpoint *orig,
8968 				  enum bptype type,
8969 				  const struct breakpoint_ops *ops,
8970 				  int loc_enabled)
8971 {
8972   struct breakpoint *copy;
8973 
8974   copy = set_raw_breakpoint_without_location (orig->gdbarch, type, ops);
8975   copy->loc = allocate_bp_location (copy);
8976   set_breakpoint_location_function (copy->loc, 1);
8977 
8978   copy->loc->gdbarch = orig->loc->gdbarch;
8979   copy->loc->requested_address = orig->loc->requested_address;
8980   copy->loc->address = orig->loc->address;
8981   copy->loc->section = orig->loc->section;
8982   copy->loc->pspace = orig->loc->pspace;
8983   copy->loc->probe = orig->loc->probe;
8984   copy->loc->line_number = orig->loc->line_number;
8985   copy->loc->symtab = orig->loc->symtab;
8986   copy->loc->enabled = loc_enabled;
8987   copy->frame_id = orig->frame_id;
8988   copy->thread = orig->thread;
8989   copy->pspace = orig->pspace;
8990 
8991   copy->enable_state = bp_enabled;
8992   copy->disposition = disp_donttouch;
8993   copy->number = internal_breakpoint_number--;
8994 
8995   update_global_location_list_nothrow (UGLL_DONT_INSERT);
8996   return copy;
8997 }
8998 
8999 /* Make a deep copy of momentary breakpoint ORIG.  Returns NULL if
9000    ORIG is NULL.  */
9001 
9002 struct breakpoint *
9003 clone_momentary_breakpoint (struct breakpoint *orig)
9004 {
9005   /* If there's nothing to clone, then return nothing.  */
9006   if (orig == NULL)
9007     return NULL;
9008 
9009   return momentary_breakpoint_from_master (orig, orig->type, orig->ops, 0);
9010 }
9011 
9012 struct breakpoint *
9013 set_momentary_breakpoint_at_pc (struct gdbarch *gdbarch, CORE_ADDR pc,
9014 				enum bptype type)
9015 {
9016   struct symtab_and_line sal;
9017 
9018   sal = find_pc_line (pc, 0);
9019   sal.pc = pc;
9020   sal.section = find_pc_overlay (pc);
9021   sal.explicit_pc = 1;
9022 
9023   return set_momentary_breakpoint (gdbarch, sal, null_frame_id, type);
9024 }
9025 
9026 
9027 /* Tell the user we have just set a breakpoint B.  */
9028 
9029 static void
9030 mention (struct breakpoint *b)
9031 {
9032   b->ops->print_mention (b);
9033   if (ui_out_is_mi_like_p (current_uiout))
9034     return;
9035   printf_filtered ("\n");
9036 }
9037 
9038 
9039 static int bp_loc_is_permanent (struct bp_location *loc);
9040 
9041 static struct bp_location *
9042 add_location_to_breakpoint (struct breakpoint *b,
9043 			    const struct symtab_and_line *sal)
9044 {
9045   struct bp_location *loc, **tmp;
9046   CORE_ADDR adjusted_address;
9047   struct gdbarch *loc_gdbarch = get_sal_arch (*sal);
9048 
9049   if (loc_gdbarch == NULL)
9050     loc_gdbarch = b->gdbarch;
9051 
9052   /* Adjust the breakpoint's address prior to allocating a location.
9053      Once we call allocate_bp_location(), that mostly uninitialized
9054      location will be placed on the location chain.  Adjustment of the
9055      breakpoint may cause target_read_memory() to be called and we do
9056      not want its scan of the location chain to find a breakpoint and
9057      location that's only been partially initialized.  */
9058   adjusted_address = adjust_breakpoint_address (loc_gdbarch,
9059 						sal->pc, b->type);
9060 
9061   /* Sort the locations by their ADDRESS.  */
9062   loc = allocate_bp_location (b);
9063   for (tmp = &(b->loc); *tmp != NULL && (*tmp)->address <= adjusted_address;
9064        tmp = &((*tmp)->next))
9065     ;
9066   loc->next = *tmp;
9067   *tmp = loc;
9068 
9069   loc->requested_address = sal->pc;
9070   loc->address = adjusted_address;
9071   loc->pspace = sal->pspace;
9072   loc->probe.probe = sal->probe;
9073   loc->probe.objfile = sal->objfile;
9074   gdb_assert (loc->pspace != NULL);
9075   loc->section = sal->section;
9076   loc->gdbarch = loc_gdbarch;
9077   loc->line_number = sal->line;
9078   loc->symtab = sal->symtab;
9079 
9080   set_breakpoint_location_function (loc,
9081 				    sal->explicit_pc || sal->explicit_line);
9082 
9083   /* While by definition, permanent breakpoints are already present in the
9084      code, we don't mark the location as inserted.  Normally one would expect
9085      that GDB could rely on that breakpoint instruction to stop the program,
9086      thus removing the need to insert its own breakpoint, except that executing
9087      the breakpoint instruction can kill the target instead of reporting a
9088      SIGTRAP.  E.g., on SPARC, when interrupts are disabled, executing the
9089      instruction resets the CPU, so QEMU 2.0.0 for SPARC correspondingly dies
9090      with "Trap 0x02 while interrupts disabled, Error state".  Letting the
9091      breakpoint be inserted normally results in QEMU knowing about the GDB
9092      breakpoint, and thus trap before the breakpoint instruction is executed.
9093      (If GDB later needs to continue execution past the permanent breakpoint,
9094      it manually increments the PC, thus avoiding executing the breakpoint
9095      instruction.)  */
9096   if (bp_loc_is_permanent (loc))
9097     loc->permanent = 1;
9098 
9099   return loc;
9100 }
9101 
9102 
9103 /* See breakpoint.h.  */
9104 
9105 int
9106 program_breakpoint_here_p (struct gdbarch *gdbarch, CORE_ADDR address)
9107 {
9108   int len;
9109   CORE_ADDR addr;
9110   const gdb_byte *bpoint;
9111   gdb_byte *target_mem;
9112   struct cleanup *cleanup;
9113   int retval = 0;
9114 
9115   addr = address;
9116   bpoint = gdbarch_breakpoint_from_pc (gdbarch, &addr, &len);
9117 
9118   /* Software breakpoints unsupported?  */
9119   if (bpoint == NULL)
9120     return 0;
9121 
9122   target_mem = (gdb_byte *) alloca (len);
9123 
9124   /* Enable the automatic memory restoration from breakpoints while
9125      we read the memory.  Otherwise we could say about our temporary
9126      breakpoints they are permanent.  */
9127   cleanup = make_show_memory_breakpoints_cleanup (0);
9128 
9129   if (target_read_memory (address, target_mem, len) == 0
9130       && memcmp (target_mem, bpoint, len) == 0)
9131     retval = 1;
9132 
9133   do_cleanups (cleanup);
9134 
9135   return retval;
9136 }
9137 
9138 /* Return 1 if LOC is pointing to a permanent breakpoint,
9139    return 0 otherwise.  */
9140 
9141 static int
9142 bp_loc_is_permanent (struct bp_location *loc)
9143 {
9144   struct cleanup *cleanup;
9145   int retval;
9146 
9147   gdb_assert (loc != NULL);
9148 
9149   /* If we have a catchpoint or a watchpoint, just return 0.  We should not
9150      attempt to read from the addresses the locations of these breakpoint types
9151      point to.  program_breakpoint_here_p, below, will attempt to read
9152      memory.  */
9153   if (!breakpoint_address_is_meaningful (loc->owner))
9154     return 0;
9155 
9156   cleanup = save_current_space_and_thread ();
9157   switch_to_program_space_and_thread (loc->pspace);
9158 
9159   retval = program_breakpoint_here_p (loc->gdbarch, loc->address);
9160 
9161   do_cleanups (cleanup);
9162 
9163   return retval;
9164 }
9165 
9166 /* Build a command list for the dprintf corresponding to the current
9167    settings of the dprintf style options.  */
9168 
9169 static void
9170 update_dprintf_command_list (struct breakpoint *b)
9171 {
9172   char *dprintf_args = b->extra_string;
9173   char *printf_line = NULL;
9174 
9175   if (!dprintf_args)
9176     return;
9177 
9178   dprintf_args = skip_spaces (dprintf_args);
9179 
9180   /* Allow a comma, as it may have terminated a location, but don't
9181      insist on it.  */
9182   if (*dprintf_args == ',')
9183     ++dprintf_args;
9184   dprintf_args = skip_spaces (dprintf_args);
9185 
9186   if (*dprintf_args != '"')
9187     error (_("Bad format string, missing '\"'."));
9188 
9189   if (strcmp (dprintf_style, dprintf_style_gdb) == 0)
9190     printf_line = xstrprintf ("printf %s", dprintf_args);
9191   else if (strcmp (dprintf_style, dprintf_style_call) == 0)
9192     {
9193       if (!dprintf_function)
9194 	error (_("No function supplied for dprintf call"));
9195 
9196       if (dprintf_channel && strlen (dprintf_channel) > 0)
9197 	printf_line = xstrprintf ("call (void) %s (%s,%s)",
9198 				  dprintf_function,
9199 				  dprintf_channel,
9200 				  dprintf_args);
9201       else
9202 	printf_line = xstrprintf ("call (void) %s (%s)",
9203 				  dprintf_function,
9204 				  dprintf_args);
9205     }
9206   else if (strcmp (dprintf_style, dprintf_style_agent) == 0)
9207     {
9208       if (target_can_run_breakpoint_commands ())
9209 	printf_line = xstrprintf ("agent-printf %s", dprintf_args);
9210       else
9211 	{
9212 	  warning (_("Target cannot run dprintf commands, falling back to GDB printf"));
9213 	  printf_line = xstrprintf ("printf %s", dprintf_args);
9214 	}
9215     }
9216   else
9217     internal_error (__FILE__, __LINE__,
9218 		    _("Invalid dprintf style."));
9219 
9220   gdb_assert (printf_line != NULL);
9221   /* Manufacture a printf sequence.  */
9222   {
9223     struct command_line *printf_cmd_line = XNEW (struct command_line);
9224 
9225     printf_cmd_line->control_type = simple_control;
9226     printf_cmd_line->body_count = 0;
9227     printf_cmd_line->body_list = NULL;
9228     printf_cmd_line->next = NULL;
9229     printf_cmd_line->line = printf_line;
9230 
9231     breakpoint_set_commands (b, printf_cmd_line);
9232   }
9233 }
9234 
9235 /* Update all dprintf commands, making their command lists reflect
9236    current style settings.  */
9237 
9238 static void
9239 update_dprintf_commands (char *args, int from_tty,
9240 			 struct cmd_list_element *c)
9241 {
9242   struct breakpoint *b;
9243 
9244   ALL_BREAKPOINTS (b)
9245     {
9246       if (b->type == bp_dprintf)
9247 	update_dprintf_command_list (b);
9248     }
9249 }
9250 
9251 /* Create a breakpoint with SAL as location.  Use LOCATION
9252    as a description of the location, and COND_STRING
9253    as condition expression.  If LOCATION is NULL then create an
9254    "address location" from the address in the SAL.  */
9255 
9256 static void
9257 init_breakpoint_sal (struct breakpoint *b, struct gdbarch *gdbarch,
9258 		     struct symtabs_and_lines sals,
9259 		     struct event_location *location,
9260 		     char *filter, char *cond_string,
9261 		     char *extra_string,
9262 		     enum bptype type, enum bpdisp disposition,
9263 		     int thread, int task, int ignore_count,
9264 		     const struct breakpoint_ops *ops, int from_tty,
9265 		     int enabled, int internal, unsigned flags,
9266 		     int display_canonical)
9267 {
9268   int i;
9269 
9270   if (type == bp_hardware_breakpoint)
9271     {
9272       int target_resources_ok;
9273 
9274       i = hw_breakpoint_used_count ();
9275       target_resources_ok =
9276 	target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
9277 					    i + 1, 0);
9278       if (target_resources_ok == 0)
9279 	error (_("No hardware breakpoint support in the target."));
9280       else if (target_resources_ok < 0)
9281 	error (_("Hardware breakpoints used exceeds limit."));
9282     }
9283 
9284   gdb_assert (sals.nelts > 0);
9285 
9286   for (i = 0; i < sals.nelts; ++i)
9287     {
9288       struct symtab_and_line sal = sals.sals[i];
9289       struct bp_location *loc;
9290 
9291       if (from_tty)
9292 	{
9293 	  struct gdbarch *loc_gdbarch = get_sal_arch (sal);
9294 	  if (!loc_gdbarch)
9295 	    loc_gdbarch = gdbarch;
9296 
9297 	  describe_other_breakpoints (loc_gdbarch,
9298 				      sal.pspace, sal.pc, sal.section, thread);
9299 	}
9300 
9301       if (i == 0)
9302 	{
9303 	  init_raw_breakpoint (b, gdbarch, sal, type, ops);
9304 	  b->thread = thread;
9305 	  b->task = task;
9306 
9307 	  b->cond_string = cond_string;
9308 	  b->extra_string = extra_string;
9309 	  b->ignore_count = ignore_count;
9310 	  b->enable_state = enabled ? bp_enabled : bp_disabled;
9311 	  b->disposition = disposition;
9312 
9313 	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9314 	    b->loc->inserted = 1;
9315 
9316 	  if (type == bp_static_tracepoint)
9317 	    {
9318 	      struct tracepoint *t = (struct tracepoint *) b;
9319 	      struct static_tracepoint_marker marker;
9320 
9321 	      if (strace_marker_p (b))
9322 		{
9323 		  /* We already know the marker exists, otherwise, we
9324 		     wouldn't see a sal for it.  */
9325 		  const char *p = &event_location_to_string (b->location)[3];
9326 		  const char *endp;
9327 		  char *marker_str;
9328 
9329 		  p = skip_spaces_const (p);
9330 
9331 		  endp = skip_to_space_const (p);
9332 
9333 		  marker_str = savestring (p, endp - p);
9334 		  t->static_trace_marker_id = marker_str;
9335 
9336 		  printf_filtered (_("Probed static tracepoint "
9337 				     "marker \"%s\"\n"),
9338 				   t->static_trace_marker_id);
9339 		}
9340 	      else if (target_static_tracepoint_marker_at (sal.pc, &marker))
9341 		{
9342 		  t->static_trace_marker_id = xstrdup (marker.str_id);
9343 		  release_static_tracepoint_marker (&marker);
9344 
9345 		  printf_filtered (_("Probed static tracepoint "
9346 				     "marker \"%s\"\n"),
9347 				   t->static_trace_marker_id);
9348 		}
9349 	      else
9350 		warning (_("Couldn't determine the static "
9351 			   "tracepoint marker to probe"));
9352 	    }
9353 
9354 	  loc = b->loc;
9355 	}
9356       else
9357 	{
9358 	  loc = add_location_to_breakpoint (b, &sal);
9359 	  if ((flags & CREATE_BREAKPOINT_FLAGS_INSERTED) != 0)
9360 	    loc->inserted = 1;
9361 	}
9362 
9363       if (b->cond_string)
9364 	{
9365 	  const char *arg = b->cond_string;
9366 
9367 	  loc->cond = parse_exp_1 (&arg, loc->address,
9368 				   block_for_pc (loc->address), 0);
9369 	  if (*arg)
9370               error (_("Garbage '%s' follows condition"), arg);
9371 	}
9372 
9373       /* Dynamic printf requires and uses additional arguments on the
9374 	 command line, otherwise it's an error.  */
9375       if (type == bp_dprintf)
9376 	{
9377 	  if (b->extra_string)
9378 	    update_dprintf_command_list (b);
9379 	  else
9380 	    error (_("Format string required"));
9381 	}
9382       else if (b->extra_string)
9383 	error (_("Garbage '%s' at end of command"), b->extra_string);
9384     }
9385 
9386   b->display_canonical = display_canonical;
9387   if (location != NULL)
9388     b->location = location;
9389   else
9390     {
9391       const char *addr_string = NULL;
9392       int addr_string_len = 0;
9393 
9394       if (location != NULL)
9395 	addr_string = event_location_to_string (location);
9396       if (addr_string != NULL)
9397 	addr_string_len = strlen (addr_string);
9398 
9399       b->location = new_address_location (b->loc->address,
9400 					  addr_string, addr_string_len);
9401     }
9402   b->filter = filter;
9403 }
9404 
9405 static void
9406 create_breakpoint_sal (struct gdbarch *gdbarch,
9407 		       struct symtabs_and_lines sals,
9408 		       struct event_location *location,
9409 		       char *filter, char *cond_string,
9410 		       char *extra_string,
9411 		       enum bptype type, enum bpdisp disposition,
9412 		       int thread, int task, int ignore_count,
9413 		       const struct breakpoint_ops *ops, int from_tty,
9414 		       int enabled, int internal, unsigned flags,
9415 		       int display_canonical)
9416 {
9417   struct breakpoint *b;
9418   struct cleanup *old_chain;
9419 
9420   if (is_tracepoint_type (type))
9421     {
9422       struct tracepoint *t;
9423 
9424       t = XCNEW (struct tracepoint);
9425       b = &t->base;
9426     }
9427   else
9428     b = XNEW (struct breakpoint);
9429 
9430   old_chain = make_cleanup (xfree, b);
9431 
9432   init_breakpoint_sal (b, gdbarch,
9433 		       sals, location,
9434 		       filter, cond_string, extra_string,
9435 		       type, disposition,
9436 		       thread, task, ignore_count,
9437 		       ops, from_tty,
9438 		       enabled, internal, flags,
9439 		       display_canonical);
9440   discard_cleanups (old_chain);
9441 
9442   install_breakpoint (internal, b, 0);
9443 }
9444 
9445 /* Add SALS.nelts breakpoints to the breakpoint table.  For each
9446    SALS.sal[i] breakpoint, include the corresponding ADDR_STRING[i]
9447    value.  COND_STRING, if not NULL, specified the condition to be
9448    used for all breakpoints.  Essentially the only case where
9449    SALS.nelts is not 1 is when we set a breakpoint on an overloaded
9450    function.  In that case, it's still not possible to specify
9451    separate conditions for different overloaded functions, so
9452    we take just a single condition string.
9453 
9454    NOTE: If the function succeeds, the caller is expected to cleanup
9455    the arrays ADDR_STRING, COND_STRING, and SALS (but not the
9456    array contents).  If the function fails (error() is called), the
9457    caller is expected to cleanups both the ADDR_STRING, COND_STRING,
9458    COND and SALS arrays and each of those arrays contents.  */
9459 
9460 static void
9461 create_breakpoints_sal (struct gdbarch *gdbarch,
9462 			struct linespec_result *canonical,
9463 			char *cond_string, char *extra_string,
9464 			enum bptype type, enum bpdisp disposition,
9465 			int thread, int task, int ignore_count,
9466 			const struct breakpoint_ops *ops, int from_tty,
9467 			int enabled, int internal, unsigned flags)
9468 {
9469   int i;
9470   struct linespec_sals *lsal;
9471 
9472   if (canonical->pre_expanded)
9473     gdb_assert (VEC_length (linespec_sals, canonical->sals) == 1);
9474 
9475   for (i = 0; VEC_iterate (linespec_sals, canonical->sals, i, lsal); ++i)
9476     {
9477       /* Note that 'location' can be NULL in the case of a plain
9478 	 'break', without arguments.  */
9479       struct event_location *location
9480 	= (canonical->location != NULL
9481 	   ? copy_event_location (canonical->location) : NULL);
9482       char *filter_string = lsal->canonical ? xstrdup (lsal->canonical) : NULL;
9483       struct cleanup *inner = make_cleanup_delete_event_location (location);
9484 
9485       make_cleanup (xfree, filter_string);
9486       create_breakpoint_sal (gdbarch, lsal->sals,
9487 			     location,
9488 			     filter_string,
9489 			     cond_string, extra_string,
9490 			     type, disposition,
9491 			     thread, task, ignore_count, ops,
9492 			     from_tty, enabled, internal, flags,
9493 			     canonical->special_display);
9494       discard_cleanups (inner);
9495     }
9496 }
9497 
9498 /* Parse LOCATION which is assumed to be a SAL specification possibly
9499    followed by conditionals.  On return, SALS contains an array of SAL
9500    addresses found.  LOCATION points to the end of the SAL (for
9501    linespec locations).
9502 
9503    The array and the line spec strings are allocated on the heap, it is
9504    the caller's responsibility to free them.  */
9505 
9506 static void
9507 parse_breakpoint_sals (const struct event_location *location,
9508 		       struct linespec_result *canonical)
9509 {
9510   struct symtab_and_line cursal;
9511 
9512   if (event_location_type (location) == LINESPEC_LOCATION)
9513     {
9514       const char *address = get_linespec_location (location);
9515 
9516       if (address == NULL)
9517 	{
9518 	  /* The last displayed codepoint, if it's valid, is our default
9519 	     breakpoint address.  */
9520 	  if (last_displayed_sal_is_valid ())
9521 	    {
9522 	      struct linespec_sals lsal;
9523 	      struct symtab_and_line sal;
9524 	      CORE_ADDR pc;
9525 
9526 	      init_sal (&sal);		/* Initialize to zeroes.  */
9527 	      lsal.sals.sals = XNEW (struct symtab_and_line);
9528 
9529 	      /* Set sal's pspace, pc, symtab, and line to the values
9530 		 corresponding to the last call to print_frame_info.
9531 		 Be sure to reinitialize LINE with NOTCURRENT == 0
9532 		 as the breakpoint line number is inappropriate otherwise.
9533 		 find_pc_line would adjust PC, re-set it back.  */
9534 	      get_last_displayed_sal (&sal);
9535 	      pc = sal.pc;
9536 	      sal = find_pc_line (pc, 0);
9537 
9538 	      /* "break" without arguments is equivalent to "break *PC"
9539 		 where PC is the last displayed codepoint's address.  So
9540 		 make sure to set sal.explicit_pc to prevent GDB from
9541 		 trying to expand the list of sals to include all other
9542 		 instances with the same symtab and line.  */
9543 	      sal.pc = pc;
9544 	      sal.explicit_pc = 1;
9545 
9546 	      lsal.sals.sals[0] = sal;
9547 	      lsal.sals.nelts = 1;
9548 	      lsal.canonical = NULL;
9549 
9550 	      VEC_safe_push (linespec_sals, canonical->sals, &lsal);
9551 	      return;
9552 	    }
9553 	  else
9554 	    error (_("No default breakpoint address now."));
9555 	}
9556     }
9557 
9558   /* Force almost all breakpoints to be in terms of the
9559      current_source_symtab (which is decode_line_1's default).
9560      This should produce the results we want almost all of the
9561      time while leaving default_breakpoint_* alone.
9562 
9563      ObjC: However, don't match an Objective-C method name which
9564      may have a '+' or '-' succeeded by a '['.  */
9565   cursal = get_current_source_symtab_and_line ();
9566   if (last_displayed_sal_is_valid ())
9567     {
9568       const char *address = NULL;
9569 
9570       if (event_location_type (location) == LINESPEC_LOCATION)
9571 	address = get_linespec_location (location);
9572 
9573       if (!cursal.symtab
9574 	  || (address != NULL
9575 	      && strchr ("+-", address[0]) != NULL
9576 	      && address[1] != '['))
9577 	{
9578 	  decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9579 			    get_last_displayed_symtab (),
9580 			    get_last_displayed_line (),
9581 			    canonical, NULL, NULL);
9582 	  return;
9583 	}
9584     }
9585 
9586   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, NULL,
9587 		    cursal.symtab, cursal.line, canonical, NULL, NULL);
9588 }
9589 
9590 
9591 /* Convert each SAL into a real PC.  Verify that the PC can be
9592    inserted as a breakpoint.  If it can't throw an error.  */
9593 
9594 static void
9595 breakpoint_sals_to_pc (struct symtabs_and_lines *sals)
9596 {
9597   int i;
9598 
9599   for (i = 0; i < sals->nelts; i++)
9600     resolve_sal_pc (&sals->sals[i]);
9601 }
9602 
9603 /* Fast tracepoints may have restrictions on valid locations.  For
9604    instance, a fast tracepoint using a jump instead of a trap will
9605    likely have to overwrite more bytes than a trap would, and so can
9606    only be placed where the instruction is longer than the jump, or a
9607    multi-instruction sequence does not have a jump into the middle of
9608    it, etc.  */
9609 
9610 static void
9611 check_fast_tracepoint_sals (struct gdbarch *gdbarch,
9612 			    struct symtabs_and_lines *sals)
9613 {
9614   int i, rslt;
9615   struct symtab_and_line *sal;
9616   char *msg;
9617   struct cleanup *old_chain;
9618 
9619   for (i = 0; i < sals->nelts; i++)
9620     {
9621       struct gdbarch *sarch;
9622 
9623       sal = &sals->sals[i];
9624 
9625       sarch = get_sal_arch (*sal);
9626       /* We fall back to GDBARCH if there is no architecture
9627 	 associated with SAL.  */
9628       if (sarch == NULL)
9629 	sarch = gdbarch;
9630       rslt = gdbarch_fast_tracepoint_valid_at (sarch, sal->pc, &msg);
9631       old_chain = make_cleanup (xfree, msg);
9632 
9633       if (!rslt)
9634 	error (_("May not have a fast tracepoint at 0x%s%s"),
9635 	       paddress (sarch, sal->pc), (msg ? msg : ""));
9636 
9637       do_cleanups (old_chain);
9638     }
9639 }
9640 
9641 /* Given TOK, a string specification of condition and thread, as
9642    accepted by the 'break' command, extract the condition
9643    string and thread number and set *COND_STRING and *THREAD.
9644    PC identifies the context at which the condition should be parsed.
9645    If no condition is found, *COND_STRING is set to NULL.
9646    If no thread is found, *THREAD is set to -1.  */
9647 
9648 static void
9649 find_condition_and_thread (const char *tok, CORE_ADDR pc,
9650 			   char **cond_string, int *thread, int *task,
9651 			   char **rest)
9652 {
9653   *cond_string = NULL;
9654   *thread = -1;
9655   *task = 0;
9656   *rest = NULL;
9657 
9658   while (tok && *tok)
9659     {
9660       const char *end_tok;
9661       int toklen;
9662       const char *cond_start = NULL;
9663       const char *cond_end = NULL;
9664 
9665       tok = skip_spaces_const (tok);
9666 
9667       if ((*tok == '"' || *tok == ',') && rest)
9668 	{
9669 	  *rest = savestring (tok, strlen (tok));
9670 	  return;
9671 	}
9672 
9673       end_tok = skip_to_space_const (tok);
9674 
9675       toklen = end_tok - tok;
9676 
9677       if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
9678 	{
9679 	  struct expression *expr;
9680 
9681 	  tok = cond_start = end_tok + 1;
9682 	  expr = parse_exp_1 (&tok, pc, block_for_pc (pc), 0);
9683 	  xfree (expr);
9684 	  cond_end = tok;
9685 	  *cond_string = savestring (cond_start, cond_end - cond_start);
9686 	}
9687       else if (toklen >= 1 && strncmp (tok, "thread", toklen) == 0)
9688 	{
9689 	  const char *tmptok;
9690 	  struct thread_info *thr;
9691 
9692 	  tok = end_tok + 1;
9693 	  thr = parse_thread_id (tok, &tmptok);
9694 	  if (tok == tmptok)
9695 	    error (_("Junk after thread keyword."));
9696 	  *thread = thr->global_num;
9697 	  tok = tmptok;
9698 	}
9699       else if (toklen >= 1 && strncmp (tok, "task", toklen) == 0)
9700 	{
9701 	  char *tmptok;
9702 
9703 	  tok = end_tok + 1;
9704 	  *task = strtol (tok, &tmptok, 0);
9705 	  if (tok == tmptok)
9706 	    error (_("Junk after task keyword."));
9707 	  if (!valid_task_id (*task))
9708 	    error (_("Unknown task %d."), *task);
9709 	  tok = tmptok;
9710 	}
9711       else if (rest)
9712 	{
9713 	  *rest = savestring (tok, strlen (tok));
9714 	  return;
9715 	}
9716       else
9717 	error (_("Junk at end of arguments."));
9718     }
9719 }
9720 
9721 /* Decode a static tracepoint marker spec.  */
9722 
9723 static struct symtabs_and_lines
9724 decode_static_tracepoint_spec (const char **arg_p)
9725 {
9726   VEC(static_tracepoint_marker_p) *markers = NULL;
9727   struct symtabs_and_lines sals;
9728   struct cleanup *old_chain;
9729   const char *p = &(*arg_p)[3];
9730   const char *endp;
9731   char *marker_str;
9732   int i;
9733 
9734   p = skip_spaces_const (p);
9735 
9736   endp = skip_to_space_const (p);
9737 
9738   marker_str = savestring (p, endp - p);
9739   old_chain = make_cleanup (xfree, marker_str);
9740 
9741   markers = target_static_tracepoint_markers_by_strid (marker_str);
9742   if (VEC_empty(static_tracepoint_marker_p, markers))
9743     error (_("No known static tracepoint marker named %s"), marker_str);
9744 
9745   sals.nelts = VEC_length(static_tracepoint_marker_p, markers);
9746   sals.sals = XNEWVEC (struct symtab_and_line, sals.nelts);
9747 
9748   for (i = 0; i < sals.nelts; i++)
9749     {
9750       struct static_tracepoint_marker *marker;
9751 
9752       marker = VEC_index (static_tracepoint_marker_p, markers, i);
9753 
9754       init_sal (&sals.sals[i]);
9755 
9756       sals.sals[i] = find_pc_line (marker->address, 0);
9757       sals.sals[i].pc = marker->address;
9758 
9759       release_static_tracepoint_marker (marker);
9760     }
9761 
9762   do_cleanups (old_chain);
9763 
9764   *arg_p = endp;
9765   return sals;
9766 }
9767 
9768 /* See breakpoint.h.  */
9769 
9770 int
9771 create_breakpoint (struct gdbarch *gdbarch,
9772 		   const struct event_location *location, char *cond_string,
9773 		   int thread, char *extra_string,
9774 		   int parse_extra,
9775 		   int tempflag, enum bptype type_wanted,
9776 		   int ignore_count,
9777 		   enum auto_boolean pending_break_support,
9778 		   const struct breakpoint_ops *ops,
9779 		   int from_tty, int enabled, int internal,
9780 		   unsigned flags)
9781 {
9782   struct linespec_result canonical;
9783   struct cleanup *old_chain;
9784   struct cleanup *bkpt_chain = NULL;
9785   int pending = 0;
9786   int task = 0;
9787   int prev_bkpt_count = breakpoint_count;
9788 
9789   gdb_assert (ops != NULL);
9790 
9791   /* If extra_string isn't useful, set it to NULL.  */
9792   if (extra_string != NULL && *extra_string == '\0')
9793     extra_string = NULL;
9794 
9795   init_linespec_result (&canonical);
9796 
9797   TRY
9798     {
9799       ops->create_sals_from_location (location, &canonical, type_wanted);
9800     }
9801   CATCH (e, RETURN_MASK_ERROR)
9802     {
9803       /* If caller is interested in rc value from parse, set
9804 	 value.  */
9805       if (e.error == NOT_FOUND_ERROR)
9806 	{
9807 	  /* If pending breakpoint support is turned off, throw
9808 	     error.  */
9809 
9810 	  if (pending_break_support == AUTO_BOOLEAN_FALSE)
9811 	    throw_exception (e);
9812 
9813 	  exception_print (gdb_stderr, e);
9814 
9815           /* If pending breakpoint support is auto query and the user
9816 	     selects no, then simply return the error code.  */
9817 	  if (pending_break_support == AUTO_BOOLEAN_AUTO
9818 	      && !nquery (_("Make %s pending on future shared library load? "),
9819 			  bptype_string (type_wanted)))
9820 	    return 0;
9821 
9822 	  /* At this point, either the user was queried about setting
9823 	     a pending breakpoint and selected yes, or pending
9824 	     breakpoint behavior is on and thus a pending breakpoint
9825 	     is defaulted on behalf of the user.  */
9826 	  pending = 1;
9827 	}
9828       else
9829 	throw_exception (e);
9830     }
9831   END_CATCH
9832 
9833   if (!pending && VEC_empty (linespec_sals, canonical.sals))
9834     return 0;
9835 
9836   /* Create a chain of things that always need to be cleaned up.  */
9837   old_chain = make_cleanup_destroy_linespec_result (&canonical);
9838 
9839   /* ----------------------------- SNIP -----------------------------
9840      Anything added to the cleanup chain beyond this point is assumed
9841      to be part of a breakpoint.  If the breakpoint create succeeds
9842      then the memory is not reclaimed.  */
9843   bkpt_chain = make_cleanup (null_cleanup, 0);
9844 
9845   /* Resolve all line numbers to PC's and verify that the addresses
9846      are ok for the target.  */
9847   if (!pending)
9848     {
9849       int ix;
9850       struct linespec_sals *iter;
9851 
9852       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9853 	breakpoint_sals_to_pc (&iter->sals);
9854     }
9855 
9856   /* Fast tracepoints may have additional restrictions on location.  */
9857   if (!pending && type_wanted == bp_fast_tracepoint)
9858     {
9859       int ix;
9860       struct linespec_sals *iter;
9861 
9862       for (ix = 0; VEC_iterate (linespec_sals, canonical.sals, ix, iter); ++ix)
9863 	check_fast_tracepoint_sals (gdbarch, &iter->sals);
9864     }
9865 
9866   /* Verify that condition can be parsed, before setting any
9867      breakpoints.  Allocate a separate condition expression for each
9868      breakpoint.  */
9869   if (!pending)
9870     {
9871       if (parse_extra)
9872         {
9873 	  char *rest;
9874 	  struct linespec_sals *lsal;
9875 
9876 	  lsal = VEC_index (linespec_sals, canonical.sals, 0);
9877 
9878 	  /* Here we only parse 'arg' to separate condition
9879 	     from thread number, so parsing in context of first
9880 	     sal is OK.  When setting the breakpoint we'll
9881 	     re-parse it in context of each sal.  */
9882 
9883 	  find_condition_and_thread (extra_string, lsal->sals.sals[0].pc,
9884 				     &cond_string, &thread, &task, &rest);
9885 	  if (cond_string)
9886 	    make_cleanup (xfree, cond_string);
9887 	  if (rest)
9888 	    make_cleanup (xfree, rest);
9889 	  if (rest)
9890 	    extra_string = rest;
9891 	  else
9892 	    extra_string = NULL;
9893         }
9894       else
9895         {
9896 	  if (type_wanted != bp_dprintf
9897 	      && extra_string != NULL && *extra_string != '\0')
9898 		error (_("Garbage '%s' at end of location"), extra_string);
9899 
9900 	  /* Create a private copy of condition string.  */
9901 	  if (cond_string)
9902 	    {
9903 	      cond_string = xstrdup (cond_string);
9904 	      make_cleanup (xfree, cond_string);
9905 	    }
9906 	  /* Create a private copy of any extra string.  */
9907 	  if (extra_string)
9908 	    {
9909 	      extra_string = xstrdup (extra_string);
9910 	      make_cleanup (xfree, extra_string);
9911 	    }
9912         }
9913 
9914       ops->create_breakpoints_sal (gdbarch, &canonical,
9915 				   cond_string, extra_string, type_wanted,
9916 				   tempflag ? disp_del : disp_donttouch,
9917 				   thread, task, ignore_count, ops,
9918 				   from_tty, enabled, internal, flags);
9919     }
9920   else
9921     {
9922       struct breakpoint *b;
9923 
9924       if (is_tracepoint_type (type_wanted))
9925 	{
9926 	  struct tracepoint *t;
9927 
9928 	  t = XCNEW (struct tracepoint);
9929 	  b = &t->base;
9930 	}
9931       else
9932 	b = XNEW (struct breakpoint);
9933 
9934       init_raw_breakpoint_without_location (b, gdbarch, type_wanted, ops);
9935       b->location = copy_event_location (location);
9936 
9937       if (parse_extra)
9938 	b->cond_string = NULL;
9939       else
9940 	{
9941 	  /* Create a private copy of condition string.  */
9942 	  if (cond_string)
9943 	    {
9944 	      cond_string = xstrdup (cond_string);
9945 	      make_cleanup (xfree, cond_string);
9946 	    }
9947 	  b->cond_string = cond_string;
9948 	  b->thread = thread;
9949 	}
9950 
9951       /* Create a private copy of any extra string.  */
9952       if (extra_string != NULL)
9953 	{
9954 	  extra_string = xstrdup (extra_string);
9955 	  make_cleanup (xfree, extra_string);
9956 	}
9957       b->extra_string = extra_string;
9958       b->ignore_count = ignore_count;
9959       b->disposition = tempflag ? disp_del : disp_donttouch;
9960       b->condition_not_parsed = 1;
9961       b->enable_state = enabled ? bp_enabled : bp_disabled;
9962       if ((type_wanted != bp_breakpoint
9963            && type_wanted != bp_hardware_breakpoint) || thread != -1)
9964 	b->pspace = current_program_space;
9965 
9966       install_breakpoint (internal, b, 0);
9967     }
9968 
9969   if (VEC_length (linespec_sals, canonical.sals) > 1)
9970     {
9971       warning (_("Multiple breakpoints were set.\nUse the "
9972 		 "\"delete\" command to delete unwanted breakpoints."));
9973       prev_breakpoint_count = prev_bkpt_count;
9974     }
9975 
9976   /* That's it.  Discard the cleanups for data inserted into the
9977      breakpoint.  */
9978   discard_cleanups (bkpt_chain);
9979   /* But cleanup everything else.  */
9980   do_cleanups (old_chain);
9981 
9982   /* error call may happen here - have BKPT_CHAIN already discarded.  */
9983   update_global_location_list (UGLL_MAY_INSERT);
9984 
9985   return 1;
9986 }
9987 
9988 /* Set a breakpoint.
9989    ARG is a string describing breakpoint address,
9990    condition, and thread.
9991    FLAG specifies if a breakpoint is hardware on,
9992    and if breakpoint is temporary, using BP_HARDWARE_FLAG
9993    and BP_TEMPFLAG.  */
9994 
9995 static void
9996 break_command_1 (char *arg, int flag, int from_tty)
9997 {
9998   int tempflag = flag & BP_TEMPFLAG;
9999   enum bptype type_wanted = (flag & BP_HARDWAREFLAG
10000 			     ? bp_hardware_breakpoint
10001 			     : bp_breakpoint);
10002   struct breakpoint_ops *ops;
10003   struct event_location *location;
10004   struct cleanup *cleanup;
10005 
10006   location = string_to_event_location (&arg, current_language);
10007   cleanup = make_cleanup_delete_event_location (location);
10008 
10009   /* Matching breakpoints on probes.  */
10010   if (location != NULL
10011       && event_location_type (location) == PROBE_LOCATION)
10012     ops = &bkpt_probe_breakpoint_ops;
10013   else
10014     ops = &bkpt_breakpoint_ops;
10015 
10016   create_breakpoint (get_current_arch (),
10017 		     location,
10018 		     NULL, 0, arg, 1 /* parse arg */,
10019 		     tempflag, type_wanted,
10020 		     0 /* Ignore count */,
10021 		     pending_break_support,
10022 		     ops,
10023 		     from_tty,
10024 		     1 /* enabled */,
10025 		     0 /* internal */,
10026 		     0);
10027   do_cleanups (cleanup);
10028 }
10029 
10030 /* Helper function for break_command_1 and disassemble_command.  */
10031 
10032 void
10033 resolve_sal_pc (struct symtab_and_line *sal)
10034 {
10035   CORE_ADDR pc;
10036 
10037   if (sal->pc == 0 && sal->symtab != NULL)
10038     {
10039       if (!find_line_pc (sal->symtab, sal->line, &pc))
10040 	error (_("No line %d in file \"%s\"."),
10041 	       sal->line, symtab_to_filename_for_display (sal->symtab));
10042       sal->pc = pc;
10043 
10044       /* If this SAL corresponds to a breakpoint inserted using a line
10045          number, then skip the function prologue if necessary.  */
10046       if (sal->explicit_line)
10047 	skip_prologue_sal (sal);
10048     }
10049 
10050   if (sal->section == 0 && sal->symtab != NULL)
10051     {
10052       const struct blockvector *bv;
10053       const struct block *b;
10054       struct symbol *sym;
10055 
10056       bv = blockvector_for_pc_sect (sal->pc, 0, &b,
10057 				    SYMTAB_COMPUNIT (sal->symtab));
10058       if (bv != NULL)
10059 	{
10060 	  sym = block_linkage_function (b);
10061 	  if (sym != NULL)
10062 	    {
10063 	      fixup_symbol_section (sym, SYMTAB_OBJFILE (sal->symtab));
10064 	      sal->section = SYMBOL_OBJ_SECTION (SYMTAB_OBJFILE (sal->symtab),
10065 						 sym);
10066 	    }
10067 	  else
10068 	    {
10069 	      /* It really is worthwhile to have the section, so we'll
10070 	         just have to look harder. This case can be executed
10071 	         if we have line numbers but no functions (as can
10072 	         happen in assembly source).  */
10073 
10074 	      struct bound_minimal_symbol msym;
10075 	      struct cleanup *old_chain = save_current_space_and_thread ();
10076 
10077 	      switch_to_program_space_and_thread (sal->pspace);
10078 
10079 	      msym = lookup_minimal_symbol_by_pc (sal->pc);
10080 	      if (msym.minsym)
10081 		sal->section = MSYMBOL_OBJ_SECTION (msym.objfile, msym.minsym);
10082 
10083 	      do_cleanups (old_chain);
10084 	    }
10085 	}
10086     }
10087 }
10088 
10089 void
10090 break_command (char *arg, int from_tty)
10091 {
10092   break_command_1 (arg, 0, from_tty);
10093 }
10094 
10095 void
10096 tbreak_command (char *arg, int from_tty)
10097 {
10098   break_command_1 (arg, BP_TEMPFLAG, from_tty);
10099 }
10100 
10101 static void
10102 hbreak_command (char *arg, int from_tty)
10103 {
10104   break_command_1 (arg, BP_HARDWAREFLAG, from_tty);
10105 }
10106 
10107 static void
10108 thbreak_command (char *arg, int from_tty)
10109 {
10110   break_command_1 (arg, (BP_TEMPFLAG | BP_HARDWAREFLAG), from_tty);
10111 }
10112 
10113 static void
10114 stop_command (char *arg, int from_tty)
10115 {
10116   printf_filtered (_("Specify the type of breakpoint to set.\n\
10117 Usage: stop in <function | address>\n\
10118        stop at <line>\n"));
10119 }
10120 
10121 static void
10122 stopin_command (char *arg, int from_tty)
10123 {
10124   int badInput = 0;
10125 
10126   if (arg == (char *) NULL)
10127     badInput = 1;
10128   else if (*arg != '*')
10129     {
10130       char *argptr = arg;
10131       int hasColon = 0;
10132 
10133       /* Look for a ':'.  If this is a line number specification, then
10134          say it is bad, otherwise, it should be an address or
10135          function/method name.  */
10136       while (*argptr && !hasColon)
10137 	{
10138 	  hasColon = (*argptr == ':');
10139 	  argptr++;
10140 	}
10141 
10142       if (hasColon)
10143 	badInput = (*argptr != ':');	/* Not a class::method */
10144       else
10145 	badInput = isdigit (*arg);	/* a simple line number */
10146     }
10147 
10148   if (badInput)
10149     printf_filtered (_("Usage: stop in <function | address>\n"));
10150   else
10151     break_command_1 (arg, 0, from_tty);
10152 }
10153 
10154 static void
10155 stopat_command (char *arg, int from_tty)
10156 {
10157   int badInput = 0;
10158 
10159   if (arg == (char *) NULL || *arg == '*')	/* no line number */
10160     badInput = 1;
10161   else
10162     {
10163       char *argptr = arg;
10164       int hasColon = 0;
10165 
10166       /* Look for a ':'.  If there is a '::' then get out, otherwise
10167          it is probably a line number.  */
10168       while (*argptr && !hasColon)
10169 	{
10170 	  hasColon = (*argptr == ':');
10171 	  argptr++;
10172 	}
10173 
10174       if (hasColon)
10175 	badInput = (*argptr == ':');	/* we have class::method */
10176       else
10177 	badInput = !isdigit (*arg);	/* not a line number */
10178     }
10179 
10180   if (badInput)
10181     printf_filtered (_("Usage: stop at <line>\n"));
10182   else
10183     break_command_1 (arg, 0, from_tty);
10184 }
10185 
10186 /* The dynamic printf command is mostly like a regular breakpoint, but
10187    with a prewired command list consisting of a single output command,
10188    built from extra arguments supplied on the dprintf command
10189    line.  */
10190 
10191 static void
10192 dprintf_command (char *arg, int from_tty)
10193 {
10194   struct event_location *location;
10195   struct cleanup *cleanup;
10196 
10197   location = string_to_event_location (&arg, current_language);
10198   cleanup = make_cleanup_delete_event_location (location);
10199 
10200   /* If non-NULL, ARG should have been advanced past the location;
10201      the next character must be ','.  */
10202   if (arg != NULL)
10203     {
10204       if (arg[0] != ',' || arg[1] == '\0')
10205 	error (_("Format string required"));
10206       else
10207 	{
10208 	  /* Skip the comma.  */
10209 	  ++arg;
10210 	}
10211     }
10212 
10213   create_breakpoint (get_current_arch (),
10214 		     location,
10215 		     NULL, 0, arg, 1 /* parse arg */,
10216 		     0, bp_dprintf,
10217 		     0 /* Ignore count */,
10218 		     pending_break_support,
10219 		     &dprintf_breakpoint_ops,
10220 		     from_tty,
10221 		     1 /* enabled */,
10222 		     0 /* internal */,
10223 		     0);
10224   do_cleanups (cleanup);
10225 }
10226 
10227 static void
10228 agent_printf_command (char *arg, int from_tty)
10229 {
10230   error (_("May only run agent-printf on the target"));
10231 }
10232 
10233 /* Implement the "breakpoint_hit" breakpoint_ops method for
10234    ranged breakpoints.  */
10235 
10236 static int
10237 breakpoint_hit_ranged_breakpoint (const struct bp_location *bl,
10238 				  struct address_space *aspace,
10239 				  CORE_ADDR bp_addr,
10240 				  const struct target_waitstatus *ws)
10241 {
10242   if (ws->kind != TARGET_WAITKIND_STOPPED
10243       || ws->value.sig != GDB_SIGNAL_TRAP)
10244     return 0;
10245 
10246   return breakpoint_address_match_range (bl->pspace->aspace, bl->address,
10247 					 bl->length, aspace, bp_addr);
10248 }
10249 
10250 /* Implement the "resources_needed" breakpoint_ops method for
10251    ranged breakpoints.  */
10252 
10253 static int
10254 resources_needed_ranged_breakpoint (const struct bp_location *bl)
10255 {
10256   return target_ranged_break_num_registers ();
10257 }
10258 
10259 /* Implement the "print_it" breakpoint_ops method for
10260    ranged breakpoints.  */
10261 
10262 static enum print_stop_action
10263 print_it_ranged_breakpoint (bpstat bs)
10264 {
10265   struct breakpoint *b = bs->breakpoint_at;
10266   struct bp_location *bl = b->loc;
10267   struct ui_out *uiout = current_uiout;
10268 
10269   gdb_assert (b->type == bp_hardware_breakpoint);
10270 
10271   /* Ranged breakpoints have only one location.  */
10272   gdb_assert (bl && bl->next == NULL);
10273 
10274   annotate_breakpoint (b->number);
10275 
10276   maybe_print_thread_hit_breakpoint (uiout);
10277 
10278   if (b->disposition == disp_del)
10279     ui_out_text (uiout, "Temporary ranged breakpoint ");
10280   else
10281     ui_out_text (uiout, "Ranged breakpoint ");
10282   if (ui_out_is_mi_like_p (uiout))
10283     {
10284       ui_out_field_string (uiout, "reason",
10285 		      async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
10286       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
10287     }
10288   ui_out_field_int (uiout, "bkptno", b->number);
10289   ui_out_text (uiout, ", ");
10290 
10291   return PRINT_SRC_AND_LOC;
10292 }
10293 
10294 /* Implement the "print_one" breakpoint_ops method for
10295    ranged breakpoints.  */
10296 
10297 static void
10298 print_one_ranged_breakpoint (struct breakpoint *b,
10299 			     struct bp_location **last_loc)
10300 {
10301   struct bp_location *bl = b->loc;
10302   struct value_print_options opts;
10303   struct ui_out *uiout = current_uiout;
10304 
10305   /* Ranged breakpoints have only one location.  */
10306   gdb_assert (bl && bl->next == NULL);
10307 
10308   get_user_print_options (&opts);
10309 
10310   if (opts.addressprint)
10311     /* We don't print the address range here, it will be printed later
10312        by print_one_detail_ranged_breakpoint.  */
10313     ui_out_field_skip (uiout, "addr");
10314   annotate_field (5);
10315   print_breakpoint_location (b, bl);
10316   *last_loc = bl;
10317 }
10318 
10319 /* Implement the "print_one_detail" breakpoint_ops method for
10320    ranged breakpoints.  */
10321 
10322 static void
10323 print_one_detail_ranged_breakpoint (const struct breakpoint *b,
10324 				    struct ui_out *uiout)
10325 {
10326   CORE_ADDR address_start, address_end;
10327   struct bp_location *bl = b->loc;
10328   struct ui_file *stb = mem_fileopen ();
10329   struct cleanup *cleanup = make_cleanup_ui_file_delete (stb);
10330 
10331   gdb_assert (bl);
10332 
10333   address_start = bl->address;
10334   address_end = address_start + bl->length - 1;
10335 
10336   ui_out_text (uiout, "\taddress range: ");
10337   fprintf_unfiltered (stb, "[%s, %s]",
10338 		      print_core_address (bl->gdbarch, address_start),
10339 		      print_core_address (bl->gdbarch, address_end));
10340   ui_out_field_stream (uiout, "addr", stb);
10341   ui_out_text (uiout, "\n");
10342 
10343   do_cleanups (cleanup);
10344 }
10345 
10346 /* Implement the "print_mention" breakpoint_ops method for
10347    ranged breakpoints.  */
10348 
10349 static void
10350 print_mention_ranged_breakpoint (struct breakpoint *b)
10351 {
10352   struct bp_location *bl = b->loc;
10353   struct ui_out *uiout = current_uiout;
10354 
10355   gdb_assert (bl);
10356   gdb_assert (b->type == bp_hardware_breakpoint);
10357 
10358   if (ui_out_is_mi_like_p (uiout))
10359     return;
10360 
10361   printf_filtered (_("Hardware assisted ranged breakpoint %d from %s to %s."),
10362 		   b->number, paddress (bl->gdbarch, bl->address),
10363 		   paddress (bl->gdbarch, bl->address + bl->length - 1));
10364 }
10365 
10366 /* Implement the "print_recreate" breakpoint_ops method for
10367    ranged breakpoints.  */
10368 
10369 static void
10370 print_recreate_ranged_breakpoint (struct breakpoint *b, struct ui_file *fp)
10371 {
10372   fprintf_unfiltered (fp, "break-range %s, %s",
10373 		      event_location_to_string (b->location),
10374 		      event_location_to_string (b->location_range_end));
10375   print_recreate_thread (b, fp);
10376 }
10377 
10378 /* The breakpoint_ops structure to be used in ranged breakpoints.  */
10379 
10380 static struct breakpoint_ops ranged_breakpoint_ops;
10381 
10382 /* Find the address where the end of the breakpoint range should be
10383    placed, given the SAL of the end of the range.  This is so that if
10384    the user provides a line number, the end of the range is set to the
10385    last instruction of the given line.  */
10386 
10387 static CORE_ADDR
10388 find_breakpoint_range_end (struct symtab_and_line sal)
10389 {
10390   CORE_ADDR end;
10391 
10392   /* If the user provided a PC value, use it.  Otherwise,
10393      find the address of the end of the given location.  */
10394   if (sal.explicit_pc)
10395     end = sal.pc;
10396   else
10397     {
10398       int ret;
10399       CORE_ADDR start;
10400 
10401       ret = find_line_pc_range (sal, &start, &end);
10402       if (!ret)
10403 	error (_("Could not find location of the end of the range."));
10404 
10405       /* find_line_pc_range returns the start of the next line.  */
10406       end--;
10407     }
10408 
10409   return end;
10410 }
10411 
10412 /* Implement the "break-range" CLI command.  */
10413 
10414 static void
10415 break_range_command (char *arg, int from_tty)
10416 {
10417   char *arg_start, *addr_string_start;
10418   struct linespec_result canonical_start, canonical_end;
10419   int bp_count, can_use_bp, length;
10420   CORE_ADDR end;
10421   struct breakpoint *b;
10422   struct symtab_and_line sal_start, sal_end;
10423   struct cleanup *cleanup_bkpt;
10424   struct linespec_sals *lsal_start, *lsal_end;
10425   struct event_location *start_location, *end_location;
10426 
10427   /* We don't support software ranged breakpoints.  */
10428   if (target_ranged_break_num_registers () < 0)
10429     error (_("This target does not support hardware ranged breakpoints."));
10430 
10431   bp_count = hw_breakpoint_used_count ();
10432   bp_count += target_ranged_break_num_registers ();
10433   can_use_bp = target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
10434 						   bp_count, 0);
10435   if (can_use_bp < 0)
10436     error (_("Hardware breakpoints used exceeds limit."));
10437 
10438   arg = skip_spaces (arg);
10439   if (arg == NULL || arg[0] == '\0')
10440     error(_("No address range specified."));
10441 
10442   init_linespec_result (&canonical_start);
10443 
10444   arg_start = arg;
10445   start_location = string_to_event_location (&arg, current_language);
10446   cleanup_bkpt = make_cleanup_delete_event_location (start_location);
10447   parse_breakpoint_sals (start_location, &canonical_start);
10448   make_cleanup_destroy_linespec_result (&canonical_start);
10449 
10450   if (arg[0] != ',')
10451     error (_("Too few arguments."));
10452   else if (VEC_empty (linespec_sals, canonical_start.sals))
10453     error (_("Could not find location of the beginning of the range."));
10454 
10455   lsal_start = VEC_index (linespec_sals, canonical_start.sals, 0);
10456 
10457   if (VEC_length (linespec_sals, canonical_start.sals) > 1
10458       || lsal_start->sals.nelts != 1)
10459     error (_("Cannot create a ranged breakpoint with multiple locations."));
10460 
10461   sal_start = lsal_start->sals.sals[0];
10462   addr_string_start = savestring (arg_start, arg - arg_start);
10463   make_cleanup (xfree, addr_string_start);
10464 
10465   arg++;	/* Skip the comma.  */
10466   arg = skip_spaces (arg);
10467 
10468   /* Parse the end location.  */
10469 
10470   init_linespec_result (&canonical_end);
10471   arg_start = arg;
10472 
10473   /* We call decode_line_full directly here instead of using
10474      parse_breakpoint_sals because we need to specify the start location's
10475      symtab and line as the default symtab and line for the end of the
10476      range.  This makes it possible to have ranges like "foo.c:27, +14",
10477      where +14 means 14 lines from the start location.  */
10478   end_location = string_to_event_location (&arg, current_language);
10479   make_cleanup_delete_event_location (end_location);
10480   decode_line_full (end_location, DECODE_LINE_FUNFIRSTLINE, NULL,
10481 		    sal_start.symtab, sal_start.line,
10482 		    &canonical_end, NULL, NULL);
10483 
10484   make_cleanup_destroy_linespec_result (&canonical_end);
10485 
10486   if (VEC_empty (linespec_sals, canonical_end.sals))
10487     error (_("Could not find location of the end of the range."));
10488 
10489   lsal_end = VEC_index (linespec_sals, canonical_end.sals, 0);
10490   if (VEC_length (linespec_sals, canonical_end.sals) > 1
10491       || lsal_end->sals.nelts != 1)
10492     error (_("Cannot create a ranged breakpoint with multiple locations."));
10493 
10494   sal_end = lsal_end->sals.sals[0];
10495 
10496   end = find_breakpoint_range_end (sal_end);
10497   if (sal_start.pc > end)
10498     error (_("Invalid address range, end precedes start."));
10499 
10500   length = end - sal_start.pc + 1;
10501   if (length < 0)
10502     /* Length overflowed.  */
10503     error (_("Address range too large."));
10504   else if (length == 1)
10505     {
10506       /* This range is simple enough to be handled by
10507 	 the `hbreak' command.  */
10508       hbreak_command (addr_string_start, 1);
10509 
10510       do_cleanups (cleanup_bkpt);
10511 
10512       return;
10513     }
10514 
10515   /* Now set up the breakpoint.  */
10516   b = set_raw_breakpoint (get_current_arch (), sal_start,
10517 			  bp_hardware_breakpoint, &ranged_breakpoint_ops);
10518   set_breakpoint_count (breakpoint_count + 1);
10519   b->number = breakpoint_count;
10520   b->disposition = disp_donttouch;
10521   b->location = copy_event_location (start_location);
10522   b->location_range_end = copy_event_location (end_location);
10523   b->loc->length = length;
10524 
10525   do_cleanups (cleanup_bkpt);
10526 
10527   mention (b);
10528   observer_notify_breakpoint_created (b);
10529   update_global_location_list (UGLL_MAY_INSERT);
10530 }
10531 
10532 /*  Return non-zero if EXP is verified as constant.  Returned zero
10533     means EXP is variable.  Also the constant detection may fail for
10534     some constant expressions and in such case still falsely return
10535     zero.  */
10536 
10537 static int
10538 watchpoint_exp_is_const (const struct expression *exp)
10539 {
10540   int i = exp->nelts;
10541 
10542   while (i > 0)
10543     {
10544       int oplenp, argsp;
10545 
10546       /* We are only interested in the descriptor of each element.  */
10547       operator_length (exp, i, &oplenp, &argsp);
10548       i -= oplenp;
10549 
10550       switch (exp->elts[i].opcode)
10551 	{
10552 	case BINOP_ADD:
10553 	case BINOP_SUB:
10554 	case BINOP_MUL:
10555 	case BINOP_DIV:
10556 	case BINOP_REM:
10557 	case BINOP_MOD:
10558 	case BINOP_LSH:
10559 	case BINOP_RSH:
10560 	case BINOP_LOGICAL_AND:
10561 	case BINOP_LOGICAL_OR:
10562 	case BINOP_BITWISE_AND:
10563 	case BINOP_BITWISE_IOR:
10564 	case BINOP_BITWISE_XOR:
10565 	case BINOP_EQUAL:
10566 	case BINOP_NOTEQUAL:
10567 	case BINOP_LESS:
10568 	case BINOP_GTR:
10569 	case BINOP_LEQ:
10570 	case BINOP_GEQ:
10571 	case BINOP_REPEAT:
10572 	case BINOP_COMMA:
10573 	case BINOP_EXP:
10574 	case BINOP_MIN:
10575 	case BINOP_MAX:
10576 	case BINOP_INTDIV:
10577 	case BINOP_CONCAT:
10578 	case TERNOP_COND:
10579 	case TERNOP_SLICE:
10580 
10581 	case OP_LONG:
10582 	case OP_DOUBLE:
10583 	case OP_DECFLOAT:
10584 	case OP_LAST:
10585 	case OP_COMPLEX:
10586 	case OP_STRING:
10587 	case OP_ARRAY:
10588 	case OP_TYPE:
10589 	case OP_TYPEOF:
10590 	case OP_DECLTYPE:
10591 	case OP_TYPEID:
10592 	case OP_NAME:
10593 	case OP_OBJC_NSSTRING:
10594 
10595 	case UNOP_NEG:
10596 	case UNOP_LOGICAL_NOT:
10597 	case UNOP_COMPLEMENT:
10598 	case UNOP_ADDR:
10599 	case UNOP_HIGH:
10600 	case UNOP_CAST:
10601 
10602 	case UNOP_CAST_TYPE:
10603 	case UNOP_REINTERPRET_CAST:
10604 	case UNOP_DYNAMIC_CAST:
10605 	  /* Unary, binary and ternary operators: We have to check
10606 	     their operands.  If they are constant, then so is the
10607 	     result of that operation.  For instance, if A and B are
10608 	     determined to be constants, then so is "A + B".
10609 
10610 	     UNOP_IND is one exception to the rule above, because the
10611 	     value of *ADDR is not necessarily a constant, even when
10612 	     ADDR is.  */
10613 	  break;
10614 
10615 	case OP_VAR_VALUE:
10616 	  /* Check whether the associated symbol is a constant.
10617 
10618 	     We use SYMBOL_CLASS rather than TYPE_CONST because it's
10619 	     possible that a buggy compiler could mark a variable as
10620 	     constant even when it is not, and TYPE_CONST would return
10621 	     true in this case, while SYMBOL_CLASS wouldn't.
10622 
10623 	     We also have to check for function symbols because they
10624 	     are always constant.  */
10625 	  {
10626 	    struct symbol *s = exp->elts[i + 2].symbol;
10627 
10628 	    if (SYMBOL_CLASS (s) != LOC_BLOCK
10629 		&& SYMBOL_CLASS (s) != LOC_CONST
10630 		&& SYMBOL_CLASS (s) != LOC_CONST_BYTES)
10631 	      return 0;
10632 	    break;
10633 	  }
10634 
10635 	/* The default action is to return 0 because we are using
10636 	   the optimistic approach here: If we don't know something,
10637 	   then it is not a constant.  */
10638 	default:
10639 	  return 0;
10640 	}
10641     }
10642 
10643   return 1;
10644 }
10645 
10646 /* Implement the "dtor" breakpoint_ops method for watchpoints.  */
10647 
10648 static void
10649 dtor_watchpoint (struct breakpoint *self)
10650 {
10651   struct watchpoint *w = (struct watchpoint *) self;
10652 
10653   xfree (w->cond_exp);
10654   xfree (w->exp);
10655   xfree (w->exp_string);
10656   xfree (w->exp_string_reparse);
10657   value_free (w->val);
10658 
10659   base_breakpoint_ops.dtor (self);
10660 }
10661 
10662 /* Implement the "re_set" breakpoint_ops method for watchpoints.  */
10663 
10664 static void
10665 re_set_watchpoint (struct breakpoint *b)
10666 {
10667   struct watchpoint *w = (struct watchpoint *) b;
10668 
10669   /* Watchpoint can be either on expression using entirely global
10670      variables, or it can be on local variables.
10671 
10672      Watchpoints of the first kind are never auto-deleted, and even
10673      persist across program restarts.  Since they can use variables
10674      from shared libraries, we need to reparse expression as libraries
10675      are loaded and unloaded.
10676 
10677      Watchpoints on local variables can also change meaning as result
10678      of solib event.  For example, if a watchpoint uses both a local
10679      and a global variables in expression, it's a local watchpoint,
10680      but unloading of a shared library will make the expression
10681      invalid.  This is not a very common use case, but we still
10682      re-evaluate expression, to avoid surprises to the user.
10683 
10684      Note that for local watchpoints, we re-evaluate it only if
10685      watchpoints frame id is still valid.  If it's not, it means the
10686      watchpoint is out of scope and will be deleted soon.  In fact,
10687      I'm not sure we'll ever be called in this case.
10688 
10689      If a local watchpoint's frame id is still valid, then
10690      w->exp_valid_block is likewise valid, and we can safely use it.
10691 
10692      Don't do anything about disabled watchpoints, since they will be
10693      reevaluated again when enabled.  */
10694   update_watchpoint (w, 1 /* reparse */);
10695 }
10696 
10697 /* Implement the "insert" breakpoint_ops method for hardware watchpoints.  */
10698 
10699 static int
10700 insert_watchpoint (struct bp_location *bl)
10701 {
10702   struct watchpoint *w = (struct watchpoint *) bl->owner;
10703   int length = w->exact ? 1 : bl->length;
10704 
10705   return target_insert_watchpoint (bl->address, length, bl->watchpoint_type,
10706 				   w->cond_exp);
10707 }
10708 
10709 /* Implement the "remove" breakpoint_ops method for hardware watchpoints.  */
10710 
10711 static int
10712 remove_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10713 {
10714   struct watchpoint *w = (struct watchpoint *) bl->owner;
10715   int length = w->exact ? 1 : bl->length;
10716 
10717   return target_remove_watchpoint (bl->address, length, bl->watchpoint_type,
10718 				   w->cond_exp);
10719 }
10720 
10721 static int
10722 breakpoint_hit_watchpoint (const struct bp_location *bl,
10723 			   struct address_space *aspace, CORE_ADDR bp_addr,
10724 			   const struct target_waitstatus *ws)
10725 {
10726   struct breakpoint *b = bl->owner;
10727   struct watchpoint *w = (struct watchpoint *) b;
10728 
10729   /* Continuable hardware watchpoints are treated as non-existent if the
10730      reason we stopped wasn't a hardware watchpoint (we didn't stop on
10731      some data address).  Otherwise gdb won't stop on a break instruction
10732      in the code (not from a breakpoint) when a hardware watchpoint has
10733      been defined.  Also skip watchpoints which we know did not trigger
10734      (did not match the data address).  */
10735   if (is_hardware_watchpoint (b)
10736       && w->watchpoint_triggered == watch_triggered_no)
10737     return 0;
10738 
10739   return 1;
10740 }
10741 
10742 static void
10743 check_status_watchpoint (bpstat bs)
10744 {
10745   gdb_assert (is_watchpoint (bs->breakpoint_at));
10746 
10747   bpstat_check_watchpoint (bs);
10748 }
10749 
10750 /* Implement the "resources_needed" breakpoint_ops method for
10751    hardware watchpoints.  */
10752 
10753 static int
10754 resources_needed_watchpoint (const struct bp_location *bl)
10755 {
10756   struct watchpoint *w = (struct watchpoint *) bl->owner;
10757   int length = w->exact? 1 : bl->length;
10758 
10759   return target_region_ok_for_hw_watchpoint (bl->address, length);
10760 }
10761 
10762 /* Implement the "works_in_software_mode" breakpoint_ops method for
10763    hardware watchpoints.  */
10764 
10765 static int
10766 works_in_software_mode_watchpoint (const struct breakpoint *b)
10767 {
10768   /* Read and access watchpoints only work with hardware support.  */
10769   return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
10770 }
10771 
10772 static enum print_stop_action
10773 print_it_watchpoint (bpstat bs)
10774 {
10775   struct cleanup *old_chain;
10776   struct breakpoint *b;
10777   struct ui_file *stb;
10778   enum print_stop_action result;
10779   struct watchpoint *w;
10780   struct ui_out *uiout = current_uiout;
10781 
10782   gdb_assert (bs->bp_location_at != NULL);
10783 
10784   b = bs->breakpoint_at;
10785   w = (struct watchpoint *) b;
10786 
10787   stb = mem_fileopen ();
10788   old_chain = make_cleanup_ui_file_delete (stb);
10789 
10790   annotate_watchpoint (b->number);
10791   maybe_print_thread_hit_breakpoint (uiout);
10792 
10793   switch (b->type)
10794     {
10795     case bp_watchpoint:
10796     case bp_hardware_watchpoint:
10797       if (ui_out_is_mi_like_p (uiout))
10798 	ui_out_field_string
10799 	  (uiout, "reason",
10800 	   async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
10801       mention (b);
10802       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10803       ui_out_text (uiout, "\nOld value = ");
10804       watchpoint_value_print (bs->old_val, stb);
10805       ui_out_field_stream (uiout, "old", stb);
10806       ui_out_text (uiout, "\nNew value = ");
10807       watchpoint_value_print (w->val, stb);
10808       ui_out_field_stream (uiout, "new", stb);
10809       ui_out_text (uiout, "\n");
10810       /* More than one watchpoint may have been triggered.  */
10811       result = PRINT_UNKNOWN;
10812       break;
10813 
10814     case bp_read_watchpoint:
10815       if (ui_out_is_mi_like_p (uiout))
10816 	ui_out_field_string
10817 	  (uiout, "reason",
10818 	   async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
10819       mention (b);
10820       make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10821       ui_out_text (uiout, "\nValue = ");
10822       watchpoint_value_print (w->val, stb);
10823       ui_out_field_stream (uiout, "value", stb);
10824       ui_out_text (uiout, "\n");
10825       result = PRINT_UNKNOWN;
10826       break;
10827 
10828     case bp_access_watchpoint:
10829       if (bs->old_val != NULL)
10830 	{
10831 	  if (ui_out_is_mi_like_p (uiout))
10832 	    ui_out_field_string
10833 	      (uiout, "reason",
10834 	       async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10835 	  mention (b);
10836 	  make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10837 	  ui_out_text (uiout, "\nOld value = ");
10838 	  watchpoint_value_print (bs->old_val, stb);
10839 	  ui_out_field_stream (uiout, "old", stb);
10840 	  ui_out_text (uiout, "\nNew value = ");
10841 	}
10842       else
10843 	{
10844 	  mention (b);
10845 	  if (ui_out_is_mi_like_p (uiout))
10846 	    ui_out_field_string
10847 	      (uiout, "reason",
10848 	       async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
10849 	  make_cleanup_ui_out_tuple_begin_end (uiout, "value");
10850 	  ui_out_text (uiout, "\nValue = ");
10851 	}
10852       watchpoint_value_print (w->val, stb);
10853       ui_out_field_stream (uiout, "new", stb);
10854       ui_out_text (uiout, "\n");
10855       result = PRINT_UNKNOWN;
10856       break;
10857     default:
10858       result = PRINT_UNKNOWN;
10859     }
10860 
10861   do_cleanups (old_chain);
10862   return result;
10863 }
10864 
10865 /* Implement the "print_mention" breakpoint_ops method for hardware
10866    watchpoints.  */
10867 
10868 static void
10869 print_mention_watchpoint (struct breakpoint *b)
10870 {
10871   struct cleanup *ui_out_chain;
10872   struct watchpoint *w = (struct watchpoint *) b;
10873   struct ui_out *uiout = current_uiout;
10874 
10875   switch (b->type)
10876     {
10877     case bp_watchpoint:
10878       ui_out_text (uiout, "Watchpoint ");
10879       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10880       break;
10881     case bp_hardware_watchpoint:
10882       ui_out_text (uiout, "Hardware watchpoint ");
10883       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
10884       break;
10885     case bp_read_watchpoint:
10886       ui_out_text (uiout, "Hardware read watchpoint ");
10887       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
10888       break;
10889     case bp_access_watchpoint:
10890       ui_out_text (uiout, "Hardware access (read/write) watchpoint ");
10891       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
10892       break;
10893     default:
10894       internal_error (__FILE__, __LINE__,
10895 		      _("Invalid hardware watchpoint type."));
10896     }
10897 
10898   ui_out_field_int (uiout, "number", b->number);
10899   ui_out_text (uiout, ": ");
10900   ui_out_field_string (uiout, "exp", w->exp_string);
10901   do_cleanups (ui_out_chain);
10902 }
10903 
10904 /* Implement the "print_recreate" breakpoint_ops method for
10905    watchpoints.  */
10906 
10907 static void
10908 print_recreate_watchpoint (struct breakpoint *b, struct ui_file *fp)
10909 {
10910   struct watchpoint *w = (struct watchpoint *) b;
10911 
10912   switch (b->type)
10913     {
10914     case bp_watchpoint:
10915     case bp_hardware_watchpoint:
10916       fprintf_unfiltered (fp, "watch");
10917       break;
10918     case bp_read_watchpoint:
10919       fprintf_unfiltered (fp, "rwatch");
10920       break;
10921     case bp_access_watchpoint:
10922       fprintf_unfiltered (fp, "awatch");
10923       break;
10924     default:
10925       internal_error (__FILE__, __LINE__,
10926 		      _("Invalid watchpoint type."));
10927     }
10928 
10929   fprintf_unfiltered (fp, " %s", w->exp_string);
10930   print_recreate_thread (b, fp);
10931 }
10932 
10933 /* Implement the "explains_signal" breakpoint_ops method for
10934    watchpoints.  */
10935 
10936 static int
10937 explains_signal_watchpoint (struct breakpoint *b, enum gdb_signal sig)
10938 {
10939   /* A software watchpoint cannot cause a signal other than
10940      GDB_SIGNAL_TRAP.  */
10941   if (b->type == bp_watchpoint && sig != GDB_SIGNAL_TRAP)
10942     return 0;
10943 
10944   return 1;
10945 }
10946 
10947 /* The breakpoint_ops structure to be used in hardware watchpoints.  */
10948 
10949 static struct breakpoint_ops watchpoint_breakpoint_ops;
10950 
10951 /* Implement the "insert" breakpoint_ops method for
10952    masked hardware watchpoints.  */
10953 
10954 static int
10955 insert_masked_watchpoint (struct bp_location *bl)
10956 {
10957   struct watchpoint *w = (struct watchpoint *) bl->owner;
10958 
10959   return target_insert_mask_watchpoint (bl->address, w->hw_wp_mask,
10960 					bl->watchpoint_type);
10961 }
10962 
10963 /* Implement the "remove" breakpoint_ops method for
10964    masked hardware watchpoints.  */
10965 
10966 static int
10967 remove_masked_watchpoint (struct bp_location *bl, enum remove_bp_reason reason)
10968 {
10969   struct watchpoint *w = (struct watchpoint *) bl->owner;
10970 
10971   return target_remove_mask_watchpoint (bl->address, w->hw_wp_mask,
10972 				        bl->watchpoint_type);
10973 }
10974 
10975 /* Implement the "resources_needed" breakpoint_ops method for
10976    masked hardware watchpoints.  */
10977 
10978 static int
10979 resources_needed_masked_watchpoint (const struct bp_location *bl)
10980 {
10981   struct watchpoint *w = (struct watchpoint *) bl->owner;
10982 
10983   return target_masked_watch_num_registers (bl->address, w->hw_wp_mask);
10984 }
10985 
10986 /* Implement the "works_in_software_mode" breakpoint_ops method for
10987    masked hardware watchpoints.  */
10988 
10989 static int
10990 works_in_software_mode_masked_watchpoint (const struct breakpoint *b)
10991 {
10992   return 0;
10993 }
10994 
10995 /* Implement the "print_it" breakpoint_ops method for
10996    masked hardware watchpoints.  */
10997 
10998 static enum print_stop_action
10999 print_it_masked_watchpoint (bpstat bs)
11000 {
11001   struct breakpoint *b = bs->breakpoint_at;
11002   struct ui_out *uiout = current_uiout;
11003 
11004   /* Masked watchpoints have only one location.  */
11005   gdb_assert (b->loc && b->loc->next == NULL);
11006 
11007   annotate_watchpoint (b->number);
11008   maybe_print_thread_hit_breakpoint (uiout);
11009 
11010   switch (b->type)
11011     {
11012     case bp_hardware_watchpoint:
11013       if (ui_out_is_mi_like_p (uiout))
11014 	ui_out_field_string
11015 	  (uiout, "reason",
11016 	   async_reason_lookup (EXEC_ASYNC_WATCHPOINT_TRIGGER));
11017       break;
11018 
11019     case bp_read_watchpoint:
11020       if (ui_out_is_mi_like_p (uiout))
11021 	ui_out_field_string
11022 	  (uiout, "reason",
11023 	   async_reason_lookup (EXEC_ASYNC_READ_WATCHPOINT_TRIGGER));
11024       break;
11025 
11026     case bp_access_watchpoint:
11027       if (ui_out_is_mi_like_p (uiout))
11028 	ui_out_field_string
11029 	  (uiout, "reason",
11030 	   async_reason_lookup (EXEC_ASYNC_ACCESS_WATCHPOINT_TRIGGER));
11031       break;
11032     default:
11033       internal_error (__FILE__, __LINE__,
11034 		      _("Invalid hardware watchpoint type."));
11035     }
11036 
11037   mention (b);
11038   ui_out_text (uiout, _("\n\
11039 Check the underlying instruction at PC for the memory\n\
11040 address and value which triggered this watchpoint.\n"));
11041   ui_out_text (uiout, "\n");
11042 
11043   /* More than one watchpoint may have been triggered.  */
11044   return PRINT_UNKNOWN;
11045 }
11046 
11047 /* Implement the "print_one_detail" breakpoint_ops method for
11048    masked hardware watchpoints.  */
11049 
11050 static void
11051 print_one_detail_masked_watchpoint (const struct breakpoint *b,
11052 				    struct ui_out *uiout)
11053 {
11054   struct watchpoint *w = (struct watchpoint *) b;
11055 
11056   /* Masked watchpoints have only one location.  */
11057   gdb_assert (b->loc && b->loc->next == NULL);
11058 
11059   ui_out_text (uiout, "\tmask ");
11060   ui_out_field_core_addr (uiout, "mask", b->loc->gdbarch, w->hw_wp_mask);
11061   ui_out_text (uiout, "\n");
11062 }
11063 
11064 /* Implement the "print_mention" breakpoint_ops method for
11065    masked hardware watchpoints.  */
11066 
11067 static void
11068 print_mention_masked_watchpoint (struct breakpoint *b)
11069 {
11070   struct watchpoint *w = (struct watchpoint *) b;
11071   struct ui_out *uiout = current_uiout;
11072   struct cleanup *ui_out_chain;
11073 
11074   switch (b->type)
11075     {
11076     case bp_hardware_watchpoint:
11077       ui_out_text (uiout, "Masked hardware watchpoint ");
11078       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "wpt");
11079       break;
11080     case bp_read_watchpoint:
11081       ui_out_text (uiout, "Masked hardware read watchpoint ");
11082       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-rwpt");
11083       break;
11084     case bp_access_watchpoint:
11085       ui_out_text (uiout, "Masked hardware access (read/write) watchpoint ");
11086       ui_out_chain = make_cleanup_ui_out_tuple_begin_end (uiout, "hw-awpt");
11087       break;
11088     default:
11089       internal_error (__FILE__, __LINE__,
11090 		      _("Invalid hardware watchpoint type."));
11091     }
11092 
11093   ui_out_field_int (uiout, "number", b->number);
11094   ui_out_text (uiout, ": ");
11095   ui_out_field_string (uiout, "exp", w->exp_string);
11096   do_cleanups (ui_out_chain);
11097 }
11098 
11099 /* Implement the "print_recreate" breakpoint_ops method for
11100    masked hardware watchpoints.  */
11101 
11102 static void
11103 print_recreate_masked_watchpoint (struct breakpoint *b, struct ui_file *fp)
11104 {
11105   struct watchpoint *w = (struct watchpoint *) b;
11106   char tmp[40];
11107 
11108   switch (b->type)
11109     {
11110     case bp_hardware_watchpoint:
11111       fprintf_unfiltered (fp, "watch");
11112       break;
11113     case bp_read_watchpoint:
11114       fprintf_unfiltered (fp, "rwatch");
11115       break;
11116     case bp_access_watchpoint:
11117       fprintf_unfiltered (fp, "awatch");
11118       break;
11119     default:
11120       internal_error (__FILE__, __LINE__,
11121 		      _("Invalid hardware watchpoint type."));
11122     }
11123 
11124   sprintf_vma (tmp, w->hw_wp_mask);
11125   fprintf_unfiltered (fp, " %s mask 0x%s", w->exp_string, tmp);
11126   print_recreate_thread (b, fp);
11127 }
11128 
11129 /* The breakpoint_ops structure to be used in masked hardware watchpoints.  */
11130 
11131 static struct breakpoint_ops masked_watchpoint_breakpoint_ops;
11132 
11133 /* Tell whether the given watchpoint is a masked hardware watchpoint.  */
11134 
11135 static int
11136 is_masked_watchpoint (const struct breakpoint *b)
11137 {
11138   return b->ops == &masked_watchpoint_breakpoint_ops;
11139 }
11140 
11141 /* accessflag:  hw_write:  watch write,
11142                 hw_read:   watch read,
11143 		hw_access: watch access (read or write) */
11144 static void
11145 watch_command_1 (const char *arg, int accessflag, int from_tty,
11146 		 int just_location, int internal)
11147 {
11148   struct breakpoint *b, *scope_breakpoint = NULL;
11149   struct expression *exp;
11150   const struct block *exp_valid_block = NULL, *cond_exp_valid_block = NULL;
11151   struct value *val, *mark, *result;
11152   int saved_bitpos = 0, saved_bitsize = 0;
11153   struct frame_info *frame;
11154   const char *exp_start = NULL;
11155   const char *exp_end = NULL;
11156   const char *tok, *end_tok;
11157   int toklen = -1;
11158   const char *cond_start = NULL;
11159   const char *cond_end = NULL;
11160   enum bptype bp_type;
11161   int thread = -1;
11162   int pc = 0;
11163   /* Flag to indicate whether we are going to use masks for
11164      the hardware watchpoint.  */
11165   int use_mask = 0;
11166   CORE_ADDR mask = 0;
11167   struct watchpoint *w;
11168   char *expression;
11169   struct cleanup *back_to;
11170 
11171   /* Make sure that we actually have parameters to parse.  */
11172   if (arg != NULL && arg[0] != '\0')
11173     {
11174       const char *value_start;
11175 
11176       exp_end = arg + strlen (arg);
11177 
11178       /* Look for "parameter value" pairs at the end
11179 	 of the arguments string.  */
11180       for (tok = exp_end - 1; tok > arg; tok--)
11181 	{
11182 	  /* Skip whitespace at the end of the argument list.  */
11183 	  while (tok > arg && (*tok == ' ' || *tok == '\t'))
11184 	    tok--;
11185 
11186 	  /* Find the beginning of the last token.
11187 	     This is the value of the parameter.  */
11188 	  while (tok > arg && (*tok != ' ' && *tok != '\t'))
11189 	    tok--;
11190 	  value_start = tok + 1;
11191 
11192 	  /* Skip whitespace.  */
11193 	  while (tok > arg && (*tok == ' ' || *tok == '\t'))
11194 	    tok--;
11195 
11196 	  end_tok = tok;
11197 
11198 	  /* Find the beginning of the second to last token.
11199 	     This is the parameter itself.  */
11200 	  while (tok > arg && (*tok != ' ' && *tok != '\t'))
11201 	    tok--;
11202 	  tok++;
11203 	  toklen = end_tok - tok + 1;
11204 
11205 	  if (toklen == 6 && startswith (tok, "thread"))
11206 	    {
11207 	      struct thread_info *thr;
11208 	      /* At this point we've found a "thread" token, which means
11209 		 the user is trying to set a watchpoint that triggers
11210 		 only in a specific thread.  */
11211 	      const char *endp;
11212 
11213 	      if (thread != -1)
11214 		error(_("You can specify only one thread."));
11215 
11216 	      /* Extract the thread ID from the next token.  */
11217 	      thr = parse_thread_id (value_start, &endp);
11218 
11219 	      /* Check if the user provided a valid thread ID.  */
11220 	      if (*endp != ' ' && *endp != '\t' && *endp != '\0')
11221 		invalid_thread_id_error (value_start);
11222 
11223 	      thread = thr->global_num;
11224 	    }
11225 	  else if (toklen == 4 && startswith (tok, "mask"))
11226 	    {
11227 	      /* We've found a "mask" token, which means the user wants to
11228 		 create a hardware watchpoint that is going to have the mask
11229 		 facility.  */
11230 	      struct value *mask_value, *mark;
11231 
11232 	      if (use_mask)
11233 		error(_("You can specify only one mask."));
11234 
11235 	      use_mask = just_location = 1;
11236 
11237 	      mark = value_mark ();
11238 	      mask_value = parse_to_comma_and_eval (&value_start);
11239 	      mask = value_as_address (mask_value);
11240 	      value_free_to_mark (mark);
11241 	    }
11242 	  else
11243 	    /* We didn't recognize what we found.  We should stop here.  */
11244 	    break;
11245 
11246 	  /* Truncate the string and get rid of the "parameter value" pair before
11247 	     the arguments string is parsed by the parse_exp_1 function.  */
11248 	  exp_end = tok;
11249 	}
11250     }
11251   else
11252     exp_end = arg;
11253 
11254   /* Parse the rest of the arguments.  From here on out, everything
11255      is in terms of a newly allocated string instead of the original
11256      ARG.  */
11257   innermost_block = NULL;
11258   expression = savestring (arg, exp_end - arg);
11259   back_to = make_cleanup (xfree, expression);
11260   exp_start = arg = expression;
11261   exp = parse_exp_1 (&arg, 0, 0, 0);
11262   exp_end = arg;
11263   /* Remove trailing whitespace from the expression before saving it.
11264      This makes the eventual display of the expression string a bit
11265      prettier.  */
11266   while (exp_end > exp_start && (exp_end[-1] == ' ' || exp_end[-1] == '\t'))
11267     --exp_end;
11268 
11269   /* Checking if the expression is not constant.  */
11270   if (watchpoint_exp_is_const (exp))
11271     {
11272       int len;
11273 
11274       len = exp_end - exp_start;
11275       while (len > 0 && isspace (exp_start[len - 1]))
11276 	len--;
11277       error (_("Cannot watch constant value `%.*s'."), len, exp_start);
11278     }
11279 
11280   exp_valid_block = innermost_block;
11281   mark = value_mark ();
11282   fetch_subexp_value (exp, &pc, &val, &result, NULL, just_location);
11283 
11284   if (val != NULL && just_location)
11285     {
11286       saved_bitpos = value_bitpos (val);
11287       saved_bitsize = value_bitsize (val);
11288     }
11289 
11290   if (just_location)
11291     {
11292       int ret;
11293 
11294       exp_valid_block = NULL;
11295       val = value_addr (result);
11296       release_value (val);
11297       value_free_to_mark (mark);
11298 
11299       if (use_mask)
11300 	{
11301 	  ret = target_masked_watch_num_registers (value_as_address (val),
11302 						   mask);
11303 	  if (ret == -1)
11304 	    error (_("This target does not support masked watchpoints."));
11305 	  else if (ret == -2)
11306 	    error (_("Invalid mask or memory region."));
11307 	}
11308     }
11309   else if (val != NULL)
11310     release_value (val);
11311 
11312   tok = skip_spaces_const (arg);
11313   end_tok = skip_to_space_const (tok);
11314 
11315   toklen = end_tok - tok;
11316   if (toklen >= 1 && strncmp (tok, "if", toklen) == 0)
11317     {
11318       struct expression *cond;
11319 
11320       innermost_block = NULL;
11321       tok = cond_start = end_tok + 1;
11322       cond = parse_exp_1 (&tok, 0, 0, 0);
11323 
11324       /* The watchpoint expression may not be local, but the condition
11325 	 may still be.  E.g.: `watch global if local > 0'.  */
11326       cond_exp_valid_block = innermost_block;
11327 
11328       xfree (cond);
11329       cond_end = tok;
11330     }
11331   if (*tok)
11332     error (_("Junk at end of command."));
11333 
11334   frame = block_innermost_frame (exp_valid_block);
11335 
11336   /* If the expression is "local", then set up a "watchpoint scope"
11337      breakpoint at the point where we've left the scope of the watchpoint
11338      expression.  Create the scope breakpoint before the watchpoint, so
11339      that we will encounter it first in bpstat_stop_status.  */
11340   if (exp_valid_block && frame)
11341     {
11342       if (frame_id_p (frame_unwind_caller_id (frame)))
11343 	{
11344  	  scope_breakpoint
11345 	    = create_internal_breakpoint (frame_unwind_caller_arch (frame),
11346 					  frame_unwind_caller_pc (frame),
11347 					  bp_watchpoint_scope,
11348 					  &momentary_breakpoint_ops);
11349 
11350 	  scope_breakpoint->enable_state = bp_enabled;
11351 
11352 	  /* Automatically delete the breakpoint when it hits.  */
11353 	  scope_breakpoint->disposition = disp_del;
11354 
11355 	  /* Only break in the proper frame (help with recursion).  */
11356 	  scope_breakpoint->frame_id = frame_unwind_caller_id (frame);
11357 
11358 	  /* Set the address at which we will stop.  */
11359 	  scope_breakpoint->loc->gdbarch
11360 	    = frame_unwind_caller_arch (frame);
11361 	  scope_breakpoint->loc->requested_address
11362 	    = frame_unwind_caller_pc (frame);
11363 	  scope_breakpoint->loc->address
11364 	    = adjust_breakpoint_address (scope_breakpoint->loc->gdbarch,
11365 					 scope_breakpoint->loc->requested_address,
11366 					 scope_breakpoint->type);
11367 	}
11368     }
11369 
11370   /* Now set up the breakpoint.  We create all watchpoints as hardware
11371      watchpoints here even if hardware watchpoints are turned off, a call
11372      to update_watchpoint later in this function will cause the type to
11373      drop back to bp_watchpoint (software watchpoint) if required.  */
11374 
11375   if (accessflag == hw_read)
11376     bp_type = bp_read_watchpoint;
11377   else if (accessflag == hw_access)
11378     bp_type = bp_access_watchpoint;
11379   else
11380     bp_type = bp_hardware_watchpoint;
11381 
11382   w = XCNEW (struct watchpoint);
11383   b = &w->base;
11384   if (use_mask)
11385     init_raw_breakpoint_without_location (b, NULL, bp_type,
11386 					  &masked_watchpoint_breakpoint_ops);
11387   else
11388     init_raw_breakpoint_without_location (b, NULL, bp_type,
11389 					  &watchpoint_breakpoint_ops);
11390   b->thread = thread;
11391   b->disposition = disp_donttouch;
11392   b->pspace = current_program_space;
11393   w->exp = exp;
11394   w->exp_valid_block = exp_valid_block;
11395   w->cond_exp_valid_block = cond_exp_valid_block;
11396   if (just_location)
11397     {
11398       struct type *t = value_type (val);
11399       CORE_ADDR addr = value_as_address (val);
11400       char *name;
11401 
11402       t = check_typedef (TYPE_TARGET_TYPE (check_typedef (t)));
11403       name = type_to_string (t);
11404 
11405       w->exp_string_reparse = xstrprintf ("* (%s *) %s", name,
11406 					  core_addr_to_string (addr));
11407       xfree (name);
11408 
11409       w->exp_string = xstrprintf ("-location %.*s",
11410 				  (int) (exp_end - exp_start), exp_start);
11411 
11412       /* The above expression is in C.  */
11413       b->language = language_c;
11414     }
11415   else
11416     w->exp_string = savestring (exp_start, exp_end - exp_start);
11417 
11418   if (use_mask)
11419     {
11420       w->hw_wp_mask = mask;
11421     }
11422   else
11423     {
11424       w->val = val;
11425       w->val_bitpos = saved_bitpos;
11426       w->val_bitsize = saved_bitsize;
11427       w->val_valid = 1;
11428     }
11429 
11430   if (cond_start)
11431     b->cond_string = savestring (cond_start, cond_end - cond_start);
11432   else
11433     b->cond_string = 0;
11434 
11435   if (frame)
11436     {
11437       w->watchpoint_frame = get_frame_id (frame);
11438       w->watchpoint_thread = inferior_ptid;
11439     }
11440   else
11441     {
11442       w->watchpoint_frame = null_frame_id;
11443       w->watchpoint_thread = null_ptid;
11444     }
11445 
11446   if (scope_breakpoint != NULL)
11447     {
11448       /* The scope breakpoint is related to the watchpoint.  We will
11449 	 need to act on them together.  */
11450       b->related_breakpoint = scope_breakpoint;
11451       scope_breakpoint->related_breakpoint = b;
11452     }
11453 
11454   if (!just_location)
11455     value_free_to_mark (mark);
11456 
11457   TRY
11458     {
11459       /* Finally update the new watchpoint.  This creates the locations
11460 	 that should be inserted.  */
11461       update_watchpoint (w, 1);
11462     }
11463   CATCH (e, RETURN_MASK_ALL)
11464     {
11465       delete_breakpoint (b);
11466       throw_exception (e);
11467     }
11468   END_CATCH
11469 
11470   install_breakpoint (internal, b, 1);
11471   do_cleanups (back_to);
11472 }
11473 
11474 /* Return count of debug registers needed to watch the given expression.
11475    If the watchpoint cannot be handled in hardware return zero.  */
11476 
11477 static int
11478 can_use_hardware_watchpoint (struct value *v)
11479 {
11480   int found_memory_cnt = 0;
11481   struct value *head = v;
11482 
11483   /* Did the user specifically forbid us to use hardware watchpoints? */
11484   if (!can_use_hw_watchpoints)
11485     return 0;
11486 
11487   /* Make sure that the value of the expression depends only upon
11488      memory contents, and values computed from them within GDB.  If we
11489      find any register references or function calls, we can't use a
11490      hardware watchpoint.
11491 
11492      The idea here is that evaluating an expression generates a series
11493      of values, one holding the value of every subexpression.  (The
11494      expression a*b+c has five subexpressions: a, b, a*b, c, and
11495      a*b+c.)  GDB's values hold almost enough information to establish
11496      the criteria given above --- they identify memory lvalues,
11497      register lvalues, computed values, etcetera.  So we can evaluate
11498      the expression, and then scan the chain of values that leaves
11499      behind to decide whether we can detect any possible change to the
11500      expression's final value using only hardware watchpoints.
11501 
11502      However, I don't think that the values returned by inferior
11503      function calls are special in any way.  So this function may not
11504      notice that an expression involving an inferior function call
11505      can't be watched with hardware watchpoints.  FIXME.  */
11506   for (; v; v = value_next (v))
11507     {
11508       if (VALUE_LVAL (v) == lval_memory)
11509 	{
11510 	  if (v != head && value_lazy (v))
11511 	    /* A lazy memory lvalue in the chain is one that GDB never
11512 	       needed to fetch; we either just used its address (e.g.,
11513 	       `a' in `a.b') or we never needed it at all (e.g., `a'
11514 	       in `a,b').  This doesn't apply to HEAD; if that is
11515 	       lazy then it was not readable, but watch it anyway.  */
11516 	    ;
11517 	  else
11518 	    {
11519 	      /* Ahh, memory we actually used!  Check if we can cover
11520                  it with hardware watchpoints.  */
11521 	      struct type *vtype = check_typedef (value_type (v));
11522 
11523 	      /* We only watch structs and arrays if user asked for it
11524 		 explicitly, never if they just happen to appear in a
11525 		 middle of some value chain.  */
11526 	      if (v == head
11527 		  || (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
11528 		      && TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
11529 		{
11530 		  CORE_ADDR vaddr = value_address (v);
11531 		  int len;
11532 		  int num_regs;
11533 
11534 		  len = (target_exact_watchpoints
11535 			 && is_scalar_type_recursive (vtype))?
11536 		    1 : TYPE_LENGTH (value_type (v));
11537 
11538 		  num_regs = target_region_ok_for_hw_watchpoint (vaddr, len);
11539 		  if (!num_regs)
11540 		    return 0;
11541 		  else
11542 		    found_memory_cnt += num_regs;
11543 		}
11544 	    }
11545 	}
11546       else if (VALUE_LVAL (v) != not_lval
11547 	       && deprecated_value_modifiable (v) == 0)
11548 	return 0;	/* These are values from the history (e.g., $1).  */
11549       else if (VALUE_LVAL (v) == lval_register)
11550 	return 0;	/* Cannot watch a register with a HW watchpoint.  */
11551     }
11552 
11553   /* The expression itself looks suitable for using a hardware
11554      watchpoint, but give the target machine a chance to reject it.  */
11555   return found_memory_cnt;
11556 }
11557 
11558 void
11559 watch_command_wrapper (char *arg, int from_tty, int internal)
11560 {
11561   watch_command_1 (arg, hw_write, from_tty, 0, internal);
11562 }
11563 
11564 /* A helper function that looks for the "-location" argument and then
11565    calls watch_command_1.  */
11566 
11567 static void
11568 watch_maybe_just_location (char *arg, int accessflag, int from_tty)
11569 {
11570   int just_location = 0;
11571 
11572   if (arg
11573       && (check_for_argument (&arg, "-location", sizeof ("-location") - 1)
11574 	  || check_for_argument (&arg, "-l", sizeof ("-l") - 1)))
11575     {
11576       arg = skip_spaces (arg);
11577       just_location = 1;
11578     }
11579 
11580   watch_command_1 (arg, accessflag, from_tty, just_location, 0);
11581 }
11582 
11583 static void
11584 watch_command (char *arg, int from_tty)
11585 {
11586   watch_maybe_just_location (arg, hw_write, from_tty);
11587 }
11588 
11589 void
11590 rwatch_command_wrapper (char *arg, int from_tty, int internal)
11591 {
11592   watch_command_1 (arg, hw_read, from_tty, 0, internal);
11593 }
11594 
11595 static void
11596 rwatch_command (char *arg, int from_tty)
11597 {
11598   watch_maybe_just_location (arg, hw_read, from_tty);
11599 }
11600 
11601 void
11602 awatch_command_wrapper (char *arg, int from_tty, int internal)
11603 {
11604   watch_command_1 (arg, hw_access, from_tty, 0, internal);
11605 }
11606 
11607 static void
11608 awatch_command (char *arg, int from_tty)
11609 {
11610   watch_maybe_just_location (arg, hw_access, from_tty);
11611 }
11612 
11613 
11614 /* Data for the FSM that manages the until(location)/advance commands
11615    in infcmd.c.  Here because it uses the mechanisms of
11616    breakpoints.  */
11617 
11618 struct until_break_fsm
11619 {
11620   /* The base class.  */
11621   struct thread_fsm thread_fsm;
11622 
11623   /* The thread that as current when the command was executed.  */
11624   int thread;
11625 
11626   /* The breakpoint set at the destination location.  */
11627   struct breakpoint *location_breakpoint;
11628 
11629   /* Breakpoint set at the return address in the caller frame.  May be
11630      NULL.  */
11631   struct breakpoint *caller_breakpoint;
11632 };
11633 
11634 static void until_break_fsm_clean_up (struct thread_fsm *self,
11635 				      struct thread_info *thread);
11636 static int until_break_fsm_should_stop (struct thread_fsm *self,
11637 					struct thread_info *thread);
11638 static enum async_reply_reason
11639   until_break_fsm_async_reply_reason (struct thread_fsm *self);
11640 
11641 /* until_break_fsm's vtable.  */
11642 
11643 static struct thread_fsm_ops until_break_fsm_ops =
11644 {
11645   NULL, /* dtor */
11646   until_break_fsm_clean_up,
11647   until_break_fsm_should_stop,
11648   NULL, /* return_value */
11649   until_break_fsm_async_reply_reason,
11650 };
11651 
11652 /* Allocate a new until_break_command_fsm.  */
11653 
11654 static struct until_break_fsm *
11655 new_until_break_fsm (struct interp *cmd_interp, int thread,
11656 		     struct breakpoint *location_breakpoint,
11657 		     struct breakpoint *caller_breakpoint)
11658 {
11659   struct until_break_fsm *sm;
11660 
11661   sm = XCNEW (struct until_break_fsm);
11662   thread_fsm_ctor (&sm->thread_fsm, &until_break_fsm_ops, cmd_interp);
11663 
11664   sm->thread = thread;
11665   sm->location_breakpoint = location_breakpoint;
11666   sm->caller_breakpoint = caller_breakpoint;
11667 
11668   return sm;
11669 }
11670 
11671 /* Implementation of the 'should_stop' FSM method for the
11672    until(location)/advance commands.  */
11673 
11674 static int
11675 until_break_fsm_should_stop (struct thread_fsm *self,
11676 			     struct thread_info *tp)
11677 {
11678   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11679 
11680   if (bpstat_find_breakpoint (tp->control.stop_bpstat,
11681 			      sm->location_breakpoint) != NULL
11682       || (sm->caller_breakpoint != NULL
11683 	  && bpstat_find_breakpoint (tp->control.stop_bpstat,
11684 				     sm->caller_breakpoint) != NULL))
11685     thread_fsm_set_finished (self);
11686 
11687   return 1;
11688 }
11689 
11690 /* Implementation of the 'clean_up' FSM method for the
11691    until(location)/advance commands.  */
11692 
11693 static void
11694 until_break_fsm_clean_up (struct thread_fsm *self,
11695 			  struct thread_info *thread)
11696 {
11697   struct until_break_fsm *sm = (struct until_break_fsm *) self;
11698 
11699   /* Clean up our temporary breakpoints.  */
11700   if (sm->location_breakpoint != NULL)
11701     {
11702       delete_breakpoint (sm->location_breakpoint);
11703       sm->location_breakpoint = NULL;
11704     }
11705   if (sm->caller_breakpoint != NULL)
11706     {
11707       delete_breakpoint (sm->caller_breakpoint);
11708       sm->caller_breakpoint = NULL;
11709     }
11710   delete_longjmp_breakpoint (sm->thread);
11711 }
11712 
11713 /* Implementation of the 'async_reply_reason' FSM method for the
11714    until(location)/advance commands.  */
11715 
11716 static enum async_reply_reason
11717 until_break_fsm_async_reply_reason (struct thread_fsm *self)
11718 {
11719   return EXEC_ASYNC_LOCATION_REACHED;
11720 }
11721 
11722 void
11723 until_break_command (char *arg, int from_tty, int anywhere)
11724 {
11725   struct symtabs_and_lines sals;
11726   struct symtab_and_line sal;
11727   struct frame_info *frame;
11728   struct gdbarch *frame_gdbarch;
11729   struct frame_id stack_frame_id;
11730   struct frame_id caller_frame_id;
11731   struct breakpoint *location_breakpoint;
11732   struct breakpoint *caller_breakpoint = NULL;
11733   struct cleanup *old_chain, *cleanup;
11734   int thread;
11735   struct thread_info *tp;
11736   struct event_location *location;
11737   struct until_break_fsm *sm;
11738 
11739   clear_proceed_status (0);
11740 
11741   /* Set a breakpoint where the user wants it and at return from
11742      this function.  */
11743 
11744   location = string_to_event_location (&arg, current_language);
11745   cleanup = make_cleanup_delete_event_location (location);
11746 
11747   if (last_displayed_sal_is_valid ())
11748     sals = decode_line_1 (location, DECODE_LINE_FUNFIRSTLINE, NULL,
11749 			  get_last_displayed_symtab (),
11750 			  get_last_displayed_line ());
11751   else
11752     sals = decode_line_1 (location, DECODE_LINE_FUNFIRSTLINE,
11753 			  NULL, (struct symtab *) NULL, 0);
11754 
11755   if (sals.nelts != 1)
11756     error (_("Couldn't get information on specified line."));
11757 
11758   sal = sals.sals[0];
11759   xfree (sals.sals);	/* malloc'd, so freed.  */
11760 
11761   if (*arg)
11762     error (_("Junk at end of arguments."));
11763 
11764   resolve_sal_pc (&sal);
11765 
11766   tp = inferior_thread ();
11767   thread = tp->global_num;
11768 
11769   old_chain = make_cleanup (null_cleanup, NULL);
11770 
11771   /* Note linespec handling above invalidates the frame chain.
11772      Installing a breakpoint also invalidates the frame chain (as it
11773      may need to switch threads), so do any frame handling before
11774      that.  */
11775 
11776   frame = get_selected_frame (NULL);
11777   frame_gdbarch = get_frame_arch (frame);
11778   stack_frame_id = get_stack_frame_id (frame);
11779   caller_frame_id = frame_unwind_caller_id (frame);
11780 
11781   /* Keep within the current frame, or in frames called by the current
11782      one.  */
11783 
11784   if (frame_id_p (caller_frame_id))
11785     {
11786       struct symtab_and_line sal2;
11787       struct gdbarch *caller_gdbarch;
11788 
11789       sal2 = find_pc_line (frame_unwind_caller_pc (frame), 0);
11790       sal2.pc = frame_unwind_caller_pc (frame);
11791       caller_gdbarch = frame_unwind_caller_arch (frame);
11792       caller_breakpoint = set_momentary_breakpoint (caller_gdbarch,
11793 						    sal2,
11794 						    caller_frame_id,
11795 						    bp_until);
11796       make_cleanup_delete_breakpoint (caller_breakpoint);
11797 
11798       set_longjmp_breakpoint (tp, caller_frame_id);
11799       make_cleanup (delete_longjmp_breakpoint_cleanup, &thread);
11800     }
11801 
11802   /* set_momentary_breakpoint could invalidate FRAME.  */
11803   frame = NULL;
11804 
11805   if (anywhere)
11806     /* If the user told us to continue until a specified location,
11807        we don't specify a frame at which we need to stop.  */
11808     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11809 						    null_frame_id, bp_until);
11810   else
11811     /* Otherwise, specify the selected frame, because we want to stop
11812        only at the very same frame.  */
11813     location_breakpoint = set_momentary_breakpoint (frame_gdbarch, sal,
11814 						    stack_frame_id, bp_until);
11815   make_cleanup_delete_breakpoint (location_breakpoint);
11816 
11817   sm = new_until_break_fsm (command_interp (), tp->global_num,
11818 			    location_breakpoint, caller_breakpoint);
11819   tp->thread_fsm = &sm->thread_fsm;
11820 
11821   discard_cleanups (old_chain);
11822 
11823   proceed (-1, GDB_SIGNAL_DEFAULT);
11824 
11825   do_cleanups (cleanup);
11826 }
11827 
11828 /* This function attempts to parse an optional "if <cond>" clause
11829    from the arg string.  If one is not found, it returns NULL.
11830 
11831    Else, it returns a pointer to the condition string.  (It does not
11832    attempt to evaluate the string against a particular block.)  And,
11833    it updates arg to point to the first character following the parsed
11834    if clause in the arg string.  */
11835 
11836 char *
11837 ep_parse_optional_if_clause (char **arg)
11838 {
11839   char *cond_string;
11840 
11841   if (((*arg)[0] != 'i') || ((*arg)[1] != 'f') || !isspace ((*arg)[2]))
11842     return NULL;
11843 
11844   /* Skip the "if" keyword.  */
11845   (*arg) += 2;
11846 
11847   /* Skip any extra leading whitespace, and record the start of the
11848      condition string.  */
11849   *arg = skip_spaces (*arg);
11850   cond_string = *arg;
11851 
11852   /* Assume that the condition occupies the remainder of the arg
11853      string.  */
11854   (*arg) += strlen (cond_string);
11855 
11856   return cond_string;
11857 }
11858 
11859 /* Commands to deal with catching events, such as signals, exceptions,
11860    process start/exit, etc.  */
11861 
11862 typedef enum
11863 {
11864   catch_fork_temporary, catch_vfork_temporary,
11865   catch_fork_permanent, catch_vfork_permanent
11866 }
11867 catch_fork_kind;
11868 
11869 static void
11870 catch_fork_command_1 (char *arg, int from_tty,
11871 		      struct cmd_list_element *command)
11872 {
11873   struct gdbarch *gdbarch = get_current_arch ();
11874   char *cond_string = NULL;
11875   catch_fork_kind fork_kind;
11876   int tempflag;
11877 
11878   fork_kind = (catch_fork_kind) (uintptr_t) get_cmd_context (command);
11879   tempflag = (fork_kind == catch_fork_temporary
11880 	      || fork_kind == catch_vfork_temporary);
11881 
11882   if (!arg)
11883     arg = "";
11884   arg = skip_spaces (arg);
11885 
11886   /* The allowed syntax is:
11887      catch [v]fork
11888      catch [v]fork if <cond>
11889 
11890      First, check if there's an if clause.  */
11891   cond_string = ep_parse_optional_if_clause (&arg);
11892 
11893   if ((*arg != '\0') && !isspace (*arg))
11894     error (_("Junk at end of arguments."));
11895 
11896   /* If this target supports it, create a fork or vfork catchpoint
11897      and enable reporting of such events.  */
11898   switch (fork_kind)
11899     {
11900     case catch_fork_temporary:
11901     case catch_fork_permanent:
11902       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11903                                           &catch_fork_breakpoint_ops);
11904       break;
11905     case catch_vfork_temporary:
11906     case catch_vfork_permanent:
11907       create_fork_vfork_event_catchpoint (gdbarch, tempflag, cond_string,
11908                                           &catch_vfork_breakpoint_ops);
11909       break;
11910     default:
11911       error (_("unsupported or unknown fork kind; cannot catch it"));
11912       break;
11913     }
11914 }
11915 
11916 static void
11917 catch_exec_command_1 (char *arg, int from_tty,
11918 		      struct cmd_list_element *command)
11919 {
11920   struct exec_catchpoint *c;
11921   struct gdbarch *gdbarch = get_current_arch ();
11922   int tempflag;
11923   char *cond_string = NULL;
11924 
11925   tempflag = get_cmd_context (command) == CATCH_TEMPORARY;
11926 
11927   if (!arg)
11928     arg = "";
11929   arg = skip_spaces (arg);
11930 
11931   /* The allowed syntax is:
11932      catch exec
11933      catch exec if <cond>
11934 
11935      First, check if there's an if clause.  */
11936   cond_string = ep_parse_optional_if_clause (&arg);
11937 
11938   if ((*arg != '\0') && !isspace (*arg))
11939     error (_("Junk at end of arguments."));
11940 
11941   c = XNEW (struct exec_catchpoint);
11942   init_catchpoint (&c->base, gdbarch, tempflag, cond_string,
11943 		   &catch_exec_breakpoint_ops);
11944   c->exec_pathname = NULL;
11945 
11946   install_breakpoint (0, &c->base, 1);
11947 }
11948 
11949 void
11950 init_ada_exception_breakpoint (struct breakpoint *b,
11951 			       struct gdbarch *gdbarch,
11952 			       struct symtab_and_line sal,
11953 			       char *addr_string,
11954 			       const struct breakpoint_ops *ops,
11955 			       int tempflag,
11956 			       int enabled,
11957 			       int from_tty)
11958 {
11959   if (from_tty)
11960     {
11961       struct gdbarch *loc_gdbarch = get_sal_arch (sal);
11962       if (!loc_gdbarch)
11963 	loc_gdbarch = gdbarch;
11964 
11965       describe_other_breakpoints (loc_gdbarch,
11966 				  sal.pspace, sal.pc, sal.section, -1);
11967       /* FIXME: brobecker/2006-12-28: Actually, re-implement a special
11968          version for exception catchpoints, because two catchpoints
11969          used for different exception names will use the same address.
11970          In this case, a "breakpoint ... also set at..." warning is
11971          unproductive.  Besides, the warning phrasing is also a bit
11972          inappropriate, we should use the word catchpoint, and tell
11973          the user what type of catchpoint it is.  The above is good
11974          enough for now, though.  */
11975     }
11976 
11977   init_raw_breakpoint (b, gdbarch, sal, bp_breakpoint, ops);
11978 
11979   b->enable_state = enabled ? bp_enabled : bp_disabled;
11980   b->disposition = tempflag ? disp_del : disp_donttouch;
11981   b->location = string_to_event_location (&addr_string,
11982 					  language_def (language_ada));
11983   b->language = language_ada;
11984 }
11985 
11986 static void
11987 catch_command (char *arg, int from_tty)
11988 {
11989   error (_("Catch requires an event name."));
11990 }
11991 
11992 
11993 static void
11994 tcatch_command (char *arg, int from_tty)
11995 {
11996   error (_("Catch requires an event name."));
11997 }
11998 
11999 /* A qsort comparison function that sorts breakpoints in order.  */
12000 
12001 static int
12002 compare_breakpoints (const void *a, const void *b)
12003 {
12004   const breakpoint_p *ba = (const breakpoint_p *) a;
12005   uintptr_t ua = (uintptr_t) *ba;
12006   const breakpoint_p *bb = (const breakpoint_p *) b;
12007   uintptr_t ub = (uintptr_t) *bb;
12008 
12009   if ((*ba)->number < (*bb)->number)
12010     return -1;
12011   else if ((*ba)->number > (*bb)->number)
12012     return 1;
12013 
12014   /* Now sort by address, in case we see, e..g, two breakpoints with
12015      the number 0.  */
12016   if (ua < ub)
12017     return -1;
12018   return ua > ub ? 1 : 0;
12019 }
12020 
12021 /* Delete breakpoints by address or line.  */
12022 
12023 static void
12024 clear_command (char *arg, int from_tty)
12025 {
12026   struct breakpoint *b, *prev;
12027   VEC(breakpoint_p) *found = 0;
12028   int ix;
12029   int default_match;
12030   struct symtabs_and_lines sals;
12031   struct symtab_and_line sal;
12032   int i;
12033   struct cleanup *cleanups = make_cleanup (null_cleanup, NULL);
12034 
12035   if (arg)
12036     {
12037       sals = decode_line_with_current_source (arg,
12038 					      (DECODE_LINE_FUNFIRSTLINE
12039 					       | DECODE_LINE_LIST_MODE));
12040       make_cleanup (xfree, sals.sals);
12041       default_match = 0;
12042     }
12043   else
12044     {
12045       sals.sals = XNEW (struct symtab_and_line);
12046       make_cleanup (xfree, sals.sals);
12047       init_sal (&sal);		/* Initialize to zeroes.  */
12048 
12049       /* Set sal's line, symtab, pc, and pspace to the values
12050 	 corresponding to the last call to print_frame_info.  If the
12051 	 codepoint is not valid, this will set all the fields to 0.  */
12052       get_last_displayed_sal (&sal);
12053       if (sal.symtab == 0)
12054 	error (_("No source file specified."));
12055 
12056       sals.sals[0] = sal;
12057       sals.nelts = 1;
12058 
12059       default_match = 1;
12060     }
12061 
12062   /* We don't call resolve_sal_pc here.  That's not as bad as it
12063      seems, because all existing breakpoints typically have both
12064      file/line and pc set.  So, if clear is given file/line, we can
12065      match this to existing breakpoint without obtaining pc at all.
12066 
12067      We only support clearing given the address explicitly
12068      present in breakpoint table.  Say, we've set breakpoint
12069      at file:line.  There were several PC values for that file:line,
12070      due to optimization, all in one block.
12071 
12072      We've picked one PC value.  If "clear" is issued with another
12073      PC corresponding to the same file:line, the breakpoint won't
12074      be cleared.  We probably can still clear the breakpoint, but
12075      since the other PC value is never presented to user, user
12076      can only find it by guessing, and it does not seem important
12077      to support that.  */
12078 
12079   /* For each line spec given, delete bps which correspond to it.  Do
12080      it in two passes, solely to preserve the current behavior that
12081      from_tty is forced true if we delete more than one
12082      breakpoint.  */
12083 
12084   found = NULL;
12085   make_cleanup (VEC_cleanup (breakpoint_p), &found);
12086   for (i = 0; i < sals.nelts; i++)
12087     {
12088       const char *sal_fullname;
12089 
12090       /* If exact pc given, clear bpts at that pc.
12091          If line given (pc == 0), clear all bpts on specified line.
12092          If defaulting, clear all bpts on default line
12093          or at default pc.
12094 
12095          defaulting    sal.pc != 0    tests to do
12096 
12097          0              1             pc
12098          1              1             pc _and_ line
12099          0              0             line
12100          1              0             <can't happen> */
12101 
12102       sal = sals.sals[i];
12103       sal_fullname = (sal.symtab == NULL
12104 		      ? NULL : symtab_to_fullname (sal.symtab));
12105 
12106       /* Find all matching breakpoints and add them to 'found'.  */
12107       ALL_BREAKPOINTS (b)
12108 	{
12109 	  int match = 0;
12110 	  /* Are we going to delete b?  */
12111 	  if (b->type != bp_none && !is_watchpoint (b))
12112 	    {
12113 	      struct bp_location *loc = b->loc;
12114 	      for (; loc; loc = loc->next)
12115 		{
12116 		  /* If the user specified file:line, don't allow a PC
12117 		     match.  This matches historical gdb behavior.  */
12118 		  int pc_match = (!sal.explicit_line
12119 				  && sal.pc
12120 				  && (loc->pspace == sal.pspace)
12121 				  && (loc->address == sal.pc)
12122 				  && (!section_is_overlay (loc->section)
12123 				      || loc->section == sal.section));
12124 		  int line_match = 0;
12125 
12126 		  if ((default_match || sal.explicit_line)
12127 		      && loc->symtab != NULL
12128 		      && sal_fullname != NULL
12129 		      && sal.pspace == loc->pspace
12130 		      && loc->line_number == sal.line
12131 		      && filename_cmp (symtab_to_fullname (loc->symtab),
12132 				       sal_fullname) == 0)
12133 		    line_match = 1;
12134 
12135 		  if (pc_match || line_match)
12136 		    {
12137 		      match = 1;
12138 		      break;
12139 		    }
12140 		}
12141 	    }
12142 
12143 	  if (match)
12144 	    VEC_safe_push(breakpoint_p, found, b);
12145 	}
12146     }
12147 
12148   /* Now go thru the 'found' chain and delete them.  */
12149   if (VEC_empty(breakpoint_p, found))
12150     {
12151       if (arg)
12152 	error (_("No breakpoint at %s."), arg);
12153       else
12154 	error (_("No breakpoint at this line."));
12155     }
12156 
12157   /* Remove duplicates from the vec.  */
12158   qsort (VEC_address (breakpoint_p, found),
12159 	 VEC_length (breakpoint_p, found),
12160 	 sizeof (breakpoint_p),
12161 	 compare_breakpoints);
12162   prev = VEC_index (breakpoint_p, found, 0);
12163   for (ix = 1; VEC_iterate (breakpoint_p, found, ix, b); ++ix)
12164     {
12165       if (b == prev)
12166 	{
12167 	  VEC_ordered_remove (breakpoint_p, found, ix);
12168 	  --ix;
12169 	}
12170     }
12171 
12172   if (VEC_length(breakpoint_p, found) > 1)
12173     from_tty = 1;	/* Always report if deleted more than one.  */
12174   if (from_tty)
12175     {
12176       if (VEC_length(breakpoint_p, found) == 1)
12177 	printf_unfiltered (_("Deleted breakpoint "));
12178       else
12179 	printf_unfiltered (_("Deleted breakpoints "));
12180     }
12181 
12182   for (ix = 0; VEC_iterate(breakpoint_p, found, ix, b); ix++)
12183     {
12184       if (from_tty)
12185 	printf_unfiltered ("%d ", b->number);
12186       delete_breakpoint (b);
12187     }
12188   if (from_tty)
12189     putchar_unfiltered ('\n');
12190 
12191   do_cleanups (cleanups);
12192 }
12193 
12194 /* Delete breakpoint in BS if they are `delete' breakpoints and
12195    all breakpoints that are marked for deletion, whether hit or not.
12196    This is called after any breakpoint is hit, or after errors.  */
12197 
12198 void
12199 breakpoint_auto_delete (bpstat bs)
12200 {
12201   struct breakpoint *b, *b_tmp;
12202 
12203   for (; bs; bs = bs->next)
12204     if (bs->breakpoint_at
12205 	&& bs->breakpoint_at->disposition == disp_del
12206 	&& bs->stop)
12207       delete_breakpoint (bs->breakpoint_at);
12208 
12209   ALL_BREAKPOINTS_SAFE (b, b_tmp)
12210   {
12211     if (b->disposition == disp_del_at_next_stop)
12212       delete_breakpoint (b);
12213   }
12214 }
12215 
12216 /* A comparison function for bp_location AP and BP being interfaced to
12217    qsort.  Sort elements primarily by their ADDRESS (no matter what
12218    does breakpoint_address_is_meaningful say for its OWNER),
12219    secondarily by ordering first permanent elements and
12220    terciarily just ensuring the array is sorted stable way despite
12221    qsort being an unstable algorithm.  */
12222 
12223 static int
12224 bp_location_compare (const void *ap, const void *bp)
12225 {
12226   const struct bp_location *a = *(const struct bp_location **) ap;
12227   const struct bp_location *b = *(const struct bp_location **) bp;
12228 
12229   if (a->address != b->address)
12230     return (a->address > b->address) - (a->address < b->address);
12231 
12232   /* Sort locations at the same address by their pspace number, keeping
12233      locations of the same inferior (in a multi-inferior environment)
12234      grouped.  */
12235 
12236   if (a->pspace->num != b->pspace->num)
12237     return ((a->pspace->num > b->pspace->num)
12238 	    - (a->pspace->num < b->pspace->num));
12239 
12240   /* Sort permanent breakpoints first.  */
12241   if (a->permanent != b->permanent)
12242     return (a->permanent < b->permanent) - (a->permanent > b->permanent);
12243 
12244   /* Make the internal GDB representation stable across GDB runs
12245      where A and B memory inside GDB can differ.  Breakpoint locations of
12246      the same type at the same address can be sorted in arbitrary order.  */
12247 
12248   if (a->owner->number != b->owner->number)
12249     return ((a->owner->number > b->owner->number)
12250 	    - (a->owner->number < b->owner->number));
12251 
12252   return (a > b) - (a < b);
12253 }
12254 
12255 /* Set bp_location_placed_address_before_address_max and
12256    bp_location_shadow_len_after_address_max according to the current
12257    content of the bp_location array.  */
12258 
12259 static void
12260 bp_location_target_extensions_update (void)
12261 {
12262   struct bp_location *bl, **blp_tmp;
12263 
12264   bp_location_placed_address_before_address_max = 0;
12265   bp_location_shadow_len_after_address_max = 0;
12266 
12267   ALL_BP_LOCATIONS (bl, blp_tmp)
12268     {
12269       CORE_ADDR start, end, addr;
12270 
12271       if (!bp_location_has_shadow (bl))
12272 	continue;
12273 
12274       start = bl->target_info.placed_address;
12275       end = start + bl->target_info.shadow_len;
12276 
12277       gdb_assert (bl->address >= start);
12278       addr = bl->address - start;
12279       if (addr > bp_location_placed_address_before_address_max)
12280 	bp_location_placed_address_before_address_max = addr;
12281 
12282       /* Zero SHADOW_LEN would not pass bp_location_has_shadow.  */
12283 
12284       gdb_assert (bl->address < end);
12285       addr = end - bl->address;
12286       if (addr > bp_location_shadow_len_after_address_max)
12287 	bp_location_shadow_len_after_address_max = addr;
12288     }
12289 }
12290 
12291 /* Download tracepoint locations if they haven't been.  */
12292 
12293 static void
12294 download_tracepoint_locations (void)
12295 {
12296   struct breakpoint *b;
12297   struct cleanup *old_chain;
12298   enum tribool can_download_tracepoint = TRIBOOL_UNKNOWN;
12299 
12300   old_chain = save_current_space_and_thread ();
12301 
12302   ALL_TRACEPOINTS (b)
12303     {
12304       struct bp_location *bl;
12305       struct tracepoint *t;
12306       int bp_location_downloaded = 0;
12307 
12308       if ((b->type == bp_fast_tracepoint
12309 	   ? !may_insert_fast_tracepoints
12310 	   : !may_insert_tracepoints))
12311 	continue;
12312 
12313       if (can_download_tracepoint == TRIBOOL_UNKNOWN)
12314 	{
12315 	  if (target_can_download_tracepoint ())
12316 	    can_download_tracepoint = TRIBOOL_TRUE;
12317 	  else
12318 	    can_download_tracepoint = TRIBOOL_FALSE;
12319 	}
12320 
12321       if (can_download_tracepoint == TRIBOOL_FALSE)
12322 	break;
12323 
12324       for (bl = b->loc; bl; bl = bl->next)
12325 	{
12326 	  /* In tracepoint, locations are _never_ duplicated, so
12327 	     should_be_inserted is equivalent to
12328 	     unduplicated_should_be_inserted.  */
12329 	  if (!should_be_inserted (bl) || bl->inserted)
12330 	    continue;
12331 
12332 	  switch_to_program_space_and_thread (bl->pspace);
12333 
12334 	  target_download_tracepoint (bl);
12335 
12336 	  bl->inserted = 1;
12337 	  bp_location_downloaded = 1;
12338 	}
12339       t = (struct tracepoint *) b;
12340       t->number_on_target = b->number;
12341       if (bp_location_downloaded)
12342 	observer_notify_breakpoint_modified (b);
12343     }
12344 
12345   do_cleanups (old_chain);
12346 }
12347 
12348 /* Swap the insertion/duplication state between two locations.  */
12349 
12350 static void
12351 swap_insertion (struct bp_location *left, struct bp_location *right)
12352 {
12353   const int left_inserted = left->inserted;
12354   const int left_duplicate = left->duplicate;
12355   const int left_needs_update = left->needs_update;
12356   const struct bp_target_info left_target_info = left->target_info;
12357 
12358   /* Locations of tracepoints can never be duplicated.  */
12359   if (is_tracepoint (left->owner))
12360     gdb_assert (!left->duplicate);
12361   if (is_tracepoint (right->owner))
12362     gdb_assert (!right->duplicate);
12363 
12364   left->inserted = right->inserted;
12365   left->duplicate = right->duplicate;
12366   left->needs_update = right->needs_update;
12367   left->target_info = right->target_info;
12368   right->inserted = left_inserted;
12369   right->duplicate = left_duplicate;
12370   right->needs_update = left_needs_update;
12371   right->target_info = left_target_info;
12372 }
12373 
12374 /* Force the re-insertion of the locations at ADDRESS.  This is called
12375    once a new/deleted/modified duplicate location is found and we are evaluating
12376    conditions on the target's side.  Such conditions need to be updated on
12377    the target.  */
12378 
12379 static void
12380 force_breakpoint_reinsertion (struct bp_location *bl)
12381 {
12382   struct bp_location **locp = NULL, **loc2p;
12383   struct bp_location *loc;
12384   CORE_ADDR address = 0;
12385   int pspace_num;
12386 
12387   address = bl->address;
12388   pspace_num = bl->pspace->num;
12389 
12390   /* This is only meaningful if the target is
12391      evaluating conditions and if the user has
12392      opted for condition evaluation on the target's
12393      side.  */
12394   if (gdb_evaluates_breakpoint_condition_p ()
12395       || !target_supports_evaluation_of_breakpoint_conditions ())
12396     return;
12397 
12398   /* Flag all breakpoint locations with this address and
12399      the same program space as the location
12400      as "its condition has changed".  We need to
12401      update the conditions on the target's side.  */
12402   ALL_BP_LOCATIONS_AT_ADDR (loc2p, locp, address)
12403     {
12404       loc = *loc2p;
12405 
12406       if (!is_breakpoint (loc->owner)
12407 	  || pspace_num != loc->pspace->num)
12408 	continue;
12409 
12410       /* Flag the location appropriately.  We use a different state to
12411 	 let everyone know that we already updated the set of locations
12412 	 with addr bl->address and program space bl->pspace.  This is so
12413 	 we don't have to keep calling these functions just to mark locations
12414 	 that have already been marked.  */
12415       loc->condition_changed = condition_updated;
12416 
12417       /* Free the agent expression bytecode as well.  We will compute
12418 	 it later on.  */
12419       if (loc->cond_bytecode)
12420 	{
12421 	  free_agent_expr (loc->cond_bytecode);
12422 	  loc->cond_bytecode = NULL;
12423 	}
12424     }
12425 }
12426 /* Called whether new breakpoints are created, or existing breakpoints
12427    deleted, to update the global location list and recompute which
12428    locations are duplicate of which.
12429 
12430    The INSERT_MODE flag determines whether locations may not, may, or
12431    shall be inserted now.  See 'enum ugll_insert_mode' for more
12432    info.  */
12433 
12434 static void
12435 update_global_location_list (enum ugll_insert_mode insert_mode)
12436 {
12437   struct breakpoint *b;
12438   struct bp_location **locp, *loc;
12439   struct cleanup *cleanups;
12440   /* Last breakpoint location address that was marked for update.  */
12441   CORE_ADDR last_addr = 0;
12442   /* Last breakpoint location program space that was marked for update.  */
12443   int last_pspace_num = -1;
12444 
12445   /* Used in the duplicates detection below.  When iterating over all
12446      bp_locations, points to the first bp_location of a given address.
12447      Breakpoints and watchpoints of different types are never
12448      duplicates of each other.  Keep one pointer for each type of
12449      breakpoint/watchpoint, so we only need to loop over all locations
12450      once.  */
12451   struct bp_location *bp_loc_first;  /* breakpoint */
12452   struct bp_location *wp_loc_first;  /* hardware watchpoint */
12453   struct bp_location *awp_loc_first; /* access watchpoint */
12454   struct bp_location *rwp_loc_first; /* read watchpoint */
12455 
12456   /* Saved former bp_location array which we compare against the newly
12457      built bp_location from the current state of ALL_BREAKPOINTS.  */
12458   struct bp_location **old_location, **old_locp;
12459   unsigned old_location_count;
12460 
12461   old_location = bp_location;
12462   old_location_count = bp_location_count;
12463   bp_location = NULL;
12464   bp_location_count = 0;
12465   cleanups = make_cleanup (xfree, old_location);
12466 
12467   ALL_BREAKPOINTS (b)
12468     for (loc = b->loc; loc; loc = loc->next)
12469       bp_location_count++;
12470 
12471   bp_location = XNEWVEC (struct bp_location *, bp_location_count);
12472   locp = bp_location;
12473   ALL_BREAKPOINTS (b)
12474     for (loc = b->loc; loc; loc = loc->next)
12475       *locp++ = loc;
12476   qsort (bp_location, bp_location_count, sizeof (*bp_location),
12477 	 bp_location_compare);
12478 
12479   bp_location_target_extensions_update ();
12480 
12481   /* Identify bp_location instances that are no longer present in the
12482      new list, and therefore should be freed.  Note that it's not
12483      necessary that those locations should be removed from inferior --
12484      if there's another location at the same address (previously
12485      marked as duplicate), we don't need to remove/insert the
12486      location.
12487 
12488      LOCP is kept in sync with OLD_LOCP, each pointing to the current
12489      and former bp_location array state respectively.  */
12490 
12491   locp = bp_location;
12492   for (old_locp = old_location; old_locp < old_location + old_location_count;
12493        old_locp++)
12494     {
12495       struct bp_location *old_loc = *old_locp;
12496       struct bp_location **loc2p;
12497 
12498       /* Tells if 'old_loc' is found among the new locations.  If
12499 	 not, we have to free it.  */
12500       int found_object = 0;
12501       /* Tells if the location should remain inserted in the target.  */
12502       int keep_in_target = 0;
12503       int removed = 0;
12504 
12505       /* Skip LOCP entries which will definitely never be needed.
12506 	 Stop either at or being the one matching OLD_LOC.  */
12507       while (locp < bp_location + bp_location_count
12508 	     && (*locp)->address < old_loc->address)
12509 	locp++;
12510 
12511       for (loc2p = locp;
12512 	   (loc2p < bp_location + bp_location_count
12513 	    && (*loc2p)->address == old_loc->address);
12514 	   loc2p++)
12515 	{
12516 	  /* Check if this is a new/duplicated location or a duplicated
12517 	     location that had its condition modified.  If so, we want to send
12518 	     its condition to the target if evaluation of conditions is taking
12519 	     place there.  */
12520 	  if ((*loc2p)->condition_changed == condition_modified
12521 	      && (last_addr != old_loc->address
12522 		  || last_pspace_num != old_loc->pspace->num))
12523 	    {
12524 	      force_breakpoint_reinsertion (*loc2p);
12525 	      last_pspace_num = old_loc->pspace->num;
12526 	    }
12527 
12528 	  if (*loc2p == old_loc)
12529 	    found_object = 1;
12530 	}
12531 
12532       /* We have already handled this address, update it so that we don't
12533 	 have to go through updates again.  */
12534       last_addr = old_loc->address;
12535 
12536       /* Target-side condition evaluation: Handle deleted locations.  */
12537       if (!found_object)
12538 	force_breakpoint_reinsertion (old_loc);
12539 
12540       /* If this location is no longer present, and inserted, look if
12541 	 there's maybe a new location at the same address.  If so,
12542 	 mark that one inserted, and don't remove this one.  This is
12543 	 needed so that we don't have a time window where a breakpoint
12544 	 at certain location is not inserted.  */
12545 
12546       if (old_loc->inserted)
12547 	{
12548 	  /* If the location is inserted now, we might have to remove
12549 	     it.  */
12550 
12551 	  if (found_object && should_be_inserted (old_loc))
12552 	    {
12553 	      /* The location is still present in the location list,
12554 		 and still should be inserted.  Don't do anything.  */
12555 	      keep_in_target = 1;
12556 	    }
12557 	  else
12558 	    {
12559 	      /* This location still exists, but it won't be kept in the
12560 		 target since it may have been disabled.  We proceed to
12561 		 remove its target-side condition.  */
12562 
12563 	      /* The location is either no longer present, or got
12564 		 disabled.  See if there's another location at the
12565 		 same address, in which case we don't need to remove
12566 		 this one from the target.  */
12567 
12568 	      /* OLD_LOC comes from existing struct breakpoint.  */
12569 	      if (breakpoint_address_is_meaningful (old_loc->owner))
12570 		{
12571 		  for (loc2p = locp;
12572 		       (loc2p < bp_location + bp_location_count
12573 			&& (*loc2p)->address == old_loc->address);
12574 		       loc2p++)
12575 		    {
12576 		      struct bp_location *loc2 = *loc2p;
12577 
12578 		      if (breakpoint_locations_match (loc2, old_loc))
12579 			{
12580 			  /* Read watchpoint locations are switched to
12581 			     access watchpoints, if the former are not
12582 			     supported, but the latter are.  */
12583 			  if (is_hardware_watchpoint (old_loc->owner))
12584 			    {
12585 			      gdb_assert (is_hardware_watchpoint (loc2->owner));
12586 			      loc2->watchpoint_type = old_loc->watchpoint_type;
12587 			    }
12588 
12589 			  /* loc2 is a duplicated location. We need to check
12590 			     if it should be inserted in case it will be
12591 			     unduplicated.  */
12592 			  if (loc2 != old_loc
12593 			      && unduplicated_should_be_inserted (loc2))
12594 			    {
12595 			      swap_insertion (old_loc, loc2);
12596 			      keep_in_target = 1;
12597 			      break;
12598 			    }
12599 			}
12600 		    }
12601 		}
12602 	    }
12603 
12604 	  if (!keep_in_target)
12605 	    {
12606 	      if (remove_breakpoint (old_loc))
12607 		{
12608 		  /* This is just about all we can do.  We could keep
12609 		     this location on the global list, and try to
12610 		     remove it next time, but there's no particular
12611 		     reason why we will succeed next time.
12612 
12613 		     Note that at this point, old_loc->owner is still
12614 		     valid, as delete_breakpoint frees the breakpoint
12615 		     only after calling us.  */
12616 		  printf_filtered (_("warning: Error removing "
12617 				     "breakpoint %d\n"),
12618 				   old_loc->owner->number);
12619 		}
12620 	      removed = 1;
12621 	    }
12622 	}
12623 
12624       if (!found_object)
12625 	{
12626 	  if (removed && target_is_non_stop_p ()
12627 	      && need_moribund_for_location_type (old_loc))
12628 	    {
12629 	      /* This location was removed from the target.  In
12630 		 non-stop mode, a race condition is possible where
12631 		 we've removed a breakpoint, but stop events for that
12632 		 breakpoint are already queued and will arrive later.
12633 		 We apply an heuristic to be able to distinguish such
12634 		 SIGTRAPs from other random SIGTRAPs: we keep this
12635 		 breakpoint location for a bit, and will retire it
12636 		 after we see some number of events.  The theory here
12637 		 is that reporting of events should, "on the average",
12638 		 be fair, so after a while we'll see events from all
12639 		 threads that have anything of interest, and no longer
12640 		 need to keep this breakpoint location around.  We
12641 		 don't hold locations forever so to reduce chances of
12642 		 mistaking a non-breakpoint SIGTRAP for a breakpoint
12643 		 SIGTRAP.
12644 
12645 		 The heuristic failing can be disastrous on
12646 		 decr_pc_after_break targets.
12647 
12648 		 On decr_pc_after_break targets, like e.g., x86-linux,
12649 		 if we fail to recognize a late breakpoint SIGTRAP,
12650 		 because events_till_retirement has reached 0 too
12651 		 soon, we'll fail to do the PC adjustment, and report
12652 		 a random SIGTRAP to the user.  When the user resumes
12653 		 the inferior, it will most likely immediately crash
12654 		 with SIGILL/SIGBUS/SIGSEGV, or worse, get silently
12655 		 corrupted, because of being resumed e.g., in the
12656 		 middle of a multi-byte instruction, or skipped a
12657 		 one-byte instruction.  This was actually seen happen
12658 		 on native x86-linux, and should be less rare on
12659 		 targets that do not support new thread events, like
12660 		 remote, due to the heuristic depending on
12661 		 thread_count.
12662 
12663 		 Mistaking a random SIGTRAP for a breakpoint trap
12664 		 causes similar symptoms (PC adjustment applied when
12665 		 it shouldn't), but then again, playing with SIGTRAPs
12666 		 behind the debugger's back is asking for trouble.
12667 
12668 		 Since hardware watchpoint traps are always
12669 		 distinguishable from other traps, so we don't need to
12670 		 apply keep hardware watchpoint moribund locations
12671 		 around.  We simply always ignore hardware watchpoint
12672 		 traps we can no longer explain.  */
12673 
12674 	      old_loc->events_till_retirement = 3 * (thread_count () + 1);
12675 	      old_loc->owner = NULL;
12676 
12677 	      VEC_safe_push (bp_location_p, moribund_locations, old_loc);
12678 	    }
12679 	  else
12680 	    {
12681 	      old_loc->owner = NULL;
12682 	      decref_bp_location (&old_loc);
12683 	    }
12684 	}
12685     }
12686 
12687   /* Rescan breakpoints at the same address and section, marking the
12688      first one as "first" and any others as "duplicates".  This is so
12689      that the bpt instruction is only inserted once.  If we have a
12690      permanent breakpoint at the same place as BPT, make that one the
12691      official one, and the rest as duplicates.  Permanent breakpoints
12692      are sorted first for the same address.
12693 
12694      Do the same for hardware watchpoints, but also considering the
12695      watchpoint's type (regular/access/read) and length.  */
12696 
12697   bp_loc_first = NULL;
12698   wp_loc_first = NULL;
12699   awp_loc_first = NULL;
12700   rwp_loc_first = NULL;
12701   ALL_BP_LOCATIONS (loc, locp)
12702     {
12703       /* ALL_BP_LOCATIONS bp_location has LOC->OWNER always
12704 	 non-NULL.  */
12705       struct bp_location **loc_first_p;
12706       b = loc->owner;
12707 
12708       if (!unduplicated_should_be_inserted (loc)
12709 	  || !breakpoint_address_is_meaningful (b)
12710 	  /* Don't detect duplicate for tracepoint locations because they are
12711 	   never duplicated.  See the comments in field `duplicate' of
12712 	   `struct bp_location'.  */
12713 	  || is_tracepoint (b))
12714 	{
12715 	  /* Clear the condition modification flag.  */
12716 	  loc->condition_changed = condition_unchanged;
12717 	  continue;
12718 	}
12719 
12720       if (b->type == bp_hardware_watchpoint)
12721 	loc_first_p = &wp_loc_first;
12722       else if (b->type == bp_read_watchpoint)
12723 	loc_first_p = &rwp_loc_first;
12724       else if (b->type == bp_access_watchpoint)
12725 	loc_first_p = &awp_loc_first;
12726       else
12727 	loc_first_p = &bp_loc_first;
12728 
12729       if (*loc_first_p == NULL
12730 	  || (overlay_debugging && loc->section != (*loc_first_p)->section)
12731 	  || !breakpoint_locations_match (loc, *loc_first_p))
12732 	{
12733 	  *loc_first_p = loc;
12734 	  loc->duplicate = 0;
12735 
12736 	  if (is_breakpoint (loc->owner) && loc->condition_changed)
12737 	    {
12738 	      loc->needs_update = 1;
12739 	      /* Clear the condition modification flag.  */
12740 	      loc->condition_changed = condition_unchanged;
12741 	    }
12742 	  continue;
12743 	}
12744 
12745 
12746       /* This and the above ensure the invariant that the first location
12747 	 is not duplicated, and is the inserted one.
12748 	 All following are marked as duplicated, and are not inserted.  */
12749       if (loc->inserted)
12750 	swap_insertion (loc, *loc_first_p);
12751       loc->duplicate = 1;
12752 
12753       /* Clear the condition modification flag.  */
12754       loc->condition_changed = condition_unchanged;
12755     }
12756 
12757   if (insert_mode == UGLL_INSERT || breakpoints_should_be_inserted_now ())
12758     {
12759       if (insert_mode != UGLL_DONT_INSERT)
12760 	insert_breakpoint_locations ();
12761       else
12762 	{
12763 	  /* Even though the caller told us to not insert new
12764 	     locations, we may still need to update conditions on the
12765 	     target's side of breakpoints that were already inserted
12766 	     if the target is evaluating breakpoint conditions.  We
12767 	     only update conditions for locations that are marked
12768 	     "needs_update".  */
12769 	  update_inserted_breakpoint_locations ();
12770 	}
12771     }
12772 
12773   if (insert_mode != UGLL_DONT_INSERT)
12774     download_tracepoint_locations ();
12775 
12776   do_cleanups (cleanups);
12777 }
12778 
12779 void
12780 breakpoint_retire_moribund (void)
12781 {
12782   struct bp_location *loc;
12783   int ix;
12784 
12785   for (ix = 0; VEC_iterate (bp_location_p, moribund_locations, ix, loc); ++ix)
12786     if (--(loc->events_till_retirement) == 0)
12787       {
12788 	decref_bp_location (&loc);
12789 	VEC_unordered_remove (bp_location_p, moribund_locations, ix);
12790 	--ix;
12791       }
12792 }
12793 
12794 static void
12795 update_global_location_list_nothrow (enum ugll_insert_mode insert_mode)
12796 {
12797 
12798   TRY
12799     {
12800       update_global_location_list (insert_mode);
12801     }
12802   CATCH (e, RETURN_MASK_ERROR)
12803     {
12804     }
12805   END_CATCH
12806 }
12807 
12808 /* Clear BKP from a BPS.  */
12809 
12810 static void
12811 bpstat_remove_bp_location (bpstat bps, struct breakpoint *bpt)
12812 {
12813   bpstat bs;
12814 
12815   for (bs = bps; bs; bs = bs->next)
12816     if (bs->breakpoint_at == bpt)
12817       {
12818 	bs->breakpoint_at = NULL;
12819 	bs->old_val = NULL;
12820 	/* bs->commands will be freed later.  */
12821       }
12822 }
12823 
12824 /* Callback for iterate_over_threads.  */
12825 static int
12826 bpstat_remove_breakpoint_callback (struct thread_info *th, void *data)
12827 {
12828   struct breakpoint *bpt = (struct breakpoint *) data;
12829 
12830   bpstat_remove_bp_location (th->control.stop_bpstat, bpt);
12831   return 0;
12832 }
12833 
12834 /* Helper for breakpoint and tracepoint breakpoint_ops->mention
12835    callbacks.  */
12836 
12837 static void
12838 say_where (struct breakpoint *b)
12839 {
12840   struct value_print_options opts;
12841 
12842   get_user_print_options (&opts);
12843 
12844   /* i18n: cagney/2005-02-11: Below needs to be merged into a
12845      single string.  */
12846   if (b->loc == NULL)
12847     {
12848       /* For pending locations, the output differs slightly based
12849 	 on b->extra_string.  If this is non-NULL, it contains either
12850 	 a condition or dprintf arguments.  */
12851       if (b->extra_string == NULL)
12852 	{
12853 	  printf_filtered (_(" (%s) pending."),
12854 			   event_location_to_string (b->location));
12855 	}
12856       else if (b->type == bp_dprintf)
12857 	{
12858 	  printf_filtered (_(" (%s,%s) pending."),
12859 			   event_location_to_string (b->location),
12860 			   b->extra_string);
12861 	}
12862       else
12863 	{
12864 	  printf_filtered (_(" (%s %s) pending."),
12865 			   event_location_to_string (b->location),
12866 			   b->extra_string);
12867 	}
12868     }
12869   else
12870     {
12871       if (opts.addressprint || b->loc->symtab == NULL)
12872 	{
12873 	  printf_filtered (" at ");
12874 	  fputs_filtered (paddress (b->loc->gdbarch, b->loc->address),
12875 			  gdb_stdout);
12876 	}
12877       if (b->loc->symtab != NULL)
12878 	{
12879 	  /* If there is a single location, we can print the location
12880 	     more nicely.  */
12881 	  if (b->loc->next == NULL)
12882 	    printf_filtered (": file %s, line %d.",
12883 			     symtab_to_filename_for_display (b->loc->symtab),
12884 			     b->loc->line_number);
12885 	  else
12886 	    /* This is not ideal, but each location may have a
12887 	       different file name, and this at least reflects the
12888 	       real situation somewhat.  */
12889 	    printf_filtered (": %s.",
12890 			     event_location_to_string (b->location));
12891 	}
12892 
12893       if (b->loc->next)
12894 	{
12895 	  struct bp_location *loc = b->loc;
12896 	  int n = 0;
12897 	  for (; loc; loc = loc->next)
12898 	    ++n;
12899 	  printf_filtered (" (%d locations)", n);
12900 	}
12901     }
12902 }
12903 
12904 /* Default bp_location_ops methods.  */
12905 
12906 static void
12907 bp_location_dtor (struct bp_location *self)
12908 {
12909   xfree (self->cond);
12910   if (self->cond_bytecode)
12911     free_agent_expr (self->cond_bytecode);
12912   xfree (self->function_name);
12913 
12914   VEC_free (agent_expr_p, self->target_info.conditions);
12915   VEC_free (agent_expr_p, self->target_info.tcommands);
12916 }
12917 
12918 static const struct bp_location_ops bp_location_ops =
12919 {
12920   bp_location_dtor
12921 };
12922 
12923 /* Default breakpoint_ops methods all breakpoint_ops ultimately
12924    inherit from.  */
12925 
12926 static void
12927 base_breakpoint_dtor (struct breakpoint *self)
12928 {
12929   decref_counted_command_line (&self->commands);
12930   xfree (self->cond_string);
12931   xfree (self->extra_string);
12932   xfree (self->filter);
12933   delete_event_location (self->location);
12934   delete_event_location (self->location_range_end);
12935 }
12936 
12937 static struct bp_location *
12938 base_breakpoint_allocate_location (struct breakpoint *self)
12939 {
12940   struct bp_location *loc;
12941 
12942   loc = XNEW (struct bp_location);
12943   init_bp_location (loc, &bp_location_ops, self);
12944   return loc;
12945 }
12946 
12947 static void
12948 base_breakpoint_re_set (struct breakpoint *b)
12949 {
12950   /* Nothing to re-set. */
12951 }
12952 
12953 #define internal_error_pure_virtual_called() \
12954   gdb_assert_not_reached ("pure virtual function called")
12955 
12956 static int
12957 base_breakpoint_insert_location (struct bp_location *bl)
12958 {
12959   internal_error_pure_virtual_called ();
12960 }
12961 
12962 static int
12963 base_breakpoint_remove_location (struct bp_location *bl,
12964 				 enum remove_bp_reason reason)
12965 {
12966   internal_error_pure_virtual_called ();
12967 }
12968 
12969 static int
12970 base_breakpoint_breakpoint_hit (const struct bp_location *bl,
12971 				struct address_space *aspace,
12972 				CORE_ADDR bp_addr,
12973 				const struct target_waitstatus *ws)
12974 {
12975   internal_error_pure_virtual_called ();
12976 }
12977 
12978 static void
12979 base_breakpoint_check_status (bpstat bs)
12980 {
12981   /* Always stop.   */
12982 }
12983 
12984 /* A "works_in_software_mode" breakpoint_ops method that just internal
12985    errors.  */
12986 
12987 static int
12988 base_breakpoint_works_in_software_mode (const struct breakpoint *b)
12989 {
12990   internal_error_pure_virtual_called ();
12991 }
12992 
12993 /* A "resources_needed" breakpoint_ops method that just internal
12994    errors.  */
12995 
12996 static int
12997 base_breakpoint_resources_needed (const struct bp_location *bl)
12998 {
12999   internal_error_pure_virtual_called ();
13000 }
13001 
13002 static enum print_stop_action
13003 base_breakpoint_print_it (bpstat bs)
13004 {
13005   internal_error_pure_virtual_called ();
13006 }
13007 
13008 static void
13009 base_breakpoint_print_one_detail (const struct breakpoint *self,
13010 				  struct ui_out *uiout)
13011 {
13012   /* nothing */
13013 }
13014 
13015 static void
13016 base_breakpoint_print_mention (struct breakpoint *b)
13017 {
13018   internal_error_pure_virtual_called ();
13019 }
13020 
13021 static void
13022 base_breakpoint_print_recreate (struct breakpoint *b, struct ui_file *fp)
13023 {
13024   internal_error_pure_virtual_called ();
13025 }
13026 
13027 static void
13028 base_breakpoint_create_sals_from_location
13029   (const struct event_location *location,
13030    struct linespec_result *canonical,
13031    enum bptype type_wanted)
13032 {
13033   internal_error_pure_virtual_called ();
13034 }
13035 
13036 static void
13037 base_breakpoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13038 					struct linespec_result *c,
13039 					char *cond_string,
13040 					char *extra_string,
13041 					enum bptype type_wanted,
13042 					enum bpdisp disposition,
13043 					int thread,
13044 					int task, int ignore_count,
13045 					const struct breakpoint_ops *o,
13046 					int from_tty, int enabled,
13047 					int internal, unsigned flags)
13048 {
13049   internal_error_pure_virtual_called ();
13050 }
13051 
13052 static void
13053 base_breakpoint_decode_location (struct breakpoint *b,
13054 				 const struct event_location *location,
13055 				 struct program_space *search_pspace,
13056 				 struct symtabs_and_lines *sals)
13057 {
13058   internal_error_pure_virtual_called ();
13059 }
13060 
13061 /* The default 'explains_signal' method.  */
13062 
13063 static int
13064 base_breakpoint_explains_signal (struct breakpoint *b, enum gdb_signal sig)
13065 {
13066   return 1;
13067 }
13068 
13069 /* The default "after_condition_true" method.  */
13070 
13071 static void
13072 base_breakpoint_after_condition_true (struct bpstats *bs)
13073 {
13074   /* Nothing to do.   */
13075 }
13076 
13077 struct breakpoint_ops base_breakpoint_ops =
13078 {
13079   base_breakpoint_dtor,
13080   base_breakpoint_allocate_location,
13081   base_breakpoint_re_set,
13082   base_breakpoint_insert_location,
13083   base_breakpoint_remove_location,
13084   base_breakpoint_breakpoint_hit,
13085   base_breakpoint_check_status,
13086   base_breakpoint_resources_needed,
13087   base_breakpoint_works_in_software_mode,
13088   base_breakpoint_print_it,
13089   NULL,
13090   base_breakpoint_print_one_detail,
13091   base_breakpoint_print_mention,
13092   base_breakpoint_print_recreate,
13093   base_breakpoint_create_sals_from_location,
13094   base_breakpoint_create_breakpoints_sal,
13095   base_breakpoint_decode_location,
13096   base_breakpoint_explains_signal,
13097   base_breakpoint_after_condition_true,
13098 };
13099 
13100 /* Default breakpoint_ops methods.  */
13101 
13102 static void
13103 bkpt_re_set (struct breakpoint *b)
13104 {
13105   /* FIXME: is this still reachable?  */
13106   if (breakpoint_event_location_empty_p (b))
13107     {
13108       /* Anything without a location can't be re-set.  */
13109       delete_breakpoint (b);
13110       return;
13111     }
13112 
13113   breakpoint_re_set_default (b);
13114 }
13115 
13116 static int
13117 bkpt_insert_location (struct bp_location *bl)
13118 {
13119   if (bl->loc_type == bp_loc_hardware_breakpoint)
13120     return target_insert_hw_breakpoint (bl->gdbarch, &bl->target_info);
13121   else
13122     return target_insert_breakpoint (bl->gdbarch, &bl->target_info);
13123 }
13124 
13125 static int
13126 bkpt_remove_location (struct bp_location *bl, enum remove_bp_reason reason)
13127 {
13128   if (bl->loc_type == bp_loc_hardware_breakpoint)
13129     return target_remove_hw_breakpoint (bl->gdbarch, &bl->target_info);
13130   else
13131     return target_remove_breakpoint (bl->gdbarch, &bl->target_info, reason);
13132 }
13133 
13134 static int
13135 bkpt_breakpoint_hit (const struct bp_location *bl,
13136 		     struct address_space *aspace, CORE_ADDR bp_addr,
13137 		     const struct target_waitstatus *ws)
13138 {
13139   if (ws->kind != TARGET_WAITKIND_STOPPED
13140       || ws->value.sig != GDB_SIGNAL_TRAP)
13141     return 0;
13142 
13143   if (!breakpoint_address_match (bl->pspace->aspace, bl->address,
13144 				 aspace, bp_addr))
13145     return 0;
13146 
13147   if (overlay_debugging		/* unmapped overlay section */
13148       && section_is_overlay (bl->section)
13149       && !section_is_mapped (bl->section))
13150     return 0;
13151 
13152   return 1;
13153 }
13154 
13155 static int
13156 dprintf_breakpoint_hit (const struct bp_location *bl,
13157 			struct address_space *aspace, CORE_ADDR bp_addr,
13158 			const struct target_waitstatus *ws)
13159 {
13160   if (dprintf_style == dprintf_style_agent
13161       && target_can_run_breakpoint_commands ())
13162     {
13163       /* An agent-style dprintf never causes a stop.  If we see a trap
13164 	 for this address it must be for a breakpoint that happens to
13165 	 be set at the same address.  */
13166       return 0;
13167     }
13168 
13169   return bkpt_breakpoint_hit (bl, aspace, bp_addr, ws);
13170 }
13171 
13172 static int
13173 bkpt_resources_needed (const struct bp_location *bl)
13174 {
13175   gdb_assert (bl->owner->type == bp_hardware_breakpoint);
13176 
13177   return 1;
13178 }
13179 
13180 static enum print_stop_action
13181 bkpt_print_it (bpstat bs)
13182 {
13183   struct breakpoint *b;
13184   const struct bp_location *bl;
13185   int bp_temp;
13186   struct ui_out *uiout = current_uiout;
13187 
13188   gdb_assert (bs->bp_location_at != NULL);
13189 
13190   bl = bs->bp_location_at;
13191   b = bs->breakpoint_at;
13192 
13193   bp_temp = b->disposition == disp_del;
13194   if (bl->address != bl->requested_address)
13195     breakpoint_adjustment_warning (bl->requested_address,
13196 				   bl->address,
13197 				   b->number, 1);
13198   annotate_breakpoint (b->number);
13199   maybe_print_thread_hit_breakpoint (uiout);
13200 
13201   if (bp_temp)
13202     ui_out_text (uiout, "Temporary breakpoint ");
13203   else
13204     ui_out_text (uiout, "Breakpoint ");
13205   if (ui_out_is_mi_like_p (uiout))
13206     {
13207       ui_out_field_string (uiout, "reason",
13208 			   async_reason_lookup (EXEC_ASYNC_BREAKPOINT_HIT));
13209       ui_out_field_string (uiout, "disp", bpdisp_text (b->disposition));
13210     }
13211   ui_out_field_int (uiout, "bkptno", b->number);
13212   ui_out_text (uiout, ", ");
13213 
13214   return PRINT_SRC_AND_LOC;
13215 }
13216 
13217 static void
13218 bkpt_print_mention (struct breakpoint *b)
13219 {
13220   if (ui_out_is_mi_like_p (current_uiout))
13221     return;
13222 
13223   switch (b->type)
13224     {
13225     case bp_breakpoint:
13226     case bp_gnu_ifunc_resolver:
13227       if (b->disposition == disp_del)
13228 	printf_filtered (_("Temporary breakpoint"));
13229       else
13230 	printf_filtered (_("Breakpoint"));
13231       printf_filtered (_(" %d"), b->number);
13232       if (b->type == bp_gnu_ifunc_resolver)
13233 	printf_filtered (_(" at gnu-indirect-function resolver"));
13234       break;
13235     case bp_hardware_breakpoint:
13236       printf_filtered (_("Hardware assisted breakpoint %d"), b->number);
13237       break;
13238     case bp_dprintf:
13239       printf_filtered (_("Dprintf %d"), b->number);
13240       break;
13241     }
13242 
13243   say_where (b);
13244 }
13245 
13246 static void
13247 bkpt_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13248 {
13249   if (tp->type == bp_breakpoint && tp->disposition == disp_del)
13250     fprintf_unfiltered (fp, "tbreak");
13251   else if (tp->type == bp_breakpoint)
13252     fprintf_unfiltered (fp, "break");
13253   else if (tp->type == bp_hardware_breakpoint
13254 	   && tp->disposition == disp_del)
13255     fprintf_unfiltered (fp, "thbreak");
13256   else if (tp->type == bp_hardware_breakpoint)
13257     fprintf_unfiltered (fp, "hbreak");
13258   else
13259     internal_error (__FILE__, __LINE__,
13260 		    _("unhandled breakpoint type %d"), (int) tp->type);
13261 
13262   fprintf_unfiltered (fp, " %s",
13263 		      event_location_to_string (tp->location));
13264 
13265   /* Print out extra_string if this breakpoint is pending.  It might
13266      contain, for example, conditions that were set by the user.  */
13267   if (tp->loc == NULL && tp->extra_string != NULL)
13268     fprintf_unfiltered (fp, " %s", tp->extra_string);
13269 
13270   print_recreate_thread (tp, fp);
13271 }
13272 
13273 static void
13274 bkpt_create_sals_from_location (const struct event_location *location,
13275 				struct linespec_result *canonical,
13276 				enum bptype type_wanted)
13277 {
13278   create_sals_from_location_default (location, canonical, type_wanted);
13279 }
13280 
13281 static void
13282 bkpt_create_breakpoints_sal (struct gdbarch *gdbarch,
13283 			     struct linespec_result *canonical,
13284 			     char *cond_string,
13285 			     char *extra_string,
13286 			     enum bptype type_wanted,
13287 			     enum bpdisp disposition,
13288 			     int thread,
13289 			     int task, int ignore_count,
13290 			     const struct breakpoint_ops *ops,
13291 			     int from_tty, int enabled,
13292 			     int internal, unsigned flags)
13293 {
13294   create_breakpoints_sal_default (gdbarch, canonical,
13295 				  cond_string, extra_string,
13296 				  type_wanted,
13297 				  disposition, thread, task,
13298 				  ignore_count, ops, from_tty,
13299 				  enabled, internal, flags);
13300 }
13301 
13302 static void
13303 bkpt_decode_location (struct breakpoint *b,
13304 		      const struct event_location *location,
13305 		      struct program_space *search_pspace,
13306 		      struct symtabs_and_lines *sals)
13307 {
13308   decode_location_default (b, location, search_pspace, sals);
13309 }
13310 
13311 /* Virtual table for internal breakpoints.  */
13312 
13313 static void
13314 internal_bkpt_re_set (struct breakpoint *b)
13315 {
13316   switch (b->type)
13317     {
13318       /* Delete overlay event and longjmp master breakpoints; they
13319 	 will be reset later by breakpoint_re_set.  */
13320     case bp_overlay_event:
13321     case bp_longjmp_master:
13322     case bp_std_terminate_master:
13323     case bp_exception_master:
13324       delete_breakpoint (b);
13325       break;
13326 
13327       /* This breakpoint is special, it's set up when the inferior
13328          starts and we really don't want to touch it.  */
13329     case bp_shlib_event:
13330 
13331       /* Like bp_shlib_event, this breakpoint type is special.  Once
13332 	 it is set up, we do not want to touch it.  */
13333     case bp_thread_event:
13334       break;
13335     }
13336 }
13337 
13338 static void
13339 internal_bkpt_check_status (bpstat bs)
13340 {
13341   if (bs->breakpoint_at->type == bp_shlib_event)
13342     {
13343       /* If requested, stop when the dynamic linker notifies GDB of
13344 	 events.  This allows the user to get control and place
13345 	 breakpoints in initializer routines for dynamically loaded
13346 	 objects (among other things).  */
13347       bs->stop = stop_on_solib_events;
13348       bs->print = stop_on_solib_events;
13349     }
13350   else
13351     bs->stop = 0;
13352 }
13353 
13354 static enum print_stop_action
13355 internal_bkpt_print_it (bpstat bs)
13356 {
13357   struct breakpoint *b;
13358 
13359   b = bs->breakpoint_at;
13360 
13361   switch (b->type)
13362     {
13363     case bp_shlib_event:
13364       /* Did we stop because the user set the stop_on_solib_events
13365 	 variable?  (If so, we report this as a generic, "Stopped due
13366 	 to shlib event" message.) */
13367       print_solib_event (0);
13368       break;
13369 
13370     case bp_thread_event:
13371       /* Not sure how we will get here.
13372 	 GDB should not stop for these breakpoints.  */
13373       printf_filtered (_("Thread Event Breakpoint: gdb should not stop!\n"));
13374       break;
13375 
13376     case bp_overlay_event:
13377       /* By analogy with the thread event, GDB should not stop for these.  */
13378       printf_filtered (_("Overlay Event Breakpoint: gdb should not stop!\n"));
13379       break;
13380 
13381     case bp_longjmp_master:
13382       /* These should never be enabled.  */
13383       printf_filtered (_("Longjmp Master Breakpoint: gdb should not stop!\n"));
13384       break;
13385 
13386     case bp_std_terminate_master:
13387       /* These should never be enabled.  */
13388       printf_filtered (_("std::terminate Master Breakpoint: "
13389 			 "gdb should not stop!\n"));
13390       break;
13391 
13392     case bp_exception_master:
13393       /* These should never be enabled.  */
13394       printf_filtered (_("Exception Master Breakpoint: "
13395 			 "gdb should not stop!\n"));
13396       break;
13397     }
13398 
13399   return PRINT_NOTHING;
13400 }
13401 
13402 static void
13403 internal_bkpt_print_mention (struct breakpoint *b)
13404 {
13405   /* Nothing to mention.  These breakpoints are internal.  */
13406 }
13407 
13408 /* Virtual table for momentary breakpoints  */
13409 
13410 static void
13411 momentary_bkpt_re_set (struct breakpoint *b)
13412 {
13413   /* Keep temporary breakpoints, which can be encountered when we step
13414      over a dlopen call and solib_add is resetting the breakpoints.
13415      Otherwise these should have been blown away via the cleanup chain
13416      or by breakpoint_init_inferior when we rerun the executable.  */
13417 }
13418 
13419 static void
13420 momentary_bkpt_check_status (bpstat bs)
13421 {
13422   /* Nothing.  The point of these breakpoints is causing a stop.  */
13423 }
13424 
13425 static enum print_stop_action
13426 momentary_bkpt_print_it (bpstat bs)
13427 {
13428   return PRINT_UNKNOWN;
13429 }
13430 
13431 static void
13432 momentary_bkpt_print_mention (struct breakpoint *b)
13433 {
13434   /* Nothing to mention.  These breakpoints are internal.  */
13435 }
13436 
13437 /* Ensure INITIATING_FRAME is cleared when no such breakpoint exists.
13438 
13439    It gets cleared already on the removal of the first one of such placed
13440    breakpoints.  This is OK as they get all removed altogether.  */
13441 
13442 static void
13443 longjmp_bkpt_dtor (struct breakpoint *self)
13444 {
13445   struct thread_info *tp = find_thread_global_id (self->thread);
13446 
13447   if (tp)
13448     tp->initiating_frame = null_frame_id;
13449 
13450   momentary_breakpoint_ops.dtor (self);
13451 }
13452 
13453 /* Specific methods for probe breakpoints.  */
13454 
13455 static int
13456 bkpt_probe_insert_location (struct bp_location *bl)
13457 {
13458   int v = bkpt_insert_location (bl);
13459 
13460   if (v == 0)
13461     {
13462       /* The insertion was successful, now let's set the probe's semaphore
13463 	 if needed.  */
13464       if (bl->probe.probe->pops->set_semaphore != NULL)
13465 	bl->probe.probe->pops->set_semaphore (bl->probe.probe,
13466 					      bl->probe.objfile,
13467 					      bl->gdbarch);
13468     }
13469 
13470   return v;
13471 }
13472 
13473 static int
13474 bkpt_probe_remove_location (struct bp_location *bl,
13475 			    enum remove_bp_reason reason)
13476 {
13477   /* Let's clear the semaphore before removing the location.  */
13478   if (bl->probe.probe->pops->clear_semaphore != NULL)
13479     bl->probe.probe->pops->clear_semaphore (bl->probe.probe,
13480 					    bl->probe.objfile,
13481 					    bl->gdbarch);
13482 
13483   return bkpt_remove_location (bl, reason);
13484 }
13485 
13486 static void
13487 bkpt_probe_create_sals_from_location (const struct event_location *location,
13488 				      struct linespec_result *canonical,
13489 				      enum bptype type_wanted)
13490 {
13491   struct linespec_sals lsal;
13492 
13493   lsal.sals = parse_probes (location, NULL, canonical);
13494   lsal.canonical = xstrdup (event_location_to_string (canonical->location));
13495   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13496 }
13497 
13498 static void
13499 bkpt_probe_decode_location (struct breakpoint *b,
13500 			    const struct event_location *location,
13501 			    struct program_space *search_pspace,
13502 			    struct symtabs_and_lines *sals)
13503 {
13504   *sals = parse_probes (location, search_pspace, NULL);
13505   if (!sals->sals)
13506     error (_("probe not found"));
13507 }
13508 
13509 /* The breakpoint_ops structure to be used in tracepoints.  */
13510 
13511 static void
13512 tracepoint_re_set (struct breakpoint *b)
13513 {
13514   breakpoint_re_set_default (b);
13515 }
13516 
13517 static int
13518 tracepoint_breakpoint_hit (const struct bp_location *bl,
13519 			   struct address_space *aspace, CORE_ADDR bp_addr,
13520 			   const struct target_waitstatus *ws)
13521 {
13522   /* By definition, the inferior does not report stops at
13523      tracepoints.  */
13524   return 0;
13525 }
13526 
13527 static void
13528 tracepoint_print_one_detail (const struct breakpoint *self,
13529 			     struct ui_out *uiout)
13530 {
13531   struct tracepoint *tp = (struct tracepoint *) self;
13532   if (tp->static_trace_marker_id)
13533     {
13534       gdb_assert (self->type == bp_static_tracepoint);
13535 
13536       ui_out_text (uiout, "\tmarker id is ");
13537       ui_out_field_string (uiout, "static-tracepoint-marker-string-id",
13538 			   tp->static_trace_marker_id);
13539       ui_out_text (uiout, "\n");
13540     }
13541 }
13542 
13543 static void
13544 tracepoint_print_mention (struct breakpoint *b)
13545 {
13546   if (ui_out_is_mi_like_p (current_uiout))
13547     return;
13548 
13549   switch (b->type)
13550     {
13551     case bp_tracepoint:
13552       printf_filtered (_("Tracepoint"));
13553       printf_filtered (_(" %d"), b->number);
13554       break;
13555     case bp_fast_tracepoint:
13556       printf_filtered (_("Fast tracepoint"));
13557       printf_filtered (_(" %d"), b->number);
13558       break;
13559     case bp_static_tracepoint:
13560       printf_filtered (_("Static tracepoint"));
13561       printf_filtered (_(" %d"), b->number);
13562       break;
13563     default:
13564       internal_error (__FILE__, __LINE__,
13565 		      _("unhandled tracepoint type %d"), (int) b->type);
13566     }
13567 
13568   say_where (b);
13569 }
13570 
13571 static void
13572 tracepoint_print_recreate (struct breakpoint *self, struct ui_file *fp)
13573 {
13574   struct tracepoint *tp = (struct tracepoint *) self;
13575 
13576   if (self->type == bp_fast_tracepoint)
13577     fprintf_unfiltered (fp, "ftrace");
13578   else if (self->type == bp_static_tracepoint)
13579     fprintf_unfiltered (fp, "strace");
13580   else if (self->type == bp_tracepoint)
13581     fprintf_unfiltered (fp, "trace");
13582   else
13583     internal_error (__FILE__, __LINE__,
13584 		    _("unhandled tracepoint type %d"), (int) self->type);
13585 
13586   fprintf_unfiltered (fp, " %s",
13587 		      event_location_to_string (self->location));
13588   print_recreate_thread (self, fp);
13589 
13590   if (tp->pass_count)
13591     fprintf_unfiltered (fp, "  passcount %d\n", tp->pass_count);
13592 }
13593 
13594 static void
13595 tracepoint_create_sals_from_location (const struct event_location *location,
13596 				      struct linespec_result *canonical,
13597 				      enum bptype type_wanted)
13598 {
13599   create_sals_from_location_default (location, canonical, type_wanted);
13600 }
13601 
13602 static void
13603 tracepoint_create_breakpoints_sal (struct gdbarch *gdbarch,
13604 				   struct linespec_result *canonical,
13605 				   char *cond_string,
13606 				   char *extra_string,
13607 				   enum bptype type_wanted,
13608 				   enum bpdisp disposition,
13609 				   int thread,
13610 				   int task, int ignore_count,
13611 				   const struct breakpoint_ops *ops,
13612 				   int from_tty, int enabled,
13613 				   int internal, unsigned flags)
13614 {
13615   create_breakpoints_sal_default (gdbarch, canonical,
13616 				  cond_string, extra_string,
13617 				  type_wanted,
13618 				  disposition, thread, task,
13619 				  ignore_count, ops, from_tty,
13620 				  enabled, internal, flags);
13621 }
13622 
13623 static void
13624 tracepoint_decode_location (struct breakpoint *b,
13625 			    const struct event_location *location,
13626 			    struct program_space *search_pspace,
13627 			    struct symtabs_and_lines *sals)
13628 {
13629   decode_location_default (b, location, search_pspace, sals);
13630 }
13631 
13632 struct breakpoint_ops tracepoint_breakpoint_ops;
13633 
13634 /* The breakpoint_ops structure to be use on tracepoints placed in a
13635    static probe.  */
13636 
13637 static void
13638 tracepoint_probe_create_sals_from_location
13639   (const struct event_location *location,
13640    struct linespec_result *canonical,
13641    enum bptype type_wanted)
13642 {
13643   /* We use the same method for breakpoint on probes.  */
13644   bkpt_probe_create_sals_from_location (location, canonical, type_wanted);
13645 }
13646 
13647 static void
13648 tracepoint_probe_decode_location (struct breakpoint *b,
13649 				  const struct event_location *location,
13650 				  struct program_space *search_pspace,
13651 				  struct symtabs_and_lines *sals)
13652 {
13653   /* We use the same method for breakpoint on probes.  */
13654   bkpt_probe_decode_location (b, location, search_pspace, sals);
13655 }
13656 
13657 static struct breakpoint_ops tracepoint_probe_breakpoint_ops;
13658 
13659 /* Dprintf breakpoint_ops methods.  */
13660 
13661 static void
13662 dprintf_re_set (struct breakpoint *b)
13663 {
13664   breakpoint_re_set_default (b);
13665 
13666   /* extra_string should never be non-NULL for dprintf.  */
13667   gdb_assert (b->extra_string != NULL);
13668 
13669   /* 1 - connect to target 1, that can run breakpoint commands.
13670      2 - create a dprintf, which resolves fine.
13671      3 - disconnect from target 1
13672      4 - connect to target 2, that can NOT run breakpoint commands.
13673 
13674      After steps #3/#4, you'll want the dprintf command list to
13675      be updated, because target 1 and 2 may well return different
13676      answers for target_can_run_breakpoint_commands().
13677      Given absence of finer grained resetting, we get to do
13678      it all the time.  */
13679   if (b->extra_string != NULL)
13680     update_dprintf_command_list (b);
13681 }
13682 
13683 /* Implement the "print_recreate" breakpoint_ops method for dprintf.  */
13684 
13685 static void
13686 dprintf_print_recreate (struct breakpoint *tp, struct ui_file *fp)
13687 {
13688   fprintf_unfiltered (fp, "dprintf %s,%s",
13689 		      event_location_to_string (tp->location),
13690 		      tp->extra_string);
13691   print_recreate_thread (tp, fp);
13692 }
13693 
13694 /* Implement the "after_condition_true" breakpoint_ops method for
13695    dprintf.
13696 
13697    dprintf's are implemented with regular commands in their command
13698    list, but we run the commands here instead of before presenting the
13699    stop to the user, as dprintf's don't actually cause a stop.  This
13700    also makes it so that the commands of multiple dprintfs at the same
13701    address are all handled.  */
13702 
13703 static void
13704 dprintf_after_condition_true (struct bpstats *bs)
13705 {
13706   struct cleanup *old_chain;
13707   struct bpstats tmp_bs = { NULL };
13708   struct bpstats *tmp_bs_p = &tmp_bs;
13709 
13710   /* dprintf's never cause a stop.  This wasn't set in the
13711      check_status hook instead because that would make the dprintf's
13712      condition not be evaluated.  */
13713   bs->stop = 0;
13714 
13715   /* Run the command list here.  Take ownership of it instead of
13716      copying.  We never want these commands to run later in
13717      bpstat_do_actions, if a breakpoint that causes a stop happens to
13718      be set at same address as this dprintf, or even if running the
13719      commands here throws.  */
13720   tmp_bs.commands = bs->commands;
13721   bs->commands = NULL;
13722   old_chain = make_cleanup_decref_counted_command_line (&tmp_bs.commands);
13723 
13724   bpstat_do_actions_1 (&tmp_bs_p);
13725 
13726   /* 'tmp_bs.commands' will usually be NULL by now, but
13727      bpstat_do_actions_1 may return early without processing the whole
13728      list.  */
13729   do_cleanups (old_chain);
13730 }
13731 
13732 /* The breakpoint_ops structure to be used on static tracepoints with
13733    markers (`-m').  */
13734 
13735 static void
13736 strace_marker_create_sals_from_location (const struct event_location *location,
13737 					 struct linespec_result *canonical,
13738 					 enum bptype type_wanted)
13739 {
13740   struct linespec_sals lsal;
13741   const char *arg_start, *arg;
13742   char *str;
13743   struct cleanup *cleanup;
13744 
13745   arg = arg_start = get_linespec_location (location);
13746   lsal.sals = decode_static_tracepoint_spec (&arg);
13747 
13748   str = savestring (arg_start, arg - arg_start);
13749   cleanup = make_cleanup (xfree, str);
13750   canonical->location = new_linespec_location (&str);
13751   do_cleanups (cleanup);
13752 
13753   lsal.canonical = xstrdup (event_location_to_string (canonical->location));
13754   VEC_safe_push (linespec_sals, canonical->sals, &lsal);
13755 }
13756 
13757 static void
13758 strace_marker_create_breakpoints_sal (struct gdbarch *gdbarch,
13759 				      struct linespec_result *canonical,
13760 				      char *cond_string,
13761 				      char *extra_string,
13762 				      enum bptype type_wanted,
13763 				      enum bpdisp disposition,
13764 				      int thread,
13765 				      int task, int ignore_count,
13766 				      const struct breakpoint_ops *ops,
13767 				      int from_tty, int enabled,
13768 				      int internal, unsigned flags)
13769 {
13770   int i;
13771   struct linespec_sals *lsal = VEC_index (linespec_sals,
13772 					  canonical->sals, 0);
13773 
13774   /* If the user is creating a static tracepoint by marker id
13775      (strace -m MARKER_ID), then store the sals index, so that
13776      breakpoint_re_set can try to match up which of the newly
13777      found markers corresponds to this one, and, don't try to
13778      expand multiple locations for each sal, given than SALS
13779      already should contain all sals for MARKER_ID.  */
13780 
13781   for (i = 0; i < lsal->sals.nelts; ++i)
13782     {
13783       struct symtabs_and_lines expanded;
13784       struct tracepoint *tp;
13785       struct cleanup *old_chain;
13786       struct event_location *location;
13787 
13788       expanded.nelts = 1;
13789       expanded.sals = &lsal->sals.sals[i];
13790 
13791       location = copy_event_location (canonical->location);
13792       old_chain = make_cleanup_delete_event_location (location);
13793 
13794       tp = XCNEW (struct tracepoint);
13795       init_breakpoint_sal (&tp->base, gdbarch, expanded,
13796 			   location, NULL,
13797 			   cond_string, extra_string,
13798 			   type_wanted, disposition,
13799 			   thread, task, ignore_count, ops,
13800 			   from_tty, enabled, internal, flags,
13801 			   canonical->special_display);
13802       /* Given that its possible to have multiple markers with
13803 	 the same string id, if the user is creating a static
13804 	 tracepoint by marker id ("strace -m MARKER_ID"), then
13805 	 store the sals index, so that breakpoint_re_set can
13806 	 try to match up which of the newly found markers
13807 	 corresponds to this one  */
13808       tp->static_trace_marker_id_idx = i;
13809 
13810       install_breakpoint (internal, &tp->base, 0);
13811 
13812       discard_cleanups (old_chain);
13813     }
13814 }
13815 
13816 static void
13817 strace_marker_decode_location (struct breakpoint *b,
13818 			       const struct event_location *location,
13819 			       struct program_space *search_pspace,
13820 			       struct symtabs_and_lines *sals)
13821 {
13822   struct tracepoint *tp = (struct tracepoint *) b;
13823   const char *s = get_linespec_location (location);
13824 
13825   *sals = decode_static_tracepoint_spec (&s);
13826   if (sals->nelts > tp->static_trace_marker_id_idx)
13827     {
13828       sals->sals[0] = sals->sals[tp->static_trace_marker_id_idx];
13829       sals->nelts = 1;
13830     }
13831   else
13832     error (_("marker %s not found"), tp->static_trace_marker_id);
13833 }
13834 
13835 static struct breakpoint_ops strace_marker_breakpoint_ops;
13836 
13837 static int
13838 strace_marker_p (struct breakpoint *b)
13839 {
13840   return b->ops == &strace_marker_breakpoint_ops;
13841 }
13842 
13843 /* Delete a breakpoint and clean up all traces of it in the data
13844    structures.  */
13845 
13846 void
13847 delete_breakpoint (struct breakpoint *bpt)
13848 {
13849   struct breakpoint *b;
13850 
13851   gdb_assert (bpt != NULL);
13852 
13853   /* Has this bp already been deleted?  This can happen because
13854      multiple lists can hold pointers to bp's.  bpstat lists are
13855      especial culprits.
13856 
13857      One example of this happening is a watchpoint's scope bp.  When
13858      the scope bp triggers, we notice that the watchpoint is out of
13859      scope, and delete it.  We also delete its scope bp.  But the
13860      scope bp is marked "auto-deleting", and is already on a bpstat.
13861      That bpstat is then checked for auto-deleting bp's, which are
13862      deleted.
13863 
13864      A real solution to this problem might involve reference counts in
13865      bp's, and/or giving them pointers back to their referencing
13866      bpstat's, and teaching delete_breakpoint to only free a bp's
13867      storage when no more references were extent.  A cheaper bandaid
13868      was chosen.  */
13869   if (bpt->type == bp_none)
13870     return;
13871 
13872   /* At least avoid this stale reference until the reference counting
13873      of breakpoints gets resolved.  */
13874   if (bpt->related_breakpoint != bpt)
13875     {
13876       struct breakpoint *related;
13877       struct watchpoint *w;
13878 
13879       if (bpt->type == bp_watchpoint_scope)
13880 	w = (struct watchpoint *) bpt->related_breakpoint;
13881       else if (bpt->related_breakpoint->type == bp_watchpoint_scope)
13882 	w = (struct watchpoint *) bpt;
13883       else
13884 	w = NULL;
13885       if (w != NULL)
13886 	watchpoint_del_at_next_stop (w);
13887 
13888       /* Unlink bpt from the bpt->related_breakpoint ring.  */
13889       for (related = bpt; related->related_breakpoint != bpt;
13890 	   related = related->related_breakpoint);
13891       related->related_breakpoint = bpt->related_breakpoint;
13892       bpt->related_breakpoint = bpt;
13893     }
13894 
13895   /* watch_command_1 creates a watchpoint but only sets its number if
13896      update_watchpoint succeeds in creating its bp_locations.  If there's
13897      a problem in that process, we'll be asked to delete the half-created
13898      watchpoint.  In that case, don't announce the deletion.  */
13899   if (bpt->number)
13900     observer_notify_breakpoint_deleted (bpt);
13901 
13902   if (breakpoint_chain == bpt)
13903     breakpoint_chain = bpt->next;
13904 
13905   ALL_BREAKPOINTS (b)
13906     if (b->next == bpt)
13907     {
13908       b->next = bpt->next;
13909       break;
13910     }
13911 
13912   /* Be sure no bpstat's are pointing at the breakpoint after it's
13913      been freed.  */
13914   /* FIXME, how can we find all bpstat's?  We just check stop_bpstat
13915      in all threads for now.  Note that we cannot just remove bpstats
13916      pointing at bpt from the stop_bpstat list entirely, as breakpoint
13917      commands are associated with the bpstat; if we remove it here,
13918      then the later call to bpstat_do_actions (&stop_bpstat); in
13919      event-top.c won't do anything, and temporary breakpoints with
13920      commands won't work.  */
13921 
13922   iterate_over_threads (bpstat_remove_breakpoint_callback, bpt);
13923 
13924   /* Now that breakpoint is removed from breakpoint list, update the
13925      global location list.  This will remove locations that used to
13926      belong to this breakpoint.  Do this before freeing the breakpoint
13927      itself, since remove_breakpoint looks at location's owner.  It
13928      might be better design to have location completely
13929      self-contained, but it's not the case now.  */
13930   update_global_location_list (UGLL_DONT_INSERT);
13931 
13932   bpt->ops->dtor (bpt);
13933   /* On the chance that someone will soon try again to delete this
13934      same bp, we mark it as deleted before freeing its storage.  */
13935   bpt->type = bp_none;
13936   xfree (bpt);
13937 }
13938 
13939 static void
13940 do_delete_breakpoint_cleanup (void *b)
13941 {
13942   delete_breakpoint ((struct breakpoint *) b);
13943 }
13944 
13945 struct cleanup *
13946 make_cleanup_delete_breakpoint (struct breakpoint *b)
13947 {
13948   return make_cleanup (do_delete_breakpoint_cleanup, b);
13949 }
13950 
13951 /* Iterator function to call a user-provided callback function once
13952    for each of B and its related breakpoints.  */
13953 
13954 static void
13955 iterate_over_related_breakpoints (struct breakpoint *b,
13956 				  void (*function) (struct breakpoint *,
13957 						    void *),
13958 				  void *data)
13959 {
13960   struct breakpoint *related;
13961 
13962   related = b;
13963   do
13964     {
13965       struct breakpoint *next;
13966 
13967       /* FUNCTION may delete RELATED.  */
13968       next = related->related_breakpoint;
13969 
13970       if (next == related)
13971 	{
13972 	  /* RELATED is the last ring entry.  */
13973 	  function (related, data);
13974 
13975 	  /* FUNCTION may have deleted it, so we'd never reach back to
13976 	     B.  There's nothing left to do anyway, so just break
13977 	     out.  */
13978 	  break;
13979 	}
13980       else
13981 	function (related, data);
13982 
13983       related = next;
13984     }
13985   while (related != b);
13986 }
13987 
13988 static void
13989 do_delete_breakpoint (struct breakpoint *b, void *ignore)
13990 {
13991   delete_breakpoint (b);
13992 }
13993 
13994 /* A callback for map_breakpoint_numbers that calls
13995    delete_breakpoint.  */
13996 
13997 static void
13998 do_map_delete_breakpoint (struct breakpoint *b, void *ignore)
13999 {
14000   iterate_over_related_breakpoints (b, do_delete_breakpoint, NULL);
14001 }
14002 
14003 void
14004 delete_command (char *arg, int from_tty)
14005 {
14006   struct breakpoint *b, *b_tmp;
14007 
14008   dont_repeat ();
14009 
14010   if (arg == 0)
14011     {
14012       int breaks_to_delete = 0;
14013 
14014       /* Delete all breakpoints if no argument.  Do not delete
14015          internal breakpoints, these have to be deleted with an
14016          explicit breakpoint number argument.  */
14017       ALL_BREAKPOINTS (b)
14018 	if (user_breakpoint_p (b))
14019 	  {
14020 	    breaks_to_delete = 1;
14021 	    break;
14022 	  }
14023 
14024       /* Ask user only if there are some breakpoints to delete.  */
14025       if (!from_tty
14026 	  || (breaks_to_delete && query (_("Delete all breakpoints? "))))
14027 	{
14028 	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
14029 	    if (user_breakpoint_p (b))
14030 	      delete_breakpoint (b);
14031 	}
14032     }
14033   else
14034     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
14035 }
14036 
14037 /* Return true if all locations of B bound to PSPACE are pending.  If
14038    PSPACE is NULL, all locations of all program spaces are
14039    considered.  */
14040 
14041 static int
14042 all_locations_are_pending (struct breakpoint *b, struct program_space *pspace)
14043 {
14044   struct bp_location *loc;
14045 
14046   for (loc = b->loc; loc != NULL; loc = loc->next)
14047     if ((pspace == NULL
14048 	 || loc->pspace == pspace)
14049 	&& !loc->shlib_disabled
14050 	&& !loc->pspace->executing_startup)
14051       return 0;
14052   return 1;
14053 }
14054 
14055 /* Subroutine of update_breakpoint_locations to simplify it.
14056    Return non-zero if multiple fns in list LOC have the same name.
14057    Null names are ignored.  */
14058 
14059 static int
14060 ambiguous_names_p (struct bp_location *loc)
14061 {
14062   struct bp_location *l;
14063   htab_t htab = htab_create_alloc (13, htab_hash_string,
14064 				   (int (*) (const void *,
14065 					     const void *)) streq,
14066 				   NULL, xcalloc, xfree);
14067 
14068   for (l = loc; l != NULL; l = l->next)
14069     {
14070       const char **slot;
14071       const char *name = l->function_name;
14072 
14073       /* Allow for some names to be NULL, ignore them.  */
14074       if (name == NULL)
14075 	continue;
14076 
14077       slot = (const char **) htab_find_slot (htab, (const void *) name,
14078 					     INSERT);
14079       /* NOTE: We can assume slot != NULL here because xcalloc never
14080 	 returns NULL.  */
14081       if (*slot != NULL)
14082 	{
14083 	  htab_delete (htab);
14084 	  return 1;
14085 	}
14086       *slot = name;
14087     }
14088 
14089   htab_delete (htab);
14090   return 0;
14091 }
14092 
14093 /* When symbols change, it probably means the sources changed as well,
14094    and it might mean the static tracepoint markers are no longer at
14095    the same address or line numbers they used to be at last we
14096    checked.  Losing your static tracepoints whenever you rebuild is
14097    undesirable.  This function tries to resync/rematch gdb static
14098    tracepoints with the markers on the target, for static tracepoints
14099    that have not been set by marker id.  Static tracepoint that have
14100    been set by marker id are reset by marker id in breakpoint_re_set.
14101    The heuristic is:
14102 
14103    1) For a tracepoint set at a specific address, look for a marker at
14104    the old PC.  If one is found there, assume to be the same marker.
14105    If the name / string id of the marker found is different from the
14106    previous known name, assume that means the user renamed the marker
14107    in the sources, and output a warning.
14108 
14109    2) For a tracepoint set at a given line number, look for a marker
14110    at the new address of the old line number.  If one is found there,
14111    assume to be the same marker.  If the name / string id of the
14112    marker found is different from the previous known name, assume that
14113    means the user renamed the marker in the sources, and output a
14114    warning.
14115 
14116    3) If a marker is no longer found at the same address or line, it
14117    may mean the marker no longer exists.  But it may also just mean
14118    the code changed a bit.  Maybe the user added a few lines of code
14119    that made the marker move up or down (in line number terms).  Ask
14120    the target for info about the marker with the string id as we knew
14121    it.  If found, update line number and address in the matching
14122    static tracepoint.  This will get confused if there's more than one
14123    marker with the same ID (possible in UST, although unadvised
14124    precisely because it confuses tools).  */
14125 
14126 static struct symtab_and_line
14127 update_static_tracepoint (struct breakpoint *b, struct symtab_and_line sal)
14128 {
14129   struct tracepoint *tp = (struct tracepoint *) b;
14130   struct static_tracepoint_marker marker;
14131   CORE_ADDR pc;
14132 
14133   pc = sal.pc;
14134   if (sal.line)
14135     find_line_pc (sal.symtab, sal.line, &pc);
14136 
14137   if (target_static_tracepoint_marker_at (pc, &marker))
14138     {
14139       if (strcmp (tp->static_trace_marker_id, marker.str_id) != 0)
14140 	warning (_("static tracepoint %d changed probed marker from %s to %s"),
14141 		 b->number,
14142 		 tp->static_trace_marker_id, marker.str_id);
14143 
14144       xfree (tp->static_trace_marker_id);
14145       tp->static_trace_marker_id = xstrdup (marker.str_id);
14146       release_static_tracepoint_marker (&marker);
14147 
14148       return sal;
14149     }
14150 
14151   /* Old marker wasn't found on target at lineno.  Try looking it up
14152      by string ID.  */
14153   if (!sal.explicit_pc
14154       && sal.line != 0
14155       && sal.symtab != NULL
14156       && tp->static_trace_marker_id != NULL)
14157     {
14158       VEC(static_tracepoint_marker_p) *markers;
14159 
14160       markers
14161 	= target_static_tracepoint_markers_by_strid (tp->static_trace_marker_id);
14162 
14163       if (!VEC_empty(static_tracepoint_marker_p, markers))
14164 	{
14165 	  struct symtab_and_line sal2;
14166 	  struct symbol *sym;
14167 	  struct static_tracepoint_marker *tpmarker;
14168 	  struct ui_out *uiout = current_uiout;
14169 	  struct explicit_location explicit_loc;
14170 
14171 	  tpmarker = VEC_index (static_tracepoint_marker_p, markers, 0);
14172 
14173 	  xfree (tp->static_trace_marker_id);
14174 	  tp->static_trace_marker_id = xstrdup (tpmarker->str_id);
14175 
14176 	  warning (_("marker for static tracepoint %d (%s) not "
14177 		     "found at previous line number"),
14178 		   b->number, tp->static_trace_marker_id);
14179 
14180 	  init_sal (&sal2);
14181 
14182 	  sal2.pc = tpmarker->address;
14183 
14184 	  sal2 = find_pc_line (tpmarker->address, 0);
14185 	  sym = find_pc_sect_function (tpmarker->address, NULL);
14186 	  ui_out_text (uiout, "Now in ");
14187 	  if (sym)
14188 	    {
14189 	      ui_out_field_string (uiout, "func",
14190 				   SYMBOL_PRINT_NAME (sym));
14191 	      ui_out_text (uiout, " at ");
14192 	    }
14193 	  ui_out_field_string (uiout, "file",
14194 			       symtab_to_filename_for_display (sal2.symtab));
14195 	  ui_out_text (uiout, ":");
14196 
14197 	  if (ui_out_is_mi_like_p (uiout))
14198 	    {
14199 	      const char *fullname = symtab_to_fullname (sal2.symtab);
14200 
14201 	      ui_out_field_string (uiout, "fullname", fullname);
14202 	    }
14203 
14204 	  ui_out_field_int (uiout, "line", sal2.line);
14205 	  ui_out_text (uiout, "\n");
14206 
14207 	  b->loc->line_number = sal2.line;
14208 	  b->loc->symtab = sym != NULL ? sal2.symtab : NULL;
14209 
14210 	  delete_event_location (b->location);
14211 	  initialize_explicit_location (&explicit_loc);
14212 	  explicit_loc.source_filename
14213 	    = ASTRDUP (symtab_to_filename_for_display (sal2.symtab));
14214 	  explicit_loc.line_offset.offset = b->loc->line_number;
14215 	  explicit_loc.line_offset.sign = LINE_OFFSET_NONE;
14216 	  b->location = new_explicit_location (&explicit_loc);
14217 
14218 	  /* Might be nice to check if function changed, and warn if
14219 	     so.  */
14220 
14221 	  release_static_tracepoint_marker (tpmarker);
14222 	}
14223     }
14224   return sal;
14225 }
14226 
14227 /* Returns 1 iff locations A and B are sufficiently same that
14228    we don't need to report breakpoint as changed.  */
14229 
14230 static int
14231 locations_are_equal (struct bp_location *a, struct bp_location *b)
14232 {
14233   while (a && b)
14234     {
14235       if (a->address != b->address)
14236 	return 0;
14237 
14238       if (a->shlib_disabled != b->shlib_disabled)
14239 	return 0;
14240 
14241       if (a->enabled != b->enabled)
14242 	return 0;
14243 
14244       a = a->next;
14245       b = b->next;
14246     }
14247 
14248   if ((a == NULL) != (b == NULL))
14249     return 0;
14250 
14251   return 1;
14252 }
14253 
14254 /* Split all locations of B that are bound to PSPACE out of B's
14255    location list to a separate list and return that list's head.  If
14256    PSPACE is NULL, hoist out all locations of B.  */
14257 
14258 static struct bp_location *
14259 hoist_existing_locations (struct breakpoint *b, struct program_space *pspace)
14260 {
14261   struct bp_location head;
14262   struct bp_location *i = b->loc;
14263   struct bp_location **i_link = &b->loc;
14264   struct bp_location *hoisted = &head;
14265 
14266   if (pspace == NULL)
14267     {
14268       i = b->loc;
14269       b->loc = NULL;
14270       return i;
14271     }
14272 
14273   head.next = NULL;
14274 
14275   while (i != NULL)
14276     {
14277       if (i->pspace == pspace)
14278 	{
14279 	  *i_link = i->next;
14280 	  i->next = NULL;
14281 	  hoisted->next = i;
14282 	  hoisted = i;
14283 	}
14284       else
14285 	i_link = &i->next;
14286       i = *i_link;
14287     }
14288 
14289   return head.next;
14290 }
14291 
14292 /* Create new breakpoint locations for B (a hardware or software
14293    breakpoint) based on SALS and SALS_END.  If SALS_END.NELTS is not
14294    zero, then B is a ranged breakpoint.  Only recreates locations for
14295    FILTER_PSPACE.  Locations of other program spaces are left
14296    untouched.  */
14297 
14298 void
14299 update_breakpoint_locations (struct breakpoint *b,
14300 			     struct program_space *filter_pspace,
14301 			     struct symtabs_and_lines sals,
14302 			     struct symtabs_and_lines sals_end)
14303 {
14304   int i;
14305   struct bp_location *existing_locations;
14306 
14307   if (sals_end.nelts != 0 && (sals.nelts != 1 || sals_end.nelts != 1))
14308     {
14309       /* Ranged breakpoints have only one start location and one end
14310 	 location.  */
14311       b->enable_state = bp_disabled;
14312       printf_unfiltered (_("Could not reset ranged breakpoint %d: "
14313 			   "multiple locations found\n"),
14314 			 b->number);
14315       return;
14316     }
14317 
14318   /* If there's no new locations, and all existing locations are
14319      pending, don't do anything.  This optimizes the common case where
14320      all locations are in the same shared library, that was unloaded.
14321      We'd like to retain the location, so that when the library is
14322      loaded again, we don't loose the enabled/disabled status of the
14323      individual locations.  */
14324   if (all_locations_are_pending (b, filter_pspace) && sals.nelts == 0)
14325     return;
14326 
14327   existing_locations = hoist_existing_locations (b, filter_pspace);
14328 
14329   for (i = 0; i < sals.nelts; ++i)
14330     {
14331       struct bp_location *new_loc;
14332 
14333       switch_to_program_space_and_thread (sals.sals[i].pspace);
14334 
14335       new_loc = add_location_to_breakpoint (b, &(sals.sals[i]));
14336 
14337       /* Reparse conditions, they might contain references to the
14338 	 old symtab.  */
14339       if (b->cond_string != NULL)
14340 	{
14341 	  const char *s;
14342 
14343 	  s = b->cond_string;
14344 	  TRY
14345 	    {
14346 	      new_loc->cond = parse_exp_1 (&s, sals.sals[i].pc,
14347 					   block_for_pc (sals.sals[i].pc),
14348 					   0);
14349 	    }
14350 	  CATCH (e, RETURN_MASK_ERROR)
14351 	    {
14352 	      warning (_("failed to reevaluate condition "
14353 			 "for breakpoint %d: %s"),
14354 		       b->number, e.message);
14355 	      new_loc->enabled = 0;
14356 	    }
14357 	  END_CATCH
14358 	}
14359 
14360       if (sals_end.nelts)
14361 	{
14362 	  CORE_ADDR end = find_breakpoint_range_end (sals_end.sals[0]);
14363 
14364 	  new_loc->length = end - sals.sals[0].pc + 1;
14365 	}
14366     }
14367 
14368   /* If possible, carry over 'disable' status from existing
14369      breakpoints.  */
14370   {
14371     struct bp_location *e = existing_locations;
14372     /* If there are multiple breakpoints with the same function name,
14373        e.g. for inline functions, comparing function names won't work.
14374        Instead compare pc addresses; this is just a heuristic as things
14375        may have moved, but in practice it gives the correct answer
14376        often enough until a better solution is found.  */
14377     int have_ambiguous_names = ambiguous_names_p (b->loc);
14378 
14379     for (; e; e = e->next)
14380       {
14381 	if (!e->enabled && e->function_name)
14382 	  {
14383 	    struct bp_location *l = b->loc;
14384 	    if (have_ambiguous_names)
14385 	      {
14386 		for (; l; l = l->next)
14387 		  if (breakpoint_locations_match (e, l))
14388 		    {
14389 		      l->enabled = 0;
14390 		      break;
14391 		    }
14392 	      }
14393 	    else
14394 	      {
14395 		for (; l; l = l->next)
14396 		  if (l->function_name
14397 		      && strcmp (e->function_name, l->function_name) == 0)
14398 		    {
14399 		      l->enabled = 0;
14400 		      break;
14401 		    }
14402 	      }
14403 	  }
14404       }
14405   }
14406 
14407   if (!locations_are_equal (existing_locations, b->loc))
14408     observer_notify_breakpoint_modified (b);
14409 }
14410 
14411 /* Find the SaL locations corresponding to the given LOCATION.
14412    On return, FOUND will be 1 if any SaL was found, zero otherwise.  */
14413 
14414 static struct symtabs_and_lines
14415 location_to_sals (struct breakpoint *b, struct event_location *location,
14416 		  struct program_space *search_pspace, int *found)
14417 {
14418   struct symtabs_and_lines sals = {0};
14419   struct gdb_exception exception = exception_none;
14420 
14421   gdb_assert (b->ops != NULL);
14422 
14423   TRY
14424     {
14425       b->ops->decode_location (b, location, search_pspace, &sals);
14426     }
14427   CATCH (e, RETURN_MASK_ERROR)
14428     {
14429       int not_found_and_ok = 0;
14430 
14431       exception = e;
14432 
14433       /* For pending breakpoints, it's expected that parsing will
14434 	 fail until the right shared library is loaded.  User has
14435 	 already told to create pending breakpoints and don't need
14436 	 extra messages.  If breakpoint is in bp_shlib_disabled
14437 	 state, then user already saw the message about that
14438 	 breakpoint being disabled, and don't want to see more
14439 	 errors.  */
14440       if (e.error == NOT_FOUND_ERROR
14441 	  && (b->condition_not_parsed
14442 	      || (b->loc != NULL
14443 		  && search_pspace != NULL
14444 		  && b->loc->pspace != search_pspace)
14445 	      || (b->loc && b->loc->shlib_disabled)
14446 	      || (b->loc && b->loc->pspace->executing_startup)
14447 	      || b->enable_state == bp_disabled))
14448 	not_found_and_ok = 1;
14449 
14450       if (!not_found_and_ok)
14451 	{
14452 	  /* We surely don't want to warn about the same breakpoint
14453 	     10 times.  One solution, implemented here, is disable
14454 	     the breakpoint on error.  Another solution would be to
14455 	     have separate 'warning emitted' flag.  Since this
14456 	     happens only when a binary has changed, I don't know
14457 	     which approach is better.  */
14458 	  b->enable_state = bp_disabled;
14459 	  throw_exception (e);
14460 	}
14461     }
14462   END_CATCH
14463 
14464   if (exception.reason == 0 || exception.error != NOT_FOUND_ERROR)
14465     {
14466       int i;
14467 
14468       for (i = 0; i < sals.nelts; ++i)
14469 	resolve_sal_pc (&sals.sals[i]);
14470       if (b->condition_not_parsed && b->extra_string != NULL)
14471 	{
14472 	  char *cond_string, *extra_string;
14473 	  int thread, task;
14474 
14475 	  find_condition_and_thread (b->extra_string, sals.sals[0].pc,
14476 				     &cond_string, &thread, &task,
14477 				     &extra_string);
14478 	  gdb_assert (b->cond_string == NULL);
14479 	  if (cond_string)
14480 	    b->cond_string = cond_string;
14481 	  b->thread = thread;
14482 	  b->task = task;
14483 	  if (extra_string)
14484 	    {
14485 	      xfree (b->extra_string);
14486 	      b->extra_string = extra_string;
14487 	    }
14488 	  b->condition_not_parsed = 0;
14489 	}
14490 
14491       if (b->type == bp_static_tracepoint && !strace_marker_p (b))
14492 	sals.sals[0] = update_static_tracepoint (b, sals.sals[0]);
14493 
14494       *found = 1;
14495     }
14496   else
14497     *found = 0;
14498 
14499   return sals;
14500 }
14501 
14502 /* The default re_set method, for typical hardware or software
14503    breakpoints.  Reevaluate the breakpoint and recreate its
14504    locations.  */
14505 
14506 static void
14507 breakpoint_re_set_default (struct breakpoint *b)
14508 {
14509   int found;
14510   struct symtabs_and_lines sals, sals_end;
14511   struct symtabs_and_lines expanded = {0};
14512   struct symtabs_and_lines expanded_end = {0};
14513   struct program_space *filter_pspace = current_program_space;
14514 
14515   sals = location_to_sals (b, b->location, filter_pspace, &found);
14516   if (found)
14517     {
14518       make_cleanup (xfree, sals.sals);
14519       expanded = sals;
14520     }
14521 
14522   if (b->location_range_end != NULL)
14523     {
14524       sals_end = location_to_sals (b, b->location_range_end,
14525 				   filter_pspace, &found);
14526       if (found)
14527 	{
14528 	  make_cleanup (xfree, sals_end.sals);
14529 	  expanded_end = sals_end;
14530 	}
14531     }
14532 
14533   update_breakpoint_locations (b, filter_pspace, expanded, expanded_end);
14534 }
14535 
14536 /* Default method for creating SALs from an address string.  It basically
14537    calls parse_breakpoint_sals.  Return 1 for success, zero for failure.  */
14538 
14539 static void
14540 create_sals_from_location_default (const struct event_location *location,
14541 				   struct linespec_result *canonical,
14542 				   enum bptype type_wanted)
14543 {
14544   parse_breakpoint_sals (location, canonical);
14545 }
14546 
14547 /* Call create_breakpoints_sal for the given arguments.  This is the default
14548    function for the `create_breakpoints_sal' method of
14549    breakpoint_ops.  */
14550 
14551 static void
14552 create_breakpoints_sal_default (struct gdbarch *gdbarch,
14553 				struct linespec_result *canonical,
14554 				char *cond_string,
14555 				char *extra_string,
14556 				enum bptype type_wanted,
14557 				enum bpdisp disposition,
14558 				int thread,
14559 				int task, int ignore_count,
14560 				const struct breakpoint_ops *ops,
14561 				int from_tty, int enabled,
14562 				int internal, unsigned flags)
14563 {
14564   create_breakpoints_sal (gdbarch, canonical, cond_string,
14565 			  extra_string,
14566 			  type_wanted, disposition,
14567 			  thread, task, ignore_count, ops, from_tty,
14568 			  enabled, internal, flags);
14569 }
14570 
14571 /* Decode the line represented by S by calling decode_line_full.  This is the
14572    default function for the `decode_location' method of breakpoint_ops.  */
14573 
14574 static void
14575 decode_location_default (struct breakpoint *b,
14576 			 const struct event_location *location,
14577 			 struct program_space *search_pspace,
14578 			 struct symtabs_and_lines *sals)
14579 {
14580   struct linespec_result canonical;
14581 
14582   init_linespec_result (&canonical);
14583   decode_line_full (location, DECODE_LINE_FUNFIRSTLINE, search_pspace,
14584 		    (struct symtab *) NULL, 0,
14585 		    &canonical, multiple_symbols_all,
14586 		    b->filter);
14587 
14588   /* We should get 0 or 1 resulting SALs.  */
14589   gdb_assert (VEC_length (linespec_sals, canonical.sals) < 2);
14590 
14591   if (VEC_length (linespec_sals, canonical.sals) > 0)
14592     {
14593       struct linespec_sals *lsal;
14594 
14595       lsal = VEC_index (linespec_sals, canonical.sals, 0);
14596       *sals = lsal->sals;
14597       /* Arrange it so the destructor does not free the
14598 	 contents.  */
14599       lsal->sals.sals = NULL;
14600     }
14601 
14602   destroy_linespec_result (&canonical);
14603 }
14604 
14605 /* Prepare the global context for a re-set of breakpoint B.  */
14606 
14607 static struct cleanup *
14608 prepare_re_set_context (struct breakpoint *b)
14609 {
14610   input_radix = b->input_radix;
14611   set_language (b->language);
14612 
14613   return make_cleanup (null_cleanup, NULL);
14614 }
14615 
14616 /* Reset a breakpoint given it's struct breakpoint * BINT.
14617    The value we return ends up being the return value from catch_errors.
14618    Unused in this case.  */
14619 
14620 static int
14621 breakpoint_re_set_one (void *bint)
14622 {
14623   /* Get past catch_errs.  */
14624   struct breakpoint *b = (struct breakpoint *) bint;
14625   struct cleanup *cleanups;
14626 
14627   cleanups = prepare_re_set_context (b);
14628   b->ops->re_set (b);
14629   do_cleanups (cleanups);
14630   return 0;
14631 }
14632 
14633 /* Re-set breakpoint locations for the current program space.
14634    Locations bound to other program spaces are left untouched.  */
14635 
14636 void
14637 breakpoint_re_set (void)
14638 {
14639   struct breakpoint *b, *b_tmp;
14640   enum language save_language;
14641   int save_input_radix;
14642   struct cleanup *old_chain;
14643 
14644   save_language = current_language->la_language;
14645   save_input_radix = input_radix;
14646   old_chain = save_current_space_and_thread ();
14647 
14648   /* Note: we must not try to insert locations until after all
14649      breakpoints have been re-set.  Otherwise, e.g., when re-setting
14650      breakpoint 1, we'd insert the locations of breakpoint 2, which
14651      hadn't been re-set yet, and thus may have stale locations.  */
14652 
14653   ALL_BREAKPOINTS_SAFE (b, b_tmp)
14654   {
14655     /* Format possible error msg.  */
14656     char *message = xstrprintf ("Error in re-setting breakpoint %d: ",
14657 				b->number);
14658     struct cleanup *cleanups = make_cleanup (xfree, message);
14659     catch_errors (breakpoint_re_set_one, b, message, RETURN_MASK_ALL);
14660     do_cleanups (cleanups);
14661   }
14662   set_language (save_language);
14663   input_radix = save_input_radix;
14664 
14665   jit_breakpoint_re_set ();
14666 
14667   do_cleanups (old_chain);
14668 
14669   create_overlay_event_breakpoint ();
14670   create_longjmp_master_breakpoint ();
14671   create_std_terminate_master_breakpoint ();
14672   create_exception_master_breakpoint ();
14673 
14674   /* Now we can insert.  */
14675   update_global_location_list (UGLL_MAY_INSERT);
14676 }
14677 
14678 /* Reset the thread number of this breakpoint:
14679 
14680    - If the breakpoint is for all threads, leave it as-is.
14681    - Else, reset it to the current thread for inferior_ptid.  */
14682 void
14683 breakpoint_re_set_thread (struct breakpoint *b)
14684 {
14685   if (b->thread != -1)
14686     {
14687       if (in_thread_list (inferior_ptid))
14688 	b->thread = ptid_to_global_thread_id (inferior_ptid);
14689 
14690       /* We're being called after following a fork.  The new fork is
14691 	 selected as current, and unless this was a vfork will have a
14692 	 different program space from the original thread.  Reset that
14693 	 as well.  */
14694       b->loc->pspace = current_program_space;
14695     }
14696 }
14697 
14698 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14699    If from_tty is nonzero, it prints a message to that effect,
14700    which ends with a period (no newline).  */
14701 
14702 void
14703 set_ignore_count (int bptnum, int count, int from_tty)
14704 {
14705   struct breakpoint *b;
14706 
14707   if (count < 0)
14708     count = 0;
14709 
14710   ALL_BREAKPOINTS (b)
14711     if (b->number == bptnum)
14712     {
14713       if (is_tracepoint (b))
14714 	{
14715 	  if (from_tty && count != 0)
14716 	    printf_filtered (_("Ignore count ignored for tracepoint %d."),
14717 			     bptnum);
14718 	  return;
14719 	}
14720 
14721       b->ignore_count = count;
14722       if (from_tty)
14723 	{
14724 	  if (count == 0)
14725 	    printf_filtered (_("Will stop next time "
14726 			       "breakpoint %d is reached."),
14727 			     bptnum);
14728 	  else if (count == 1)
14729 	    printf_filtered (_("Will ignore next crossing of breakpoint %d."),
14730 			     bptnum);
14731 	  else
14732 	    printf_filtered (_("Will ignore next %d "
14733 			       "crossings of breakpoint %d."),
14734 			     count, bptnum);
14735 	}
14736       observer_notify_breakpoint_modified (b);
14737       return;
14738     }
14739 
14740   error (_("No breakpoint number %d."), bptnum);
14741 }
14742 
14743 /* Command to set ignore-count of breakpoint N to COUNT.  */
14744 
14745 static void
14746 ignore_command (char *args, int from_tty)
14747 {
14748   char *p = args;
14749   int num;
14750 
14751   if (p == 0)
14752     error_no_arg (_("a breakpoint number"));
14753 
14754   num = get_number (&p);
14755   if (num == 0)
14756     error (_("bad breakpoint number: '%s'"), args);
14757   if (*p == 0)
14758     error (_("Second argument (specified ignore-count) is missing."));
14759 
14760   set_ignore_count (num,
14761 		    longest_to_int (value_as_long (parse_and_eval (p))),
14762 		    from_tty);
14763   if (from_tty)
14764     printf_filtered ("\n");
14765 }
14766 
14767 /* Call FUNCTION on each of the breakpoints
14768    whose numbers are given in ARGS.  */
14769 
14770 static void
14771 map_breakpoint_numbers (char *args, void (*function) (struct breakpoint *,
14772 						      void *),
14773 			void *data)
14774 {
14775   int num;
14776   struct breakpoint *b, *tmp;
14777   int match;
14778   struct get_number_or_range_state state;
14779 
14780   if (args == 0 || *args == '\0')
14781     error_no_arg (_("one or more breakpoint numbers"));
14782 
14783   init_number_or_range (&state, args);
14784 
14785   while (!state.finished)
14786     {
14787       const char *p = state.string;
14788 
14789       match = 0;
14790 
14791       num = get_number_or_range (&state);
14792       if (num == 0)
14793 	{
14794 	  warning (_("bad breakpoint number at or near '%s'"), p);
14795 	}
14796       else
14797 	{
14798 	  ALL_BREAKPOINTS_SAFE (b, tmp)
14799 	    if (b->number == num)
14800 	      {
14801 		match = 1;
14802 		function (b, data);
14803 		break;
14804 	      }
14805 	  if (match == 0)
14806 	    printf_unfiltered (_("No breakpoint number %d.\n"), num);
14807 	}
14808     }
14809 }
14810 
14811 static struct bp_location *
14812 find_location_by_number (char *number)
14813 {
14814   char *dot = strchr (number, '.');
14815   char *p1;
14816   int bp_num;
14817   int loc_num;
14818   struct breakpoint *b;
14819   struct bp_location *loc;
14820 
14821   *dot = '\0';
14822 
14823   p1 = number;
14824   bp_num = get_number (&p1);
14825   if (bp_num == 0)
14826     error (_("Bad breakpoint number '%s'"), number);
14827 
14828   ALL_BREAKPOINTS (b)
14829     if (b->number == bp_num)
14830       {
14831 	break;
14832       }
14833 
14834   if (!b || b->number != bp_num)
14835     error (_("Bad breakpoint number '%s'"), number);
14836 
14837   p1 = dot+1;
14838   loc_num = get_number (&p1);
14839   if (loc_num == 0)
14840     error (_("Bad breakpoint location number '%s'"), number);
14841 
14842   --loc_num;
14843   loc = b->loc;
14844   for (;loc_num && loc; --loc_num, loc = loc->next)
14845     ;
14846   if (!loc)
14847     error (_("Bad breakpoint location number '%s'"), dot+1);
14848 
14849   return loc;
14850 }
14851 
14852 
14853 /* Set ignore-count of breakpoint number BPTNUM to COUNT.
14854    If from_tty is nonzero, it prints a message to that effect,
14855    which ends with a period (no newline).  */
14856 
14857 void
14858 disable_breakpoint (struct breakpoint *bpt)
14859 {
14860   /* Never disable a watchpoint scope breakpoint; we want to
14861      hit them when we leave scope so we can delete both the
14862      watchpoint and its scope breakpoint at that time.  */
14863   if (bpt->type == bp_watchpoint_scope)
14864     return;
14865 
14866   bpt->enable_state = bp_disabled;
14867 
14868   /* Mark breakpoint locations modified.  */
14869   mark_breakpoint_modified (bpt);
14870 
14871   if (target_supports_enable_disable_tracepoint ()
14872       && current_trace_status ()->running && is_tracepoint (bpt))
14873     {
14874       struct bp_location *location;
14875 
14876       for (location = bpt->loc; location; location = location->next)
14877 	target_disable_tracepoint (location);
14878     }
14879 
14880   update_global_location_list (UGLL_DONT_INSERT);
14881 
14882   observer_notify_breakpoint_modified (bpt);
14883 }
14884 
14885 /* A callback for iterate_over_related_breakpoints.  */
14886 
14887 static void
14888 do_disable_breakpoint (struct breakpoint *b, void *ignore)
14889 {
14890   disable_breakpoint (b);
14891 }
14892 
14893 /* A callback for map_breakpoint_numbers that calls
14894    disable_breakpoint.  */
14895 
14896 static void
14897 do_map_disable_breakpoint (struct breakpoint *b, void *ignore)
14898 {
14899   iterate_over_related_breakpoints (b, do_disable_breakpoint, NULL);
14900 }
14901 
14902 static void
14903 disable_command (char *args, int from_tty)
14904 {
14905   if (args == 0)
14906     {
14907       struct breakpoint *bpt;
14908 
14909       ALL_BREAKPOINTS (bpt)
14910 	if (user_breakpoint_p (bpt))
14911 	  disable_breakpoint (bpt);
14912     }
14913   else
14914     {
14915       char *num = extract_arg (&args);
14916 
14917       while (num)
14918 	{
14919 	  if (strchr (num, '.'))
14920 	    {
14921 	      struct bp_location *loc = find_location_by_number (num);
14922 
14923 	      if (loc)
14924 		{
14925 		  if (loc->enabled)
14926 		    {
14927 		      loc->enabled = 0;
14928 		      mark_breakpoint_location_modified (loc);
14929 		    }
14930 		  if (target_supports_enable_disable_tracepoint ()
14931 		      && current_trace_status ()->running && loc->owner
14932 		      && is_tracepoint (loc->owner))
14933 		    target_disable_tracepoint (loc);
14934 		}
14935 	      update_global_location_list (UGLL_DONT_INSERT);
14936 	    }
14937 	  else
14938 	    map_breakpoint_numbers (num, do_map_disable_breakpoint, NULL);
14939 	  num = extract_arg (&args);
14940 	}
14941     }
14942 }
14943 
14944 static void
14945 enable_breakpoint_disp (struct breakpoint *bpt, enum bpdisp disposition,
14946 			int count)
14947 {
14948   int target_resources_ok;
14949 
14950   if (bpt->type == bp_hardware_breakpoint)
14951     {
14952       int i;
14953       i = hw_breakpoint_used_count ();
14954       target_resources_ok =
14955 	target_can_use_hardware_watchpoint (bp_hardware_breakpoint,
14956 					    i + 1, 0);
14957       if (target_resources_ok == 0)
14958 	error (_("No hardware breakpoint support in the target."));
14959       else if (target_resources_ok < 0)
14960 	error (_("Hardware breakpoints used exceeds limit."));
14961     }
14962 
14963   if (is_watchpoint (bpt))
14964     {
14965       /* Initialize it just to avoid a GCC false warning.  */
14966       enum enable_state orig_enable_state = bp_disabled;
14967 
14968       TRY
14969 	{
14970 	  struct watchpoint *w = (struct watchpoint *) bpt;
14971 
14972 	  orig_enable_state = bpt->enable_state;
14973 	  bpt->enable_state = bp_enabled;
14974 	  update_watchpoint (w, 1 /* reparse */);
14975 	}
14976       CATCH (e, RETURN_MASK_ALL)
14977 	{
14978 	  bpt->enable_state = orig_enable_state;
14979 	  exception_fprintf (gdb_stderr, e, _("Cannot enable watchpoint %d: "),
14980 			     bpt->number);
14981 	  return;
14982 	}
14983       END_CATCH
14984     }
14985 
14986   bpt->enable_state = bp_enabled;
14987 
14988   /* Mark breakpoint locations modified.  */
14989   mark_breakpoint_modified (bpt);
14990 
14991   if (target_supports_enable_disable_tracepoint ()
14992       && current_trace_status ()->running && is_tracepoint (bpt))
14993     {
14994       struct bp_location *location;
14995 
14996       for (location = bpt->loc; location; location = location->next)
14997 	target_enable_tracepoint (location);
14998     }
14999 
15000   bpt->disposition = disposition;
15001   bpt->enable_count = count;
15002   update_global_location_list (UGLL_MAY_INSERT);
15003 
15004   observer_notify_breakpoint_modified (bpt);
15005 }
15006 
15007 
15008 void
15009 enable_breakpoint (struct breakpoint *bpt)
15010 {
15011   enable_breakpoint_disp (bpt, bpt->disposition, 0);
15012 }
15013 
15014 static void
15015 do_enable_breakpoint (struct breakpoint *bpt, void *arg)
15016 {
15017   enable_breakpoint (bpt);
15018 }
15019 
15020 /* A callback for map_breakpoint_numbers that calls
15021    enable_breakpoint.  */
15022 
15023 static void
15024 do_map_enable_breakpoint (struct breakpoint *b, void *ignore)
15025 {
15026   iterate_over_related_breakpoints (b, do_enable_breakpoint, NULL);
15027 }
15028 
15029 /* The enable command enables the specified breakpoints (or all defined
15030    breakpoints) so they once again become (or continue to be) effective
15031    in stopping the inferior.  */
15032 
15033 static void
15034 enable_command (char *args, int from_tty)
15035 {
15036   if (args == 0)
15037     {
15038       struct breakpoint *bpt;
15039 
15040       ALL_BREAKPOINTS (bpt)
15041 	if (user_breakpoint_p (bpt))
15042 	  enable_breakpoint (bpt);
15043     }
15044   else
15045     {
15046       char *num = extract_arg (&args);
15047 
15048       while (num)
15049 	{
15050 	  if (strchr (num, '.'))
15051 	    {
15052 	      struct bp_location *loc = find_location_by_number (num);
15053 
15054 	      if (loc)
15055 		{
15056 		  if (!loc->enabled)
15057 		    {
15058 		      loc->enabled = 1;
15059 		      mark_breakpoint_location_modified (loc);
15060 		    }
15061 		  if (target_supports_enable_disable_tracepoint ()
15062 		      && current_trace_status ()->running && loc->owner
15063 		      && is_tracepoint (loc->owner))
15064 		    target_enable_tracepoint (loc);
15065 		}
15066 	      update_global_location_list (UGLL_MAY_INSERT);
15067 	    }
15068 	  else
15069 	    map_breakpoint_numbers (num, do_map_enable_breakpoint, NULL);
15070 	  num = extract_arg (&args);
15071 	}
15072     }
15073 }
15074 
15075 /* This struct packages up disposition data for application to multiple
15076    breakpoints.  */
15077 
15078 struct disp_data
15079 {
15080   enum bpdisp disp;
15081   int count;
15082 };
15083 
15084 static void
15085 do_enable_breakpoint_disp (struct breakpoint *bpt, void *arg)
15086 {
15087   struct disp_data disp_data = *(struct disp_data *) arg;
15088 
15089   enable_breakpoint_disp (bpt, disp_data.disp, disp_data.count);
15090 }
15091 
15092 static void
15093 do_map_enable_once_breakpoint (struct breakpoint *bpt, void *ignore)
15094 {
15095   struct disp_data disp = { disp_disable, 1 };
15096 
15097   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15098 }
15099 
15100 static void
15101 enable_once_command (char *args, int from_tty)
15102 {
15103   map_breakpoint_numbers (args, do_map_enable_once_breakpoint, NULL);
15104 }
15105 
15106 static void
15107 do_map_enable_count_breakpoint (struct breakpoint *bpt, void *countptr)
15108 {
15109   struct disp_data disp = { disp_disable, *(int *) countptr };
15110 
15111   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15112 }
15113 
15114 static void
15115 enable_count_command (char *args, int from_tty)
15116 {
15117   int count;
15118 
15119   if (args == NULL)
15120     error_no_arg (_("hit count"));
15121 
15122   count = get_number (&args);
15123 
15124   map_breakpoint_numbers (args, do_map_enable_count_breakpoint, &count);
15125 }
15126 
15127 static void
15128 do_map_enable_delete_breakpoint (struct breakpoint *bpt, void *ignore)
15129 {
15130   struct disp_data disp = { disp_del, 1 };
15131 
15132   iterate_over_related_breakpoints (bpt, do_enable_breakpoint_disp, &disp);
15133 }
15134 
15135 static void
15136 enable_delete_command (char *args, int from_tty)
15137 {
15138   map_breakpoint_numbers (args, do_map_enable_delete_breakpoint, NULL);
15139 }
15140 
15141 static void
15142 set_breakpoint_cmd (char *args, int from_tty)
15143 {
15144 }
15145 
15146 static void
15147 show_breakpoint_cmd (char *args, int from_tty)
15148 {
15149 }
15150 
15151 /* Invalidate last known value of any hardware watchpoint if
15152    the memory which that value represents has been written to by
15153    GDB itself.  */
15154 
15155 static void
15156 invalidate_bp_value_on_memory_change (struct inferior *inferior,
15157 				      CORE_ADDR addr, ssize_t len,
15158 				      const bfd_byte *data)
15159 {
15160   struct breakpoint *bp;
15161 
15162   ALL_BREAKPOINTS (bp)
15163     if (bp->enable_state == bp_enabled
15164 	&& bp->type == bp_hardware_watchpoint)
15165       {
15166 	struct watchpoint *wp = (struct watchpoint *) bp;
15167 
15168 	if (wp->val_valid && wp->val)
15169 	  {
15170 	    struct bp_location *loc;
15171 
15172 	    for (loc = bp->loc; loc != NULL; loc = loc->next)
15173 	      if (loc->loc_type == bp_loc_hardware_watchpoint
15174 		  && loc->address + loc->length > addr
15175 		  && addr + len > loc->address)
15176 		{
15177 		  value_free (wp->val);
15178 		  wp->val = NULL;
15179 		  wp->val_valid = 0;
15180 		}
15181 	  }
15182       }
15183 }
15184 
15185 /* Create and insert a breakpoint for software single step.  */
15186 
15187 void
15188 insert_single_step_breakpoint (struct gdbarch *gdbarch,
15189 			       struct address_space *aspace,
15190 			       CORE_ADDR next_pc)
15191 {
15192   struct thread_info *tp = inferior_thread ();
15193   struct symtab_and_line sal;
15194   CORE_ADDR pc = next_pc;
15195 
15196   if (tp->control.single_step_breakpoints == NULL)
15197     {
15198       tp->control.single_step_breakpoints
15199 	= new_single_step_breakpoint (tp->global_num, gdbarch);
15200     }
15201 
15202   sal = find_pc_line (pc, 0);
15203   sal.pc = pc;
15204   sal.section = find_pc_overlay (pc);
15205   sal.explicit_pc = 1;
15206   add_location_to_breakpoint (tp->control.single_step_breakpoints, &sal);
15207 
15208   update_global_location_list (UGLL_INSERT);
15209 }
15210 
15211 /* See breakpoint.h.  */
15212 
15213 int
15214 breakpoint_has_location_inserted_here (struct breakpoint *bp,
15215 				       struct address_space *aspace,
15216 				       CORE_ADDR pc)
15217 {
15218   struct bp_location *loc;
15219 
15220   for (loc = bp->loc; loc != NULL; loc = loc->next)
15221     if (loc->inserted
15222 	&& breakpoint_location_address_match (loc, aspace, pc))
15223       return 1;
15224 
15225   return 0;
15226 }
15227 
15228 /* Check whether a software single-step breakpoint is inserted at
15229    PC.  */
15230 
15231 int
15232 single_step_breakpoint_inserted_here_p (struct address_space *aspace,
15233 					CORE_ADDR pc)
15234 {
15235   struct breakpoint *bpt;
15236 
15237   ALL_BREAKPOINTS (bpt)
15238     {
15239       if (bpt->type == bp_single_step
15240 	  && breakpoint_has_location_inserted_here (bpt, aspace, pc))
15241 	return 1;
15242     }
15243   return 0;
15244 }
15245 
15246 /* Tracepoint-specific operations.  */
15247 
15248 /* Set tracepoint count to NUM.  */
15249 static void
15250 set_tracepoint_count (int num)
15251 {
15252   tracepoint_count = num;
15253   set_internalvar_integer (lookup_internalvar ("tpnum"), num);
15254 }
15255 
15256 static void
15257 trace_command (char *arg, int from_tty)
15258 {
15259   struct breakpoint_ops *ops;
15260   struct event_location *location;
15261   struct cleanup *back_to;
15262 
15263   location = string_to_event_location (&arg, current_language);
15264   back_to = make_cleanup_delete_event_location (location);
15265   if (location != NULL
15266       && event_location_type (location) == PROBE_LOCATION)
15267     ops = &tracepoint_probe_breakpoint_ops;
15268   else
15269     ops = &tracepoint_breakpoint_ops;
15270 
15271   create_breakpoint (get_current_arch (),
15272 		     location,
15273 		     NULL, 0, arg, 1 /* parse arg */,
15274 		     0 /* tempflag */,
15275 		     bp_tracepoint /* type_wanted */,
15276 		     0 /* Ignore count */,
15277 		     pending_break_support,
15278 		     ops,
15279 		     from_tty,
15280 		     1 /* enabled */,
15281 		     0 /* internal */, 0);
15282   do_cleanups (back_to);
15283 }
15284 
15285 static void
15286 ftrace_command (char *arg, int from_tty)
15287 {
15288   struct event_location *location;
15289   struct cleanup *back_to;
15290 
15291   location = string_to_event_location (&arg, current_language);
15292   back_to = make_cleanup_delete_event_location (location);
15293   create_breakpoint (get_current_arch (),
15294 		     location,
15295 		     NULL, 0, arg, 1 /* parse arg */,
15296 		     0 /* tempflag */,
15297 		     bp_fast_tracepoint /* type_wanted */,
15298 		     0 /* Ignore count */,
15299 		     pending_break_support,
15300 		     &tracepoint_breakpoint_ops,
15301 		     from_tty,
15302 		     1 /* enabled */,
15303 		     0 /* internal */, 0);
15304   do_cleanups (back_to);
15305 }
15306 
15307 /* strace command implementation.  Creates a static tracepoint.  */
15308 
15309 static void
15310 strace_command (char *arg, int from_tty)
15311 {
15312   struct breakpoint_ops *ops;
15313   struct event_location *location;
15314   struct cleanup *back_to;
15315 
15316   /* Decide if we are dealing with a static tracepoint marker (`-m'),
15317      or with a normal static tracepoint.  */
15318   if (arg && startswith (arg, "-m") && isspace (arg[2]))
15319     {
15320       ops = &strace_marker_breakpoint_ops;
15321       location = new_linespec_location (&arg);
15322     }
15323   else
15324     {
15325       ops = &tracepoint_breakpoint_ops;
15326       location = string_to_event_location (&arg, current_language);
15327     }
15328 
15329   back_to = make_cleanup_delete_event_location (location);
15330   create_breakpoint (get_current_arch (),
15331 		     location,
15332 		     NULL, 0, arg, 1 /* parse arg */,
15333 		     0 /* tempflag */,
15334 		     bp_static_tracepoint /* type_wanted */,
15335 		     0 /* Ignore count */,
15336 		     pending_break_support,
15337 		     ops,
15338 		     from_tty,
15339 		     1 /* enabled */,
15340 		     0 /* internal */, 0);
15341   do_cleanups (back_to);
15342 }
15343 
15344 /* Set up a fake reader function that gets command lines from a linked
15345    list that was acquired during tracepoint uploading.  */
15346 
15347 static struct uploaded_tp *this_utp;
15348 static int next_cmd;
15349 
15350 static char *
15351 read_uploaded_action (void)
15352 {
15353   char *rslt;
15354 
15355   VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
15356 
15357   next_cmd++;
15358 
15359   return rslt;
15360 }
15361 
15362 /* Given information about a tracepoint as recorded on a target (which
15363    can be either a live system or a trace file), attempt to create an
15364    equivalent GDB tracepoint.  This is not a reliable process, since
15365    the target does not necessarily have all the information used when
15366    the tracepoint was originally defined.  */
15367 
15368 struct tracepoint *
15369 create_tracepoint_from_upload (struct uploaded_tp *utp)
15370 {
15371   char *addr_str, small_buf[100];
15372   struct tracepoint *tp;
15373   struct event_location *location;
15374   struct cleanup *cleanup;
15375 
15376   if (utp->at_string)
15377     addr_str = utp->at_string;
15378   else
15379     {
15380       /* In the absence of a source location, fall back to raw
15381 	 address.  Since there is no way to confirm that the address
15382 	 means the same thing as when the trace was started, warn the
15383 	 user.  */
15384       warning (_("Uploaded tracepoint %d has no "
15385 		 "source location, using raw address"),
15386 	       utp->number);
15387       xsnprintf (small_buf, sizeof (small_buf), "*%s", hex_string (utp->addr));
15388       addr_str = small_buf;
15389     }
15390 
15391   /* There's not much we can do with a sequence of bytecodes.  */
15392   if (utp->cond && !utp->cond_string)
15393     warning (_("Uploaded tracepoint %d condition "
15394 	       "has no source form, ignoring it"),
15395 	     utp->number);
15396 
15397   location = string_to_event_location (&addr_str, current_language);
15398   cleanup = make_cleanup_delete_event_location (location);
15399   if (!create_breakpoint (get_current_arch (),
15400 			  location,
15401 			  utp->cond_string, -1, addr_str,
15402 			  0 /* parse cond/thread */,
15403 			  0 /* tempflag */,
15404 			  utp->type /* type_wanted */,
15405 			  0 /* Ignore count */,
15406 			  pending_break_support,
15407 			  &tracepoint_breakpoint_ops,
15408 			  0 /* from_tty */,
15409 			  utp->enabled /* enabled */,
15410 			  0 /* internal */,
15411 			  CREATE_BREAKPOINT_FLAGS_INSERTED))
15412     {
15413       do_cleanups (cleanup);
15414       return NULL;
15415     }
15416 
15417   do_cleanups (cleanup);
15418 
15419   /* Get the tracepoint we just created.  */
15420   tp = get_tracepoint (tracepoint_count);
15421   gdb_assert (tp != NULL);
15422 
15423   if (utp->pass > 0)
15424     {
15425       xsnprintf (small_buf, sizeof (small_buf), "%d %d", utp->pass,
15426 		 tp->base.number);
15427 
15428       trace_pass_command (small_buf, 0);
15429     }
15430 
15431   /* If we have uploaded versions of the original commands, set up a
15432      special-purpose "reader" function and call the usual command line
15433      reader, then pass the result to the breakpoint command-setting
15434      function.  */
15435   if (!VEC_empty (char_ptr, utp->cmd_strings))
15436     {
15437       struct command_line *cmd_list;
15438 
15439       this_utp = utp;
15440       next_cmd = 0;
15441 
15442       cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
15443 
15444       breakpoint_set_commands (&tp->base, cmd_list);
15445     }
15446   else if (!VEC_empty (char_ptr, utp->actions)
15447 	   || !VEC_empty (char_ptr, utp->step_actions))
15448     warning (_("Uploaded tracepoint %d actions "
15449 	       "have no source form, ignoring them"),
15450 	     utp->number);
15451 
15452   /* Copy any status information that might be available.  */
15453   tp->base.hit_count = utp->hit_count;
15454   tp->traceframe_usage = utp->traceframe_usage;
15455 
15456   return tp;
15457 }
15458 
15459 /* Print information on tracepoint number TPNUM_EXP, or all if
15460    omitted.  */
15461 
15462 static void
15463 tracepoints_info (char *args, int from_tty)
15464 {
15465   struct ui_out *uiout = current_uiout;
15466   int num_printed;
15467 
15468   num_printed = breakpoint_1 (args, 0, is_tracepoint);
15469 
15470   if (num_printed == 0)
15471     {
15472       if (args == NULL || *args == '\0')
15473 	ui_out_message (uiout, 0, "No tracepoints.\n");
15474       else
15475 	ui_out_message (uiout, 0, "No tracepoint matching '%s'.\n", args);
15476     }
15477 
15478   default_collect_info ();
15479 }
15480 
15481 /* The 'enable trace' command enables tracepoints.
15482    Not supported by all targets.  */
15483 static void
15484 enable_trace_command (char *args, int from_tty)
15485 {
15486   enable_command (args, from_tty);
15487 }
15488 
15489 /* The 'disable trace' command disables tracepoints.
15490    Not supported by all targets.  */
15491 static void
15492 disable_trace_command (char *args, int from_tty)
15493 {
15494   disable_command (args, from_tty);
15495 }
15496 
15497 /* Remove a tracepoint (or all if no argument).  */
15498 static void
15499 delete_trace_command (char *arg, int from_tty)
15500 {
15501   struct breakpoint *b, *b_tmp;
15502 
15503   dont_repeat ();
15504 
15505   if (arg == 0)
15506     {
15507       int breaks_to_delete = 0;
15508 
15509       /* Delete all breakpoints if no argument.
15510          Do not delete internal or call-dummy breakpoints, these
15511          have to be deleted with an explicit breakpoint number
15512 	 argument.  */
15513       ALL_TRACEPOINTS (b)
15514 	if (is_tracepoint (b) && user_breakpoint_p (b))
15515 	  {
15516 	    breaks_to_delete = 1;
15517 	    break;
15518 	  }
15519 
15520       /* Ask user only if there are some breakpoints to delete.  */
15521       if (!from_tty
15522 	  || (breaks_to_delete && query (_("Delete all tracepoints? "))))
15523 	{
15524 	  ALL_BREAKPOINTS_SAFE (b, b_tmp)
15525 	    if (is_tracepoint (b) && user_breakpoint_p (b))
15526 	      delete_breakpoint (b);
15527 	}
15528     }
15529   else
15530     map_breakpoint_numbers (arg, do_map_delete_breakpoint, NULL);
15531 }
15532 
15533 /* Helper function for trace_pass_command.  */
15534 
15535 static void
15536 trace_pass_set_count (struct tracepoint *tp, int count, int from_tty)
15537 {
15538   tp->pass_count = count;
15539   observer_notify_breakpoint_modified (&tp->base);
15540   if (from_tty)
15541     printf_filtered (_("Setting tracepoint %d's passcount to %d\n"),
15542 		     tp->base.number, count);
15543 }
15544 
15545 /* Set passcount for tracepoint.
15546 
15547    First command argument is passcount, second is tracepoint number.
15548    If tracepoint number omitted, apply to most recently defined.
15549    Also accepts special argument "all".  */
15550 
15551 static void
15552 trace_pass_command (char *args, int from_tty)
15553 {
15554   struct tracepoint *t1;
15555   unsigned int count;
15556 
15557   if (args == 0 || *args == 0)
15558     error (_("passcount command requires an "
15559 	     "argument (count + optional TP num)"));
15560 
15561   count = strtoul (args, &args, 10);	/* Count comes first, then TP num.  */
15562 
15563   args = skip_spaces (args);
15564   if (*args && strncasecmp (args, "all", 3) == 0)
15565     {
15566       struct breakpoint *b;
15567 
15568       args += 3;			/* Skip special argument "all".  */
15569       if (*args)
15570 	error (_("Junk at end of arguments."));
15571 
15572       ALL_TRACEPOINTS (b)
15573       {
15574 	t1 = (struct tracepoint *) b;
15575 	trace_pass_set_count (t1, count, from_tty);
15576       }
15577     }
15578   else if (*args == '\0')
15579     {
15580       t1 = get_tracepoint_by_number (&args, NULL);
15581       if (t1)
15582 	trace_pass_set_count (t1, count, from_tty);
15583     }
15584   else
15585     {
15586       struct get_number_or_range_state state;
15587 
15588       init_number_or_range (&state, args);
15589       while (!state.finished)
15590 	{
15591 	  t1 = get_tracepoint_by_number (&args, &state);
15592 	  if (t1)
15593 	    trace_pass_set_count (t1, count, from_tty);
15594 	}
15595     }
15596 }
15597 
15598 struct tracepoint *
15599 get_tracepoint (int num)
15600 {
15601   struct breakpoint *t;
15602 
15603   ALL_TRACEPOINTS (t)
15604     if (t->number == num)
15605       return (struct tracepoint *) t;
15606 
15607   return NULL;
15608 }
15609 
15610 /* Find the tracepoint with the given target-side number (which may be
15611    different from the tracepoint number after disconnecting and
15612    reconnecting).  */
15613 
15614 struct tracepoint *
15615 get_tracepoint_by_number_on_target (int num)
15616 {
15617   struct breakpoint *b;
15618 
15619   ALL_TRACEPOINTS (b)
15620     {
15621       struct tracepoint *t = (struct tracepoint *) b;
15622 
15623       if (t->number_on_target == num)
15624 	return t;
15625     }
15626 
15627   return NULL;
15628 }
15629 
15630 /* Utility: parse a tracepoint number and look it up in the list.
15631    If STATE is not NULL, use, get_number_or_range_state and ignore ARG.
15632    If the argument is missing, the most recent tracepoint
15633    (tracepoint_count) is returned.  */
15634 
15635 struct tracepoint *
15636 get_tracepoint_by_number (char **arg,
15637 			  struct get_number_or_range_state *state)
15638 {
15639   struct breakpoint *t;
15640   int tpnum;
15641   char *instring = arg == NULL ? NULL : *arg;
15642 
15643   if (state)
15644     {
15645       gdb_assert (!state->finished);
15646       tpnum = get_number_or_range (state);
15647     }
15648   else if (arg == NULL || *arg == NULL || ! **arg)
15649     tpnum = tracepoint_count;
15650   else
15651     tpnum = get_number (arg);
15652 
15653   if (tpnum <= 0)
15654     {
15655       if (instring && *instring)
15656 	printf_filtered (_("bad tracepoint number at or near '%s'\n"),
15657 			 instring);
15658       else
15659 	printf_filtered (_("No previous tracepoint\n"));
15660       return NULL;
15661     }
15662 
15663   ALL_TRACEPOINTS (t)
15664     if (t->number == tpnum)
15665     {
15666       return (struct tracepoint *) t;
15667     }
15668 
15669   printf_unfiltered ("No tracepoint number %d.\n", tpnum);
15670   return NULL;
15671 }
15672 
15673 void
15674 print_recreate_thread (struct breakpoint *b, struct ui_file *fp)
15675 {
15676   if (b->thread != -1)
15677     fprintf_unfiltered (fp, " thread %d", b->thread);
15678 
15679   if (b->task != 0)
15680     fprintf_unfiltered (fp, " task %d", b->task);
15681 
15682   fprintf_unfiltered (fp, "\n");
15683 }
15684 
15685 /* Save information on user settable breakpoints (watchpoints, etc) to
15686    a new script file named FILENAME.  If FILTER is non-NULL, call it
15687    on each breakpoint and only include the ones for which it returns
15688    non-zero.  */
15689 
15690 static void
15691 save_breakpoints (char *filename, int from_tty,
15692 		  int (*filter) (const struct breakpoint *))
15693 {
15694   struct breakpoint *tp;
15695   int any = 0;
15696   struct cleanup *cleanup;
15697   struct ui_file *fp;
15698   int extra_trace_bits = 0;
15699 
15700   if (filename == 0 || *filename == 0)
15701     error (_("Argument required (file name in which to save)"));
15702 
15703   /* See if we have anything to save.  */
15704   ALL_BREAKPOINTS (tp)
15705   {
15706     /* Skip internal and momentary breakpoints.  */
15707     if (!user_breakpoint_p (tp))
15708       continue;
15709 
15710     /* If we have a filter, only save the breakpoints it accepts.  */
15711     if (filter && !filter (tp))
15712       continue;
15713 
15714     any = 1;
15715 
15716     if (is_tracepoint (tp))
15717       {
15718 	extra_trace_bits = 1;
15719 
15720 	/* We can stop searching.  */
15721 	break;
15722       }
15723   }
15724 
15725   if (!any)
15726     {
15727       warning (_("Nothing to save."));
15728       return;
15729     }
15730 
15731   filename = tilde_expand (filename);
15732   cleanup = make_cleanup (xfree, filename);
15733   fp = gdb_fopen (filename, "w");
15734   if (!fp)
15735     error (_("Unable to open file '%s' for saving (%s)"),
15736 	   filename, safe_strerror (errno));
15737   make_cleanup_ui_file_delete (fp);
15738 
15739   if (extra_trace_bits)
15740     save_trace_state_variables (fp);
15741 
15742   ALL_BREAKPOINTS (tp)
15743   {
15744     /* Skip internal and momentary breakpoints.  */
15745     if (!user_breakpoint_p (tp))
15746       continue;
15747 
15748     /* If we have a filter, only save the breakpoints it accepts.  */
15749     if (filter && !filter (tp))
15750       continue;
15751 
15752     tp->ops->print_recreate (tp, fp);
15753 
15754     /* Note, we can't rely on tp->number for anything, as we can't
15755        assume the recreated breakpoint numbers will match.  Use $bpnum
15756        instead.  */
15757 
15758     if (tp->cond_string)
15759       fprintf_unfiltered (fp, "  condition $bpnum %s\n", tp->cond_string);
15760 
15761     if (tp->ignore_count)
15762       fprintf_unfiltered (fp, "  ignore $bpnum %d\n", tp->ignore_count);
15763 
15764     if (tp->type != bp_dprintf && tp->commands)
15765       {
15766 	fprintf_unfiltered (fp, "  commands\n");
15767 
15768 	ui_out_redirect (current_uiout, fp);
15769 	TRY
15770 	  {
15771 	    print_command_lines (current_uiout, tp->commands->commands, 2);
15772 	  }
15773 	CATCH (ex, RETURN_MASK_ALL)
15774 	  {
15775 	    ui_out_redirect (current_uiout, NULL);
15776 	    throw_exception (ex);
15777 	  }
15778 	END_CATCH
15779 
15780 	ui_out_redirect (current_uiout, NULL);
15781 	fprintf_unfiltered (fp, "  end\n");
15782       }
15783 
15784     if (tp->enable_state == bp_disabled)
15785       fprintf_unfiltered (fp, "disable $bpnum\n");
15786 
15787     /* If this is a multi-location breakpoint, check if the locations
15788        should be individually disabled.  Watchpoint locations are
15789        special, and not user visible.  */
15790     if (!is_watchpoint (tp) && tp->loc && tp->loc->next)
15791       {
15792 	struct bp_location *loc;
15793 	int n = 1;
15794 
15795 	for (loc = tp->loc; loc != NULL; loc = loc->next, n++)
15796 	  if (!loc->enabled)
15797 	    fprintf_unfiltered (fp, "disable $bpnum.%d\n", n);
15798       }
15799   }
15800 
15801   if (extra_trace_bits && *default_collect)
15802     fprintf_unfiltered (fp, "set default-collect %s\n", default_collect);
15803 
15804   if (from_tty)
15805     printf_filtered (_("Saved to file '%s'.\n"), filename);
15806   do_cleanups (cleanup);
15807 }
15808 
15809 /* The `save breakpoints' command.  */
15810 
15811 static void
15812 save_breakpoints_command (char *args, int from_tty)
15813 {
15814   save_breakpoints (args, from_tty, NULL);
15815 }
15816 
15817 /* The `save tracepoints' command.  */
15818 
15819 static void
15820 save_tracepoints_command (char *args, int from_tty)
15821 {
15822   save_breakpoints (args, from_tty, is_tracepoint);
15823 }
15824 
15825 /* Create a vector of all tracepoints.  */
15826 
15827 VEC(breakpoint_p) *
15828 all_tracepoints (void)
15829 {
15830   VEC(breakpoint_p) *tp_vec = 0;
15831   struct breakpoint *tp;
15832 
15833   ALL_TRACEPOINTS (tp)
15834   {
15835     VEC_safe_push (breakpoint_p, tp_vec, tp);
15836   }
15837 
15838   return tp_vec;
15839 }
15840 
15841 
15842 /* This help string is used to consolidate all the help string for specifying
15843    locations used by several commands.  */
15844 
15845 #define LOCATION_HELP_STRING \
15846 "Linespecs are colon-separated lists of location parameters, such as\n\
15847 source filename, function name, label name, and line number.\n\
15848 Example: To specify the start of a label named \"the_top\" in the\n\
15849 function \"fact\" in the file \"factorial.c\", use\n\
15850 \"factorial.c:fact:the_top\".\n\
15851 \n\
15852 Address locations begin with \"*\" and specify an exact address in the\n\
15853 program.  Example: To specify the fourth byte past the start function\n\
15854 \"main\", use \"*main + 4\".\n\
15855 \n\
15856 Explicit locations are similar to linespecs but use an option/argument\n\
15857 syntax to specify location parameters.\n\
15858 Example: To specify the start of the label named \"the_top\" in the\n\
15859 function \"fact\" in the file \"factorial.c\", use \"-source factorial.c\n\
15860 -function fact -label the_top\".\n"
15861 
15862 /* This help string is used for the break, hbreak, tbreak and thbreak
15863    commands.  It is defined as a macro to prevent duplication.
15864    COMMAND should be a string constant containing the name of the
15865    command.  */
15866 
15867 #define BREAK_ARGS_HELP(command) \
15868 command" [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]\n\
15869 PROBE_MODIFIER shall be present if the command is to be placed in a\n\
15870 probe point.  Accepted values are `-probe' (for a generic, automatically\n\
15871 guessed probe type), `-probe-stap' (for a SystemTap probe) or \n\
15872 `-probe-dtrace' (for a DTrace probe).\n\
15873 LOCATION may be a linespec, address, or explicit location as described\n\
15874 below.\n\
15875 \n\
15876 With no LOCATION, uses current execution address of the selected\n\
15877 stack frame.  This is useful for breaking on return to a stack frame.\n\
15878 \n\
15879 THREADNUM is the number from \"info threads\".\n\
15880 CONDITION is a boolean expression.\n\
15881 \n" LOCATION_HELP_STRING "\n\
15882 Multiple breakpoints at one place are permitted, and useful if their\n\
15883 conditions are different.\n\
15884 \n\
15885 Do \"help breakpoints\" for info on other commands dealing with breakpoints."
15886 
15887 /* List of subcommands for "catch".  */
15888 static struct cmd_list_element *catch_cmdlist;
15889 
15890 /* List of subcommands for "tcatch".  */
15891 static struct cmd_list_element *tcatch_cmdlist;
15892 
15893 void
15894 add_catch_command (char *name, char *docstring,
15895 		   cmd_sfunc_ftype *sfunc,
15896 		   completer_ftype *completer,
15897 		   void *user_data_catch,
15898 		   void *user_data_tcatch)
15899 {
15900   struct cmd_list_element *command;
15901 
15902   command = add_cmd (name, class_breakpoint, NULL, docstring,
15903 		     &catch_cmdlist);
15904   set_cmd_sfunc (command, sfunc);
15905   set_cmd_context (command, user_data_catch);
15906   set_cmd_completer (command, completer);
15907 
15908   command = add_cmd (name, class_breakpoint, NULL, docstring,
15909 		     &tcatch_cmdlist);
15910   set_cmd_sfunc (command, sfunc);
15911   set_cmd_context (command, user_data_tcatch);
15912   set_cmd_completer (command, completer);
15913 }
15914 
15915 static void
15916 save_command (char *arg, int from_tty)
15917 {
15918   printf_unfiltered (_("\"save\" must be followed by "
15919 		       "the name of a save subcommand.\n"));
15920   help_list (save_cmdlist, "save ", all_commands, gdb_stdout);
15921 }
15922 
15923 struct breakpoint *
15924 iterate_over_breakpoints (int (*callback) (struct breakpoint *, void *),
15925 			  void *data)
15926 {
15927   struct breakpoint *b, *b_tmp;
15928 
15929   ALL_BREAKPOINTS_SAFE (b, b_tmp)
15930     {
15931       if ((*callback) (b, data))
15932 	return b;
15933     }
15934 
15935   return NULL;
15936 }
15937 
15938 /* Zero if any of the breakpoint's locations could be a location where
15939    functions have been inlined, nonzero otherwise.  */
15940 
15941 static int
15942 is_non_inline_function (struct breakpoint *b)
15943 {
15944   /* The shared library event breakpoint is set on the address of a
15945      non-inline function.  */
15946   if (b->type == bp_shlib_event)
15947     return 1;
15948 
15949   return 0;
15950 }
15951 
15952 /* Nonzero if the specified PC cannot be a location where functions
15953    have been inlined.  */
15954 
15955 int
15956 pc_at_non_inline_function (struct address_space *aspace, CORE_ADDR pc,
15957 			   const struct target_waitstatus *ws)
15958 {
15959   struct breakpoint *b;
15960   struct bp_location *bl;
15961 
15962   ALL_BREAKPOINTS (b)
15963     {
15964       if (!is_non_inline_function (b))
15965 	continue;
15966 
15967       for (bl = b->loc; bl != NULL; bl = bl->next)
15968 	{
15969 	  if (!bl->shlib_disabled
15970 	      && bpstat_check_location (bl, aspace, pc, ws))
15971 	    return 1;
15972 	}
15973     }
15974 
15975   return 0;
15976 }
15977 
15978 /* Remove any references to OBJFILE which is going to be freed.  */
15979 
15980 void
15981 breakpoint_free_objfile (struct objfile *objfile)
15982 {
15983   struct bp_location **locp, *loc;
15984 
15985   ALL_BP_LOCATIONS (loc, locp)
15986     if (loc->symtab != NULL && SYMTAB_OBJFILE (loc->symtab) == objfile)
15987       loc->symtab = NULL;
15988 }
15989 
15990 void
15991 initialize_breakpoint_ops (void)
15992 {
15993   static int initialized = 0;
15994 
15995   struct breakpoint_ops *ops;
15996 
15997   if (initialized)
15998     return;
15999   initialized = 1;
16000 
16001   /* The breakpoint_ops structure to be inherit by all kinds of
16002      breakpoints (real breakpoints, i.e., user "break" breakpoints,
16003      internal and momentary breakpoints, etc.).  */
16004   ops = &bkpt_base_breakpoint_ops;
16005   *ops = base_breakpoint_ops;
16006   ops->re_set = bkpt_re_set;
16007   ops->insert_location = bkpt_insert_location;
16008   ops->remove_location = bkpt_remove_location;
16009   ops->breakpoint_hit = bkpt_breakpoint_hit;
16010   ops->create_sals_from_location = bkpt_create_sals_from_location;
16011   ops->create_breakpoints_sal = bkpt_create_breakpoints_sal;
16012   ops->decode_location = bkpt_decode_location;
16013 
16014   /* The breakpoint_ops structure to be used in regular breakpoints.  */
16015   ops = &bkpt_breakpoint_ops;
16016   *ops = bkpt_base_breakpoint_ops;
16017   ops->re_set = bkpt_re_set;
16018   ops->resources_needed = bkpt_resources_needed;
16019   ops->print_it = bkpt_print_it;
16020   ops->print_mention = bkpt_print_mention;
16021   ops->print_recreate = bkpt_print_recreate;
16022 
16023   /* Ranged breakpoints.  */
16024   ops = &ranged_breakpoint_ops;
16025   *ops = bkpt_breakpoint_ops;
16026   ops->breakpoint_hit = breakpoint_hit_ranged_breakpoint;
16027   ops->resources_needed = resources_needed_ranged_breakpoint;
16028   ops->print_it = print_it_ranged_breakpoint;
16029   ops->print_one = print_one_ranged_breakpoint;
16030   ops->print_one_detail = print_one_detail_ranged_breakpoint;
16031   ops->print_mention = print_mention_ranged_breakpoint;
16032   ops->print_recreate = print_recreate_ranged_breakpoint;
16033 
16034   /* Internal breakpoints.  */
16035   ops = &internal_breakpoint_ops;
16036   *ops = bkpt_base_breakpoint_ops;
16037   ops->re_set = internal_bkpt_re_set;
16038   ops->check_status = internal_bkpt_check_status;
16039   ops->print_it = internal_bkpt_print_it;
16040   ops->print_mention = internal_bkpt_print_mention;
16041 
16042   /* Momentary breakpoints.  */
16043   ops = &momentary_breakpoint_ops;
16044   *ops = bkpt_base_breakpoint_ops;
16045   ops->re_set = momentary_bkpt_re_set;
16046   ops->check_status = momentary_bkpt_check_status;
16047   ops->print_it = momentary_bkpt_print_it;
16048   ops->print_mention = momentary_bkpt_print_mention;
16049 
16050   /* Momentary breakpoints for bp_longjmp and bp_exception.  */
16051   ops = &longjmp_breakpoint_ops;
16052   *ops = momentary_breakpoint_ops;
16053   ops->dtor = longjmp_bkpt_dtor;
16054 
16055   /* Probe breakpoints.  */
16056   ops = &bkpt_probe_breakpoint_ops;
16057   *ops = bkpt_breakpoint_ops;
16058   ops->insert_location = bkpt_probe_insert_location;
16059   ops->remove_location = bkpt_probe_remove_location;
16060   ops->create_sals_from_location = bkpt_probe_create_sals_from_location;
16061   ops->decode_location = bkpt_probe_decode_location;
16062 
16063   /* Watchpoints.  */
16064   ops = &watchpoint_breakpoint_ops;
16065   *ops = base_breakpoint_ops;
16066   ops->dtor = dtor_watchpoint;
16067   ops->re_set = re_set_watchpoint;
16068   ops->insert_location = insert_watchpoint;
16069   ops->remove_location = remove_watchpoint;
16070   ops->breakpoint_hit = breakpoint_hit_watchpoint;
16071   ops->check_status = check_status_watchpoint;
16072   ops->resources_needed = resources_needed_watchpoint;
16073   ops->works_in_software_mode = works_in_software_mode_watchpoint;
16074   ops->print_it = print_it_watchpoint;
16075   ops->print_mention = print_mention_watchpoint;
16076   ops->print_recreate = print_recreate_watchpoint;
16077   ops->explains_signal = explains_signal_watchpoint;
16078 
16079   /* Masked watchpoints.  */
16080   ops = &masked_watchpoint_breakpoint_ops;
16081   *ops = watchpoint_breakpoint_ops;
16082   ops->insert_location = insert_masked_watchpoint;
16083   ops->remove_location = remove_masked_watchpoint;
16084   ops->resources_needed = resources_needed_masked_watchpoint;
16085   ops->works_in_software_mode = works_in_software_mode_masked_watchpoint;
16086   ops->print_it = print_it_masked_watchpoint;
16087   ops->print_one_detail = print_one_detail_masked_watchpoint;
16088   ops->print_mention = print_mention_masked_watchpoint;
16089   ops->print_recreate = print_recreate_masked_watchpoint;
16090 
16091   /* Tracepoints.  */
16092   ops = &tracepoint_breakpoint_ops;
16093   *ops = base_breakpoint_ops;
16094   ops->re_set = tracepoint_re_set;
16095   ops->breakpoint_hit = tracepoint_breakpoint_hit;
16096   ops->print_one_detail = tracepoint_print_one_detail;
16097   ops->print_mention = tracepoint_print_mention;
16098   ops->print_recreate = tracepoint_print_recreate;
16099   ops->create_sals_from_location = tracepoint_create_sals_from_location;
16100   ops->create_breakpoints_sal = tracepoint_create_breakpoints_sal;
16101   ops->decode_location = tracepoint_decode_location;
16102 
16103   /* Probe tracepoints.  */
16104   ops = &tracepoint_probe_breakpoint_ops;
16105   *ops = tracepoint_breakpoint_ops;
16106   ops->create_sals_from_location = tracepoint_probe_create_sals_from_location;
16107   ops->decode_location = tracepoint_probe_decode_location;
16108 
16109   /* Static tracepoints with marker (`-m').  */
16110   ops = &strace_marker_breakpoint_ops;
16111   *ops = tracepoint_breakpoint_ops;
16112   ops->create_sals_from_location = strace_marker_create_sals_from_location;
16113   ops->create_breakpoints_sal = strace_marker_create_breakpoints_sal;
16114   ops->decode_location = strace_marker_decode_location;
16115 
16116   /* Fork catchpoints.  */
16117   ops = &catch_fork_breakpoint_ops;
16118   *ops = base_breakpoint_ops;
16119   ops->insert_location = insert_catch_fork;
16120   ops->remove_location = remove_catch_fork;
16121   ops->breakpoint_hit = breakpoint_hit_catch_fork;
16122   ops->print_it = print_it_catch_fork;
16123   ops->print_one = print_one_catch_fork;
16124   ops->print_mention = print_mention_catch_fork;
16125   ops->print_recreate = print_recreate_catch_fork;
16126 
16127   /* Vfork catchpoints.  */
16128   ops = &catch_vfork_breakpoint_ops;
16129   *ops = base_breakpoint_ops;
16130   ops->insert_location = insert_catch_vfork;
16131   ops->remove_location = remove_catch_vfork;
16132   ops->breakpoint_hit = breakpoint_hit_catch_vfork;
16133   ops->print_it = print_it_catch_vfork;
16134   ops->print_one = print_one_catch_vfork;
16135   ops->print_mention = print_mention_catch_vfork;
16136   ops->print_recreate = print_recreate_catch_vfork;
16137 
16138   /* Exec catchpoints.  */
16139   ops = &catch_exec_breakpoint_ops;
16140   *ops = base_breakpoint_ops;
16141   ops->dtor = dtor_catch_exec;
16142   ops->insert_location = insert_catch_exec;
16143   ops->remove_location = remove_catch_exec;
16144   ops->breakpoint_hit = breakpoint_hit_catch_exec;
16145   ops->print_it = print_it_catch_exec;
16146   ops->print_one = print_one_catch_exec;
16147   ops->print_mention = print_mention_catch_exec;
16148   ops->print_recreate = print_recreate_catch_exec;
16149 
16150   /* Solib-related catchpoints.  */
16151   ops = &catch_solib_breakpoint_ops;
16152   *ops = base_breakpoint_ops;
16153   ops->dtor = dtor_catch_solib;
16154   ops->insert_location = insert_catch_solib;
16155   ops->remove_location = remove_catch_solib;
16156   ops->breakpoint_hit = breakpoint_hit_catch_solib;
16157   ops->check_status = check_status_catch_solib;
16158   ops->print_it = print_it_catch_solib;
16159   ops->print_one = print_one_catch_solib;
16160   ops->print_mention = print_mention_catch_solib;
16161   ops->print_recreate = print_recreate_catch_solib;
16162 
16163   ops = &dprintf_breakpoint_ops;
16164   *ops = bkpt_base_breakpoint_ops;
16165   ops->re_set = dprintf_re_set;
16166   ops->resources_needed = bkpt_resources_needed;
16167   ops->print_it = bkpt_print_it;
16168   ops->print_mention = bkpt_print_mention;
16169   ops->print_recreate = dprintf_print_recreate;
16170   ops->after_condition_true = dprintf_after_condition_true;
16171   ops->breakpoint_hit = dprintf_breakpoint_hit;
16172 }
16173 
16174 /* Chain containing all defined "enable breakpoint" subcommands.  */
16175 
16176 static struct cmd_list_element *enablebreaklist = NULL;
16177 
16178 void
16179 _initialize_breakpoint (void)
16180 {
16181   struct cmd_list_element *c;
16182 
16183   initialize_breakpoint_ops ();
16184 
16185   observer_attach_solib_unloaded (disable_breakpoints_in_unloaded_shlib);
16186   observer_attach_free_objfile (disable_breakpoints_in_freed_objfile);
16187   observer_attach_memory_changed (invalidate_bp_value_on_memory_change);
16188 
16189   breakpoint_objfile_key
16190     = register_objfile_data_with_cleanup (NULL, free_breakpoint_probes);
16191 
16192   breakpoint_chain = 0;
16193   /* Don't bother to call set_breakpoint_count.  $bpnum isn't useful
16194      before a breakpoint is set.  */
16195   breakpoint_count = 0;
16196 
16197   tracepoint_count = 0;
16198 
16199   add_com ("ignore", class_breakpoint, ignore_command, _("\
16200 Set ignore-count of breakpoint number N to COUNT.\n\
16201 Usage is `ignore N COUNT'."));
16202 
16203   add_com ("commands", class_breakpoint, commands_command, _("\
16204 Set commands to be executed when a breakpoint is hit.\n\
16205 Give breakpoint number as argument after \"commands\".\n\
16206 With no argument, the targeted breakpoint is the last one set.\n\
16207 The commands themselves follow starting on the next line.\n\
16208 Type a line containing \"end\" to indicate the end of them.\n\
16209 Give \"silent\" as the first line to make the breakpoint silent;\n\
16210 then no output is printed when it is hit, except what the commands print."));
16211 
16212   c = add_com ("condition", class_breakpoint, condition_command, _("\
16213 Specify breakpoint number N to break only if COND is true.\n\
16214 Usage is `condition N COND', where N is an integer and COND is an\n\
16215 expression to be evaluated whenever breakpoint N is reached."));
16216   set_cmd_completer (c, condition_completer);
16217 
16218   c = add_com ("tbreak", class_breakpoint, tbreak_command, _("\
16219 Set a temporary breakpoint.\n\
16220 Like \"break\" except the breakpoint is only temporary,\n\
16221 so it will be deleted when hit.  Equivalent to \"break\" followed\n\
16222 by using \"enable delete\" on the breakpoint number.\n\
16223 \n"
16224 BREAK_ARGS_HELP ("tbreak")));
16225   set_cmd_completer (c, location_completer);
16226 
16227   c = add_com ("hbreak", class_breakpoint, hbreak_command, _("\
16228 Set a hardware assisted breakpoint.\n\
16229 Like \"break\" except the breakpoint requires hardware support,\n\
16230 some target hardware may not have this support.\n\
16231 \n"
16232 BREAK_ARGS_HELP ("hbreak")));
16233   set_cmd_completer (c, location_completer);
16234 
16235   c = add_com ("thbreak", class_breakpoint, thbreak_command, _("\
16236 Set a temporary hardware assisted breakpoint.\n\
16237 Like \"hbreak\" except the breakpoint is only temporary,\n\
16238 so it will be deleted when hit.\n\
16239 \n"
16240 BREAK_ARGS_HELP ("thbreak")));
16241   set_cmd_completer (c, location_completer);
16242 
16243   add_prefix_cmd ("enable", class_breakpoint, enable_command, _("\
16244 Enable some breakpoints.\n\
16245 Give breakpoint numbers (separated by spaces) as arguments.\n\
16246 With no subcommand, breakpoints are enabled until you command otherwise.\n\
16247 This is used to cancel the effect of the \"disable\" command.\n\
16248 With a subcommand you can enable temporarily."),
16249 		  &enablelist, "enable ", 1, &cmdlist);
16250 
16251   add_com_alias ("en", "enable", class_breakpoint, 1);
16252 
16253   add_prefix_cmd ("breakpoints", class_breakpoint, enable_command, _("\
16254 Enable some breakpoints.\n\
16255 Give breakpoint numbers (separated by spaces) as arguments.\n\
16256 This is used to cancel the effect of the \"disable\" command.\n\
16257 May be abbreviated to simply \"enable\".\n"),
16258 		   &enablebreaklist, "enable breakpoints ", 1, &enablelist);
16259 
16260   add_cmd ("once", no_class, enable_once_command, _("\
16261 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16262 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16263 	   &enablebreaklist);
16264 
16265   add_cmd ("delete", no_class, enable_delete_command, _("\
16266 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16267 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16268 	   &enablebreaklist);
16269 
16270   add_cmd ("count", no_class, enable_count_command, _("\
16271 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16272 If a breakpoint is hit while enabled in this fashion,\n\
16273 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16274 	   &enablebreaklist);
16275 
16276   add_cmd ("delete", no_class, enable_delete_command, _("\
16277 Enable breakpoints and delete when hit.  Give breakpoint numbers.\n\
16278 If a breakpoint is hit while enabled in this fashion, it is deleted."),
16279 	   &enablelist);
16280 
16281   add_cmd ("once", no_class, enable_once_command, _("\
16282 Enable breakpoints for one hit.  Give breakpoint numbers.\n\
16283 If a breakpoint is hit while enabled in this fashion, it becomes disabled."),
16284 	   &enablelist);
16285 
16286   add_cmd ("count", no_class, enable_count_command, _("\
16287 Enable breakpoints for COUNT hits.  Give count and then breakpoint numbers.\n\
16288 If a breakpoint is hit while enabled in this fashion,\n\
16289 the count is decremented; when it reaches zero, the breakpoint is disabled."),
16290 	   &enablelist);
16291 
16292   add_prefix_cmd ("disable", class_breakpoint, disable_command, _("\
16293 Disable some breakpoints.\n\
16294 Arguments are breakpoint numbers with spaces in between.\n\
16295 To disable all breakpoints, give no argument.\n\
16296 A disabled breakpoint is not forgotten, but has no effect until re-enabled."),
16297 		  &disablelist, "disable ", 1, &cmdlist);
16298   add_com_alias ("dis", "disable", class_breakpoint, 1);
16299   add_com_alias ("disa", "disable", class_breakpoint, 1);
16300 
16301   add_cmd ("breakpoints", class_alias, disable_command, _("\
16302 Disable some breakpoints.\n\
16303 Arguments are breakpoint numbers with spaces in between.\n\
16304 To disable all breakpoints, give no argument.\n\
16305 A disabled breakpoint is not forgotten, but has no effect until re-enabled.\n\
16306 This command may be abbreviated \"disable\"."),
16307 	   &disablelist);
16308 
16309   add_prefix_cmd ("delete", class_breakpoint, delete_command, _("\
16310 Delete some breakpoints or auto-display expressions.\n\
16311 Arguments are breakpoint numbers with spaces in between.\n\
16312 To delete all breakpoints, give no argument.\n\
16313 \n\
16314 Also a prefix command for deletion of other GDB objects.\n\
16315 The \"unset\" command is also an alias for \"delete\"."),
16316 		  &deletelist, "delete ", 1, &cmdlist);
16317   add_com_alias ("d", "delete", class_breakpoint, 1);
16318   add_com_alias ("del", "delete", class_breakpoint, 1);
16319 
16320   add_cmd ("breakpoints", class_alias, delete_command, _("\
16321 Delete some breakpoints or auto-display expressions.\n\
16322 Arguments are breakpoint numbers with spaces in between.\n\
16323 To delete all breakpoints, give no argument.\n\
16324 This command may be abbreviated \"delete\"."),
16325 	   &deletelist);
16326 
16327   add_com ("clear", class_breakpoint, clear_command, _("\
16328 Clear breakpoint at specified location.\n\
16329 Argument may be a linespec, explicit, or address location as described below.\n\
16330 \n\
16331 With no argument, clears all breakpoints in the line that the selected frame\n\
16332 is executing in.\n"
16333 "\n" LOCATION_HELP_STRING "\n\
16334 See also the \"delete\" command which clears breakpoints by number."));
16335   add_com_alias ("cl", "clear", class_breakpoint, 1);
16336 
16337   c = add_com ("break", class_breakpoint, break_command, _("\
16338 Set breakpoint at specified location.\n"
16339 BREAK_ARGS_HELP ("break")));
16340   set_cmd_completer (c, location_completer);
16341 
16342   add_com_alias ("b", "break", class_run, 1);
16343   add_com_alias ("br", "break", class_run, 1);
16344   add_com_alias ("bre", "break", class_run, 1);
16345   add_com_alias ("brea", "break", class_run, 1);
16346 
16347   if (dbx_commands)
16348     {
16349       add_abbrev_prefix_cmd ("stop", class_breakpoint, stop_command, _("\
16350 Break in function/address or break at a line in the current file."),
16351 			     &stoplist, "stop ", 1, &cmdlist);
16352       add_cmd ("in", class_breakpoint, stopin_command,
16353 	       _("Break in function or address."), &stoplist);
16354       add_cmd ("at", class_breakpoint, stopat_command,
16355 	       _("Break at a line in the current file."), &stoplist);
16356       add_com ("status", class_info, breakpoints_info, _("\
16357 Status of user-settable breakpoints, or breakpoint number NUMBER.\n\
16358 The \"Type\" column indicates one of:\n\
16359 \tbreakpoint     - normal breakpoint\n\
16360 \twatchpoint     - watchpoint\n\
16361 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16362 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16363 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16364 address and file/line number respectively.\n\
16365 \n\
16366 Convenience variable \"$_\" and default examine address for \"x\"\n\
16367 are set to the address of the last breakpoint listed unless the command\n\
16368 is prefixed with \"server \".\n\n\
16369 Convenience variable \"$bpnum\" contains the number of the last\n\
16370 breakpoint set."));
16371     }
16372 
16373   add_info ("breakpoints", breakpoints_info, _("\
16374 Status of specified breakpoints (all user-settable breakpoints if no argument).\n\
16375 The \"Type\" column indicates one of:\n\
16376 \tbreakpoint     - normal breakpoint\n\
16377 \twatchpoint     - watchpoint\n\
16378 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16379 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16380 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16381 address and file/line number respectively.\n\
16382 \n\
16383 Convenience variable \"$_\" and default examine address for \"x\"\n\
16384 are set to the address of the last breakpoint listed unless the command\n\
16385 is prefixed with \"server \".\n\n\
16386 Convenience variable \"$bpnum\" contains the number of the last\n\
16387 breakpoint set."));
16388 
16389   add_info_alias ("b", "breakpoints", 1);
16390 
16391   add_cmd ("breakpoints", class_maintenance, maintenance_info_breakpoints, _("\
16392 Status of all breakpoints, or breakpoint number NUMBER.\n\
16393 The \"Type\" column indicates one of:\n\
16394 \tbreakpoint     - normal breakpoint\n\
16395 \twatchpoint     - watchpoint\n\
16396 \tlongjmp        - internal breakpoint used to step through longjmp()\n\
16397 \tlongjmp resume - internal breakpoint at the target of longjmp()\n\
16398 \tuntil          - internal breakpoint used by the \"until\" command\n\
16399 \tfinish         - internal breakpoint used by the \"finish\" command\n\
16400 The \"Disp\" column contains one of \"keep\", \"del\", or \"dis\" to indicate\n\
16401 the disposition of the breakpoint after it gets hit.  \"dis\" means that the\n\
16402 breakpoint will be disabled.  The \"Address\" and \"What\" columns indicate the\n\
16403 address and file/line number respectively.\n\
16404 \n\
16405 Convenience variable \"$_\" and default examine address for \"x\"\n\
16406 are set to the address of the last breakpoint listed unless the command\n\
16407 is prefixed with \"server \".\n\n\
16408 Convenience variable \"$bpnum\" contains the number of the last\n\
16409 breakpoint set."),
16410 	   &maintenanceinfolist);
16411 
16412   add_prefix_cmd ("catch", class_breakpoint, catch_command, _("\
16413 Set catchpoints to catch events."),
16414 		  &catch_cmdlist, "catch ",
16415 		  0/*allow-unknown*/, &cmdlist);
16416 
16417   add_prefix_cmd ("tcatch", class_breakpoint, tcatch_command, _("\
16418 Set temporary catchpoints to catch events."),
16419 		  &tcatch_cmdlist, "tcatch ",
16420 		  0/*allow-unknown*/, &cmdlist);
16421 
16422   add_catch_command ("fork", _("Catch calls to fork."),
16423 		     catch_fork_command_1,
16424                      NULL,
16425 		     (void *) (uintptr_t) catch_fork_permanent,
16426 		     (void *) (uintptr_t) catch_fork_temporary);
16427   add_catch_command ("vfork", _("Catch calls to vfork."),
16428 		     catch_fork_command_1,
16429                      NULL,
16430 		     (void *) (uintptr_t) catch_vfork_permanent,
16431 		     (void *) (uintptr_t) catch_vfork_temporary);
16432   add_catch_command ("exec", _("Catch calls to exec."),
16433 		     catch_exec_command_1,
16434                      NULL,
16435 		     CATCH_PERMANENT,
16436 		     CATCH_TEMPORARY);
16437   add_catch_command ("load", _("Catch loads of shared libraries.\n\
16438 Usage: catch load [REGEX]\n\
16439 If REGEX is given, only stop for libraries matching the regular expression."),
16440 		     catch_load_command_1,
16441 		     NULL,
16442 		     CATCH_PERMANENT,
16443 		     CATCH_TEMPORARY);
16444   add_catch_command ("unload", _("Catch unloads of shared libraries.\n\
16445 Usage: catch unload [REGEX]\n\
16446 If REGEX is given, only stop for libraries matching the regular expression."),
16447 		     catch_unload_command_1,
16448 		     NULL,
16449 		     CATCH_PERMANENT,
16450 		     CATCH_TEMPORARY);
16451 
16452   c = add_com ("watch", class_breakpoint, watch_command, _("\
16453 Set a watchpoint for an expression.\n\
16454 Usage: watch [-l|-location] EXPRESSION\n\
16455 A watchpoint stops execution of your program whenever the value of\n\
16456 an expression changes.\n\
16457 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16458 the memory to which it refers."));
16459   set_cmd_completer (c, expression_completer);
16460 
16461   c = add_com ("rwatch", class_breakpoint, rwatch_command, _("\
16462 Set a read watchpoint for an expression.\n\
16463 Usage: rwatch [-l|-location] EXPRESSION\n\
16464 A watchpoint stops execution of your program whenever the value of\n\
16465 an expression is read.\n\
16466 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16467 the memory to which it refers."));
16468   set_cmd_completer (c, expression_completer);
16469 
16470   c = add_com ("awatch", class_breakpoint, awatch_command, _("\
16471 Set a watchpoint for an expression.\n\
16472 Usage: awatch [-l|-location] EXPRESSION\n\
16473 A watchpoint stops execution of your program whenever the value of\n\
16474 an expression is either read or written.\n\
16475 If -l or -location is given, this evaluates EXPRESSION and watches\n\
16476 the memory to which it refers."));
16477   set_cmd_completer (c, expression_completer);
16478 
16479   add_info ("watchpoints", watchpoints_info, _("\
16480 Status of specified watchpoints (all watchpoints if no argument)."));
16481 
16482   /* XXX: cagney/2005-02-23: This should be a boolean, and should
16483      respond to changes - contrary to the description.  */
16484   add_setshow_zinteger_cmd ("can-use-hw-watchpoints", class_support,
16485 			    &can_use_hw_watchpoints, _("\
16486 Set debugger's willingness to use watchpoint hardware."), _("\
16487 Show debugger's willingness to use watchpoint hardware."), _("\
16488 If zero, gdb will not use hardware for new watchpoints, even if\n\
16489 such is available.  (However, any hardware watchpoints that were\n\
16490 created before setting this to nonzero, will continue to use watchpoint\n\
16491 hardware.)"),
16492 			    NULL,
16493 			    show_can_use_hw_watchpoints,
16494 			    &setlist, &showlist);
16495 
16496   can_use_hw_watchpoints = 1;
16497 
16498   /* Tracepoint manipulation commands.  */
16499 
16500   c = add_com ("trace", class_breakpoint, trace_command, _("\
16501 Set a tracepoint at specified location.\n\
16502 \n"
16503 BREAK_ARGS_HELP ("trace") "\n\
16504 Do \"help tracepoints\" for info on other tracepoint commands."));
16505   set_cmd_completer (c, location_completer);
16506 
16507   add_com_alias ("tp", "trace", class_alias, 0);
16508   add_com_alias ("tr", "trace", class_alias, 1);
16509   add_com_alias ("tra", "trace", class_alias, 1);
16510   add_com_alias ("trac", "trace", class_alias, 1);
16511 
16512   c = add_com ("ftrace", class_breakpoint, ftrace_command, _("\
16513 Set a fast tracepoint at specified location.\n\
16514 \n"
16515 BREAK_ARGS_HELP ("ftrace") "\n\
16516 Do \"help tracepoints\" for info on other tracepoint commands."));
16517   set_cmd_completer (c, location_completer);
16518 
16519   c = add_com ("strace", class_breakpoint, strace_command, _("\
16520 Set a static tracepoint at location or marker.\n\
16521 \n\
16522 strace [LOCATION] [if CONDITION]\n\
16523 LOCATION may be a linespec, explicit, or address location (described below) \n\
16524 or -m MARKER_ID.\n\n\
16525 If a marker id is specified, probe the marker with that name.  With\n\
16526 no LOCATION, uses current execution address of the selected stack frame.\n\
16527 Static tracepoints accept an extra collect action -- ``collect $_sdata''.\n\
16528 This collects arbitrary user data passed in the probe point call to the\n\
16529 tracing library.  You can inspect it when analyzing the trace buffer,\n\
16530 by printing the $_sdata variable like any other convenience variable.\n\
16531 \n\
16532 CONDITION is a boolean expression.\n\
16533 \n" LOCATION_HELP_STRING "\n\
16534 Multiple tracepoints at one place are permitted, and useful if their\n\
16535 conditions are different.\n\
16536 \n\
16537 Do \"help breakpoints\" for info on other commands dealing with breakpoints.\n\
16538 Do \"help tracepoints\" for info on other tracepoint commands."));
16539   set_cmd_completer (c, location_completer);
16540 
16541   add_info ("tracepoints", tracepoints_info, _("\
16542 Status of specified tracepoints (all tracepoints if no argument).\n\
16543 Convenience variable \"$tpnum\" contains the number of the\n\
16544 last tracepoint set."));
16545 
16546   add_info_alias ("tp", "tracepoints", 1);
16547 
16548   add_cmd ("tracepoints", class_trace, delete_trace_command, _("\
16549 Delete specified tracepoints.\n\
16550 Arguments are tracepoint numbers, separated by spaces.\n\
16551 No argument means delete all tracepoints."),
16552 	   &deletelist);
16553   add_alias_cmd ("tr", "tracepoints", class_trace, 1, &deletelist);
16554 
16555   c = add_cmd ("tracepoints", class_trace, disable_trace_command, _("\
16556 Disable specified tracepoints.\n\
16557 Arguments are tracepoint numbers, separated by spaces.\n\
16558 No argument means disable all tracepoints."),
16559 	   &disablelist);
16560   deprecate_cmd (c, "disable");
16561 
16562   c = add_cmd ("tracepoints", class_trace, enable_trace_command, _("\
16563 Enable specified tracepoints.\n\
16564 Arguments are tracepoint numbers, separated by spaces.\n\
16565 No argument means enable all tracepoints."),
16566 	   &enablelist);
16567   deprecate_cmd (c, "enable");
16568 
16569   add_com ("passcount", class_trace, trace_pass_command, _("\
16570 Set the passcount for a tracepoint.\n\
16571 The trace will end when the tracepoint has been passed 'count' times.\n\
16572 Usage: passcount COUNT TPNUM, where TPNUM may also be \"all\";\n\
16573 if TPNUM is omitted, passcount refers to the last tracepoint defined."));
16574 
16575   add_prefix_cmd ("save", class_breakpoint, save_command,
16576 		  _("Save breakpoint definitions as a script."),
16577 		  &save_cmdlist, "save ",
16578 		  0/*allow-unknown*/, &cmdlist);
16579 
16580   c = add_cmd ("breakpoints", class_breakpoint, save_breakpoints_command, _("\
16581 Save current breakpoint definitions as a script.\n\
16582 This includes all types of breakpoints (breakpoints, watchpoints,\n\
16583 catchpoints, tracepoints).  Use the 'source' command in another debug\n\
16584 session to restore them."),
16585 	       &save_cmdlist);
16586   set_cmd_completer (c, filename_completer);
16587 
16588   c = add_cmd ("tracepoints", class_trace, save_tracepoints_command, _("\
16589 Save current tracepoint definitions as a script.\n\
16590 Use the 'source' command in another debug session to restore them."),
16591 	       &save_cmdlist);
16592   set_cmd_completer (c, filename_completer);
16593 
16594   c = add_com_alias ("save-tracepoints", "save tracepoints", class_trace, 0);
16595   deprecate_cmd (c, "save tracepoints");
16596 
16597   add_prefix_cmd ("breakpoint", class_maintenance, set_breakpoint_cmd, _("\
16598 Breakpoint specific settings\n\
16599 Configure various breakpoint-specific variables such as\n\
16600 pending breakpoint behavior"),
16601 		  &breakpoint_set_cmdlist, "set breakpoint ",
16602 		  0/*allow-unknown*/, &setlist);
16603   add_prefix_cmd ("breakpoint", class_maintenance, show_breakpoint_cmd, _("\
16604 Breakpoint specific settings\n\
16605 Configure various breakpoint-specific variables such as\n\
16606 pending breakpoint behavior"),
16607 		  &breakpoint_show_cmdlist, "show breakpoint ",
16608 		  0/*allow-unknown*/, &showlist);
16609 
16610   add_setshow_auto_boolean_cmd ("pending", no_class,
16611 				&pending_break_support, _("\
16612 Set debugger's behavior regarding pending breakpoints."), _("\
16613 Show debugger's behavior regarding pending breakpoints."), _("\
16614 If on, an unrecognized breakpoint location will cause gdb to create a\n\
16615 pending breakpoint.  If off, an unrecognized breakpoint location results in\n\
16616 an error.  If auto, an unrecognized breakpoint location results in a\n\
16617 user-query to see if a pending breakpoint should be created."),
16618 				NULL,
16619 				show_pending_break_support,
16620 				&breakpoint_set_cmdlist,
16621 				&breakpoint_show_cmdlist);
16622 
16623   pending_break_support = AUTO_BOOLEAN_AUTO;
16624 
16625   add_setshow_boolean_cmd ("auto-hw", no_class,
16626 			   &automatic_hardware_breakpoints, _("\
16627 Set automatic usage of hardware breakpoints."), _("\
16628 Show automatic usage of hardware breakpoints."), _("\
16629 If set, the debugger will automatically use hardware breakpoints for\n\
16630 breakpoints set with \"break\" but falling in read-only memory.  If not set,\n\
16631 a warning will be emitted for such breakpoints."),
16632 			   NULL,
16633 			   show_automatic_hardware_breakpoints,
16634 			   &breakpoint_set_cmdlist,
16635 			   &breakpoint_show_cmdlist);
16636 
16637   add_setshow_boolean_cmd ("always-inserted", class_support,
16638 			   &always_inserted_mode, _("\
16639 Set mode for inserting breakpoints."), _("\
16640 Show mode for inserting breakpoints."), _("\
16641 When this mode is on, breakpoints are inserted immediately as soon as\n\
16642 they're created, kept inserted even when execution stops, and removed\n\
16643 only when the user deletes them.  When this mode is off (the default),\n\
16644 breakpoints are inserted only when execution continues, and removed\n\
16645 when execution stops."),
16646 				NULL,
16647 				&show_always_inserted_mode,
16648 				&breakpoint_set_cmdlist,
16649 				&breakpoint_show_cmdlist);
16650 
16651   add_setshow_enum_cmd ("condition-evaluation", class_breakpoint,
16652 			condition_evaluation_enums,
16653 			&condition_evaluation_mode_1, _("\
16654 Set mode of breakpoint condition evaluation."), _("\
16655 Show mode of breakpoint condition evaluation."), _("\
16656 When this is set to \"host\", breakpoint conditions will be\n\
16657 evaluated on the host's side by GDB.  When it is set to \"target\",\n\
16658 breakpoint conditions will be downloaded to the target (if the target\n\
16659 supports such feature) and conditions will be evaluated on the target's side.\n\
16660 If this is set to \"auto\" (default), this will be automatically set to\n\
16661 \"target\" if it supports condition evaluation, otherwise it will\n\
16662 be set to \"gdb\""),
16663 			   &set_condition_evaluation_mode,
16664 			   &show_condition_evaluation_mode,
16665 			   &breakpoint_set_cmdlist,
16666 			   &breakpoint_show_cmdlist);
16667 
16668   add_com ("break-range", class_breakpoint, break_range_command, _("\
16669 Set a breakpoint for an address range.\n\
16670 break-range START-LOCATION, END-LOCATION\n\
16671 where START-LOCATION and END-LOCATION can be one of the following:\n\
16672   LINENUM, for that line in the current file,\n\
16673   FILE:LINENUM, for that line in that file,\n\
16674   +OFFSET, for that number of lines after the current line\n\
16675            or the start of the range\n\
16676   FUNCTION, for the first line in that function,\n\
16677   FILE:FUNCTION, to distinguish among like-named static functions.\n\
16678   *ADDRESS, for the instruction at that address.\n\
16679 \n\
16680 The breakpoint will stop execution of the inferior whenever it executes\n\
16681 an instruction at any address within the [START-LOCATION, END-LOCATION]\n\
16682 range (including START-LOCATION and END-LOCATION)."));
16683 
16684   c = add_com ("dprintf", class_breakpoint, dprintf_command, _("\
16685 Set a dynamic printf at specified location.\n\
16686 dprintf location,format string,arg1,arg2,...\n\
16687 location may be a linespec, explicit, or address location.\n"
16688 "\n" LOCATION_HELP_STRING));
16689   set_cmd_completer (c, location_completer);
16690 
16691   add_setshow_enum_cmd ("dprintf-style", class_support,
16692 			dprintf_style_enums, &dprintf_style, _("\
16693 Set the style of usage for dynamic printf."), _("\
16694 Show the style of usage for dynamic printf."), _("\
16695 This setting chooses how GDB will do a dynamic printf.\n\
16696 If the value is \"gdb\", then the printing is done by GDB to its own\n\
16697 console, as with the \"printf\" command.\n\
16698 If the value is \"call\", the print is done by calling a function in your\n\
16699 program; by default printf(), but you can choose a different function or\n\
16700 output stream by setting dprintf-function and dprintf-channel."),
16701 			update_dprintf_commands, NULL,
16702 			&setlist, &showlist);
16703 
16704   dprintf_function = xstrdup ("printf");
16705   add_setshow_string_cmd ("dprintf-function", class_support,
16706 			  &dprintf_function, _("\
16707 Set the function to use for dynamic printf"), _("\
16708 Show the function to use for dynamic printf"), NULL,
16709 			  update_dprintf_commands, NULL,
16710 			  &setlist, &showlist);
16711 
16712   dprintf_channel = xstrdup ("");
16713   add_setshow_string_cmd ("dprintf-channel", class_support,
16714 			  &dprintf_channel, _("\
16715 Set the channel to use for dynamic printf"), _("\
16716 Show the channel to use for dynamic printf"), NULL,
16717 			  update_dprintf_commands, NULL,
16718 			  &setlist, &showlist);
16719 
16720   add_setshow_boolean_cmd ("disconnected-dprintf", no_class,
16721 			   &disconnected_dprintf, _("\
16722 Set whether dprintf continues after GDB disconnects."), _("\
16723 Show whether dprintf continues after GDB disconnects."), _("\
16724 Use this to let dprintf commands continue to hit and produce output\n\
16725 even if GDB disconnects or detaches from the target."),
16726 			   NULL,
16727 			   NULL,
16728 			   &setlist, &showlist);
16729 
16730   add_com ("agent-printf", class_vars, agent_printf_command, _("\
16731 agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
16732 (target agent only) This is useful for formatted output in user-defined commands."));
16733 
16734   automatic_hardware_breakpoints = 1;
16735 
16736   observer_attach_about_to_proceed (breakpoint_about_to_proceed);
16737   observer_attach_thread_exit (remove_threaded_breakpoints);
16738 }
16739